@shahmilsaari/memory-core 0.2.17 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -951,10 +951,15 @@ function recordViolations(violations) {
951
951
  stats = { rules: {}, files: {} };
952
952
  }
953
953
  }
954
+ stats.rules ??= {};
955
+ stats.files ??= {};
954
956
  for (const violation of violations) {
955
957
  stats.rules[violation.rule] = (stats.rules[violation.rule] ?? 0) + 1;
956
958
  if (violation.file) stats.files[violation.file] = (stats.files[violation.file] ?? 0) + 1;
957
959
  }
960
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
961
+ const recent = violations.map((violation) => ({ ...violation, timestamp, source: "watch" }));
962
+ stats.recentViolations = [...recent, ...stats.recentViolations ?? []].slice(0, 50);
958
963
  writeFileSync2(statsPath, JSON.stringify(stats, null, 2) + "\n", "utf-8");
959
964
  }
960
965
  function loadConfig(cwd) {
@@ -1070,10 +1075,10 @@ async function checkFile(filePath, cwd, config, verbose, debug) {
1070
1075
  const noIndexResult = spawnSync("git", ["diff", "--no-index", "/dev/null", rel], { encoding: "utf-8", cwd });
1071
1076
  diff = noIndexResult.stdout ?? "";
1072
1077
  }
1073
- if (!diff.trim()) return null;
1078
+ if (!diff.trim()) return { type: "skipped", reason: "No changes compared with HEAD" };
1074
1079
  const { rules: fallbackRules, avoids } = getProfileRules(config);
1075
1080
  const rules = await loadRelevantRules(config, rel, diff, fallbackRules);
1076
- if (rules.length === 0) return null;
1081
+ if (rules.length === 0) return { type: "skipped", reason: "No applicable architecture rules" };
1077
1082
  const MAX_DIFF = 6e3;
1078
1083
  const truncated = diff.length > MAX_DIFF;
1079
1084
  const diffToSend = truncated ? diff.slice(0, MAX_DIFF) + "\n\n[diff truncated]" : diff;
@@ -1145,7 +1150,7 @@ ${diffToSend}` }
1145
1150
  }));
1146
1151
  if (violations.length === 0) {
1147
1152
  console.log(chalk.green(` \u2713 ${rel}`) + chalk.dim(" \u2014 no violations"));
1148
- return [];
1153
+ return { type: "checked", violations: [] };
1149
1154
  }
1150
1155
  console.log(
1151
1156
  chalk.red.bold(`
@@ -1168,15 +1173,15 @@ ${diffToSend}` }
1168
1173
  recordViolations(violations);
1169
1174
  console.log(chalk.dim(' Fix violations or run: memory-core remember "<lesson>"'));
1170
1175
  console.log();
1171
- return violations;
1176
+ return { type: "checked", violations };
1172
1177
  } catch (err) {
1173
1178
  if (err.cause?.code === "ECONNREFUSED" || err.message?.includes("ECONNREFUSED")) {
1174
- return null;
1179
+ return { type: "error", message: `Check model unreachable for ${rel}: ${err.message}` };
1175
1180
  }
1176
1181
  if (verbose) {
1177
1182
  console.log(chalk.yellow(` \u26A0 Check failed for ${rel}: ${err.message}`));
1178
1183
  }
1179
- return null;
1184
+ return { type: "error", message: `Check failed for ${rel}: ${err.message}` };
1180
1185
  }
1181
1186
  }
1182
1187
  async function startWatch(options = {}) {
@@ -1241,8 +1246,16 @@ async function startWatch(options = {}) {
1241
1246
  console.log(chalk.dim(`
1242
1247
  [${timestamp.toLocaleTimeString()}] saved: ${rel}`));
1243
1248
  options.onEvent?.({ type: "saved", timestamp: timestamp.toISOString(), file: rel });
1244
- const violations = await checkFile(filePath, cwd, config, options.verbose ?? false, options.debug ?? false);
1245
- if (violations === null) return;
1249
+ const result = await checkFile(filePath, cwd, config, options.verbose ?? false, options.debug ?? false);
1250
+ if (result.type === "skipped") {
1251
+ options.onEvent?.({ type: "skipped", timestamp: (/* @__PURE__ */ new Date()).toISOString(), file: rel, reason: result.reason });
1252
+ return;
1253
+ }
1254
+ if (result.type === "error") {
1255
+ options.onEvent?.({ type: "error", timestamp: (/* @__PURE__ */ new Date()).toISOString(), message: result.message });
1256
+ return;
1257
+ }
1258
+ const { violations } = result;
1246
1259
  if (violations.length === 0) {
1247
1260
  options.onEvent?.({ type: "clean", timestamp: (/* @__PURE__ */ new Date()).toISOString(), file: rel });
1248
1261
  return;
package/dist/cli.js CHANGED
@@ -16,7 +16,7 @@ import {
16
16
  retrieveMemorySelection,
17
17
  seeds,
18
18
  startWatch
19
- } from "./chunk-T4WJR6L6.js";
19
+ } from "./chunk-J7SPACA3.js";
20
20
  import {
21
21
  embed
22
22
  } from "./chunk-HAGRPKR3.js";
@@ -149,7 +149,7 @@ else
149
149
  fi
150
150
  `;
151
151
  }
152
- function recordViolations(violations) {
152
+ function recordViolations(violations, source = "hook") {
153
153
  const statsPath = join2(process.cwd(), ".memory-core-stats.json");
154
154
  let stats = { rules: {}, files: {} };
155
155
  if (existsSync2(statsPath)) {
@@ -159,10 +159,15 @@ function recordViolations(violations) {
159
159
  stats = { rules: {}, files: {} };
160
160
  }
161
161
  }
162
+ stats.rules ??= {};
163
+ stats.files ??= {};
162
164
  for (const violation of violations) {
163
165
  stats.rules[violation.rule] = (stats.rules[violation.rule] ?? 0) + 1;
164
166
  if (violation.file) stats.files[violation.file] = (stats.files[violation.file] ?? 0) + 1;
165
167
  }
168
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
169
+ const recent = violations.map((violation) => ({ ...violation, timestamp, source }));
170
+ stats.recentViolations = [...recent, ...stats.recentViolations ?? []].slice(0, 50);
166
171
  writeFileSync2(statsPath, JSON.stringify(stats, null, 2) + "\n", "utf-8");
167
172
  }
168
173
  async function promptToSaveViolations(violations) {
@@ -670,7 +675,7 @@ async function checkCi(options = {}) {
670
675
  console.log(chalk.red(" Issue: ") + violation.issue);
671
676
  console.log();
672
677
  });
673
- recordViolations(violations);
678
+ recordViolations(violations, "ci");
674
679
  process.exit(1);
675
680
  }
676
681
  function printModelMissing(model2) {
@@ -2015,7 +2020,7 @@ program.command("stats").description("Show violation counters recorded by check
2015
2020
  console.log();
2016
2021
  });
2017
2022
  program.command("dashboard").description("Start the live Svelte dashboard with WebSocket watch events").option("-p, --port <port>", "Dashboard port", "5178").option("--path <dir>", "Directory to watch (default: current directory)").option("--no-watch", "Serve the dashboard without starting file watch").action(async (opts) => {
2018
- const { startDashboard } = await import("./dashboard-server-EVN4FL4L.js");
2023
+ const { startDashboard } = await import("./dashboard-server-QMNMSEPJ.js");
2019
2024
  await startDashboard({
2020
2025
  port: parseInt(opts.port, 10),
2021
2026
  path: opts.path,
@@ -0,0 +1,2 @@
1
+ var Il=Object.defineProperty;var qn=e=>{throw TypeError(e)};var Ll=(e,t,r)=>t in e?Il(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var Le=(e,t,r)=>Ll(e,typeof t!="symbol"?t+"":t,r),ts=(e,t,r)=>t.has(e)||qn("Cannot "+r);var l=(e,t,r)=>(ts(e,t,"read from private field"),r?r.call(e):t.get(e)),R=(e,t,r)=>t.has(e)?qn("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),M=(e,t,r,s)=>(ts(e,t,"write to private field"),s?s.call(e,r):t.set(e,r),r),U=(e,t,r)=>(ts(e,t,"access private method"),r);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))s(a);new MutationObserver(a=>{for(const i of a)if(i.type==="childList")for(const f of i.addedNodes)f.tagName==="LINK"&&f.rel==="modulepreload"&&s(f)}).observe(document,{childList:!0,subtree:!0});function r(a){const i={};return a.integrity&&(i.integrity=a.integrity),a.referrerPolicy&&(i.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?i.credentials="include":a.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(a){if(a.ep)return;a.ep=!0;const i=r(a);fetch(a.href,i)}})();const Pl=!1;var ws=Array.isArray,$l=Array.prototype.indexOf,zt=Array.prototype.includes,jr=Array.from,jl=Object.defineProperty,lr=Object.getOwnPropertyDescriptor,ca=Object.getOwnPropertyDescriptors,Wl=Object.prototype,ql=Array.prototype,ys=Object.getPrototypeOf,Un=Object.isExtensible;const Ul=()=>{};function Vl(e){return e()}function ls(e){for(var t=0;t<e.length;t++)e[t]()}function fa(){var e,t,r=new Promise((s,a)=>{e=s,t=a});return{promise:r,resolve:e,reject:t}}const ae=2,Ht=4,mr=8,ua=1<<24,Ke=16,We=32,ut=64,os=128,Re=512,G=1024,ne=2048,qe=4096,ce=8192,Ce=16384,Dt=32768,Vn=1<<25,Bt=65536,cs=1<<17,zl=1<<18,Gt=1<<19,va=1<<20,Be=1<<25,Rt=65536,Fr=1<<21,ur=1<<22,ct=1<<23,kt=Symbol("$state"),Xe=new class extends Error{constructor(){super(...arguments);Le(this,"name","StaleReactionError");Le(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}};function Hl(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function Bl(e,t,r){throw new Error("https://svelte.dev/e/each_key_duplicate")}function Kl(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Yl(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Gl(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Jl(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function Ql(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Xl(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function Zl(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function eo(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const to=1,ro=2,da=4,so=8,no=16,ao=2,Z=Symbol(),pa="http://www.w3.org/1999/xhtml";function io(){console.warn("https://svelte.dev/e/derived_inert")}function lo(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function oo(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function _a(e){return e===this.v}function co(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function ha(e){return!co(e,this.v)}let Wr=!1,fo=!1;function uo(){Wr=!0}let J=null;function Kt(e){J=e}function ga(e,t=!1,r){J={p:J,i:!1,c:null,e:null,s:e,x:null,r:D,l:Wr&&!t?{s:null,u:null,$:[]}:null}}function ba(e){var t=J,r=t.e;if(r!==null){t.e=null;for(var s of r)ja(s)}return t.i=!0,J=t.p,{}}function wr(){return!Wr||J!==null&&J.l===null}let gt=[];function ma(){var e=gt;gt=[],ls(e)}function ft(e){if(gt.length===0&&!or){var t=gt;queueMicrotask(()=>{t===gt&&ma()})}gt.push(e)}function vo(){for(;gt.length>0;)ma()}function wa(e){var t=D;if(t===null)return O.f|=ct,e;if(!(t.f&Dt)&&!(t.f&Ht))throw e;ot(e,t)}function ot(e,t){for(;t!==null;){if(t.f&os){if(!(t.f&Dt))throw e;try{t.b.error(e);return}catch(r){e=r}}t=t.parent}throw e}const po=-7169;function K(e,t){e.f=e.f&po|t}function Es(e){e.f&Re||e.deps===null?K(e,G):K(e,qe)}function ya(e){if(e!==null)for(const t of e)!(t.f&ae)||!(t.f&Rt)||(t.f^=Rt,ya(t.deps))}function Ea(e,t,r){e.f&ne?t.add(e):e.f&qe&&r.add(e),ya(e.deps),K(e,G)}const ht=new Set;let T=null,se=null,fs=null,or=!1,rs=!1,$t=null,Ar=null;var zn=0;let _o=1;var jt,Wt,mt,Ze,Ve,dr,me,pr,it,et,ze,qt,Ut,wt,Q,Rr,xa,Cr,us,Nr,ho;const Lr=class Lr{constructor(){R(this,Q);Le(this,"id",_o++);Le(this,"current",new Map);Le(this,"previous",new Map);R(this,jt,new Set);R(this,Wt,new Set);R(this,mt,new Set);R(this,Ze,new Map);R(this,Ve,new Map);R(this,dr,null);R(this,me,[]);R(this,pr,[]);R(this,it,new Set);R(this,et,new Set);R(this,ze,new Map);R(this,qt,new Set);Le(this,"is_fork",!1);R(this,Ut,!1);R(this,wt,new Set)}skip_effect(t){l(this,ze).has(t)||l(this,ze).set(t,{d:[],m:[]}),l(this,qt).delete(t)}unskip_effect(t,r=s=>this.schedule(s)){var s=l(this,ze).get(t);if(s){l(this,ze).delete(t);for(var a of s.d)K(a,ne),r(a);for(a of s.m)K(a,qe),r(a)}l(this,qt).add(t)}capture(t,r,s=!1){t.v!==Z&&!this.previous.has(t)&&this.previous.set(t,t.v),t.f&ct||(this.current.set(t,[r,s]),se==null||se.set(t,r)),this.is_fork||(t.v=r)}activate(){T=this}deactivate(){T=null,se=null}flush(){try{rs=!0,T=this,U(this,Q,Cr).call(this)}finally{zn=0,fs=null,$t=null,Ar=null,rs=!1,T=null,se=null,St.clear()}}discard(){for(const t of l(this,Wt))t(this);l(this,Wt).clear(),l(this,mt).clear(),ht.delete(this)}register_created_effect(t){l(this,pr).push(t)}increment(t,r){let s=l(this,Ze).get(r)??0;if(l(this,Ze).set(r,s+1),t){let a=l(this,Ve).get(r)??0;l(this,Ve).set(r,a+1)}}decrement(t,r,s){let a=l(this,Ze).get(r)??0;if(a===1?l(this,Ze).delete(r):l(this,Ze).set(r,a-1),t){let i=l(this,Ve).get(r)??0;i===1?l(this,Ve).delete(r):l(this,Ve).set(r,i-1)}l(this,Ut)||s||(M(this,Ut,!0),ft(()=>{M(this,Ut,!1),this.flush()}))}transfer_effects(t,r){for(const s of t)l(this,it).add(s);for(const s of r)l(this,et).add(s);t.clear(),r.clear()}oncommit(t){l(this,jt).add(t)}ondiscard(t){l(this,Wt).add(t)}on_fork_commit(t){l(this,mt).add(t)}run_fork_commit_callbacks(){for(const t of l(this,mt))t(this);l(this,mt).clear()}settled(){return(l(this,dr)??M(this,dr,fa())).promise}static ensure(){if(T===null){const t=T=new Lr;rs||(ht.add(T),or||ft(()=>{T===t&&t.flush()}))}return T}apply(){{se=null;return}}schedule(t){var a;if(fs=t,(a=t.b)!=null&&a.is_pending&&t.f&(Ht|mr|ua)&&!(t.f&Dt)){t.b.defer_effect(t);return}for(var r=t;r.parent!==null;){r=r.parent;var s=r.f;if($t!==null&&r===D&&(O===null||!(O.f&ae)))return;if(s&(ut|We)){if(!(s&G))return;r.f^=G}}l(this,me).push(r)}};jt=new WeakMap,Wt=new WeakMap,mt=new WeakMap,Ze=new WeakMap,Ve=new WeakMap,dr=new WeakMap,me=new WeakMap,pr=new WeakMap,it=new WeakMap,et=new WeakMap,ze=new WeakMap,qt=new WeakMap,Ut=new WeakMap,wt=new WeakMap,Q=new WeakSet,Rr=function(){return this.is_fork||l(this,Ve).size>0},xa=function(){for(const s of l(this,wt))for(const a of l(s,Ve).keys()){for(var t=!1,r=a;r.parent!==null;){if(l(this,ze).has(r)){t=!0;break}r=r.parent}if(!t)return!0}return!1},Cr=function(){var d,c;if(zn++>1e3&&(ht.delete(this),bo()),!U(this,Q,Rr).call(this)){for(const p of l(this,it))l(this,et).delete(p),K(p,ne),this.schedule(p);for(const p of l(this,et))K(p,qe),this.schedule(p)}const t=l(this,me);M(this,me,[]),this.apply();var r=$t=[],s=[],a=Ar=[];for(const p of t)try{U(this,Q,us).call(this,p,r,s)}catch(g){throw Ta(p),g}if(T=null,a.length>0){var i=Lr.ensure();for(const p of a)i.schedule(p)}if($t=null,Ar=null,U(this,Q,Rr).call(this)||U(this,Q,xa).call(this)){U(this,Q,Nr).call(this,s),U(this,Q,Nr).call(this,r);for(const[p,g]of l(this,ze))Sa(p,g)}else{l(this,Ze).size===0&&ht.delete(this),l(this,it).clear(),l(this,et).clear();for(const p of l(this,jt))p(this);l(this,jt).clear(),Hn(s),Hn(r),(d=l(this,dr))==null||d.resolve()}var f=T;if(l(this,me).length>0){const p=f??(f=this);l(p,me).push(...l(this,me).filter(g=>!l(p,me).includes(g)))}f!==null&&(ht.add(f),U(c=f,Q,Cr).call(c))},us=function(t,r,s){t.f^=G;for(var a=t.first;a!==null;){var i=a.f,f=(i&(We|ut))!==0,d=f&&(i&G)!==0,c=d||(i&ce)!==0||l(this,ze).has(a);if(!c&&a.fn!==null){f?a.f^=G:i&Ht?r.push(a):Jt(a)&&(i&Ke&&l(this,et).add(a),Mt(a));var p=a.first;if(p!==null){a=p;continue}}for(;a!==null;){var g=a.next;if(g!==null){a=g;break}a=a.parent}}},Nr=function(t){for(var r=0;r<t.length;r+=1)Ea(t[r],l(this,it),l(this,et))},ho=function(){var g,x,y;for(const E of ht){var t=E.id<this.id,r=[];for(const[b,[v,m]]of this.current){if(E.current.has(b)){var s=E.current.get(b)[0];if(t&&v!==s)E.current.set(b,[v,m]);else continue}r.push(b)}var a=[...E.current.keys()].filter(b=>!this.current.has(b));if(a.length===0)t&&E.discard();else if(r.length>0){if(t)for(const b of l(this,qt))E.unskip_effect(b,v=>{var m;v.f&(Ke|ur)?E.schedule(v):U(m=E,Q,Nr).call(m,[v])});E.activate();var i=new Set,f=new Map;for(var d of r)ka(d,a,i,f);f=new Map;var c=[...E.current.keys()].filter(b=>this.current.has(b)?this.current.get(b)[0]!==b:!0);for(const b of l(this,pr))!(b.f&(Ce|ce|cs))&&xs(b,c,f)&&(b.f&(ur|Ke)?(K(b,ne),E.schedule(b)):l(E,it).add(b));if(l(E,me).length>0){E.apply();for(var p of l(E,me))U(g=E,Q,us).call(g,p,[],[]);M(E,me,[])}E.deactivate()}}for(const E of ht)l(E,wt).has(this)&&(l(E,wt).delete(this),l(E,wt).size===0&&!U(x=E,Q,Rr).call(x)&&(E.activate(),U(y=E,Q,Cr).call(y)))};let Ct=Lr;function go(e){var t=or;or=!0;try{for(var r;;){if(vo(),T===null)return r;T.flush()}}finally{or=t}}function bo(){try{Jl()}catch(e){ot(e,fs)}}let Pe=null;function Hn(e){var t=e.length;if(t!==0){for(var r=0;r<t;){var s=e[r++];if(!(s.f&(Ce|ce))&&Jt(s)&&(Pe=new Set,Mt(s),s.deps===null&&s.first===null&&s.nodes===null&&s.teardown===null&&s.ac===null&&qa(s),(Pe==null?void 0:Pe.size)>0)){St.clear();for(const a of Pe){if(a.f&(Ce|ce))continue;const i=[a];let f=a.parent;for(;f!==null;)Pe.has(f)&&(Pe.delete(f),i.push(f)),f=f.parent;for(let d=i.length-1;d>=0;d--){const c=i[d];c.f&(Ce|ce)||Mt(c)}}Pe.clear()}}Pe=null}}function ka(e,t,r,s){if(!r.has(e)&&(r.add(e),e.reactions!==null))for(const a of e.reactions){const i=a.f;i&ae?ka(a,t,r,s):i&(ur|Ke)&&!(i&ne)&&xs(a,t,s)&&(K(a,ne),ks(a))}}function xs(e,t,r){const s=r.get(e);if(s!==void 0)return s;if(e.deps!==null)for(const a of e.deps){if(zt.call(t,a))return!0;if(a.f&ae&&xs(a,t,r))return r.set(a,!0),!0}return r.set(e,!1),!1}function ks(e){T.schedule(e)}function Sa(e,t){if(!(e.f&We&&e.f&G)){e.f&ne?t.d.push(e):e.f&qe&&t.m.push(e),K(e,G);for(var r=e.first;r!==null;)Sa(r,t),r=r.next}}function Ta(e){K(e,G);for(var t=e.first;t!==null;)Ta(t),t=t.next}function mo(e){let t=0,r=Nt(0),s;return()=>{Rs()&&(n(r),Ur(()=>(t===0&&(s=w(()=>e(()=>cr(r)))),t+=1,()=>{ft(()=>{t-=1,t===0&&(s==null||s(),s=void 0,cr(r))})})))}}var wo=Bt|Gt;function yo(e,t,r,s){new Eo(e,t,r,s)}var ke,ms,Se,yt,ve,Te,oe,we,tt,Et,lt,Vt,_r,hr,rt,Pr,Y,xo,ko,So,vs,Mr,Dr,ds,ps;class Eo{constructor(t,r,s,a){R(this,Y);Le(this,"parent");Le(this,"is_pending",!1);Le(this,"transform_error");R(this,ke);R(this,ms,null);R(this,Se);R(this,yt);R(this,ve);R(this,Te,null);R(this,oe,null);R(this,we,null);R(this,tt,null);R(this,Et,0);R(this,lt,0);R(this,Vt,!1);R(this,_r,new Set);R(this,hr,new Set);R(this,rt,null);R(this,Pr,mo(()=>(M(this,rt,Nt(l(this,Et))),()=>{M(this,rt,null)})));var i;M(this,ke,t),M(this,Se,r),M(this,yt,f=>{var d=D;d.b=this,d.f|=os,s(f)}),this.parent=D.b,this.transform_error=a??((i=this.parent)==null?void 0:i.transform_error)??(f=>f),M(this,ve,Ns(()=>{U(this,Y,vs).call(this)},wo))}defer_effect(t){Ea(t,l(this,_r),l(this,hr))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!l(this,Se).pending}update_pending_count(t,r){U(this,Y,ds).call(this,t,r),M(this,Et,l(this,Et)+t),!(!l(this,rt)||l(this,Vt))&&(M(this,Vt,!0),ft(()=>{M(this,Vt,!1),l(this,rt)&&Yt(l(this,rt),l(this,Et))}))}get_effect_pending(){return l(this,Pr).call(this),n(l(this,rt))}error(t){if(!l(this,Se).onerror&&!l(this,Se).failed)throw t;T!=null&&T.is_fork?(l(this,Te)&&T.skip_effect(l(this,Te)),l(this,oe)&&T.skip_effect(l(this,oe)),l(this,we)&&T.skip_effect(l(this,we)),T.on_fork_commit(()=>{U(this,Y,ps).call(this,t)})):U(this,Y,ps).call(this,t)}}ke=new WeakMap,ms=new WeakMap,Se=new WeakMap,yt=new WeakMap,ve=new WeakMap,Te=new WeakMap,oe=new WeakMap,we=new WeakMap,tt=new WeakMap,Et=new WeakMap,lt=new WeakMap,Vt=new WeakMap,_r=new WeakMap,hr=new WeakMap,rt=new WeakMap,Pr=new WeakMap,Y=new WeakSet,xo=function(){try{M(this,Te,Ae(()=>l(this,yt).call(this,l(this,ke))))}catch(t){this.error(t)}},ko=function(t){const r=l(this,Se).failed;r&&M(this,we,Ae(()=>{r(l(this,ke),()=>t,()=>()=>{})}))},So=function(){const t=l(this,Se).pending;t&&(this.is_pending=!0,M(this,oe,Ae(()=>t(l(this,ke)))),ft(()=>{var r=M(this,tt,document.createDocumentFragment()),s=st();r.append(s),M(this,Te,U(this,Y,Dr).call(this,()=>Ae(()=>l(this,yt).call(this,s)))),l(this,lt)===0&&(l(this,ke).before(r),M(this,tt,null),Tt(l(this,oe),()=>{M(this,oe,null)}),U(this,Y,Mr).call(this,T))}))},vs=function(){try{if(this.is_pending=this.has_pending_snippet(),M(this,lt,0),M(this,Et,0),M(this,Te,Ae(()=>{l(this,yt).call(this,l(this,ke))})),l(this,lt)>0){var t=M(this,tt,document.createDocumentFragment());Os(l(this,Te),t);const r=l(this,Se).pending;M(this,oe,Ae(()=>r(l(this,ke))))}else U(this,Y,Mr).call(this,T)}catch(r){this.error(r)}},Mr=function(t){this.is_pending=!1,t.transfer_effects(l(this,_r),l(this,hr))},Dr=function(t){var r=D,s=O,a=J;De(l(this,ve)),Me(l(this,ve)),Kt(l(this,ve).ctx);try{return Ct.ensure(),t()}catch(i){return wa(i),null}finally{De(r),Me(s),Kt(a)}},ds=function(t,r){var s;if(!this.has_pending_snippet()){this.parent&&U(s=this.parent,Y,ds).call(s,t,r);return}M(this,lt,l(this,lt)+t),l(this,lt)===0&&(U(this,Y,Mr).call(this,r),l(this,oe)&&Tt(l(this,oe),()=>{M(this,oe,null)}),l(this,tt)&&(l(this,ke).before(l(this,tt)),M(this,tt,null)))},ps=function(t){l(this,Te)&&(pe(l(this,Te)),M(this,Te,null)),l(this,oe)&&(pe(l(this,oe)),M(this,oe,null)),l(this,we)&&(pe(l(this,we)),M(this,we,null));var r=l(this,Se).onerror;let s=l(this,Se).failed;var a=!1,i=!1;const f=()=>{if(a){oo();return}a=!0,i&&eo(),l(this,we)!==null&&Tt(l(this,we),()=>{M(this,we,null)}),U(this,Y,Dr).call(this,()=>{U(this,Y,vs).call(this)})},d=c=>{try{i=!0,r==null||r(c,f),i=!1}catch(p){ot(p,l(this,ve)&&l(this,ve).parent)}s&&M(this,we,U(this,Y,Dr).call(this,()=>{try{return Ae(()=>{var p=D;p.b=this,p.f|=os,s(l(this,ke),()=>c,()=>f)})}catch(p){return ot(p,l(this,ve).parent),null}}))};ft(()=>{var c;try{c=this.transform_error(t)}catch(p){ot(p,l(this,ve)&&l(this,ve).parent);return}c!==null&&typeof c=="object"&&typeof c.then=="function"?c.then(d,p=>ot(p,l(this,ve)&&l(this,ve).parent)):d(c)})};function To(e,t,r,s){const a=wr()?Ss:Ra;var i=e.filter(y=>!y.settled);if(r.length===0&&i.length===0){s(t.map(a));return}var f=D,d=Ao(),c=i.length===1?i[0].promise:i.length>1?Promise.all(i.map(y=>y.promise)):null;function p(y){d();try{s(y)}catch(E){f.f&Ce||ot(E,f)}Ir()}if(r.length===0){c.then(()=>p(t.map(a)));return}var g=Aa();function x(){Promise.all(r.map(y=>Ro(y))).then(y=>p([...t.map(a),...y])).catch(y=>ot(y,f)).finally(()=>g())}c?c.then(()=>{d(),x(),Ir()}):x()}function Ao(){var e=D,t=O,r=J,s=T;return function(i=!0){De(e),Me(t),Kt(r),i&&!(e.f&Ce)&&(s==null||s.activate(),s==null||s.apply())}}function Ir(e=!0){De(null),Me(null),Kt(null),e&&(T==null||T.deactivate())}function Aa(){var e=D,t=e.b,r=T,s=t.is_rendered();return t.update_pending_count(1,r),r.increment(s,e),(a=!1)=>{t.update_pending_count(-1,r),r.decrement(s,e,a)}}function Ss(e){var t=ae|ne;return D!==null&&(D.f|=Gt),{ctx:J,deps:null,effects:null,equals:_a,f:t,fn:e,reactions:null,rv:0,v:Z,wv:0,parent:D,ac:null}}function Ro(e,t,r){let s=D;s===null&&Hl();var a=void 0,i=Nt(Z),f=!O,d=new Map;return Vo(()=>{var E;var c=D,p=fa();a=p.promise;try{Promise.resolve(e()).then(p.resolve,p.reject).finally(Ir)}catch(b){p.reject(b),Ir()}var g=T;if(f){if(c.f&Dt)var x=Aa();if(s.b.is_rendered())(E=d.get(g))==null||E.reject(Xe),d.delete(g);else{for(const b of d.values())b.reject(Xe);d.clear()}d.set(g,p)}const y=(b,v=void 0)=>{if(x){var m=v===Xe;x(m)}if(!(v===Xe||c.f&Ce)){if(g.activate(),v)i.f|=ct,Yt(i,v);else{i.f&ct&&(i.f^=ct),Yt(i,b);for(const[A,P]of d){if(d.delete(A),A===g)break;P.reject(Xe)}}g.deactivate()}};p.promise.then(y,b=>y(null,b||"unknown"))}),Cs(()=>{for(const c of d.values())c.reject(Xe)}),new Promise(c=>{function p(g){function x(){g===a?c(i):p(a)}g.then(x,x)}p(a)})}function Ra(e){const t=Ss(e);return t.equals=ha,t}function Co(e){var t=e.effects;if(t!==null){e.effects=null;for(var r=0;r<t.length;r+=1)pe(t[r])}}function Ts(e){var t,r=D,s=e.parent;if(!vt&&s!==null&&s.f&(Ce|ce))return io(),e.v;De(s);try{e.f&=~Rt,Co(e),t=Ka(e)}finally{De(r)}return t}function Ca(e){var t=Ts(e);if(!e.equals(t)&&(e.wv=Ha(),(!(T!=null&&T.is_fork)||e.deps===null)&&(T!==null?T.capture(e,t,!0):e.v=t,e.deps===null))){K(e,G);return}vt||(se!==null?(Rs()||T!=null&&T.is_fork)&&se.set(e,t):Es(e))}function No(e){var t,r;if(e.effects!==null)for(const s of e.effects)(s.teardown||s.ac)&&((t=s.teardown)==null||t.call(s),(r=s.ac)==null||r.abort(Xe),s.teardown=Ul,s.ac=null,vr(s,0),Ms(s))}function Na(e){if(e.effects!==null)for(const t of e.effects)t.teardown&&Mt(t)}let _s=new Set;const St=new Map;let Ma=!1;function Nt(e,t){var r={f:0,v:e,reactions:null,equals:_a,rv:0,wv:0};return r}function nt(e,t){const r=Nt(e);return Bo(r),r}function B(e,t=!1,r=!0){var a;const s=Nt(e);return t||(s.equals=ha),Wr&&r&&J!==null&&J.l!==null&&((a=J.l).s??(a.s=[])).push(s),s}function rr(e,t){return N(e,w(()=>n(e))),t}function N(e,t,r=!1){O!==null&&(!je||O.f&cs)&&wr()&&O.f&(ae|Ke|ur|cs)&&(Ne===null||!zt.call(Ne,e))&&Zl();let s=r?ar(t):t;return Yt(e,s,Ar)}function Yt(e,t,r=null){if(!e.equals(t)){St.set(e,vt?t:e.v);var s=Ct.ensure();if(s.capture(e,t),e.f&ae){const a=e;e.f&ne&&Ts(a),se===null&&Es(a)}e.wv=Ha(),Da(e,ne,r),wr()&&D!==null&&D.f&G&&!(D.f&(We|ut))&&(xe===null?Ko([e]):xe.push(e)),!s.is_fork&&_s.size>0&&!Ma&&Mo()}return t}function Mo(){Ma=!1;for(const e of _s)e.f&G&&K(e,qe),Jt(e)&&Mt(e);_s.clear()}function cr(e){N(e,e.v+1)}function Da(e,t,r){var s=e.reactions;if(s!==null)for(var a=wr(),i=s.length,f=0;f<i;f++){var d=s[f],c=d.f;if(!(!a&&d===D)){var p=(c&ne)===0;if(p&&K(d,t),c&ae){var g=d;se==null||se.delete(g),c&Rt||(c&Re&&(D===null||!(D.f&Fr))&&(d.f|=Rt),Da(g,qe,r))}else if(p){var x=d;c&Ke&&Pe!==null&&Pe.add(x),r!==null?r.push(x):ks(x)}}}}function ar(e){if(typeof e!="object"||e===null||kt in e)return e;const t=ys(e);if(t!==Wl&&t!==ql)return e;var r=new Map,s=ws(e),a=nt(0),i=At,f=d=>{if(At===i)return d();var c=O,p=At;Me(null),Qn(i);var g=d();return Me(c),Qn(p),g};return s&&r.set("length",nt(e.length)),new Proxy(e,{defineProperty(d,c,p){(!("value"in p)||p.configurable===!1||p.enumerable===!1||p.writable===!1)&&Ql();var g=r.get(c);return g===void 0?f(()=>{var x=nt(p.value);return r.set(c,x),x}):N(g,p.value,!0),!0},deleteProperty(d,c){var p=r.get(c);if(p===void 0){if(c in d){const g=f(()=>nt(Z));r.set(c,g),cr(a)}}else N(p,Z),cr(a);return!0},get(d,c,p){var E;if(c===kt)return e;var g=r.get(c),x=c in d;if(g===void 0&&(!x||(E=lr(d,c))!=null&&E.writable)&&(g=f(()=>{var b=ar(x?d[c]:Z),v=nt(b);return v}),r.set(c,g)),g!==void 0){var y=n(g);return y===Z?void 0:y}return Reflect.get(d,c,p)},getOwnPropertyDescriptor(d,c){var p=Reflect.getOwnPropertyDescriptor(d,c);if(p&&"value"in p){var g=r.get(c);g&&(p.value=n(g))}else if(p===void 0){var x=r.get(c),y=x==null?void 0:x.v;if(x!==void 0&&y!==Z)return{enumerable:!0,configurable:!0,value:y,writable:!0}}return p},has(d,c){var y;if(c===kt)return!0;var p=r.get(c),g=p!==void 0&&p.v!==Z||Reflect.has(d,c);if(p!==void 0||D!==null&&(!g||(y=lr(d,c))!=null&&y.writable)){p===void 0&&(p=f(()=>{var E=g?ar(d[c]):Z,b=nt(E);return b}),r.set(c,p));var x=n(p);if(x===Z)return!1}return g},set(d,c,p,g){var I;var x=r.get(c),y=c in d;if(s&&c==="length")for(var E=p;E<x.v;E+=1){var b=r.get(E+"");b!==void 0?N(b,Z):E in d&&(b=f(()=>nt(Z)),r.set(E+"",b))}if(x===void 0)(!y||(I=lr(d,c))!=null&&I.writable)&&(x=f(()=>nt(void 0)),N(x,ar(p)),r.set(c,x));else{y=x.v!==Z;var v=f(()=>ar(p));N(x,v)}var m=Reflect.getOwnPropertyDescriptor(d,c);if(m!=null&&m.set&&m.set.call(g,p),!y){if(s&&typeof c=="string"){var A=r.get("length"),P=Number(c);Number.isInteger(P)&&P>=A.v&&N(A,P+1)}cr(a)}return!0},ownKeys(d){n(a);var c=Reflect.ownKeys(d).filter(x=>{var y=r.get(x);return y===void 0||y.v!==Z});for(var[p,g]of r)g.v!==Z&&!(p in d)&&c.push(p);return c},setPrototypeOf(){Xl()}})}function Bn(e){try{if(e!==null&&typeof e=="object"&&kt in e)return e[kt]}catch{}return e}function Do(e,t){return Object.is(Bn(e),Bn(t))}var Kn,Oa,Fa,Ia;function Oo(){if(Kn===void 0){Kn=window,Oa=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,r=Text.prototype;Fa=lr(t,"firstChild").get,Ia=lr(t,"nextSibling").get,Un(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),Un(r)&&(r.__t=void 0)}}function st(e=""){return document.createTextNode(e)}function As(e){return Fa.call(e)}function yr(e){return Ia.call(e)}function _(e,t){return As(e)}function Fo(e,t=!1){{var r=As(e);return r instanceof Comment&&r.data===""?yr(r):r}}function h(e,t=1,r=!1){let s=e;for(;t--;)s=yr(s);return s}function Io(e){e.textContent=""}function La(){return!1}function Lo(e,t,r){return document.createElementNS(pa,e,void 0)}let Yn=!1;function Po(){Yn||(Yn=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{var t;if(!e.defaultPrevented)for(const r of e.target.elements)(t=r.__on_r)==null||t.call(r)})},{capture:!0}))}function qr(e){var t=O,r=D;Me(null),De(null);try{return e()}finally{Me(t),De(r)}}function Pa(e,t,r,s=r){e.addEventListener(t,()=>qr(r));const a=e.__on_r;a?e.__on_r=()=>{a(),s(!0)}:e.__on_r=()=>s(!0),Po()}function $a(e){D===null&&(O===null&&Gl(),Yl()),vt&&Kl()}function $o(e,t){var r=t.last;r===null?t.last=t.first=e:(r.next=e,e.prev=r,t.last=e)}function Ye(e,t){var r=D;r!==null&&r.f&ce&&(e|=ce);var s={ctx:J,deps:null,nodes:null,f:e|ne|Re,first:null,fn:t,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};T==null||T.register_created_effect(s);var a=s;if(e&Ht)$t!==null?$t.push(s):Ct.ensure().schedule(s);else if(t!==null){try{Mt(s)}catch(f){throw pe(s),f}a.deps===null&&a.teardown===null&&a.nodes===null&&a.first===a.last&&!(a.f&Gt)&&(a=a.first,e&Ke&&e&Bt&&a!==null&&(a.f|=Bt))}if(a!==null&&(a.parent=r,r!==null&&$o(a,r),O!==null&&O.f&ae&&!(e&ut))){var i=O;(i.effects??(i.effects=[])).push(a)}return s}function Rs(){return O!==null&&!je}function Cs(e){const t=Ye(mr,null);return K(t,G),t.teardown=e,t}function Gn(e){$a();var t=D.f,r=!O&&(t&We)!==0&&(t&Dt)===0;if(r){var s=J;(s.e??(s.e=[])).push(e)}else return ja(e)}function ja(e){return Ye(Ht|va,e)}function jo(e){return $a(),Ye(mr|va,e)}function Wo(e){Ct.ensure();const t=Ye(ut|Gt,e);return(r={})=>new Promise(s=>{r.outro?Tt(t,()=>{pe(t),s(void 0)}):(pe(t),s(void 0))})}function qo(e){return Ye(Ht,e)}function ge(e,t){var r=J,s={effect:null,ran:!1,deps:e};r.l.$.push(s),s.effect=Ur(()=>{if(e(),!s.ran){s.ran=!0;var a=D;try{De(a.parent),w(t)}finally{De(a)}}})}function Uo(){var e=J;Ur(()=>{for(var t of e.l.$){t.deps();var r=t.effect;r.f&G&&r.deps!==null&&K(r,qe),Jt(r)&&Mt(r),t.ran=!1}})}function Vo(e){return Ye(ur|Gt,e)}function Ur(e,t=0){return Ye(mr|t,e)}function V(e,t=[],r=[],s=[]){To(s,t,r,a=>{Ye(mr,()=>e(...a.map(n)))})}function Ns(e,t=0){var r=Ye(Ke|t,e);return r}function Ae(e){return Ye(We|Gt,e)}function Wa(e){var t=e.teardown;if(t!==null){const r=vt,s=O;Jn(!0),Me(null);try{t.call(null)}finally{Jn(r),Me(s)}}}function Ms(e,t=!1){var r=e.first;for(e.first=e.last=null;r!==null;){const a=r.ac;a!==null&&qr(()=>{a.abort(Xe)});var s=r.next;r.f&ut?r.parent=null:pe(r,t),r=s}}function zo(e){for(var t=e.first;t!==null;){var r=t.next;t.f&We||pe(t),t=r}}function pe(e,t=!0){var r=!1;(t||e.f&zl)&&e.nodes!==null&&e.nodes.end!==null&&(Ho(e.nodes.start,e.nodes.end),r=!0),K(e,Vn),Ms(e,t&&!r),vr(e,0);var s=e.nodes&&e.nodes.t;if(s!==null)for(const i of s)i.stop();Wa(e),e.f^=Vn,e.f|=Ce;var a=e.parent;a!==null&&a.first!==null&&qa(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Ho(e,t){for(;e!==null;){var r=e===t?null:yr(e);e.remove(),e=r}}function qa(e){var t=e.parent,r=e.prev,s=e.next;r!==null&&(r.next=s),s!==null&&(s.prev=r),t!==null&&(t.first===e&&(t.first=s),t.last===e&&(t.last=r))}function Tt(e,t,r=!0){var s=[];Ua(e,s,!0);var a=()=>{r&&pe(e),t&&t()},i=s.length;if(i>0){var f=()=>--i||a();for(var d of s)d.out(f)}else a()}function Ua(e,t,r){if(!(e.f&ce)){e.f^=ce;var s=e.nodes&&e.nodes.t;if(s!==null)for(const d of s)(d.is_global||r)&&t.push(d);for(var a=e.first;a!==null;){var i=a.next;if(!(a.f&ut)){var f=(a.f&Bt)!==0||(a.f&We)!==0&&(e.f&Ke)!==0;Ua(a,t,f?r:!1)}a=i}}}function Ds(e){Va(e,!0)}function Va(e,t){if(e.f&ce){e.f^=ce,e.f&G||(K(e,ne),Ct.ensure().schedule(e));for(var r=e.first;r!==null;){var s=r.next,a=(r.f&Bt)!==0||(r.f&We)!==0;Va(r,a?t:!1),r=s}var i=e.nodes&&e.nodes.t;if(i!==null)for(const f of i)(f.is_global||t)&&f.in()}}function Os(e,t){if(e.nodes)for(var r=e.nodes.start,s=e.nodes.end;r!==null;){var a=r===s?null:yr(r);t.append(r),r=a}}let Or=!1,vt=!1;function Jn(e){vt=e}let O=null,je=!1;function Me(e){O=e}let D=null;function De(e){D=e}let Ne=null;function Bo(e){O!==null&&(Ne===null?Ne=[e]:Ne.push(e))}let de=null,be=0,xe=null;function Ko(e){xe=e}let za=1,bt=0,At=bt;function Qn(e){At=e}function Ha(){return++za}function Jt(e){var t=e.f;if(t&ne)return!0;if(t&ae&&(e.f&=~Rt),t&qe){for(var r=e.deps,s=r.length,a=0;a<s;a++){var i=r[a];if(Jt(i)&&Ca(i),i.wv>e.wv)return!0}t&Re&&se===null&&K(e,G)}return!1}function Ba(e,t,r=!0){var s=e.reactions;if(s!==null&&!(Ne!==null&&zt.call(Ne,e)))for(var a=0;a<s.length;a++){var i=s[a];i.f&ae?Ba(i,t,!1):t===i&&(r?K(i,ne):i.f&G&&K(i,qe),ks(i))}}function Ka(e){var v;var t=de,r=be,s=xe,a=O,i=Ne,f=J,d=je,c=At,p=e.f;de=null,be=0,xe=null,O=p&(We|ut)?null:e,Ne=null,Kt(e.ctx),je=!1,At=++bt,e.ac!==null&&(qr(()=>{e.ac.abort(Xe)}),e.ac=null);try{e.f|=Fr;var g=e.fn,x=g();e.f|=Dt;var y=e.deps,E=T==null?void 0:T.is_fork;if(de!==null){var b;if(E||vr(e,be),y!==null&&be>0)for(y.length=be+de.length,b=0;b<de.length;b++)y[be+b]=de[b];else e.deps=y=de;if(Rs()&&e.f&Re)for(b=be;b<y.length;b++)((v=y[b]).reactions??(v.reactions=[])).push(e)}else!E&&y!==null&&be<y.length&&(vr(e,be),y.length=be);if(wr()&&xe!==null&&!je&&y!==null&&!(e.f&(ae|qe|ne)))for(b=0;b<xe.length;b++)Ba(xe[b],e);if(a!==null&&a!==e){if(bt++,a.deps!==null)for(let m=0;m<r;m+=1)a.deps[m].rv=bt;if(t!==null)for(const m of t)m.rv=bt;xe!==null&&(s===null?s=xe:s.push(...xe))}return e.f&ct&&(e.f^=ct),x}catch(m){return wa(m)}finally{e.f^=Fr,de=t,be=r,xe=s,O=a,Ne=i,Kt(f),je=d,At=c}}function Yo(e,t){let r=t.reactions;if(r!==null){var s=$l.call(r,e);if(s!==-1){var a=r.length-1;a===0?r=t.reactions=null:(r[s]=r[a],r.pop())}}if(r===null&&t.f&ae&&(de===null||!zt.call(de,t))){var i=t;i.f&Re&&(i.f^=Re,i.f&=~Rt),i.v!==Z&&Es(i),No(i),vr(i,0)}}function vr(e,t){var r=e.deps;if(r!==null)for(var s=t;s<r.length;s++)Yo(e,r[s])}function Mt(e){var t=e.f;if(!(t&Ce)){K(e,G);var r=D,s=Or;D=e,Or=!0;try{t&(Ke|ua)?zo(e):Ms(e),Wa(e);var a=Ka(e);e.teardown=typeof a=="function"?a:null,e.wv=za;var i;Pl&&fo&&e.f&ne&&e.deps}finally{Or=s,D=r}}}async function Go(){await Promise.resolve(),go()}function n(e){var t=e.f,r=(t&ae)!==0;if(O!==null&&!je){var s=D!==null&&(D.f&Ce)!==0;if(!s&&(Ne===null||!zt.call(Ne,e))){var a=O.deps;if(O.f&Fr)e.rv<bt&&(e.rv=bt,de===null&&a!==null&&a[be]===e?be++:de===null?de=[e]:de.push(e));else{(O.deps??(O.deps=[])).push(e);var i=e.reactions;i===null?e.reactions=[O]:zt.call(i,O)||i.push(O)}}}if(vt&&St.has(e))return St.get(e);if(r){var f=e;if(vt){var d=f.v;return(!(f.f&G)&&f.reactions!==null||Ga(f))&&(d=Ts(f)),St.set(f,d),d}var c=(f.f&Re)===0&&!je&&O!==null&&(Or||(O.f&Re)!==0),p=(f.f&Dt)===0;Jt(f)&&(c&&(f.f|=Re),Ca(f)),c&&!p&&(Na(f),Ya(f))}if(se!=null&&se.has(e))return se.get(e);if(e.f&ct)throw e.v;return e.v}function Ya(e){if(e.f|=Re,e.deps!==null)for(const t of e.deps)(t.reactions??(t.reactions=[])).push(e),t.f&ae&&!(t.f&Re)&&(Na(t),Ya(t))}function Ga(e){if(e.v===Z)return!0;if(e.deps===null)return!1;for(const t of e.deps)if(St.has(t)||t.f&ae&&Ga(t))return!0;return!1}function w(e){var t=je;try{return je=!0,e()}finally{je=t}}function Jo(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if(kt in e)hs(e);else if(!Array.isArray(e))for(let t in e){const r=e[t];typeof r=="object"&&r&&kt in r&&hs(r)}}}function hs(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 s in e)try{hs(e[s],t)}catch{}const r=ys(e);if(r!==Object.prototype&&r!==Array.prototype&&r!==Map.prototype&&r!==Set.prototype&&r!==Date.prototype){const s=ca(r);for(let a in s){const i=s[a].get;if(i)try{i.call(e)}catch{}}}}}const Qo=["touchstart","touchmove"];function Xo(e){return Qo.includes(e)}const kr=Symbol("events"),Zo=new Set,Xn=new Set;function ec(e,t,r,s={}){function a(i){if(s.capture||gs.call(t,i),!i.cancelBubble)return qr(()=>r==null?void 0:r.call(this,i))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?ft(()=>{t.addEventListener(e,a,s)}):t.addEventListener(e,a,s),a}function Zn(e,t,r,s,a){var i={capture:s,passive:a},f=ec(e,t,r,i);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Cs(()=>{t.removeEventListener(e,f,i)})}let ea=null;function gs(e){var m,A;var t=this,r=t.ownerDocument,s=e.type,a=((m=e.composedPath)==null?void 0:m.call(e))||[],i=a[0]||e.target;ea=e;var f=0,d=ea===e&&e[kr];if(d){var c=a.indexOf(d);if(c!==-1&&(t===document||t===window)){e[kr]=t;return}var p=a.indexOf(t);if(p===-1)return;c<=p&&(f=c)}if(i=a[f]||e.target,i!==t){jl(e,"currentTarget",{configurable:!0,get(){return i||r}});var g=O,x=D;Me(null),De(null);try{for(var y,E=[];i!==null;){var b=i.assignedSlot||i.parentNode||i.host||null;try{var v=(A=i[kr])==null?void 0:A[s];v!=null&&(!i.disabled||e.target===i)&&v.call(i,e)}catch(P){y?E.push(P):y=P}if(e.cancelBubble||b===t||b===null)break;i=b}if(y){for(let P of E)queueMicrotask(()=>{throw P});throw y}}finally{e[kr]=t,delete e.currentTarget,Me(g),De(x)}}}var la;const ss=((la=globalThis==null?void 0:globalThis.window)==null?void 0:la.trustedTypes)&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function tc(e){return(ss==null?void 0:ss.createHTML(e))??e}function rc(e){var t=Lo("template");return t.innerHTML=tc(e.replaceAll("<!>","<!---->")),t.content}function Fs(e,t){var r=D;r.nodes===null&&(r.nodes={start:e,end:t,a:null,t:null})}function W(e,t){var r=(t&ao)!==0,s,a=!e.startsWith("<!>");return()=>{s===void 0&&(s=rc(a?e:"<!>"+e),s=As(s));var i=r||Oa?document.importNode(s,!0):s.cloneNode(!0);return Fs(i,i),i}}function ta(e=""){{var t=st(e+"");return Fs(t,t),t}}function sc(){var e=document.createDocumentFragment(),t=document.createComment(""),r=st();return e.append(t,r),Fs(t,r),e}function F(e,t){e!==null&&e.before(t)}function k(e,t){var r=t==null?"":typeof t=="object"?`${t}`:t;r!==(e.__t??(e.__t=e.nodeValue))&&(e.__t=r,e.nodeValue=`${r}`)}function nc(e,t){return ac(e,t)}const Sr=new Map;function ac(e,{target:t,anchor:r,props:s={},events:a,context:i,intro:f=!0,transformError:d}){Oo();var c=void 0,p=Wo(()=>{var g=r??t.appendChild(st());yo(g,{pending:()=>{}},E=>{ga({});var b=J;i&&(b.c=i),a&&(s.$$events=a),c=e(E,s)||{},ba()},d);var x=new Set,y=E=>{for(var b=0;b<E.length;b++){var v=E[b];if(!x.has(v)){x.add(v);var m=Xo(v);for(const I of[t,document]){var A=Sr.get(I);A===void 0&&(A=new Map,Sr.set(I,A));var P=A.get(v);P===void 0?(I.addEventListener(v,gs,{passive:m}),A.set(v,1)):A.set(v,P+1)}}}};return y(jr(Zo)),Xn.add(y),()=>{var m;for(var E of x)for(const A of[t,document]){var b=Sr.get(A),v=b.get(E);--v==0?(A.removeEventListener(E,gs),b.delete(E),b.size===0&&Sr.delete(A)):b.set(E,v)}Xn.delete(y),g!==r&&((m=g.parentNode)==null||m.removeChild(g))}});return ic.set(c,p),c}let ic=new WeakMap;var $e,He,ye,xt,gr,br,$r;class lc{constructor(t,r=!0){Le(this,"anchor");R(this,$e,new Map);R(this,He,new Map);R(this,ye,new Map);R(this,xt,new Set);R(this,gr,!0);R(this,br,t=>{if(l(this,$e).has(t)){var r=l(this,$e).get(t),s=l(this,He).get(r);if(s)Ds(s),l(this,xt).delete(r);else{var a=l(this,ye).get(r);a&&(l(this,He).set(r,a.effect),l(this,ye).delete(r),a.fragment.lastChild.remove(),this.anchor.before(a.fragment),s=a.effect)}for(const[i,f]of l(this,$e)){if(l(this,$e).delete(i),i===t)break;const d=l(this,ye).get(f);d&&(pe(d.effect),l(this,ye).delete(f))}for(const[i,f]of l(this,He)){if(i===r||l(this,xt).has(i))continue;const d=()=>{if(Array.from(l(this,$e).values()).includes(i)){var p=document.createDocumentFragment();Os(f,p),p.append(st()),l(this,ye).set(i,{effect:f,fragment:p})}else pe(f);l(this,xt).delete(i),l(this,He).delete(i)};l(this,gr)||!s?(l(this,xt).add(i),Tt(f,d,!1)):d()}}});R(this,$r,t=>{l(this,$e).delete(t);const r=Array.from(l(this,$e).values());for(const[s,a]of l(this,ye))r.includes(s)||(pe(a.effect),l(this,ye).delete(s))});this.anchor=t,M(this,gr,r)}ensure(t,r){var s=T,a=La();if(r&&!l(this,He).has(t)&&!l(this,ye).has(t))if(a){var i=document.createDocumentFragment(),f=st();i.append(f),l(this,ye).set(t,{effect:Ae(()=>r(f)),fragment:i})}else l(this,He).set(t,Ae(()=>r(this.anchor)));if(l(this,$e).set(s,t),a){for(const[d,c]of l(this,He))d===t?s.unskip_effect(c):s.skip_effect(c);for(const[d,c]of l(this,ye))d===t?s.unskip_effect(c.effect):s.skip_effect(c.effect);s.oncommit(l(this,br)),s.ondiscard(l(this,$r))}else l(this,br).call(this,s)}}$e=new WeakMap,He=new WeakMap,ye=new WeakMap,xt=new WeakMap,gr=new WeakMap,br=new WeakMap,$r=new WeakMap;function ue(e,t,r=!1){var s=new lc(e),a=r?Bt:0;function i(f,d){s.ensure(f,d)}Ns(()=>{var f=!1;t((d,c=0)=>{f=!0,i(c,d)}),f||i(-1,null)},a)}function oc(e,t,r){for(var s=[],a=t.length,i,f=t.length,d=0;d<a;d++){let x=t[d];Tt(x,()=>{if(i){if(i.pending.delete(x),i.done.add(x),i.pending.size===0){var y=e.outrogroups;bs(e,jr(i.done)),y.delete(i),y.size===0&&(e.outrogroups=null)}}else f-=1},!1)}if(f===0){var c=s.length===0&&r!==null;if(c){var p=r,g=p.parentNode;Io(g),g.append(p),e.items.clear()}bs(e,t,!c)}else i={pending:new Set(t),done:new Set},(e.outrogroups??(e.outrogroups=new Set)).add(i)}function bs(e,t,r=!0){var s;if(e.pending.size>0){s=new Set;for(const f of e.pending.values())for(const d of f)s.add(e.items.get(d).e)}for(var a=0;a<t.length;a++){var i=t[a];if(s!=null&&s.has(i)){i.f|=Be;const f=document.createDocumentFragment();Os(i,f)}else pe(t[a],r)}}var ra;function Pt(e,t,r,s,a,i=null){var f=e,d=new Map,c=(t&da)!==0;if(c){var p=e;f=p.appendChild(st())}var g=null,x=Ra(()=>{var I=r();return ws(I)?I:I==null?[]:jr(I)}),y,E=new Map,b=!0;function v(I){P.effect.f&Ce||(P.pending.delete(I),P.fallback=g,cc(P,y,f,t,s),g!==null&&(y.length===0?g.f&Be?(g.f^=Be,ir(g,null,f)):Ds(g):Tt(g,()=>{g=null})))}function m(I){P.pending.delete(I)}var A=Ns(()=>{y=n(x);for(var I=y.length,X=new Set,ee=T,$=La(),ie=0;ie<I;ie+=1){var Ge=y[ie],Ue=s(Ge,ie),le=b?null:d.get(Ue);le?(le.v&&Yt(le.v,Ge),le.i&&Yt(le.i,ie),$&&ee.unskip_effect(le.e)):(le=fc(d,b?f:ra??(ra=st()),Ge,Ue,ie,a,t,r),b||(le.e.f|=Be),d.set(Ue,le)),X.add(Ue)}if(I===0&&i&&!g&&(b?g=Ae(()=>i(f)):(g=Ae(()=>i(ra??(ra=st()))),g.f|=Be)),I>X.size&&Bl(),!b)if(E.set(ee,X),$){for(const[dt,pt]of d)X.has(dt)||ee.skip_effect(pt.e);ee.oncommit(v),ee.ondiscard(m)}else v(ee);n(x)}),P={effect:A,items:d,pending:E,outrogroups:null,fallback:g};b=!1}function sr(e){for(;e!==null&&!(e.f&We);)e=e.next;return e}function cc(e,t,r,s,a){var le,dt,pt,Qt,Xt,Er,Ot,Zt,xr;var i=(s&so)!==0,f=t.length,d=e.items,c=sr(e.effect.first),p,g=null,x,y=[],E=[],b,v,m,A;if(i)for(A=0;A<f;A+=1)b=t[A],v=a(b,A),m=d.get(v).e,m.f&Be||((dt=(le=m.nodes)==null?void 0:le.a)==null||dt.measure(),(x??(x=new Set)).add(m));for(A=0;A<f;A+=1){if(b=t[A],v=a(b,A),m=d.get(v).e,e.outrogroups!==null)for(const Oe of e.outrogroups)Oe.pending.delete(m),Oe.done.delete(m);if(m.f&ce&&(Ds(m),i&&((Qt=(pt=m.nodes)==null?void 0:pt.a)==null||Qt.unfix(),(x??(x=new Set)).delete(m))),m.f&Be)if(m.f^=Be,m===c)ir(m,null,r);else{var P=g?g.next:c;m===e.effect.last&&(e.effect.last=m.prev),m.prev&&(m.prev.next=m.next),m.next&&(m.next.prev=m.prev),at(e,g,m),at(e,m,P),ir(m,P,r),g=m,y=[],E=[],c=sr(g.next);continue}if(m!==c){if(p!==void 0&&p.has(m)){if(y.length<E.length){var I=E[0],X;g=I.prev;var ee=y[0],$=y[y.length-1];for(X=0;X<y.length;X+=1)ir(y[X],I,r);for(X=0;X<E.length;X+=1)p.delete(E[X]);at(e,ee.prev,$.next),at(e,g,ee),at(e,$,I),c=I,g=$,A-=1,y=[],E=[]}else p.delete(m),ir(m,c,r),at(e,m.prev,m.next),at(e,m,g===null?e.effect.first:g.next),at(e,g,m),g=m;continue}for(y=[],E=[];c!==null&&c!==m;)(p??(p=new Set)).add(c),E.push(c),c=sr(c.next);if(c===null)continue}m.f&Be||y.push(m),g=m,c=sr(m.next)}if(e.outrogroups!==null){for(const Oe of e.outrogroups)Oe.pending.size===0&&(bs(e,jr(Oe.done)),(Xt=e.outrogroups)==null||Xt.delete(Oe));e.outrogroups.size===0&&(e.outrogroups=null)}if(c!==null||p!==void 0){var ie=[];if(p!==void 0)for(m of p)m.f&ce||ie.push(m);for(;c!==null;)!(c.f&ce)&&c!==e.fallback&&ie.push(c),c=sr(c.next);var Ge=ie.length;if(Ge>0){var Ue=s&da&&f===0?r:null;if(i){for(A=0;A<Ge;A+=1)(Ot=(Er=ie[A].nodes)==null?void 0:Er.a)==null||Ot.measure();for(A=0;A<Ge;A+=1)(xr=(Zt=ie[A].nodes)==null?void 0:Zt.a)==null||xr.fix()}oc(e,ie,Ue)}}i&&ft(()=>{var Oe,er;if(x!==void 0)for(m of x)(er=(Oe=m.nodes)==null?void 0:Oe.a)==null||er.apply()})}function fc(e,t,r,s,a,i,f,d){var c=f&to?f&no?Nt(r):B(r,!1,!1):null,p=f&ro?Nt(a):null;return{v:c,i:p,e:Ae(()=>(i(t,c??r,p??a,d),()=>{e.delete(s)}))}}function ir(e,t,r){if(e.nodes)for(var s=e.nodes.start,a=e.nodes.end,i=t&&!(t.f&Be)?t.nodes.start:r;s!==null;){var f=yr(s);if(i.before(s),s===a)return;s=f}}function at(e,t,r){t===null?e.effect.first=r:t.next=r,r===null?e.effect.last=t:r.prev=t}const sa=[...`
2
+ \r\f \v\uFEFF`];function uc(e,t,r){var s=e==null?"":""+e;if(r){for(var a of Object.keys(r))if(r[a])s=s?s+" "+a:a;else if(s.length)for(var i=a.length,f=0;(f=s.indexOf(a,f))>=0;){var d=f+i;(f===0||sa.includes(s[f-1]))&&(d===s.length||sa.includes(s[d]))?s=(f===0?"":s.substring(0,f))+s.substring(d+1):f=d}}return s===""?null:s}function vc(e,t){return e==null?null:String(e)}function nr(e,t,r,s,a,i){var f=e.__className;if(f!==r||f===void 0){var d=uc(r,s,i);d==null?e.removeAttribute("class"):e.className=d,e.__className=r}else if(i&&a!==i)for(var c in i){var p=!!i[c];(a==null||p!==!!a[c])&&e.classList.toggle(c,p)}return i}function na(e,t,r,s){var a=e.__style;if(a!==t){var i=vc(t);i==null?e.removeAttribute("style"):e.style.cssText=i,e.__style=t}return s}function Ja(e,t,r=!1){if(e.multiple){if(t==null)return;if(!ws(t))return lo();for(var s of e.options)s.selected=t.includes(fr(s));return}for(s of e.options){var a=fr(s);if(Do(a,t)){s.selected=!0;return}}(!r||t!==void 0)&&(e.selectedIndex=-1)}function dc(e){var t=new MutationObserver(()=>{Ja(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Cs(()=>{t.disconnect()})}function ns(e,t,r=t){var s=new WeakSet,a=!0;Pa(e,"change",i=>{var f=i?"[selected]":":checked",d;if(e.multiple)d=[].map.call(e.querySelectorAll(f),fr);else{var c=e.querySelector(f)??e.querySelector("option:not([disabled])");d=c&&fr(c)}r(d),e.__value=d,T!==null&&s.add(T)}),qo(()=>{var i=t();if(e===document.activeElement){var f=T;if(s.has(f))return}if(Ja(e,i,a),a&&i===void 0){var d=e.querySelector(":checked");d!==null&&(i=fr(d),r(i))}e.__value=i,a=!1}),dc(e)}function fr(e){return"__value"in e?e.__value:e.value}const pc=Symbol("is custom element"),_c=Symbol("is html");function hc(e,t,r,s){var a=gc(e);a[t]!==(a[t]=r)&&(r==null?e.removeAttribute(t):typeof r!="string"&&bc(e).includes(t)?e[t]=r:e.setAttribute(t,r))}function gc(e){return e.__attributes??(e.__attributes={[pc]:e.nodeName.includes("-"),[_c]:e.namespaceURI===pa})}var aa=new Map;function bc(e){var t=e.getAttribute("is")||e.nodeName,r=aa.get(t);if(r)return r;aa.set(t,r=[]);for(var s,a=e,i=Element.prototype;i!==a;){s=ca(a);for(var f in s)s[f].set&&r.push(f);a=ys(a)}return r}function Tr(e,t,r=t){var s=new WeakSet;Pa(e,"input",async a=>{var i=a?e.defaultValue:e.value;if(i=as(e)?is(i):i,r(i),T!==null&&s.add(T),await Go(),i!==(i=t())){var f=e.selectionStart,d=e.selectionEnd,c=e.value.length;if(e.value=i??"",d!==null){var p=e.value.length;f===d&&d===c&&p>c?(e.selectionStart=p,e.selectionEnd=p):(e.selectionStart=f,e.selectionEnd=Math.min(d,p))}}}),w(t)==null&&e.value&&(r(as(e)?is(e.value):e.value),T!==null&&s.add(T)),Ur(()=>{var a=t();if(e===document.activeElement){var i=T;if(s.has(i))return}as(e)&&a===is(e.value)||e.type==="date"&&!a&&!e.value||a!==e.value&&(e.value=a??"")})}function as(e){var t=e.type;return t==="number"||t==="range"}function is(e){return e===""?null:+e}function mc(e){return function(...t){var r=t[0];return r.preventDefault(),e==null?void 0:e.apply(this,t)}}function wc(e=!1){const t=J,r=t.l.u;if(!r)return;let s=()=>Jo(t.s);if(e){let a=0,i={};const f=Ss(()=>{let d=!1;const c=t.s;for(const p in c)c[p]!==i[p]&&(i[p]=c[p],d=!0);return d&&a++,a});s=()=>n(f)}r.b.length&&jo(()=>{ia(t,s),ls(r.b)}),Gn(()=>{const a=w(()=>r.m.map(Vl));return()=>{for(const i of a)typeof i=="function"&&i()}}),r.a.length&&Gn(()=>{ia(t,s),ls(r.a)})}function ia(e,t){if(e.l.s)for(const r of e.l.s)n(r);t()}const yc="5";var oa;typeof window<"u"&&((oa=window.__svelte??(window.__svelte={})).v??(oa.v=new Set)).add(yc);uo();var Ec=W('<div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Watch issue</span><strong class="status-warn svelte-d3ct2b"> </strong></div>'),xc=W('<section class="notice svelte-d3ct2b"> </section>'),kc=W('<section class="notice danger svelte-d3ct2b"> </section>'),Sc=W('<p class="terminal-line svelte-d3ct2b"><time class="svelte-d3ct2b">--:--:--</time><span class="sys svelte-d3ct2b">SYS</span><strong class="svelte-d3ct2b">Waiting for memory-core watch output...</strong></p>'),Tc=W('<strong class="svelte-d3ct2b"> </strong>'),Ac=W('<strong class="svelte-d3ct2b"> </strong>'),Rc=W('<strong class="svelte-d3ct2b"> </strong>'),Cc=W('<strong class="svelte-d3ct2b"> </strong>'),Nc=W('<strong class="svelte-d3ct2b"> </strong>'),Mc=W('<p class="svelte-d3ct2b"><b class="svelte-d3ct2b">Why:</b> </p>'),Dc=W('<p class="svelte-d3ct2b"><b class="svelte-d3ct2b">Issue:</b> </p>'),Oc=W('<p class="svelte-d3ct2b"><b class="svelte-d3ct2b">Fix:</b> </p>'),Fc=W('<pre class="svelte-d3ct2b"> </pre>'),Ic=W('<div class="terminal-detail svelte-d3ct2b"><p class="svelte-d3ct2b"> </p> <p class="svelte-d3ct2b"><b class="svelte-d3ct2b">Rule:</b> </p> <!> <!> <!> <!></div>'),Lc=W('<section><p class="terminal-line svelte-d3ct2b"><time class="svelte-d3ct2b"> </time> <span class="svelte-d3ct2b"> </span> <!></p> <!></section>'),Pc=W('<div class="metric-row svelte-d3ct2b"><div class="svelte-d3ct2b"><span class="svelte-d3ct2b"> </span> <strong class="svelte-d3ct2b"> </strong></div> <i class="svelte-d3ct2b"></i></div>'),$c=W('<p class="empty svelte-d3ct2b">No rule counters yet.</p>'),jc=W('<div class="metric-row warning svelte-d3ct2b"><div class="svelte-d3ct2b"><span class="svelte-d3ct2b"> </span> <strong class="svelte-d3ct2b"> </strong></div> <i class="svelte-d3ct2b"></i></div>'),Wc=W('<p class="empty svelte-d3ct2b">No file counters yet.</p>'),qc=W('<small class="svelte-d3ct2b"> </small>'),Uc=W('<small class="svelte-d3ct2b"> </small>'),Vc=W('<section class="commit-item svelte-d3ct2b"><div class="commit-meta svelte-d3ct2b"><span> </span> <time> </time></div> <strong class="svelte-d3ct2b"> </strong> <p class="svelte-d3ct2b"> </p> <!> <!></section>'),zc=W('<p class="empty svelte-d3ct2b">No commit hook violations recorded yet.</p>'),Hc=W('<small class="svelte-d3ct2b"> </small>'),Bc=W('<div class="rule-item svelte-d3ct2b"><div><div class="rule-meta svelte-d3ct2b"><span class="svelte-d3ct2b"> </span> <code class="svelte-d3ct2b"> </code></div> <p class="svelte-d3ct2b"> </p> <!></div> <button class="svelte-d3ct2b">Delete</button></div>'),Kc=W('<p class="empty svelte-d3ct2b">No rules match the current filters.</p>'),Yc=W('<div class="command-center svelte-d3ct2b"><aside class="sidebar svelte-d3ct2b"><div class="brand svelte-d3ct2b"><h1 class="svelte-d3ct2b">memory-core</h1> <span class="svelte-d3ct2b">command center</span></div> <nav aria-label="Dashboard navigation" class="svelte-d3ct2b"><a class="nav-item active svelte-d3ct2b" href="/"><span class="nav-icon svelte-d3ct2b">[]</span> <span>Command Center</span></a></nav> <div class="sidebar-footer svelte-d3ct2b"><div><i class="svelte-d3ct2b"></i> </div> <small class="svelte-d3ct2b"> </small></div></aside> <div class="workspace svelte-d3ct2b"><header class="topbar svelte-d3ct2b"><div class="topbar-left svelte-d3ct2b"><button class="icon-button mobile-menu svelte-d3ct2b" aria-label="Menu">=</button> <div><i class="svelte-d3ct2b"></i> <span> </span></div></div> <div class="header-metrics svelte-d3ct2b" aria-label="Global metrics"><div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Violations</span> <strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Files</span> <strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Rules</span> <strong class="svelte-d3ct2b"> </strong></div></div> <div class="top-actions svelte-d3ct2b" aria-label="Status shortcuts"><button class="icon-button svelte-d3ct2b" title="Warnings" aria-label="Warnings">!</button> <button class="icon-button svelte-d3ct2b" title="Rules" aria-label="Rules">R</button> <button class="icon-button svelte-d3ct2b" title="Database" aria-label="Database">DB</button> <button class="icon-button svelte-d3ct2b" title="Network" aria-label="Network">LAN</button></div></header> <main class="canvas svelte-d3ct2b"><section class="status-grid svelte-d3ct2b"><article class="glass-panel status-card svelte-d3ct2b"><div class="card-head svelte-d3ct2b"><h2 class="svelte-d3ct2b">Project</h2> <span class="svelte-d3ct2b"> </span></div> <div class="data-list svelte-d3ct2b"><div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Name</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Type</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Language</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Architecture</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Watcher</span><strong class="svelte-d3ct2b"> </strong></div> <!></div></article> <article class="glass-panel status-card svelte-d3ct2b"><div class="card-head svelte-d3ct2b"><h2 class="svelte-d3ct2b">Runtime</h2> <span class="svelte-d3ct2b"> </span></div> <div class="data-list svelte-d3ct2b"><div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Provider</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Check model</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Check status</span> <strong><!></strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Embedding</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Ollama URL</span><strong class="svelte-d3ct2b"> </strong></div></div></article> <article class="glass-panel status-card svelte-d3ct2b"><div class="card-head svelte-d3ct2b"><h2 class="svelte-d3ct2b">PostgreSQL</h2> <span> </span></div> <div class="data-list svelte-d3ct2b"><div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Database</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">User</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Host</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">URL</span><strong class="svelte-d3ct2b"> </strong></div></div></article></section> <!> <!> <section class="terminal-panel glass-panel svelte-d3ct2b"><div class="terminal-head svelte-d3ct2b"><div class="svelte-d3ct2b"><span class="terminal-icon svelte-d3ct2b">&gt;_</span> <h2 class="svelte-d3ct2b">Live Feed</h2></div> <div class="window-dots svelte-d3ct2b" aria-hidden="true"><i class="svelte-d3ct2b"></i><i class="svelte-d3ct2b"></i><i class="svelte-d3ct2b"></i></div></div> <div class="terminal-body svelte-d3ct2b"><!> <!></div></section> <section class="content-grid svelte-d3ct2b"><article class="glass-panel stats-panel svelte-d3ct2b"><div class="card-head svelte-d3ct2b"><h2 class="svelte-d3ct2b">Stats</h2> <span class="svelte-d3ct2b">Recorded</span></div> <div class="stat-block svelte-d3ct2b"><h3 class="svelte-d3ct2b">Most Violated Rules</h3> <!></div> <div class="stat-block svelte-d3ct2b"><h3 class="svelte-d3ct2b">Problem Files</h3> <!></div> <div class="summary-strip svelte-d3ct2b"><div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Clean</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Issues</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Events</span><strong class="svelte-d3ct2b"> </strong></div></div></article> <article class="glass-panel commit-watch svelte-d3ct2b"><div class="card-head svelte-d3ct2b"><h2 class="svelte-d3ct2b">Commit Watch</h2> <span class="svelte-d3ct2b"> </span></div> <div class="commit-list svelte-d3ct2b"></div></article> <article class="glass-panel rule-engine svelte-d3ct2b"><div class="card-head svelte-d3ct2b"><h2 class="svelte-d3ct2b">Rule Engine</h2> <span class="svelte-d3ct2b"> </span></div> <form class="rule-form svelte-d3ct2b"><div class="control-grid svelte-d3ct2b"><select class="svelte-d3ct2b"><option>Rule</option><option>Decision</option><option>Pattern</option><option>Ignore</option></select> <select class="svelte-d3ct2b"><option>Project</option><option>Global</option></select></div> <textarea rows="3" placeholder="Rule or decision" class="svelte-d3ct2b"></textarea> <div class="control-grid svelte-d3ct2b"><input placeholder="Reason" class="svelte-d3ct2b"/> <input placeholder="Tags" class="svelte-d3ct2b"/></div> <button class="svelte-d3ct2b"> </button></form> <div class="control-grid filters svelte-d3ct2b"><select class="svelte-d3ct2b"><option>All types</option><option>Rules</option><option>Decisions</option><option>Patterns</option><option>Ignores</option></select> <input placeholder="Search rules..." class="svelte-d3ct2b"/></div> <div class="rule-list svelte-d3ct2b"></div></article></section></main></div></div>');function Gc(e,t){ga(t,!1);const r=B(),s=B(),a=B(),i=B(),f=B(),d=B(),c=B(),p=B(),g=B(),x=B(),y=B(),E=B(),b=B();let v=B({config:null,stats:{rules:{},files:{},topRules:[],topFiles:[]},files:[],memories:[]}),m=B([]),A=B(!1),P=B("all"),I=B(""),X=B(!1),ee=B(""),$=B({type:"rule",scope:"project",content:"",reason:"",tags:"dashboard"});const ie=()=>{var o;return((o=n(v).runtime)==null?void 0:o.project.name)??"memory-core"},Ge=()=>{var C,j;const o=((C=n(v).runtime)==null?void 0:C.project.declaredArchitectures)??[],u=((j=n(v).runtime)==null?void 0:j.project.activeArchitectures)??[];return o.length>0?o.join(", "):u.length>0?u.join(", "):"none"};function Ue(o){N(m,[{...o,id:crypto.randomUUID()},...n(m)].slice(0,80))}function le(o){return o.type==="saved"?{type:"saved",timestamp:o.timestamp,file:o.file}:o.type==="clean"?{type:"clean",timestamp:o.timestamp,file:o.file}:o.type==="skipped"?{type:"skipped",timestamp:o.timestamp,file:o.file,reason:o.reason}:o.type==="violations"?{type:"violations",timestamp:o.timestamp,file:o.file,violations:o.violations}:o.type==="error"?{type:"error",timestamp:o.timestamp,message:o.message}:o.type==="ready"?{type:"system",timestamp:o.timestamp,message:`Watching ${o.path} | ${o.rules} rules | ${o.model}`}:{type:"system",timestamp:o.timestamp,message:"Watch stopped"}}function dt(o=[]){N(m,o.map(le).map(u=>({...u,id:crypto.randomUUID()})).reverse().slice(0,80))}function pt(o){return new Intl.DateTimeFormat(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date(o))}function Qt(o){return Math.max(1,...o.map(u=>u.count))}function Xt(o,u){const C=o.file||u;return o.line?`${C}:${o.line}`:C}function Er(o){return o.type==="saved"?"SAVE":o.type==="clean"?"OK":o.type==="skipped"?"SKIP":o.type==="violations"?"FAIL":o.type==="error"?"WARN":"SYS"}async function Ot(){const o=await fetch("/api/snapshot");N(v,await o.json()),dt(n(v).events)}function Zt(){const o=location.protocol==="https:"?"wss:":"ws:",u=new WebSocket(`${o}//${location.host}/ws`);u.addEventListener("open",()=>{N(A,!0),Ue({type:"system",timestamp:new Date().toISOString(),message:"Dashboard connected"})}),u.addEventListener("close",()=>{N(A,!1),Ue({type:"error",timestamp:new Date().toISOString(),message:"Dashboard disconnected"}),setTimeout(Zt,1500)}),u.addEventListener("message",C=>{const j=JSON.parse(C.data);if(j.type==="snapshot"){N(v,j.snapshot),n(m).length===0&&dt(n(v).events);return}j.type==="watch"&&Ue(le(j.event))})}async function xr(){if(n($).content.trim()){N(X,!0),N(ee,"");try{const o=await fetch("/api/memories",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(n($))});if(!o.ok)throw new Error((await o.json()).error??"Save failed");N($,{type:"rule",scope:"project",content:"",reason:"",tags:"dashboard"}),await Ot()}catch(o){N(ee,o.message)}finally{N(X,!1)}}}async function Oe(o){N(ee,"");const u=await fetch(`/api/memories/${o}`,{method:"DELETE"});if(!u.ok){N(ee,(await u.json()).error??"Delete failed");return}await Ot()}Ot().catch(o=>{N(ee,o.message)}),Zt(),ge(()=>(n(v),n(P),n(I)),()=>{N(r,n(v).memories.filter(o=>{const u=n(P)==="all"||o.type===n(P),C=`${o.type} ${o.scope} ${o.content} ${o.reason??""} ${o.tags.join(" ")}`.toLowerCase();return u&&C.includes(n(I).toLowerCase())}))}),ge(()=>n(v),()=>{N(s,n(v).files.reduce((o,u)=>o+u.violations.length,0))}),ge(()=>n(v),()=>{N(a,n(v).files.filter(o=>o.status==="clean").length)}),ge(()=>n(v),()=>{N(i,n(v).files.filter(o=>o.status==="violations").length)}),ge(()=>n(v),()=>{N(f,Object.values(n(v).stats.rules).reduce((o,u)=>o+u,0))}),ge(()=>n(v),()=>{N(d,n(v).stats.recentViolations??[])}),ge(()=>n(d),()=>{N(c,n(d).filter(o=>o.source==="hook"||o.source==="ci"))}),ge(()=>(n(s),n(c)),()=>{N(p,n(s)+n(c).length)}),ge(()=>(n(v),n(c)),()=>{N(g,new Set([...n(v).files.map(o=>o.file),...n(c).map(o=>o.file).filter(Boolean)]).size)}),ge(()=>n(v),()=>{N(x,n(v).memories.filter(o=>["rule","pattern","decision"].includes(o.type)).length)}),ge(()=>n(v),()=>{var o;N(y,((o=n(v).memoryCount)==null?void 0:o.total)??n(v).memories.length)}),ge(()=>n(v),()=>{var o;N(E,((o=n(v).memoryCount)==null?void 0:o.relevant)??n(v).memories.length)}),ge(()=>(n(A),n(v)),()=>{var o,u;N(b,n(A)?((o=n(v).watcher)==null?void 0:o.enabled)===!1?{live:!1,label:"Watch off"}:(u=n(v).watcher)!=null&&u.running?{live:!0,label:"Watcher live"}:{live:!1,label:"Watcher idle"}:{live:!1,label:"Disconnected"})}),Uo(),wc();var er=Yc(),Is=_(er),Qa=h(_(Is),4),Vr=_(Qa);let Ls;var Xa=h(_(Vr)),Za=h(Vr,2),ei=_(Za),ti=h(Is,2),Ps=_(ti),$s=_(Ps),js=h(_($s),2);let Ws;var ri=h(_(js),2),si=_(ri),ni=h($s,2),qs=_(ni),ai=h(_(qs),2),ii=_(ai),Us=h(qs,2),li=h(_(Us),2),oi=_(li),ci=h(Us,2),fi=h(_(ci),2),ui=_(fi),vi=h(Ps,2),Vs=_(vi),zs=_(Vs),Hs=_(zs),di=h(_(Hs),2),pi=_(di),_i=h(Hs,2),Bs=_(_i),hi=h(_(Bs)),gi=_(hi),Ks=h(Bs,2),bi=h(_(Ks)),mi=_(bi),Ys=h(Ks,2),wi=h(_(Ys)),yi=_(wi),Gs=h(Ys,2),Ei=h(_(Gs)),xi=_(Ei),Js=h(Gs,2),ki=h(_(Js)),Si=_(ki),Ti=h(Js,2);{var Ai=o=>{var u=Ec(),C=h(_(u)),j=_(C);V(()=>k(j,(n(v),w(()=>n(v).watcher.error)))),F(o,u)};ue(Ti,o=>{n(v),w(()=>{var u;return(u=n(v).watcher)==null?void 0:u.error})&&o(Ai)})}var Qs=h(zs,2),Xs=_(Qs),Ri=h(_(Xs),2),Ci=_(Ri),Ni=h(Xs,2),Zs=_(Ni),Mi=h(_(Zs)),Di=_(Mi),en=h(Zs,2),Oi=h(_(en)),Fi=_(Oi),tn=h(en,2),rn=h(_(tn),2);let sn;var Ii=_(rn);{var Li=o=>{var u=ta();V(()=>k(u,(n(v),w(()=>{var C;return(C=n(v).runtime)!=null&&C.model.checkModelInstalled?"installed":"missing"})))),F(o,u)},Pi=o=>{var u=ta();V(()=>k(u,(n(v),w(()=>{var C;return(C=n(v).runtime)!=null&&C.model.apiKeyConfigured?"api key set":"api key missing"})))),F(o,u)};ue(Ii,o=>{n(v),w(()=>{var u;return((u=n(v).runtime)==null?void 0:u.model.provider)==="ollama"})?o(Li):o(Pi,-1)})}var nn=h(tn,2),$i=h(_(nn)),ji=_($i),Wi=h(nn,2),qi=h(_(Wi)),Ui=_(qi),Vi=h(Qs,2),an=_(Vi),ln=h(_(an),2);let on;var zi=_(ln),Hi=h(an,2),cn=_(Hi),Bi=h(_(cn)),Ki=_(Bi),fn=h(cn,2),Yi=h(_(fn)),Gi=_(Yi),un=h(fn,2),Ji=h(_(un)),Qi=_(Ji),Xi=h(un,2),Zi=h(_(Xi)),el=_(Zi),vn=h(Vs,2);{var tl=o=>{var u=xc(),C=_(u);V(()=>k(C,(n(v),w(()=>n(v).dbError)))),F(o,u)};ue(vn,o=>{n(v),w(()=>n(v).dbError)&&o(tl)})}var dn=h(vn,2);{var rl=o=>{var u=kc(),C=_(u);V(()=>k(C,n(ee))),F(o,u)};ue(dn,o=>{n(ee)&&o(rl)})}var pn=h(dn,2),sl=h(_(pn),2),_n=_(sl);{var nl=o=>{var u=Sc();F(o,u)};ue(_n,o=>{n(m),w(()=>n(m).length===0)&&o(nl)})}var al=h(_n,2);Pt(al,1,()=>(n(m),w(()=>[...n(m)].reverse())),o=>o.id,(o,u)=>{var C=Lc();let j;var te=_(C),fe=_(te),Ee=_(fe),_e=h(fe,2),S=_(_e),q=h(_e,2);{var Je=L=>{var z=Tc(),Fe=_(z);V(()=>k(Fe,(n(u),w(()=>n(u).message)))),F(L,z)},tr=L=>{var z=Ac(),Fe=_(z);V(()=>k(Fe,`saved: ${n(u),w(()=>n(u).file)??""}`)),F(L,z)},Ft=L=>{var z=Rc(),Fe=_(z);V(()=>k(Fe,`${n(u),w(()=>n(u).file)??""} - no violations`)),F(L,z)},It=L=>{var z=Cc(),Fe=_(z);V(()=>k(Fe,`${n(u),w(()=>n(u).file)??""} - skipped: ${n(u),w(()=>n(u).reason)??""}`)),F(L,z)},Qe=L=>{var z=Nc(),Fe=_(z);V(()=>k(Fe,`${n(u),w(()=>n(u).violations.length)??""} violation${n(u),w(()=>n(u).violations.length===1?"":"s")??""} in ${n(u),w(()=>n(u).file)??""}`)),F(L,z)};ue(q,L=>{n(u),w(()=>n(u).type==="system"||n(u).type==="error")?L(Je):(n(u),w(()=>n(u).type==="saved")?L(tr,1):(n(u),w(()=>n(u).type==="clean")?L(Ft,2):(n(u),w(()=>n(u).type==="skipped")?L(It,3):L(Qe,-1))))})}var Lt=h(te,2);{var he=L=>{var z=sc(),Fe=Fo(z);Pt(Fe,3,()=>(n(u),w(()=>n(u).violations)),(Fn,H)=>`${n(u).id}-${H}`,(Fn,H,Al)=>{var In=Ic(),Ln=_(In),Rl=_(Ln),Pn=h(Ln,2),Cl=h(_(Pn)),$n=h(Pn,2);{var Nl=re=>{var Ie=Mc(),_t=h(_(Ie));V(()=>k(_t,` ${n(H),w(()=>n(H).reason)??""}`)),F(re,Ie)};ue($n,re=>{n(H),w(()=>n(H).reason)&&re(Nl)})}var jn=h($n,2);{var Ml=re=>{var Ie=Dc(),_t=h(_(Ie));V(()=>k(_t,` ${n(H),w(()=>n(H).issue)??""}`)),F(re,Ie)};ue(jn,re=>{n(H),w(()=>n(H).issue)&&re(Ml)})}var Wn=h(jn,2);{var Dl=re=>{var Ie=Oc(),_t=h(_(Ie));V(()=>k(_t,` ${n(H),w(()=>n(H).suggestion)??""}`)),F(re,Ie)};ue(Wn,re=>{n(H),w(()=>n(H).suggestion)&&re(Dl)})}var Ol=h(Wn,2);{var Fl=re=>{var Ie=Fc(),_t=_(Ie);V(()=>k(_t,(n(H),w(()=>n(H).code)))),F(re,Ie)};ue(Ol,re=>{n(H),w(()=>n(H).code)&&re(Fl)})}V(re=>{k(Rl,`[${n(Al)+1}] ${re??""}`),k(Cl,` ${n(H),w(()=>n(H).rule)??""}`)},[()=>(n(H),n(u),w(()=>Xt(n(H),n(u).file)))]),F(Fn,In)}),F(L,z)};ue(Lt,L=>{n(u),w(()=>n(u).type==="violations")&&L(he)})}V((L,z)=>{j=nr(C,1,"svelte-d3ct2b",null,j,{"error-line":n(u).type==="error","ok-line":n(u).type==="clean","violation-line":n(u).type==="violations"}),k(Ee,L),k(S,z)},[()=>(n(u),w(()=>pt(n(u).timestamp))),()=>(n(u),w(()=>Er(n(u))))]),F(o,C)});var il=h(pn,2),hn=_(il),gn=h(_(hn),2),ll=h(_(gn),2);Pt(ll,1,()=>(n(v),w(()=>n(v).stats.topRules.slice(0,5))),o=>o.name,(o,u)=>{var C=Pc(),j=_(C),te=_(j),fe=_(te),Ee=h(te,2),_e=_(Ee),S=h(j,2);V(q=>{k(fe,(n(u),w(()=>n(u).name))),k(_e,(n(u),w(()=>n(u).count))),na(S,q)},[()=>(n(u),n(v),w(()=>`width: ${n(u).count/Qt(n(v).stats.topRules)*100}%`))]),F(o,C)},o=>{var u=$c();F(o,u)});var bn=h(gn,2),ol=h(_(bn),2);Pt(ol,1,()=>(n(v),w(()=>n(v).stats.topFiles.slice(0,5))),o=>o.name,(o,u)=>{var C=jc(),j=_(C),te=_(j),fe=_(te),Ee=h(te,2),_e=_(Ee),S=h(j,2);V(q=>{k(fe,(n(u),w(()=>n(u).name))),k(_e,(n(u),w(()=>n(u).count))),na(S,q)},[()=>(n(u),n(v),w(()=>`width: ${n(u).count/Qt(n(v).stats.topFiles)*100}%`))]),F(o,C)},o=>{var u=Wc();F(o,u)});var cl=h(bn,2),mn=_(cl),fl=h(_(mn)),ul=_(fl),wn=h(mn,2),vl=h(_(wn)),dl=_(vl),pl=h(wn,2),_l=h(_(pl)),hl=_(_l),yn=h(hn,2),En=_(yn),gl=h(_(En),2),bl=_(gl),ml=h(En,2);Pt(ml,7,()=>(n(c),w(()=>n(c).slice(0,8))),(o,u)=>`${o.timestamp}-${u}`,(o,u)=>{var C=Vc(),j=_(C),te=_(j),fe=_(te),Ee=h(te,2),_e=_(Ee),S=h(j,2),q=_(S),Je=h(S,2),tr=_(Je),Ft=h(Je,2);{var It=he=>{var L=qc(),z=_(L);V(()=>k(z,(n(u),w(()=>n(u).issue)))),F(he,L)};ue(Ft,he=>{n(u),w(()=>n(u).issue)&&he(It)})}var Qe=h(Ft,2);{var Lt=he=>{var L=Uc(),z=_(L);V(()=>k(z,(n(u),w(()=>n(u).suggestion)))),F(he,L)};ue(Qe,he=>{n(u),w(()=>n(u).suggestion)&&he(Lt)})}V((he,L)=>{k(fe,(n(u),w(()=>n(u).source==="ci"?"CI":"Hook"))),k(_e,he),k(q,(n(u),w(()=>n(u).rule))),k(tr,L)},[()=>(n(u),w(()=>pt(n(u).timestamp))),()=>(n(u),w(()=>Xt(n(u),n(u).file||"staged diff")))]),F(o,C)},o=>{var u=zc();F(o,u)});var wl=h(yn,2),xn=_(wl),yl=h(_(xn),2),El=_(yl),zr=h(xn,2),kn=_(zr),Hr=_(kn),Br=_(Hr);Br.value=Br.__value="rule";var Kr=h(Br);Kr.value=Kr.__value="decision";var Yr=h(Kr);Yr.value=Yr.__value="pattern";var Sn=h(Yr);Sn.value=Sn.__value="ignore";var Tn=h(Hr,2),Gr=_(Tn);Gr.value=Gr.__value="project";var An=h(Gr);An.value=An.__value="global";var Rn=h(kn,2),Cn=h(Rn,2),Nn=_(Cn),xl=h(Nn,2),Mn=h(Cn,2),kl=_(Mn),Dn=h(zr,2),Jr=_(Dn),Qr=_(Jr);Qr.value=Qr.__value="all";var Xr=h(Qr);Xr.value=Xr.__value="rule";var Zr=h(Xr);Zr.value=Zr.__value="decision";var es=h(Zr);es.value=es.__value="pattern";var On=h(es);On.value=On.__value="ignore";var Sl=h(Jr,2),Tl=h(Dn,2);Pt(Tl,5,()=>n(r),o=>o.id,(o,u)=>{var C=Bc(),j=_(C),te=_(j),fe=_(te),Ee=_(fe),_e=h(fe,2),S=_(_e),q=h(te,2),Je=_(q),tr=h(q,2);{var Ft=Qe=>{var Lt=Hc(),he=_(Lt);V(()=>k(he,(n(u),w(()=>n(u).reason)))),F(Qe,Lt)};ue(tr,Qe=>{n(u),w(()=>n(u).reason)&&Qe(Ft)})}var It=h(j,2);V(Qe=>{k(Ee,(n(u),w(()=>n(u).scope))),k(S,`Rule-${Qe??""}`),k(Je,(n(u),w(()=>n(u).content))),hc(It,"aria-label",(n(u),w(()=>`Delete ${n(u).id}`)))},[()=>(n(u),w(()=>String(n(u).id).padStart(3,"0")))]),Zn("click",It,()=>Oe(n(u).id)),F(o,C)},o=>{var u=Kc();F(o,u)}),V((o,u,C)=>{var j,te,fe,Ee,_e;Ls=nr(Vr,1,"status-chip svelte-d3ct2b",null,Ls,{live:n(b).live}),k(Xa,` ${n(b),w(()=>n(b).label)??""}`),k(ei,(n(v),w(()=>{var S;return((S=n(v).runtime)==null?void 0:S.model.label)??"runtime pending"}))),Ws=nr(js,1,"live-label svelte-d3ct2b",null,Ws,{live:n(b).live}),k(si,(n(b),w(()=>n(b).label))),k(ii,n(p)),k(oi,n(g)),k(ui,n(x)),k(pi,(n(v),w(()=>{var S;return(S=n(v).runtime)!=null&&S.project.initialized?"Initialized":"Not initialized"}))),k(gi,o),k(mi,(n(v),w(()=>{var S;return((S=n(v).runtime)==null?void 0:S.project.type)??"unknown"}))),k(yi,(n(v),w(()=>{var S;return((S=n(v).runtime)==null?void 0:S.project.language)??"unknown"}))),k(xi,u),k(Si,(n(v),w(()=>{var S,q;return((S=n(v).watcher)==null?void 0:S.enabled)===!1?"disabled":(q=n(v).watcher)!=null&&q.running?"running":"idle"}))),k(Ci,(n(v),w(()=>{var S;return((S=n(v).runtime)==null?void 0:S.model.label)??"pending"}))),k(Di,(n(v),w(()=>{var S;return((S=n(v).runtime)==null?void 0:S.model.provider)??"unknown"}))),k(Fi,(n(v),w(()=>{var S,q,Je;return((S=n(v).runtime)==null?void 0:S.model.checkModelResolved)??((q=n(v).runtime)==null?void 0:q.model.checkModel)??((Je=n(v).runtime)==null?void 0:Je.model.chatModel)??"unknown"}))),sn=nr(rn,1,"svelte-d3ct2b",null,sn,{"status-ok":((j=n(v).runtime)==null?void 0:j.model.checkModelInstalled)||((te=n(v).runtime)==null?void 0:te.model.apiKeyConfigured),"status-warn":((fe=n(v).runtime)==null?void 0:fe.model.checkModelInstalled)===!1||((Ee=n(v).runtime)==null?void 0:Ee.model.error)}),k(ji,(n(v),w(()=>{var S,q;return((S=n(v).runtime)==null?void 0:S.model.embeddingModelResolved)??((q=n(v).runtime)==null?void 0:q.model.embeddingModel)??"unknown"}))),k(Ui,(n(v),w(()=>{var S;return((S=n(v).runtime)==null?void 0:S.model.ollamaUrl)??"unknown"}))),on=nr(ln,1,"svelte-d3ct2b",null,on,{success:(_e=n(v).runtime)==null?void 0:_e.postgres.connected}),k(zi,(n(v),w(()=>{var S;return(S=n(v).runtime)!=null&&S.postgres.connected?"Connected":"Not connected"}))),k(Ki,(n(v),w(()=>{var S,q;return((S=n(v).runtime)==null?void 0:S.postgres.serverDatabase)??((q=n(v).runtime)==null?void 0:q.postgres.database)??"unknown"}))),k(Gi,(n(v),w(()=>{var S,q;return((S=n(v).runtime)==null?void 0:S.postgres.serverUser)??((q=n(v).runtime)==null?void 0:q.postgres.user)??"unknown"}))),k(Qi,`${n(v),w(()=>{var S;return((S=n(v).runtime)==null?void 0:S.postgres.host)??"unknown"})??""}${n(v),w(()=>{var S;return(S=n(v).runtime)!=null&&S.postgres.port?`:${n(v).runtime.postgres.port}`:""})??""}`),k(el,(n(v),w(()=>{var S;return((S=n(v).runtime)==null?void 0:S.postgres.url)??"(not set)"}))),k(ul,n(a)),k(dl,n(p)),k(hl,n(f)),k(bl,`${n(c),w(()=>n(c).length)??""} recent`),k(El,`${n(x)??""} rules active`),Mn.disabled=C,k(kl,n(X)?"Saving...":"Add New Architecture Rule")},[()=>w(ie),()=>w(Ge),()=>(n(X),n($),w(()=>n(X)||!n($).content.trim()))]),ns(Hr,()=>n($).type,o=>rr($,n($).type=o)),ns(Tn,()=>n($).scope,o=>rr($,n($).scope=o)),Tr(Rn,()=>n($).content,o=>rr($,n($).content=o)),Tr(Nn,()=>n($).reason,o=>rr($,n($).reason=o)),Tr(xl,()=>n($).tags,o=>rr($,n($).tags=o)),Zn("submit",zr,mc(xr)),ns(Jr,()=>n(P),o=>N(P,o)),Tr(Sl,()=>n(I),o=>N(I,o)),F(e,er),ba()}nc(Gc,{target:document.getElementById("app")});
@@ -0,0 +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}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select,textarea{font:inherit}button{border:0}:root{color-scheme:dark;--background: #111318;--surface: #1a1c20;--surface-low: #0c0e12;--surface-mid: #1e2024;--surface-high: #282a2e;--surface-bright: #37393e;--primary: #b8c3ff;--primary-container: #2e5bff;--secondary: #03f59b;--secondary-soft: #cfffdd;--tertiary: #ffba20;--error: #ffb4ab;--error-strong: #ff5d52;--text: #e2e2e8;--muted: #c4c5d9;--outline: #434656}body{overflow:hidden;background:radial-gradient(circle at 78% 2%,rgba(46,91,255,.18),transparent 28rem),radial-gradient(circle at 18% 0%,rgba(3,245,155,.08),transparent 22rem),var(--background);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{scrollbar-color:rgba(255,255,255,.18) transparent;scrollbar-width:thin}.command-center.svelte-d3ct2b{display:grid;grid-template-columns:256px minmax(0,1fr);height:100vh;min-width:0}.sidebar.svelte-d3ct2b{display:flex;min-height:0;flex-direction:column;border-right:1px solid rgba(255,255,255,.08);padding:24px 16px;background:#0c0e12db;box-shadow:18px 0 46px #00000047;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.brand.svelte-d3ct2b{margin-bottom:34px;padding:0 8px}.brand.svelte-d3ct2b h1:where(.svelte-d3ct2b){margin:0;color:var(--primary);font-size:30px;font-weight:900;line-height:1.05;text-shadow:0 0 16px rgba(184,195,255,.34)}.brand.svelte-d3ct2b span:where(.svelte-d3ct2b),.sidebar-footer.svelte-d3ct2b small:where(.svelte-d3ct2b),.card-head.svelte-d3ct2b span:where(.svelte-d3ct2b),.data-list.svelte-d3ct2b span:where(.svelte-d3ct2b),.header-metrics.svelte-d3ct2b span:where(.svelte-d3ct2b),.stat-block.svelte-d3ct2b h3:where(.svelte-d3ct2b),.rule-meta.svelte-d3ct2b,.empty.svelte-d3ct2b{color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase}.sidebar.svelte-d3ct2b nav:where(.svelte-d3ct2b){display:grid;gap:6px}.nav-item.svelte-d3ct2b{display:flex;align-items:center;gap:12px;border-right:2px solid var(--primary);border-radius:4px;padding:12px 14px;background:#2e5bff29;color:var(--primary);font-size:14px;font-weight:800;text-decoration:none}.nav-icon.svelte-d3ct2b{display:grid;place-items:center;width:22px;height:22px;border-radius:6px;background:#b8c3ff1f;font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:10px}.sidebar-footer.svelte-d3ct2b{display:grid;gap:10px;margin-top:auto;border-top:1px solid rgba(255,255,255,.06);padding:16px 8px 0}.status-chip.svelte-d3ct2b,.live-label.svelte-d3ct2b{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:11px;font-weight:900;text-transform:uppercase}.status-chip.svelte-d3ct2b i:where(.svelte-d3ct2b),.live-label.svelte-d3ct2b i:where(.svelte-d3ct2b){width:8px;height:8px;border-radius:50%;background:var(--tertiary);box-shadow:0 0 8px var(--tertiary)}.status-chip.live.svelte-d3ct2b i:where(.svelte-d3ct2b),.live-label.live.svelte-d3ct2b i:where(.svelte-d3ct2b){background:var(--secondary);box-shadow:0 0 8px var(--secondary),0 0 16px #03f59b80}.workspace.svelte-d3ct2b{display:flex;min-width:0;min-height:0;flex-direction:column}.topbar.svelte-d3ct2b{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;height:64px;border-bottom:1px solid rgba(255,255,255,.06);padding:0 24px;background:#111318c2;box-shadow:0 0 24px #2e5bff17;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.topbar-left.svelte-d3ct2b,.top-actions.svelte-d3ct2b{display:flex;align-items:center;gap:10px}.top-actions.svelte-d3ct2b{justify-content:flex-end}.mobile-menu.svelte-d3ct2b{display:none}.icon-button.svelte-d3ct2b{display:grid;place-items:center;min-width:34px;height:34px;border:0;border-radius:999px;background:transparent;color:var(--muted);cursor:pointer;font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:11px;font-weight:900}.icon-button.svelte-d3ct2b:hover{background:var(--surface-high);color:var(--text)}.header-metrics.svelte-d3ct2b{display:flex;align-items:center;gap:32px;border-right:1px solid rgba(255,255,255,.06);border-left:1px solid rgba(255,255,255,.06);padding:0 32px}.header-metrics.svelte-d3ct2b div:where(.svelte-d3ct2b){text-align:center}.header-metrics.svelte-d3ct2b strong:where(.svelte-d3ct2b){display:block;margin-top:3px;font-size:20px;line-height:1}.canvas.svelte-d3ct2b{flex:1;min-height:0;overflow-y:auto;padding:24px}.status-grid.svelte-d3ct2b,.content-grid.svelte-d3ct2b,.control-grid.svelte-d3ct2b{display:grid;gap:12px}.status-grid.svelte-d3ct2b{grid-template-columns:repeat(3,minmax(0,1fr))}.content-grid.svelte-d3ct2b{grid-template-columns:4fr 8fr;margin-top:12px}.glass-panel.svelte-d3ct2b{position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:linear-gradient(135deg,#ffffff09,#fff0),#12141cb8;box-shadow:0 18px 36px #0000003d;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.status-card.svelte-d3ct2b,.stats-panel.svelte-d3ct2b,.commit-watch.svelte-d3ct2b,.rule-engine.svelte-d3ct2b{padding:16px}.card-head.svelte-d3ct2b{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid rgba(255,255,255,.06);padding-bottom:10px}h2.svelte-d3ct2b,h3.svelte-d3ct2b,p.svelte-d3ct2b{margin:0}h2.svelte-d3ct2b{color:var(--text);font-size:20px;font-weight:700;line-height:1.35}.card-head.svelte-d3ct2b span.success:where(.svelte-d3ct2b){color:var(--secondary)}.data-list.svelte-d3ct2b{display:grid;gap:9px;margin-top:14px;font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:13px}.data-list.svelte-d3ct2b div:where(.svelte-d3ct2b){display:flex;align-items:baseline;justify-content:space-between;gap:18px;min-width:0}.data-list.svelte-d3ct2b strong:where(.svelte-d3ct2b){min-width:0;overflow:hidden;color:var(--text);font-weight:700;text-align:right;text-overflow:ellipsis;white-space:nowrap}.data-list.svelte-d3ct2b div:where(.svelte-d3ct2b):first-child strong:where(.svelte-d3ct2b),.data-list.svelte-d3ct2b div:where(.svelte-d3ct2b):nth-child(2) strong:where(.svelte-d3ct2b){color:var(--primary)}.data-list.svelte-d3ct2b strong.status-ok:where(.svelte-d3ct2b){color:var(--secondary)}.data-list.svelte-d3ct2b strong.status-warn:where(.svelte-d3ct2b){color:var(--tertiary)}.notice.svelte-d3ct2b{margin-top:12px;border:1px solid rgba(255,186,32,.26);border-radius:8px;padding:12px 14px;background:#8f66002e;color:var(--tertiary)}.notice.danger.svelte-d3ct2b{border-color:#ffb4ab42;background:#93000a33;color:var(--error)}.terminal-panel.svelte-d3ct2b{margin-top:12px}.terminal-panel.svelte-d3ct2b:before{position:absolute;top:0;right:0;left:0;height:1px;background:linear-gradient(90deg,transparent,var(--primary-container),transparent);content:"";opacity:.7}.terminal-head.svelte-d3ct2b{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid rgba(255,255,255,.06);padding:10px 14px;background:#1e2024b8}.terminal-head.svelte-d3ct2b div:where(.svelte-d3ct2b):first-child{display:flex;align-items:center;gap:10px}.terminal-icon.svelte-d3ct2b{color:var(--primary);font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:13px;font-weight:900}.terminal-head.svelte-d3ct2b h2:where(.svelte-d3ct2b){font-size:12px;font-weight:900;text-transform:uppercase}.window-dots.svelte-d3ct2b{display:flex;gap:8px}.window-dots.svelte-d3ct2b i:where(.svelte-d3ct2b){width:8px;height:8px;border-radius:50%;background:#ffb4ab99}.window-dots.svelte-d3ct2b i:where(.svelte-d3ct2b):nth-child(2){background:#ffba2099}.window-dots.svelte-d3ct2b i:where(.svelte-d3ct2b):nth-child(3){background:#03f59b99}.terminal-body.svelte-d3ct2b{display:grid;gap:3px;height:220px;overflow:auto;padding:16px;background:#0c0e12;color:var(--muted);font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:12px;line-height:1.45}.terminal-body.svelte-d3ct2b section:where(.svelte-d3ct2b){display:grid;gap:6px}.terminal-line.svelte-d3ct2b{display:flex;gap:12px;min-width:0;opacity:.82}.terminal-line.svelte-d3ct2b time:where(.svelte-d3ct2b){flex:0 0 auto;color:var(--outline)}.terminal-line.svelte-d3ct2b span:where(.svelte-d3ct2b){flex:0 0 auto;color:var(--primary)}.terminal-line.svelte-d3ct2b strong:where(.svelte-d3ct2b){min-width:0;color:var(--text);font-weight:400;overflow-wrap:anywhere}.terminal-body.svelte-d3ct2b .ok-line:where(.svelte-d3ct2b) span:where(.svelte-d3ct2b){color:var(--secondary)}.terminal-body.svelte-d3ct2b .error-line:where(.svelte-d3ct2b) span:where(.svelte-d3ct2b),.terminal-body.svelte-d3ct2b .violation-line:where(.svelte-d3ct2b) span:where(.svelte-d3ct2b){color:var(--tertiary)}.terminal-detail.svelte-d3ct2b{display:grid;gap:3px;margin-left:96px;border-left:2px solid rgba(255,180,171,.45);padding-left:12px;color:var(--text)}.terminal-detail.svelte-d3ct2b b:where(.svelte-d3ct2b){color:var(--tertiary)}.terminal-detail.svelte-d3ct2b pre:where(.svelte-d3ct2b){overflow:auto;margin:4px 0 0;border-radius:6px;padding:8px;background:#ffffff0a;color:var(--text)}.stat-block.svelte-d3ct2b{display:grid;gap:9px;min-width:0;margin-top:16px}.metric-row.svelte-d3ct2b{display:grid;grid-template-rows:auto 4px;gap:7px;min-width:0}.metric-row.svelte-d3ct2b div:where(.svelte-d3ct2b){display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;color:var(--text);font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:12px}.metric-row.svelte-d3ct2b span:where(.svelte-d3ct2b){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.metric-row.svelte-d3ct2b strong:where(.svelte-d3ct2b){color:var(--error)}.metric-row.warning.svelte-d3ct2b strong:where(.svelte-d3ct2b){color:var(--tertiary)}.metric-row.svelte-d3ct2b:after{grid-row:2;grid-column:1;display:block;height:4px;border-radius:999px;background:var(--surface-high);content:"";z-index:0}.metric-row.svelte-d3ct2b i:where(.svelte-d3ct2b){grid-row:2;grid-column:1;z-index:1;display:block;height:4px;max-width:100%;border-radius:999px;background:var(--error)}.metric-row.warning.svelte-d3ct2b i:where(.svelte-d3ct2b){background:var(--tertiary)}.summary-strip.svelte-d3ct2b{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:18px}.summary-strip.svelte-d3ct2b div:where(.svelte-d3ct2b){border:1px solid rgba(255,255,255,.06);border-radius:6px;padding:10px;background:#ffffff09}.summary-strip.svelte-d3ct2b span:where(.svelte-d3ct2b){display:block;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase}.summary-strip.svelte-d3ct2b strong:where(.svelte-d3ct2b){display:block;margin-top:4px;color:var(--text);font-size:22px}.commit-watch.svelte-d3ct2b{min-width:0}.commit-list.svelte-d3ct2b{display:grid;gap:10px;margin-top:18px}.commit-item.svelte-d3ct2b{display:grid;gap:5px;min-width:0;border:1px solid rgba(255,180,171,.16);border-radius:6px;padding:10px;background:#ffb4ab0b}.commit-meta.svelte-d3ct2b{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:11px;text-transform:uppercase}.commit-item.svelte-d3ct2b strong:where(.svelte-d3ct2b),.commit-item.svelte-d3ct2b p:where(.svelte-d3ct2b),.commit-item.svelte-d3ct2b small:where(.svelte-d3ct2b){min-width:0;overflow-wrap:anywhere}.commit-item.svelte-d3ct2b strong:where(.svelte-d3ct2b){color:var(--error);font-size:13px}.commit-item.svelte-d3ct2b p:where(.svelte-d3ct2b),.commit-item.svelte-d3ct2b small:where(.svelte-d3ct2b){color:var(--text);font-size:12px}.rule-engine.svelte-d3ct2b{min-width:0}.rule-form.svelte-d3ct2b,.rule-list.svelte-d3ct2b{display:grid;gap:10px;margin-top:12px}.control-grid.svelte-d3ct2b{grid-template-columns:repeat(2,minmax(0,1fr))}.filters.svelte-d3ct2b{margin-top:12px}input.svelte-d3ct2b,select.svelte-d3ct2b,textarea.svelte-d3ct2b{width:100%;border:1px solid rgba(255,255,255,.1);border-radius:6px;padding:10px 11px;background:var(--surface-high);color:var(--text);font:inherit}textarea.svelte-d3ct2b{resize:vertical}button.svelte-d3ct2b{cursor:pointer;border:0;border-radius:6px;padding:10px 12px;background:#2e5bff24;color:var(--primary);font:inherit;font-weight:900}button.svelte-d3ct2b:hover{background:#2e5bff3d}button.svelte-d3ct2b:disabled{cursor:not-allowed;opacity:.55}.rule-list.svelte-d3ct2b{max-height:300px;overflow:auto;padding-right:4px}.rule-item.svelte-d3ct2b{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;border:1px solid rgba(255,255,255,.06);border-radius:6px;padding:12px;background:#1e20248f}.rule-item.svelte-d3ct2b:hover{background:#282a2eb8}.rule-meta.svelte-d3ct2b{display:flex;align-items:center;gap:8px}.rule-meta.svelte-d3ct2b span:where(.svelte-d3ct2b){border:1px solid rgba(184,195,255,.18);border-radius:4px;padding:2px 6px;background:#b8c3ff1a;color:var(--primary)}.rule-meta.svelte-d3ct2b code:where(.svelte-d3ct2b){color:var(--muted);font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace}.rule-item.svelte-d3ct2b p:where(.svelte-d3ct2b){margin-top:7px;color:var(--text);font-size:14px;overflow-wrap:anywhere}.rule-item.svelte-d3ct2b small:where(.svelte-d3ct2b){display:block;margin-top:5px;color:var(--muted)}.rule-item.svelte-d3ct2b button:where(.svelte-d3ct2b){background:transparent;color:var(--muted)}.rule-item.svelte-d3ct2b button:where(.svelte-d3ct2b):hover{border-color:#ffb4ab4d;background:#ffb4ab1a;color:var(--error)}@media (max-width: 1080px){.command-center.svelte-d3ct2b{grid-template-columns:1fr}.sidebar.svelte-d3ct2b{display:none}.mobile-menu.svelte-d3ct2b{display:grid}.status-grid.svelte-d3ct2b,.content-grid.svelte-d3ct2b{grid-template-columns:1fr}}@media (max-width: 760px){.topbar.svelte-d3ct2b{grid-template-columns:1fr auto;height:auto;padding:12px}.header-metrics.svelte-d3ct2b{display:none}.top-actions.svelte-d3ct2b{gap:4px}.canvas.svelte-d3ct2b{padding:12px}.data-list.svelte-d3ct2b div:where(.svelte-d3ct2b),.terminal-line.svelte-d3ct2b,.rule-item.svelte-d3ct2b,.control-grid.svelte-d3ct2b{grid-template-columns:1fr}.data-list.svelte-d3ct2b div:where(.svelte-d3ct2b),.terminal-line.svelte-d3ct2b{display:grid;gap:4px}.data-list.svelte-d3ct2b strong:where(.svelte-d3ct2b){text-align:left}.terminal-detail.svelte-d3ct2b{margin-left:0}}
@@ -4,8 +4,8 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Memory Core Dashboard</title>
7
- <script type="module" crossorigin src="/assets/index-BCu-gBna.js"></script>
8
- <link rel="stylesheet" crossorigin href="/assets/index-BxS_xPdw.css">
7
+ <script type="module" crossorigin src="/assets/index-BuVM8CHT.js"></script>
8
+ <link rel="stylesheet" crossorigin href="/assets/index-CJyZEmIe.css">
9
9
  </head>
10
10
  <body>
11
11
  <div id="app"></div>
@@ -2,8 +2,9 @@
2
2
  import {
3
3
  detectProject,
4
4
  getChatProviderLabel,
5
+ inferProjectArchitectures,
5
6
  startWatch
6
- } from "./chunk-T4WJR6L6.js";
7
+ } from "./chunk-J7SPACA3.js";
7
8
  import {
8
9
  embed
9
10
  } from "./chunk-HAGRPKR3.js";
@@ -29,6 +30,10 @@ import chalk from "chalk";
29
30
  var clients = /* @__PURE__ */ new Set();
30
31
  var fileStatuses = /* @__PURE__ */ new Map();
31
32
  var recentEvents = [];
33
+ var watcherStatus = {
34
+ enabled: false,
35
+ running: false
36
+ };
32
37
  var RUNTIME_ENV_KEYS = [
33
38
  "DATABASE_URL",
34
39
  "OLLAMA_URL",
@@ -169,7 +174,7 @@ async function getRuntimeStatus(config) {
169
174
  config?.backendArchitecture,
170
175
  config?.frontendFramework
171
176
  ].filter((value) => typeof value === "string" && value.length > 0);
172
- const activeArchitectures = declaredArchitectures.length > 0 ? declaredArchitectures : config?.projectType === "backend" ? ["clean-architecture"] : [];
177
+ const activeArchitectures = inferProjectArchitectures(process.cwd(), config);
173
178
  const database = parseDatabaseUrl(Config.databaseUrl);
174
179
  let postgres = {
175
180
  ...database,
@@ -263,10 +268,12 @@ async function getSnapshot() {
263
268
  rules: stats.rules ?? {},
264
269
  files: stats.files ?? {},
265
270
  topRules: topEntries(stats.rules),
266
- topFiles: topEntries(stats.files)
271
+ topFiles: topEntries(stats.files),
272
+ recentViolations: stats.recentViolations ?? []
267
273
  },
268
274
  files: Array.from(fileStatuses.values()).sort((a, b) => b.lastSeen.localeCompare(a.lastSeen)),
269
275
  events: recentEvents,
276
+ watcher: watcherStatus,
270
277
  memories: relevantMemories,
271
278
  memoryCount: {
272
279
  total: memories.length,
@@ -314,10 +321,11 @@ async function handleApi(req, res, url) {
314
321
  return;
315
322
  }
316
323
  const config = readProjectConfig();
324
+ const activeArchitectures = inferProjectArchitectures(process.cwd(), config);
317
325
  await saveMemory({
318
326
  type: typeof body.type === "string" ? body.type : "rule",
319
327
  scope: typeof body.scope === "string" ? body.scope : "project",
320
- architecture: typeof config?.backendArchitecture === "string" ? config.backendArchitecture : typeof config?.frontendFramework === "string" ? config.frontendFramework : void 0,
328
+ architecture: typeof config?.backendArchitecture === "string" ? config.backendArchitecture : typeof config?.frontendFramework === "string" ? config.frontendFramework : activeArchitectures[0],
321
329
  projectName: typeof config?.projectName === "string" ? config.projectName : void 0,
322
330
  title: typeof body.title === "string" ? body.title : void 0,
323
331
  content,
@@ -435,6 +443,14 @@ async function broadcastSnapshot() {
435
443
  function handleWatchEvent(event) {
436
444
  recentEvents.push(event);
437
445
  if (recentEvents.length > 100) recentEvents.shift();
446
+ watcherStatus.lastEventAt = event.timestamp;
447
+ if (event.type === "ready") {
448
+ watcherStatus.running = true;
449
+ watcherStatus.error = void 0;
450
+ watcherStatus.path = event.path;
451
+ watcherStatus.model = event.model;
452
+ watcherStatus.rules = event.rules;
453
+ }
438
454
  if (event.type === "saved") {
439
455
  fileStatuses.set(event.file, {
440
456
  file: event.file,
@@ -451,6 +467,15 @@ function handleWatchEvent(event) {
451
467
  violations: []
452
468
  });
453
469
  }
470
+ if (event.type === "skipped") {
471
+ fileStatuses.set(event.file, {
472
+ file: event.file,
473
+ status: "skipped",
474
+ lastSeen: event.timestamp,
475
+ violations: [],
476
+ message: event.reason
477
+ });
478
+ }
454
479
  if (event.type === "violations") {
455
480
  fileStatuses.set(event.file, {
456
481
  file: event.file,
@@ -459,6 +484,13 @@ function handleWatchEvent(event) {
459
484
  violations: event.violations
460
485
  });
461
486
  }
487
+ if (event.type === "error") {
488
+ watcherStatus.error = event.message;
489
+ if (!watcherStatus.running) watcherStatus.running = false;
490
+ }
491
+ if (event.type === "stopped") {
492
+ watcherStatus.running = false;
493
+ }
462
494
  broadcast({ type: "watch", event });
463
495
  void broadcastSnapshot();
464
496
  }
@@ -486,10 +518,13 @@ function acceptWebSocket(req, socket) {
486
518
  function startConfigWatch() {
487
519
  let timer;
488
520
  const watchedFiles = [".env", ".memory-core.env", ".memory-core.json", ".memory-core-stats.json"];
489
- const watchers = watchedFiles.map((file) => join(process.cwd(), file)).filter((filePath) => existsSync(filePath)).map((filePath) => watch(filePath, () => {
521
+ const watchedPaths = /* @__PURE__ */ new Set();
522
+ const watchers = [];
523
+ const reload = (filePath) => {
490
524
  if (timer) clearTimeout(timer);
491
- timer = setTimeout(() => {
525
+ timer = setTimeout(async () => {
492
526
  reloadRuntimeEnv();
527
+ await closePool();
493
528
  recentEvents.push({
494
529
  type: "error",
495
530
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
@@ -498,6 +533,22 @@ function startConfigWatch() {
498
533
  if (recentEvents.length > 100) recentEvents.shift();
499
534
  void broadcastSnapshot();
500
535
  }, 150);
536
+ };
537
+ for (const file of watchedFiles) {
538
+ const filePath = join(process.cwd(), file);
539
+ if (!existsSync(filePath)) continue;
540
+ watchedPaths.add(filePath);
541
+ watchers.push(watch(filePath, () => reload(filePath)));
542
+ }
543
+ watchers.push(watch(process.cwd(), (_eventType, filename) => {
544
+ if (typeof filename !== "string" || !watchedFiles.includes(filename)) return;
545
+ const filePath = join(process.cwd(), filename);
546
+ if (!existsSync(filePath)) return;
547
+ if (!watchedPaths.has(filePath)) {
548
+ watchedPaths.add(filePath);
549
+ watchers.push(watch(filePath, () => reload(filePath)));
550
+ }
551
+ reload(filePath);
501
552
  }));
502
553
  return () => {
503
554
  if (timer) clearTimeout(timer);
@@ -535,11 +586,15 @@ async function startDashboard(options = {}) {
535
586
  Dashboard: http://localhost:${port}
536
587
  `));
537
588
  if (options.watch ?? true) {
589
+ watcherStatus.enabled = true;
538
590
  void startWatch({
539
591
  path: options.path,
540
592
  onEvent: handleWatchEvent,
541
593
  exitOnSetupFailure: false
542
594
  });
595
+ } else {
596
+ watcherStatus.enabled = false;
597
+ watcherStatus.running = false;
543
598
  }
544
599
  }
545
600
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@shahmilsaari/memory-core",
3
- "version": "0.2.17",
3
+ "version": "1.0.0",
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",
@@ -14,6 +14,9 @@
14
14
  ],
15
15
  "scripts": {
16
16
  "build": "tsup && vite build --config dashboard/vite.config.ts",
17
+ "release:patch": "npm version patch --no-git-tag-version && npm run build && npm publish --access public",
18
+ "release:minor": "npm version minor --no-git-tag-version && npm run build && npm publish --access public",
19
+ "release:major": "npm version major --no-git-tag-version && npm run build && npm publish --access public",
17
20
  "docs:start": "npm run site:start",
18
21
  "docs:build": "node scripts/build-static-docs.mjs",
19
22
  "docs:serve": "npm run site:serve",
@@ -1,2 +0,0 @@
1
- var ya=Object.defineProperty;var Os=e=>{throw TypeError(e)};var wa=(e,t,n)=>t in e?ya(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var Ce=(e,t,n)=>wa(e,typeof t!="symbol"?t+"":t,n),er=(e,t,n)=>t.has(e)||Os("Cannot "+n);var a=(e,t,n)=>(er(e,t,"read from private field"),n?n.call(e):t.get(e)),N=(e,t,n)=>t.has(e)?Os("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,n),C=(e,t,n,r)=>(er(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n),L=(e,t,n)=>(er(e,t,"access private method"),n);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const l of s)if(l.type==="childList")for(const c of l.addedNodes)c.tagName==="LINK"&&c.rel==="modulepreload"&&r(c)}).observe(document,{childList:!0,subtree:!0});function n(s){const l={};return s.integrity&&(l.integrity=s.integrity),s.referrerPolicy&&(l.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?l.credentials="include":s.crossOrigin==="anonymous"?l.credentials="omit":l.credentials="same-origin",l}function r(s){if(s.ep)return;s.ep=!0;const l=n(s);fetch(s.href,l)}})();const Ea=!1;var mr=Array.isArray,xa=Array.prototype.indexOf,jt=Array.prototype.includes,Pn=Array.from,ka=Object.defineProperty,tn=Object.getOwnPropertyDescriptor,ti=Object.getOwnPropertyDescriptors,Sa=Object.prototype,Ta=Array.prototype,yr=Object.getPrototypeOf,Fs=Object.isExtensible;const Aa=()=>{};function Ra(e){return e()}function lr(e){for(var t=0;t<e.length;t++)e[t]()}function ni(){var e,t,n=new Promise((r,s)=>{e=r,t=s});return{promise:n,resolve:e,reject:t}}const ne=2,$t=4,pn=8,ri=1<<24,ze=16,Ie=32,ct=64,ar=128,xe=512,H=1024,Z=2048,Le=4096,ie=8192,ke=16384,Nt=32768,Is=1<<25,qt=65536,or=1<<17,Na=1<<18,Vt=1<<19,si=1<<20,Ue=1<<25,St=65536,Dn=1<<21,ln=1<<22,at=1<<23,wt=Symbol("$state"),Ge=new class extends Error{constructor(){super(...arguments);Ce(this,"name","StaleReactionError");Ce(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}};function Ca(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function Ma(e,t,n){throw new Error("https://svelte.dev/e/each_key_duplicate")}function Da(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Oa(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Fa(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Ia(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function La(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Pa(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function ja(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function $a(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const qa=1,Ua=2,ii=4,za=8,Va=16,Wa=2,J=Symbol(),li="http://www.w3.org/1999/xhtml";function Ha(){console.warn("https://svelte.dev/e/derived_inert")}function Ba(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function Ya(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function ai(e){return e===this.v}function Ka(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function oi(e){return!Ka(e,this.v)}let jn=!1,Ga=!1;function Ja(){jn=!0}let B=null;function Ut(e){B=e}function ci(e,t=!1,n){B={p:B,i:!1,c:null,e:null,s:e,x:null,r:M,l:jn&&!t?{s:null,u:null,$:[]}:null}}function fi(e){var t=B,n=t.e;if(n!==null){t.e=null;for(var r of n)Mi(r)}return t.i=!0,B=t.p,{}}function _n(){return!jn||B!==null&&B.l===null}let pt=[];function ui(){var e=pt;pt=[],lr(e)}function ot(e){if(pt.length===0&&!nn){var t=pt;queueMicrotask(()=>{t===pt&&ui()})}pt.push(e)}function Qa(){for(;pt.length>0;)ui()}function vi(e){var t=M;if(t===null)return D.f|=at,e;if(!(t.f&Nt)&&!(t.f&$t))throw e;lt(e,t)}function lt(e,t){for(;t!==null;){if(t.f&ar){if(!(t.f&Nt))throw e;try{t.b.error(e);return}catch(n){e=n}}t=t.parent}throw e}const Xa=-7169;function q(e,t){e.f=e.f&Xa|t}function wr(e){e.f&xe||e.deps===null?q(e,H):q(e,Le)}function di(e){if(e!==null)for(const t of e)!(t.f&ne)||!(t.f&St)||(t.f^=St,di(t.deps))}function pi(e,t,n){e.f&Z?t.add(e):e.f&Le&&n.add(e),di(e.deps),q(e,H)}const dt=new Set;let x=null,X=null,cr=null,nn=!1,tr=!1,Dt=null,Sn=null;var Ls=0;let Za=1;var Ot,Ft,ht,Je,je,on,pe,cn,st,Qe,$e,It,Lt,gt,Y,Tn,_i,An,fr,Rn,eo;const Fn=class Fn{constructor(){N(this,Y);Ce(this,"id",Za++);Ce(this,"current",new Map);Ce(this,"previous",new Map);N(this,Ot,new Set);N(this,Ft,new Set);N(this,ht,new Set);N(this,Je,new Map);N(this,je,new Map);N(this,on,null);N(this,pe,[]);N(this,cn,[]);N(this,st,new Set);N(this,Qe,new Set);N(this,$e,new Map);N(this,It,new Set);Ce(this,"is_fork",!1);N(this,Lt,!1);N(this,gt,new Set)}skip_effect(t){a(this,$e).has(t)||a(this,$e).set(t,{d:[],m:[]}),a(this,It).delete(t)}unskip_effect(t,n=r=>this.schedule(r)){var r=a(this,$e).get(t);if(r){a(this,$e).delete(t);for(var s of r.d)q(s,Z),n(s);for(s of r.m)q(s,Le),n(s)}a(this,It).add(t)}capture(t,n,r=!1){t.v!==J&&!this.previous.has(t)&&this.previous.set(t,t.v),t.f&at||(this.current.set(t,[n,r]),X==null||X.set(t,n)),this.is_fork||(t.v=n)}activate(){x=this}deactivate(){x=null,X=null}flush(){try{tr=!0,x=this,L(this,Y,An).call(this)}finally{Ls=0,cr=null,Dt=null,Sn=null,tr=!1,x=null,X=null,Et.clear()}}discard(){for(const t of a(this,Ft))t(this);a(this,Ft).clear(),a(this,ht).clear(),dt.delete(this)}register_created_effect(t){a(this,cn).push(t)}increment(t,n){let r=a(this,Je).get(n)??0;if(a(this,Je).set(n,r+1),t){let s=a(this,je).get(n)??0;a(this,je).set(n,s+1)}}decrement(t,n,r){let s=a(this,Je).get(n)??0;if(s===1?a(this,Je).delete(n):a(this,Je).set(n,s-1),t){let l=a(this,je).get(n)??0;l===1?a(this,je).delete(n):a(this,je).set(n,l-1)}a(this,Lt)||r||(C(this,Lt,!0),ot(()=>{C(this,Lt,!1),this.flush()}))}transfer_effects(t,n){for(const r of t)a(this,st).add(r);for(const r of n)a(this,Qe).add(r);t.clear(),n.clear()}oncommit(t){a(this,Ot).add(t)}ondiscard(t){a(this,Ft).add(t)}on_fork_commit(t){a(this,ht).add(t)}run_fork_commit_callbacks(){for(const t of a(this,ht))t(this);a(this,ht).clear()}settled(){return(a(this,on)??C(this,on,ni())).promise}static ensure(){if(x===null){const t=x=new Fn;tr||(dt.add(x),nn||ot(()=>{x===t&&t.flush()}))}return x}apply(){{X=null;return}}schedule(t){var s;if(cr=t,(s=t.b)!=null&&s.is_pending&&t.f&($t|pn|ri)&&!(t.f&Nt)){t.b.defer_effect(t);return}for(var n=t;n.parent!==null;){n=n.parent;var r=n.f;if(Dt!==null&&n===M&&(D===null||!(D.f&ne)))return;if(r&(ct|Ie)){if(!(r&H))return;n.f^=H}}a(this,pe).push(n)}};Ot=new WeakMap,Ft=new WeakMap,ht=new WeakMap,Je=new WeakMap,je=new WeakMap,on=new WeakMap,pe=new WeakMap,cn=new WeakMap,st=new WeakMap,Qe=new WeakMap,$e=new WeakMap,It=new WeakMap,Lt=new WeakMap,gt=new WeakMap,Y=new WeakSet,Tn=function(){return this.is_fork||a(this,je).size>0},_i=function(){for(const r of a(this,gt))for(const s of a(r,je).keys()){for(var t=!1,n=s;n.parent!==null;){if(a(this,$e).has(n)){t=!0;break}n=n.parent}if(!t)return!0}return!1},An=function(){var v,o;if(Ls++>1e3&&(dt.delete(this),no()),!L(this,Y,Tn).call(this)){for(const d of a(this,st))a(this,Qe).delete(d),q(d,Z),this.schedule(d);for(const d of a(this,Qe))q(d,Le),this.schedule(d)}const t=a(this,pe);C(this,pe,[]),this.apply();var n=Dt=[],r=[],s=Sn=[];for(const d of t)try{L(this,Y,fr).call(this,d,n,r)}catch(g){throw bi(d),g}if(x=null,s.length>0){var l=Fn.ensure();for(const d of s)l.schedule(d)}if(Dt=null,Sn=null,L(this,Y,Tn).call(this)||L(this,Y,_i).call(this)){L(this,Y,Rn).call(this,r),L(this,Y,Rn).call(this,n);for(const[d,g]of a(this,$e))gi(d,g)}else{a(this,Je).size===0&&dt.delete(this),a(this,st).clear(),a(this,Qe).clear();for(const d of a(this,Ot))d(this);a(this,Ot).clear(),Ps(r),Ps(n),(v=a(this,on))==null||v.resolve()}var c=x;if(a(this,pe).length>0){const d=c??(c=this);a(d,pe).push(...a(this,pe).filter(g=>!a(d,pe).includes(g)))}c!==null&&(dt.add(c),L(o=c,Y,An).call(o))},fr=function(t,n,r){t.f^=H;for(var s=t.first;s!==null;){var l=s.f,c=(l&(Ie|ct))!==0,v=c&&(l&H)!==0,o=v||(l&ie)!==0||a(this,$e).has(s);if(!o&&s.fn!==null){c?s.f^=H:l&$t?n.push(s):Wt(s)&&(l&ze&&a(this,Qe).add(s),Rt(s));var d=s.first;if(d!==null){s=d;continue}}for(;s!==null;){var g=s.next;if(g!==null){s=g;break}s=s.parent}}},Rn=function(t){for(var n=0;n<t.length;n+=1)pi(t[n],a(this,st),a(this,Qe))},eo=function(){var g,f,m;for(const w of dt){var t=w.id<this.id,n=[];for(const[b,[A,y]]of this.current){if(w.current.has(b)){var r=w.current.get(b)[0];if(t&&A!==r)w.current.set(b,[A,y]);else continue}n.push(b)}var s=[...w.current.keys()].filter(b=>!this.current.has(b));if(s.length===0)t&&w.discard();else if(n.length>0){if(t)for(const b of a(this,It))w.unskip_effect(b,A=>{var y;A.f&(ze|ln)?w.schedule(A):L(y=w,Y,Rn).call(y,[A])});w.activate();var l=new Set,c=new Map;for(var v of n)hi(v,s,l,c);c=new Map;var o=[...w.current.keys()].filter(b=>this.current.has(b)?this.current.get(b)[0]!==b:!0);for(const b of a(this,cn))!(b.f&(ke|ie|or))&&Er(b,o,c)&&(b.f&(ln|ze)?(q(b,Z),w.schedule(b)):a(w,st).add(b));if(a(w,pe).length>0){w.apply();for(var d of a(w,pe))L(g=w,Y,fr).call(g,d,[],[]);C(w,pe,[])}w.deactivate()}}for(const w of dt)a(w,gt).has(this)&&(a(w,gt).delete(this),a(w,gt).size===0&&!L(f=w,Y,Tn).call(f)&&(w.activate(),L(m=w,Y,An).call(m)))};let Tt=Fn;function to(e){var t=nn;nn=!0;try{for(var n;;){if(Qa(),x===null)return n;x.flush()}}finally{nn=t}}function no(){try{Ia()}catch(e){lt(e,cr)}}let De=null;function Ps(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&(ke|ie))&&Wt(r)&&(De=new Set,Rt(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&Oi(r),(De==null?void 0:De.size)>0)){Et.clear();for(const s of De){if(s.f&(ke|ie))continue;const l=[s];let c=s.parent;for(;c!==null;)De.has(c)&&(De.delete(c),l.push(c)),c=c.parent;for(let v=l.length-1;v>=0;v--){const o=l[v];o.f&(ke|ie)||Rt(o)}}De.clear()}}De=null}}function hi(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(const s of e.reactions){const l=s.f;l&ne?hi(s,t,n,r):l&(ln|ze)&&!(l&Z)&&Er(s,t,r)&&(q(s,Z),xr(s))}}function Er(e,t,n){const r=n.get(e);if(r!==void 0)return r;if(e.deps!==null)for(const s of e.deps){if(jt.call(t,s))return!0;if(s.f&ne&&Er(s,t,n))return n.set(s,!0),!0}return n.set(e,!1),!1}function xr(e){x.schedule(e)}function gi(e,t){if(!(e.f&Ie&&e.f&H)){e.f&Z?t.d.push(e):e.f&Le&&t.m.push(e),q(e,H);for(var n=e.first;n!==null;)gi(n,t),n=n.next}}function bi(e){q(e,H);for(var t=e.first;t!==null;)bi(t),t=t.next}function ro(e){let t=0,n=At(0),r;return()=>{Ar()&&(i(n),qn(()=>(t===0&&(r=E(()=>e(()=>rn(n)))),t+=1,()=>{ot(()=>{t-=1,t===0&&(r==null||r(),r=void 0,rn(n))})})))}}var so=qt|Vt;function io(e,t,n,r){new lo(e,t,n,r)}var me,br,ye,bt,oe,we,se,_e,Xe,mt,it,Pt,fn,un,Ze,In,U,ao,oo,co,ur,Nn,Cn,vr,dr;class lo{constructor(t,n,r,s){N(this,U);Ce(this,"parent");Ce(this,"is_pending",!1);Ce(this,"transform_error");N(this,me);N(this,br,null);N(this,ye);N(this,bt);N(this,oe);N(this,we,null);N(this,se,null);N(this,_e,null);N(this,Xe,null);N(this,mt,0);N(this,it,0);N(this,Pt,!1);N(this,fn,new Set);N(this,un,new Set);N(this,Ze,null);N(this,In,ro(()=>(C(this,Ze,At(a(this,mt))),()=>{C(this,Ze,null)})));var l;C(this,me,t),C(this,ye,n),C(this,bt,c=>{var v=M;v.b=this,v.f|=ar,r(c)}),this.parent=M.b,this.transform_error=s??((l=this.parent)==null?void 0:l.transform_error)??(c=>c),C(this,oe,Nr(()=>{L(this,U,ur).call(this)},so))}defer_effect(t){pi(t,a(this,fn),a(this,un))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!a(this,ye).pending}update_pending_count(t,n){L(this,U,vr).call(this,t,n),C(this,mt,a(this,mt)+t),!(!a(this,Ze)||a(this,Pt))&&(C(this,Pt,!0),ot(()=>{C(this,Pt,!1),a(this,Ze)&&zt(a(this,Ze),a(this,mt))}))}get_effect_pending(){return a(this,In).call(this),i(a(this,Ze))}error(t){if(!a(this,ye).onerror&&!a(this,ye).failed)throw t;x!=null&&x.is_fork?(a(this,we)&&x.skip_effect(a(this,we)),a(this,se)&&x.skip_effect(a(this,se)),a(this,_e)&&x.skip_effect(a(this,_e)),x.on_fork_commit(()=>{L(this,U,dr).call(this,t)})):L(this,U,dr).call(this,t)}}me=new WeakMap,br=new WeakMap,ye=new WeakMap,bt=new WeakMap,oe=new WeakMap,we=new WeakMap,se=new WeakMap,_e=new WeakMap,Xe=new WeakMap,mt=new WeakMap,it=new WeakMap,Pt=new WeakMap,fn=new WeakMap,un=new WeakMap,Ze=new WeakMap,In=new WeakMap,U=new WeakSet,ao=function(){try{C(this,we,Ee(()=>a(this,bt).call(this,a(this,me))))}catch(t){this.error(t)}},oo=function(t){const n=a(this,ye).failed;n&&C(this,_e,Ee(()=>{n(a(this,me),()=>t,()=>()=>{})}))},co=function(){const t=a(this,ye).pending;t&&(this.is_pending=!0,C(this,se,Ee(()=>t(a(this,me)))),ot(()=>{var n=C(this,Xe,document.createDocumentFragment()),r=et();n.append(r),C(this,we,L(this,U,Cn).call(this,()=>Ee(()=>a(this,bt).call(this,r)))),a(this,it)===0&&(a(this,me).before(n),C(this,Xe,null),xt(a(this,se),()=>{C(this,se,null)}),L(this,U,Nn).call(this,x))}))},ur=function(){try{if(this.is_pending=this.has_pending_snippet(),C(this,it,0),C(this,mt,0),C(this,we,Ee(()=>{a(this,bt).call(this,a(this,me))})),a(this,it)>0){var t=C(this,Xe,document.createDocumentFragment());Dr(a(this,we),t);const n=a(this,ye).pending;C(this,se,Ee(()=>n(a(this,me))))}else L(this,U,Nn).call(this,x)}catch(n){this.error(n)}},Nn=function(t){this.is_pending=!1,t.transfer_effects(a(this,fn),a(this,un))},Cn=function(t){var n=M,r=D,s=B;Ae(a(this,oe)),Te(a(this,oe)),Ut(a(this,oe).ctx);try{return Tt.ensure(),t()}catch(l){return vi(l),null}finally{Ae(n),Te(r),Ut(s)}},vr=function(t,n){var r;if(!this.has_pending_snippet()){this.parent&&L(r=this.parent,U,vr).call(r,t,n);return}C(this,it,a(this,it)+t),a(this,it)===0&&(L(this,U,Nn).call(this,n),a(this,se)&&xt(a(this,se),()=>{C(this,se,null)}),a(this,Xe)&&(a(this,me).before(a(this,Xe)),C(this,Xe,null)))},dr=function(t){a(this,we)&&(fe(a(this,we)),C(this,we,null)),a(this,se)&&(fe(a(this,se)),C(this,se,null)),a(this,_e)&&(fe(a(this,_e)),C(this,_e,null));var n=a(this,ye).onerror;let r=a(this,ye).failed;var s=!1,l=!1;const c=()=>{if(s){Ya();return}s=!0,l&&$a(),a(this,_e)!==null&&xt(a(this,_e),()=>{C(this,_e,null)}),L(this,U,Cn).call(this,()=>{L(this,U,ur).call(this)})},v=o=>{try{l=!0,n==null||n(o,c),l=!1}catch(d){lt(d,a(this,oe)&&a(this,oe).parent)}r&&C(this,_e,L(this,U,Cn).call(this,()=>{try{return Ee(()=>{var d=M;d.b=this,d.f|=ar,r(a(this,me),()=>o,()=>c)})}catch(d){return lt(d,a(this,oe).parent),null}}))};ot(()=>{var o;try{o=this.transform_error(t)}catch(d){lt(d,a(this,oe)&&a(this,oe).parent);return}o!==null&&typeof o=="object"&&typeof o.then=="function"?o.then(v,d=>lt(d,a(this,oe)&&a(this,oe).parent)):v(o)})};function fo(e,t,n,r){const s=_n()?kr:yi;var l=e.filter(m=>!m.settled);if(n.length===0&&l.length===0){r(t.map(s));return}var c=M,v=uo(),o=l.length===1?l[0].promise:l.length>1?Promise.all(l.map(m=>m.promise)):null;function d(m){v();try{r(m)}catch(w){c.f&ke||lt(w,c)}On()}if(n.length===0){o.then(()=>d(t.map(s)));return}var g=mi();function f(){Promise.all(n.map(m=>vo(m))).then(m=>d([...t.map(s),...m])).catch(m=>lt(m,c)).finally(()=>g())}o?o.then(()=>{v(),f(),On()}):f()}function uo(){var e=M,t=D,n=B,r=x;return function(l=!0){Ae(e),Te(t),Ut(n),l&&!(e.f&ke)&&(r==null||r.activate(),r==null||r.apply())}}function On(e=!0){Ae(null),Te(null),Ut(null),e&&(x==null||x.deactivate())}function mi(){var e=M,t=e.b,n=x,r=t.is_rendered();return t.update_pending_count(1,n),n.increment(r,e),(s=!1)=>{t.update_pending_count(-1,n),n.decrement(r,e,s)}}function kr(e){var t=ne|Z;return M!==null&&(M.f|=Vt),{ctx:B,deps:null,effects:null,equals:ai,f:t,fn:e,reactions:null,rv:0,v:J,wv:0,parent:M,ac:null}}function vo(e,t,n){let r=M;r===null&&Ca();var s=void 0,l=At(J),c=!D,v=new Map;return Ro(()=>{var w;var o=M,d=ni();s=d.promise;try{Promise.resolve(e()).then(d.resolve,d.reject).finally(On)}catch(b){d.reject(b),On()}var g=x;if(c){if(o.f&Nt)var f=mi();if(r.b.is_rendered())(w=v.get(g))==null||w.reject(Ge),v.delete(g);else{for(const b of v.values())b.reject(Ge);v.clear()}v.set(g,d)}const m=(b,A=void 0)=>{if(f){var y=A===Ge;f(y)}if(!(A===Ge||o.f&ke)){if(g.activate(),A)l.f|=at,zt(l,A);else{l.f&at&&(l.f^=at),zt(l,b);for(const[T,R]of v){if(v.delete(T),T===g)break;R.reject(Ge)}}g.deactivate()}};d.promise.then(m,b=>m(null,b||"unknown"))}),Rr(()=>{for(const o of v.values())o.reject(Ge)}),new Promise(o=>{function d(g){function f(){g===s?o(l):d(s)}g.then(f,f)}d(s)})}function yi(e){const t=kr(e);return t.equals=oi,t}function po(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)fe(t[n])}}function Sr(e){var t,n=M,r=e.parent;if(!ft&&r!==null&&r.f&(ke|ie))return Ha(),e.v;Ae(r);try{e.f&=~St,po(e),t=$i(e)}finally{Ae(n)}return t}function wi(e){var t=Sr(e);if(!e.equals(t)&&(e.wv=Pi(),(!(x!=null&&x.is_fork)||e.deps===null)&&(x!==null?x.capture(e,t,!0):e.v=t,e.deps===null))){q(e,H);return}ft||(X!==null?(Ar()||x!=null&&x.is_fork)&&X.set(e,t):wr(e))}function _o(e){var t,n;if(e.effects!==null)for(const r of e.effects)(r.teardown||r.ac)&&((t=r.teardown)==null||t.call(r),(n=r.ac)==null||n.abort(Ge),r.teardown=Aa,r.ac=null,an(r,0),Cr(r))}function Ei(e){if(e.effects!==null)for(const t of e.effects)t.teardown&&Rt(t)}let pr=new Set;const Et=new Map;let xi=!1;function At(e,t){var n={f:0,v:e,reactions:null,equals:ai,rv:0,wv:0};return n}function nt(e,t){const n=At(e);return Mo(n),n}function G(e,t=!1,n=!0){var s;const r=At(e);return t||(r.equals=oi),jn&&n&&B!==null&&B.l!==null&&((s=B.l).s??(s.s=[])).push(r),r}function Gt(e,t){return F(e,E(()=>i(e))),t}function F(e,t,n=!1){D!==null&&(!Fe||D.f&or)&&_n()&&D.f&(ne|ze|ln|or)&&(Se===null||!jt.call(Se,e))&&ja();let r=n?Zt(t):t;return zt(e,r,Sn)}function zt(e,t,n=null){if(!e.equals(t)){Et.set(e,ft?t:e.v);var r=Tt.ensure();if(r.capture(e,t),e.f&ne){const s=e;e.f&Z&&Sr(s),X===null&&wr(s)}e.wv=Pi(),ki(e,Z,n),_n()&&M!==null&&M.f&H&&!(M.f&(Ie|ct))&&(be===null?Do([e]):be.push(e)),!r.is_fork&&pr.size>0&&!xi&&ho()}return t}function ho(){xi=!1;for(const e of pr)e.f&H&&q(e,Le),Wt(e)&&Rt(e);pr.clear()}function rn(e){F(e,e.v+1)}function ki(e,t,n){var r=e.reactions;if(r!==null)for(var s=_n(),l=r.length,c=0;c<l;c++){var v=r[c],o=v.f;if(!(!s&&v===M)){var d=(o&Z)===0;if(d&&q(v,t),o&ne){var g=v;X==null||X.delete(g),o&St||(o&xe&&(M===null||!(M.f&Dn))&&(v.f|=St),ki(g,Le,n))}else if(d){var f=v;o&ze&&De!==null&&De.add(f),n!==null?n.push(f):xr(f)}}}}function Zt(e){if(typeof e!="object"||e===null||wt in e)return e;const t=yr(e);if(t!==Sa&&t!==Ta)return e;var n=new Map,r=mr(e),s=nt(0),l=kt,c=v=>{if(kt===l)return v();var o=D,d=kt;Te(null),Vs(l);var g=v();return Te(o),Vs(d),g};return r&&n.set("length",nt(e.length)),new Proxy(e,{defineProperty(v,o,d){(!("value"in d)||d.configurable===!1||d.enumerable===!1||d.writable===!1)&&La();var g=n.get(o);return g===void 0?c(()=>{var f=nt(d.value);return n.set(o,f),f}):F(g,d.value,!0),!0},deleteProperty(v,o){var d=n.get(o);if(d===void 0){if(o in v){const g=c(()=>nt(J));n.set(o,g),rn(s)}}else F(d,J),rn(s);return!0},get(v,o,d){var w;if(o===wt)return e;var g=n.get(o),f=o in v;if(g===void 0&&(!f||(w=tn(v,o))!=null&&w.writable)&&(g=c(()=>{var b=Zt(f?v[o]:J),A=nt(b);return A}),n.set(o,g)),g!==void 0){var m=i(g);return m===J?void 0:m}return Reflect.get(v,o,d)},getOwnPropertyDescriptor(v,o){var d=Reflect.getOwnPropertyDescriptor(v,o);if(d&&"value"in d){var g=n.get(o);g&&(d.value=i(g))}else if(d===void 0){var f=n.get(o),m=f==null?void 0:f.v;if(f!==void 0&&m!==J)return{enumerable:!0,configurable:!0,value:m,writable:!0}}return d},has(v,o){var m;if(o===wt)return!0;var d=n.get(o),g=d!==void 0&&d.v!==J||Reflect.has(v,o);if(d!==void 0||M!==null&&(!g||(m=tn(v,o))!=null&&m.writable)){d===void 0&&(d=c(()=>{var w=g?Zt(v[o]):J,b=nt(w);return b}),n.set(o,d));var f=i(d);if(f===J)return!1}return g},set(v,o,d,g){var I;var f=n.get(o),m=o in v;if(r&&o==="length")for(var w=d;w<f.v;w+=1){var b=n.get(w+"");b!==void 0?F(b,J):w in v&&(b=c(()=>nt(J)),n.set(w+"",b))}if(f===void 0)(!m||(I=tn(v,o))!=null&&I.writable)&&(f=c(()=>nt(void 0)),F(f,Zt(d)),n.set(o,f));else{m=f.v!==J;var A=c(()=>Zt(d));F(f,A)}var y=Reflect.getOwnPropertyDescriptor(v,o);if(y!=null&&y.set&&y.set.call(g,d),!m){if(r&&typeof o=="string"){var T=n.get("length"),R=Number(o);Number.isInteger(R)&&R>=T.v&&F(T,R+1)}rn(s)}return!0},ownKeys(v){i(s);var o=Reflect.ownKeys(v).filter(f=>{var m=n.get(f);return m===void 0||m.v!==J});for(var[d,g]of n)g.v!==J&&!(d in v)&&o.push(d);return o},setPrototypeOf(){Pa()}})}function js(e){try{if(e!==null&&typeof e=="object"&&wt in e)return e[wt]}catch{}return e}function go(e,t){return Object.is(js(e),js(t))}var $s,Si,Ti,Ai;function bo(){if($s===void 0){$s=window,Si=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;Ti=tn(t,"firstChild").get,Ai=tn(t,"nextSibling").get,Fs(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),Fs(n)&&(n.__t=void 0)}}function et(e=""){return document.createTextNode(e)}function Tr(e){return Ti.call(e)}function hn(e){return Ai.call(e)}function p(e,t){return Tr(e)}function mo(e,t=!1){{var n=Tr(e);return n instanceof Comment&&n.data===""?hn(n):n}}function h(e,t=1,n=!1){let r=e;for(;t--;)r=hn(r);return r}function yo(e){e.textContent=""}function Ri(){return!1}function wo(e,t,n){return document.createElementNS(li,e,void 0)}let qs=!1;function Eo(){qs||(qs=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{var t;if(!e.defaultPrevented)for(const n of e.target.elements)(t=n.__on_r)==null||t.call(n)})},{capture:!0}))}function $n(e){var t=D,n=M;Te(null),Ae(null);try{return e()}finally{Te(t),Ae(n)}}function Ni(e,t,n,r=n){e.addEventListener(t,()=>$n(n));const s=e.__on_r;s?e.__on_r=()=>{s(),r(!0)}:e.__on_r=()=>r(!0),Eo()}function Ci(e){M===null&&(D===null&&Fa(),Oa()),ft&&Da()}function xo(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Ve(e,t){var n=M;n!==null&&n.f&ie&&(e|=ie);var r={ctx:B,deps:null,nodes:null,f:e|Z|xe,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};x==null||x.register_created_effect(r);var s=r;if(e&$t)Dt!==null?Dt.push(r):Tt.ensure().schedule(r);else if(t!==null){try{Rt(r)}catch(c){throw fe(r),c}s.deps===null&&s.teardown===null&&s.nodes===null&&s.first===s.last&&!(s.f&Vt)&&(s=s.first,e&ze&&e&qt&&s!==null&&(s.f|=qt))}if(s!==null&&(s.parent=n,n!==null&&xo(s,n),D!==null&&D.f&ne&&!(e&ct))){var l=D;(l.effects??(l.effects=[])).push(s)}return r}function Ar(){return D!==null&&!Fe}function Rr(e){const t=Ve(pn,null);return q(t,H),t.teardown=e,t}function Us(e){Ci();var t=M.f,n=!D&&(t&Ie)!==0&&(t&Nt)===0;if(n){var r=B;(r.e??(r.e=[])).push(e)}else return Mi(e)}function Mi(e){return Ve($t|si,e)}function ko(e){return Ci(),Ve(pn|si,e)}function So(e){Tt.ensure();const t=Ve(ct|Vt,e);return(n={})=>new Promise(r=>{n.outro?xt(t,()=>{fe(t),r(void 0)}):(fe(t),r(void 0))})}function To(e){return Ve($t,e)}function Ke(e,t){var n=B,r={effect:null,ran:!1,deps:e};n.l.$.push(r),r.effect=qn(()=>{if(e(),!r.ran){r.ran=!0;var s=M;try{Ae(s.parent),E(t)}finally{Ae(s)}}})}function Ao(){var e=B;qn(()=>{for(var t of e.l.$){t.deps();var n=t.effect;n.f&H&&n.deps!==null&&q(n,Le),Wt(n)&&Rt(n),t.ran=!1}})}function Ro(e){return Ve(ln|Vt,e)}function qn(e,t=0){return Ve(pn|t,e)}function K(e,t=[],n=[],r=[]){fo(r,t,n,s=>{Ve(pn,()=>e(...s.map(i)))})}function Nr(e,t=0){var n=Ve(ze|t,e);return n}function Ee(e){return Ve(Ie|Vt,e)}function Di(e){var t=e.teardown;if(t!==null){const n=ft,r=D;zs(!0),Te(null);try{t.call(null)}finally{zs(n),Te(r)}}}function Cr(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){const s=n.ac;s!==null&&$n(()=>{s.abort(Ge)});var r=n.next;n.f&ct?n.parent=null:fe(n,t),n=r}}function No(e){for(var t=e.first;t!==null;){var n=t.next;t.f&Ie||fe(t),t=n}}function fe(e,t=!0){var n=!1;(t||e.f&Na)&&e.nodes!==null&&e.nodes.end!==null&&(Co(e.nodes.start,e.nodes.end),n=!0),q(e,Is),Cr(e,t&&!n),an(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(const l of r)l.stop();Di(e),e.f^=Is,e.f|=ke;var s=e.parent;s!==null&&s.first!==null&&Oi(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Co(e,t){for(;e!==null;){var n=e===t?null:hn(e);e.remove(),e=n}}function Oi(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function xt(e,t,n=!0){var r=[];Fi(e,r,!0);var s=()=>{n&&fe(e),t&&t()},l=r.length;if(l>0){var c=()=>--l||s();for(var v of r)v.out(c)}else s()}function Fi(e,t,n){if(!(e.f&ie)){e.f^=ie;var r=e.nodes&&e.nodes.t;if(r!==null)for(const v of r)(v.is_global||n)&&t.push(v);for(var s=e.first;s!==null;){var l=s.next;if(!(s.f&ct)){var c=(s.f&qt)!==0||(s.f&Ie)!==0&&(e.f&ze)!==0;Fi(s,t,c?n:!1)}s=l}}}function Mr(e){Ii(e,!0)}function Ii(e,t){if(e.f&ie){e.f^=ie,e.f&H||(q(e,Z),Tt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,s=(n.f&qt)!==0||(n.f&Ie)!==0;Ii(n,s?t:!1),n=r}var l=e.nodes&&e.nodes.t;if(l!==null)for(const c of l)(c.is_global||t)&&c.in()}}function Dr(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var s=n===r?null:hn(n);t.append(n),n=s}}let Mn=!1,ft=!1;function zs(e){ft=e}let D=null,Fe=!1;function Te(e){D=e}let M=null;function Ae(e){M=e}let Se=null;function Mo(e){D!==null&&(Se===null?Se=[e]:Se.push(e))}let ce=null,de=0,be=null;function Do(e){be=e}let Li=1,_t=0,kt=_t;function Vs(e){kt=e}function Pi(){return++Li}function Wt(e){var t=e.f;if(t&Z)return!0;if(t&ne&&(e.f&=~St),t&Le){for(var n=e.deps,r=n.length,s=0;s<r;s++){var l=n[s];if(Wt(l)&&wi(l),l.wv>e.wv)return!0}t&xe&&X===null&&q(e,H)}return!1}function ji(e,t,n=!0){var r=e.reactions;if(r!==null&&!(Se!==null&&jt.call(Se,e)))for(var s=0;s<r.length;s++){var l=r[s];l.f&ne?ji(l,t,!1):t===l&&(n?q(l,Z):l.f&H&&q(l,Le),xr(l))}}function $i(e){var A;var t=ce,n=de,r=be,s=D,l=Se,c=B,v=Fe,o=kt,d=e.f;ce=null,de=0,be=null,D=d&(Ie|ct)?null:e,Se=null,Ut(e.ctx),Fe=!1,kt=++_t,e.ac!==null&&($n(()=>{e.ac.abort(Ge)}),e.ac=null);try{e.f|=Dn;var g=e.fn,f=g();e.f|=Nt;var m=e.deps,w=x==null?void 0:x.is_fork;if(ce!==null){var b;if(w||an(e,de),m!==null&&de>0)for(m.length=de+ce.length,b=0;b<ce.length;b++)m[de+b]=ce[b];else e.deps=m=ce;if(Ar()&&e.f&xe)for(b=de;b<m.length;b++)((A=m[b]).reactions??(A.reactions=[])).push(e)}else!w&&m!==null&&de<m.length&&(an(e,de),m.length=de);if(_n()&&be!==null&&!Fe&&m!==null&&!(e.f&(ne|Le|Z)))for(b=0;b<be.length;b++)ji(be[b],e);if(s!==null&&s!==e){if(_t++,s.deps!==null)for(let y=0;y<n;y+=1)s.deps[y].rv=_t;if(t!==null)for(const y of t)y.rv=_t;be!==null&&(r===null?r=be:r.push(...be))}return e.f&at&&(e.f^=at),f}catch(y){return vi(y)}finally{e.f^=Dn,ce=t,de=n,be=r,D=s,Se=l,Ut(c),Fe=v,kt=o}}function Oo(e,t){let n=t.reactions;if(n!==null){var r=xa.call(n,e);if(r!==-1){var s=n.length-1;s===0?n=t.reactions=null:(n[r]=n[s],n.pop())}}if(n===null&&t.f&ne&&(ce===null||!jt.call(ce,t))){var l=t;l.f&xe&&(l.f^=xe,l.f&=~St),l.v!==J&&wr(l),_o(l),an(l,0)}}function an(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)Oo(e,n[r])}function Rt(e){var t=e.f;if(!(t&ke)){q(e,H);var n=M,r=Mn;M=e,Mn=!0;try{t&(ze|ri)?No(e):Cr(e),Di(e);var s=$i(e);e.teardown=typeof s=="function"?s:null,e.wv=Li;var l;Ea&&Ga&&e.f&Z&&e.deps}finally{Mn=r,M=n}}}async function Fo(){await Promise.resolve(),to()}function i(e){var t=e.f,n=(t&ne)!==0;if(D!==null&&!Fe){var r=M!==null&&(M.f&ke)!==0;if(!r&&(Se===null||!jt.call(Se,e))){var s=D.deps;if(D.f&Dn)e.rv<_t&&(e.rv=_t,ce===null&&s!==null&&s[de]===e?de++:ce===null?ce=[e]:ce.push(e));else{(D.deps??(D.deps=[])).push(e);var l=e.reactions;l===null?e.reactions=[D]:jt.call(l,D)||l.push(D)}}}if(ft&&Et.has(e))return Et.get(e);if(n){var c=e;if(ft){var v=c.v;return(!(c.f&H)&&c.reactions!==null||Ui(c))&&(v=Sr(c)),Et.set(c,v),v}var o=(c.f&xe)===0&&!Fe&&D!==null&&(Mn||(D.f&xe)!==0),d=(c.f&Nt)===0;Wt(c)&&(o&&(c.f|=xe),wi(c)),o&&!d&&(Ei(c),qi(c))}if(X!=null&&X.has(e))return X.get(e);if(e.f&at)throw e.v;return e.v}function qi(e){if(e.f|=xe,e.deps!==null)for(const t of e.deps)(t.reactions??(t.reactions=[])).push(e),t.f&ne&&!(t.f&xe)&&(Ei(t),qi(t))}function Ui(e){if(e.v===J)return!0;if(e.deps===null)return!1;for(const t of e.deps)if(Et.has(t)||t.f&ne&&Ui(t))return!0;return!1}function E(e){var t=Fe;try{return Fe=!0,e()}finally{Fe=t}}function Io(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if(wt in e)_r(e);else if(!Array.isArray(e))for(let t in e){const n=e[t];typeof n=="object"&&n&&wt in n&&_r(n)}}}function _r(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 r in e)try{_r(e[r],t)}catch{}const n=yr(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){const r=ti(n);for(let s in r){const l=r[s].get;if(l)try{l.call(e)}catch{}}}}}const Lo=["touchstart","touchmove"];function Po(e){return Lo.includes(e)}const En=Symbol("events"),jo=new Set,Ws=new Set;function $o(e,t,n,r={}){function s(l){if(r.capture||hr.call(t,l),!l.cancelBubble)return $n(()=>n==null?void 0:n.call(this,l))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?ot(()=>{t.addEventListener(e,s,r)}):t.addEventListener(e,s,r),s}function Hs(e,t,n,r,s){var l={capture:r,passive:s},c=$o(e,t,n,l);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Rr(()=>{t.removeEventListener(e,c,l)})}let Bs=null;function hr(e){var y,T;var t=this,n=t.ownerDocument,r=e.type,s=((y=e.composedPath)==null?void 0:y.call(e))||[],l=s[0]||e.target;Bs=e;var c=0,v=Bs===e&&e[En];if(v){var o=s.indexOf(v);if(o!==-1&&(t===document||t===window)){e[En]=t;return}var d=s.indexOf(t);if(d===-1)return;o<=d&&(c=o)}if(l=s[c]||e.target,l!==t){ka(e,"currentTarget",{configurable:!0,get(){return l||n}});var g=D,f=M;Te(null),Ae(null);try{for(var m,w=[];l!==null;){var b=l.assignedSlot||l.parentNode||l.host||null;try{var A=(T=l[En])==null?void 0:T[r];A!=null&&(!l.disabled||e.target===l)&&A.call(l,e)}catch(R){m?w.push(R):m=R}if(e.cancelBubble||b===t||b===null)break;l=b}if(m){for(let R of w)queueMicrotask(()=>{throw R});throw m}}finally{e[En]=t,delete e.currentTarget,Te(g),Ae(f)}}}var Zs;const nr=((Zs=globalThis==null?void 0:globalThis.window)==null?void 0:Zs.trustedTypes)&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function qo(e){return(nr==null?void 0:nr.createHTML(e))??e}function Uo(e){var t=wo("template");return t.innerHTML=qo(e.replaceAll("<!>","<!---->")),t.content}function Or(e,t){var n=M;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function z(e,t){var n=(t&Wa)!==0,r,s=!e.startsWith("<!>");return()=>{r===void 0&&(r=Uo(s?e:"<!>"+e),r=Tr(r));var l=n||Si?document.importNode(r,!0):r.cloneNode(!0);return Or(l,l),l}}function Ys(e=""){{var t=et(e+"");return Or(t,t),t}}function zo(){var e=document.createDocumentFragment(),t=document.createComment(""),n=et();return e.append(t,n),Or(t,n),e}function P(e,t){e!==null&&e.before(t)}function S(e,t){var n=t==null?"":typeof t=="object"?`${t}`:t;n!==(e.__t??(e.__t=e.nodeValue))&&(e.__t=n,e.nodeValue=`${n}`)}function Vo(e,t){return Wo(e,t)}const xn=new Map;function Wo(e,{target:t,anchor:n,props:r={},events:s,context:l,intro:c=!0,transformError:v}){bo();var o=void 0,d=So(()=>{var g=n??t.appendChild(et());io(g,{pending:()=>{}},w=>{ci({});var b=B;l&&(b.c=l),s&&(r.$$events=s),o=e(w,r)||{},fi()},v);var f=new Set,m=w=>{for(var b=0;b<w.length;b++){var A=w[b];if(!f.has(A)){f.add(A);var y=Po(A);for(const I of[t,document]){var T=xn.get(I);T===void 0&&(T=new Map,xn.set(I,T));var R=T.get(A);R===void 0?(I.addEventListener(A,hr,{passive:y}),T.set(A,1)):T.set(A,R+1)}}}};return m(Pn(jo)),Ws.add(m),()=>{var y;for(var w of f)for(const T of[t,document]){var b=xn.get(T),A=b.get(w);--A==0?(T.removeEventListener(w,hr),b.delete(w),b.size===0&&xn.delete(T)):b.set(w,A)}Ws.delete(m),g!==n&&((y=g.parentNode)==null||y.removeChild(g))}});return Ho.set(o,d),o}let Ho=new WeakMap;var Oe,qe,he,yt,vn,dn,Ln;class Bo{constructor(t,n=!0){Ce(this,"anchor");N(this,Oe,new Map);N(this,qe,new Map);N(this,he,new Map);N(this,yt,new Set);N(this,vn,!0);N(this,dn,t=>{if(a(this,Oe).has(t)){var n=a(this,Oe).get(t),r=a(this,qe).get(n);if(r)Mr(r),a(this,yt).delete(n);else{var s=a(this,he).get(n);s&&(a(this,qe).set(n,s.effect),a(this,he).delete(n),s.fragment.lastChild.remove(),this.anchor.before(s.fragment),r=s.effect)}for(const[l,c]of a(this,Oe)){if(a(this,Oe).delete(l),l===t)break;const v=a(this,he).get(c);v&&(fe(v.effect),a(this,he).delete(c))}for(const[l,c]of a(this,qe)){if(l===n||a(this,yt).has(l))continue;const v=()=>{if(Array.from(a(this,Oe).values()).includes(l)){var d=document.createDocumentFragment();Dr(c,d),d.append(et()),a(this,he).set(l,{effect:c,fragment:d})}else fe(c);a(this,yt).delete(l),a(this,qe).delete(l)};a(this,vn)||!r?(a(this,yt).add(l),xt(c,v,!1)):v()}}});N(this,Ln,t=>{a(this,Oe).delete(t);const n=Array.from(a(this,Oe).values());for(const[r,s]of a(this,he))n.includes(r)||(fe(s.effect),a(this,he).delete(r))});this.anchor=t,C(this,vn,n)}ensure(t,n){var r=x,s=Ri();if(n&&!a(this,qe).has(t)&&!a(this,he).has(t))if(s){var l=document.createDocumentFragment(),c=et();l.append(c),a(this,he).set(t,{effect:Ee(()=>n(c)),fragment:l})}else a(this,qe).set(t,Ee(()=>n(this.anchor)));if(a(this,Oe).set(r,t),s){for(const[v,o]of a(this,qe))v===t?r.unskip_effect(o):r.skip_effect(o);for(const[v,o]of a(this,he))v===t?r.unskip_effect(o.effect):r.skip_effect(o.effect);r.oncommit(a(this,dn)),r.ondiscard(a(this,Ln))}else a(this,dn).call(this,r)}}Oe=new WeakMap,qe=new WeakMap,he=new WeakMap,yt=new WeakMap,vn=new WeakMap,dn=new WeakMap,Ln=new WeakMap;function Me(e,t,n=!1){var r=new Bo(e),s=n?qt:0;function l(c,v){r.ensure(c,v)}Nr(()=>{var c=!1;t((v,o=0)=>{c=!0,l(o,v)}),c||l(-1,null)},s)}function Yo(e,t,n){for(var r=[],s=t.length,l,c=t.length,v=0;v<s;v++){let f=t[v];xt(f,()=>{if(l){if(l.pending.delete(f),l.done.add(f),l.pending.size===0){var m=e.outrogroups;gr(e,Pn(l.done)),m.delete(l),m.size===0&&(e.outrogroups=null)}}else c-=1},!1)}if(c===0){var o=r.length===0&&n!==null;if(o){var d=n,g=d.parentNode;yo(g),g.append(d),e.items.clear()}gr(e,t,!o)}else l={pending:new Set(t),done:new Set},(e.outrogroups??(e.outrogroups=new Set)).add(l)}function gr(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(const c of e.pending.values())for(const v of c)r.add(e.items.get(v).e)}for(var s=0;s<t.length;s++){var l=t[s];if(r!=null&&r.has(l)){l.f|=Ue;const c=document.createDocumentFragment();Dr(l,c)}else fe(t[s],n)}}var Ks;function Jt(e,t,n,r,s,l=null){var c=e,v=new Map,o=(t&ii)!==0;if(o){var d=e;c=d.appendChild(et())}var g=null,f=yi(()=>{var I=n();return mr(I)?I:I==null?[]:Pn(I)}),m,w=new Map,b=!0;function A(I){R.effect.f&ke||(R.pending.delete(I),R.fallback=g,Ko(R,m,c,t,r),g!==null&&(m.length===0?g.f&Ue?(g.f^=Ue,en(g,null,c)):Mr(g):xt(g,()=>{g=null})))}function y(I){R.pending.delete(I)}var T=Nr(()=>{m=i(f);for(var I=m.length,re=new Set,ue=x,We=Ri(),ee=0;ee<I;ee+=1){var He=m[ee],Be=r(He,ee),le=b?null:v.get(Be);le?(le.v&&zt(le.v,He),le.i&&zt(le.i,ee),We&&ue.unskip_effect(le.e)):(le=Go(v,b?c:Ks??(Ks=et()),He,Be,ee,s,t,n),b||(le.e.f|=Ue),v.set(Be,le)),re.add(Be)}if(I===0&&l&&!g&&(b?g=Ee(()=>l(c)):(g=Ee(()=>l(Ks??(Ks=et()))),g.f|=Ue)),I>re.size&&Ma(),!b)if(w.set(ue,re),We){for(const[Ct,tt]of v)re.has(Ct)||ue.skip_effect(tt.e);ue.oncommit(A),ue.ondiscard(y)}else A(ue);i(f)}),R={effect:T,items:v,pending:w,outrogroups:null,fallback:g};b=!1}function Qt(e){for(;e!==null&&!(e.f&Ie);)e=e.next;return e}function Ko(e,t,n,r,s){var le,Ct,tt,Ht,gn,bn,Bt,Yt,mn;var l=(r&za)!==0,c=t.length,v=e.items,o=Qt(e.effect.first),d,g=null,f,m=[],w=[],b,A,y,T;if(l)for(T=0;T<c;T+=1)b=t[T],A=s(b,T),y=v.get(A).e,y.f&Ue||((Ct=(le=y.nodes)==null?void 0:le.a)==null||Ct.measure(),(f??(f=new Set)).add(y));for(T=0;T<c;T+=1){if(b=t[T],A=s(b,T),y=v.get(A).e,e.outrogroups!==null)for(const ve of e.outrogroups)ve.pending.delete(y),ve.done.delete(y);if(y.f&ie&&(Mr(y),l&&((Ht=(tt=y.nodes)==null?void 0:tt.a)==null||Ht.unfix(),(f??(f=new Set)).delete(y))),y.f&Ue)if(y.f^=Ue,y===o)en(y,null,n);else{var R=g?g.next:o;y===e.effect.last&&(e.effect.last=y.prev),y.prev&&(y.prev.next=y.next),y.next&&(y.next.prev=y.prev),rt(e,g,y),rt(e,y,R),en(y,R,n),g=y,m=[],w=[],o=Qt(g.next);continue}if(y!==o){if(d!==void 0&&d.has(y)){if(m.length<w.length){var I=w[0],re;g=I.prev;var ue=m[0],We=m[m.length-1];for(re=0;re<m.length;re+=1)en(m[re],I,n);for(re=0;re<w.length;re+=1)d.delete(w[re]);rt(e,ue.prev,We.next),rt(e,g,ue),rt(e,We,I),o=I,g=We,T-=1,m=[],w=[]}else d.delete(y),en(y,o,n),rt(e,y.prev,y.next),rt(e,y,g===null?e.effect.first:g.next),rt(e,g,y),g=y;continue}for(m=[],w=[];o!==null&&o!==y;)(d??(d=new Set)).add(o),w.push(o),o=Qt(o.next);if(o===null)continue}y.f&Ue||m.push(y),g=y,o=Qt(y.next)}if(e.outrogroups!==null){for(const ve of e.outrogroups)ve.pending.size===0&&(gr(e,Pn(ve.done)),(gn=e.outrogroups)==null||gn.delete(ve));e.outrogroups.size===0&&(e.outrogroups=null)}if(o!==null||d!==void 0){var ee=[];if(d!==void 0)for(y of d)y.f&ie||ee.push(y);for(;o!==null;)!(o.f&ie)&&o!==e.fallback&&ee.push(o),o=Qt(o.next);var He=ee.length;if(He>0){var Be=r&ii&&c===0?n:null;if(l){for(T=0;T<He;T+=1)(Bt=(bn=ee[T].nodes)==null?void 0:bn.a)==null||Bt.measure();for(T=0;T<He;T+=1)(mn=(Yt=ee[T].nodes)==null?void 0:Yt.a)==null||mn.fix()}Yo(e,ee,Be)}}l&&ot(()=>{var ve,Kt;if(f!==void 0)for(y of f)(Kt=(ve=y.nodes)==null?void 0:ve.a)==null||Kt.apply()})}function Go(e,t,n,r,s,l,c,v){var o=c&qa?c&Va?At(n):G(n,!1,!1):null,d=c&Ua?At(s):null;return{v:o,i:d,e:Ee(()=>(l(t,o??n,d??s,v),()=>{e.delete(r)}))}}function en(e,t,n){if(e.nodes)for(var r=e.nodes.start,s=e.nodes.end,l=t&&!(t.f&Ue)?t.nodes.start:n;r!==null;){var c=hn(r);if(l.before(r),r===s)return;r=c}}function rt(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}const Gs=[...`
2
- \r\f \v\uFEFF`];function Jo(e,t,n){var r=e==null?"":""+e;if(n){for(var s of Object.keys(n))if(n[s])r=r?r+" "+s:s;else if(r.length)for(var l=s.length,c=0;(c=r.indexOf(s,c))>=0;){var v=c+l;(c===0||Gs.includes(r[c-1]))&&(v===r.length||Gs.includes(r[v]))?r=(c===0?"":r.substring(0,c))+r.substring(v+1):c=v}}return r===""?null:r}function Qo(e,t){return e==null?null:String(e)}function Xt(e,t,n,r,s,l){var c=e.__className;if(c!==n||c===void 0){var v=Jo(n,r,l);v==null?e.removeAttribute("class"):e.className=v,e.__className=n}else if(l&&s!==l)for(var o in l){var d=!!l[o];(s==null||d!==!!s[o])&&e.classList.toggle(o,d)}return l}function Js(e,t,n,r){var s=e.__style;if(s!==t){var l=Qo(t);l==null?e.removeAttribute("style"):e.style.cssText=l,e.__style=t}return r}function zi(e,t,n=!1){if(e.multiple){if(t==null)return;if(!mr(t))return Ba();for(var r of e.options)r.selected=t.includes(sn(r));return}for(r of e.options){var s=sn(r);if(go(s,t)){r.selected=!0;return}}(!n||t!==void 0)&&(e.selectedIndex=-1)}function Xo(e){var t=new MutationObserver(()=>{zi(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Rr(()=>{t.disconnect()})}function rr(e,t,n=t){var r=new WeakSet,s=!0;Ni(e,"change",l=>{var c=l?"[selected]":":checked",v;if(e.multiple)v=[].map.call(e.querySelectorAll(c),sn);else{var o=e.querySelector(c)??e.querySelector("option:not([disabled])");v=o&&sn(o)}n(v),e.__value=v,x!==null&&r.add(x)}),To(()=>{var l=t();if(e===document.activeElement){var c=x;if(r.has(c))return}if(zi(e,l,s),s&&l===void 0){var v=e.querySelector(":checked");v!==null&&(l=sn(v),n(l))}e.__value=l,s=!1}),Xo(e)}function sn(e){return"__value"in e?e.__value:e.value}const Zo=Symbol("is custom element"),ec=Symbol("is html");function tc(e,t,n,r){var s=nc(e);s[t]!==(s[t]=n)&&(n==null?e.removeAttribute(t):typeof n!="string"&&rc(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function nc(e){return e.__attributes??(e.__attributes={[Zo]:e.nodeName.includes("-"),[ec]:e.namespaceURI===li})}var Qs=new Map;function rc(e){var t=e.getAttribute("is")||e.nodeName,n=Qs.get(t);if(n)return n;Qs.set(t,n=[]);for(var r,s=e,l=Element.prototype;l!==s;){r=ti(s);for(var c in r)r[c].set&&n.push(c);s=yr(s)}return n}function kn(e,t,n=t){var r=new WeakSet;Ni(e,"input",async s=>{var l=s?e.defaultValue:e.value;if(l=sr(e)?ir(l):l,n(l),x!==null&&r.add(x),await Fo(),l!==(l=t())){var c=e.selectionStart,v=e.selectionEnd,o=e.value.length;if(e.value=l??"",v!==null){var d=e.value.length;c===v&&v===o&&d>o?(e.selectionStart=d,e.selectionEnd=d):(e.selectionStart=c,e.selectionEnd=Math.min(v,d))}}}),E(t)==null&&e.value&&(n(sr(e)?ir(e.value):e.value),x!==null&&r.add(x)),qn(()=>{var s=t();if(e===document.activeElement){var l=x;if(r.has(l))return}sr(e)&&s===ir(e.value)||e.type==="date"&&!s&&!e.value||s!==e.value&&(e.value=s??"")})}function sr(e){var t=e.type;return t==="number"||t==="range"}function ir(e){return e===""?null:+e}function sc(e){return function(...t){var n=t[0];return n.preventDefault(),e==null?void 0:e.apply(this,t)}}function ic(e=!1){const t=B,n=t.l.u;if(!n)return;let r=()=>Io(t.s);if(e){let s=0,l={};const c=kr(()=>{let v=!1;const o=t.s;for(const d in o)o[d]!==l[d]&&(l[d]=o[d],v=!0);return v&&s++,s});r=()=>i(c)}n.b.length&&ko(()=>{Xs(t,r),lr(n.b)}),Us(()=>{const s=E(()=>n.m.map(Ra));return()=>{for(const l of s)typeof l=="function"&&l()}}),n.a.length&&Us(()=>{Xs(t,r),lr(n.a)})}function Xs(e,t){if(e.l.s)for(const n of e.l.s)i(n);t()}const lc="5";var ei;typeof window<"u"&&((ei=window.__svelte??(window.__svelte={})).v??(ei.v=new Set)).add(lc);Ja();var ac=z('<section class="notice svelte-d3ct2b"> </section>'),oc=z('<section class="notice danger svelte-d3ct2b"> </section>'),cc=z('<p class="terminal-line svelte-d3ct2b"><time class="svelte-d3ct2b">--:--:--</time><span class="sys svelte-d3ct2b">SYS</span><strong class="svelte-d3ct2b">Waiting for memory-core watch output...</strong></p>'),fc=z('<strong class="svelte-d3ct2b"> </strong>'),uc=z('<strong class="svelte-d3ct2b"> </strong>'),vc=z('<strong class="svelte-d3ct2b"> </strong>'),dc=z('<strong class="svelte-d3ct2b"> </strong>'),pc=z('<p class="svelte-d3ct2b"><b class="svelte-d3ct2b">Why:</b> </p>'),_c=z('<p class="svelte-d3ct2b"><b class="svelte-d3ct2b">Issue:</b> </p>'),hc=z('<p class="svelte-d3ct2b"><b class="svelte-d3ct2b">Fix:</b> </p>'),gc=z('<pre class="svelte-d3ct2b"> </pre>'),bc=z('<div class="terminal-detail svelte-d3ct2b"><p class="svelte-d3ct2b"> </p> <p class="svelte-d3ct2b"><b class="svelte-d3ct2b">Rule:</b> </p> <!> <!> <!> <!></div>'),mc=z('<section><p class="terminal-line svelte-d3ct2b"><time class="svelte-d3ct2b"> </time> <span class="svelte-d3ct2b"> </span> <!></p> <!></section>'),yc=z('<div class="metric-row svelte-d3ct2b"><div class="svelte-d3ct2b"><span class="svelte-d3ct2b"> </span> <strong class="svelte-d3ct2b"> </strong></div> <i class="svelte-d3ct2b"></i></div>'),wc=z('<p class="empty svelte-d3ct2b">No rule counters yet.</p>'),Ec=z('<div class="metric-row warning svelte-d3ct2b"><div class="svelte-d3ct2b"><span class="svelte-d3ct2b"> </span> <strong class="svelte-d3ct2b"> </strong></div> <i class="svelte-d3ct2b"></i></div>'),xc=z('<p class="empty svelte-d3ct2b">No file counters yet.</p>'),kc=z('<small class="svelte-d3ct2b"> </small>'),Sc=z('<div class="rule-item svelte-d3ct2b"><div><div class="rule-meta svelte-d3ct2b"><span class="svelte-d3ct2b"> </span> <code class="svelte-d3ct2b"> </code></div> <p class="svelte-d3ct2b"> </p> <!></div> <button class="svelte-d3ct2b">Delete</button></div>'),Tc=z('<p class="empty svelte-d3ct2b">No rules match the current filters.</p>'),Ac=z('<div class="command-center svelte-d3ct2b"><aside class="sidebar svelte-d3ct2b"><div class="brand svelte-d3ct2b"><h1 class="svelte-d3ct2b">memory-core</h1> <span class="svelte-d3ct2b">command center</span></div> <nav aria-label="Dashboard navigation" class="svelte-d3ct2b"><a class="nav-item active svelte-d3ct2b" href="/"><span class="nav-icon svelte-d3ct2b">[]</span> <span>Command Center</span></a></nav> <div class="sidebar-footer svelte-d3ct2b"><div><i class="svelte-d3ct2b"></i> </div> <small class="svelte-d3ct2b"> </small></div></aside> <div class="workspace svelte-d3ct2b"><header class="topbar svelte-d3ct2b"><div class="topbar-left svelte-d3ct2b"><button class="icon-button mobile-menu svelte-d3ct2b" aria-label="Menu">=</button> <div><i class="svelte-d3ct2b"></i> <span> </span></div></div> <div class="header-metrics svelte-d3ct2b" aria-label="Global metrics"><div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Violations</span> <strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Files</span> <strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Rules</span> <strong class="svelte-d3ct2b"> </strong></div></div> <div class="top-actions svelte-d3ct2b" aria-label="Status shortcuts"><button class="icon-button svelte-d3ct2b" title="Warnings" aria-label="Warnings">!</button> <button class="icon-button svelte-d3ct2b" title="Rules" aria-label="Rules">R</button> <button class="icon-button svelte-d3ct2b" title="Database" aria-label="Database">DB</button> <button class="icon-button svelte-d3ct2b" title="Network" aria-label="Network">LAN</button></div></header> <main class="canvas svelte-d3ct2b"><section class="status-grid svelte-d3ct2b"><article class="glass-panel status-card svelte-d3ct2b"><div class="card-head svelte-d3ct2b"><h2 class="svelte-d3ct2b">Project</h2> <span class="svelte-d3ct2b"> </span></div> <div class="data-list svelte-d3ct2b"><div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Name</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Type</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Language</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Architecture</span><strong class="svelte-d3ct2b"> </strong></div></div></article> <article class="glass-panel status-card svelte-d3ct2b"><div class="card-head svelte-d3ct2b"><h2 class="svelte-d3ct2b">Runtime</h2> <span class="svelte-d3ct2b"> </span></div> <div class="data-list svelte-d3ct2b"><div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Provider</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Check model</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Check status</span> <strong><!></strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Embedding</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Ollama URL</span><strong class="svelte-d3ct2b"> </strong></div></div></article> <article class="glass-panel status-card svelte-d3ct2b"><div class="card-head svelte-d3ct2b"><h2 class="svelte-d3ct2b">PostgreSQL</h2> <span> </span></div> <div class="data-list svelte-d3ct2b"><div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Database</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">User</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Host</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">URL</span><strong class="svelte-d3ct2b"> </strong></div></div></article></section> <!> <!> <section class="terminal-panel glass-panel svelte-d3ct2b"><div class="terminal-head svelte-d3ct2b"><div class="svelte-d3ct2b"><span class="terminal-icon svelte-d3ct2b">&gt;_</span> <h2 class="svelte-d3ct2b">Live Feed</h2></div> <div class="window-dots svelte-d3ct2b" aria-hidden="true"><i class="svelte-d3ct2b"></i><i class="svelte-d3ct2b"></i><i class="svelte-d3ct2b"></i></div></div> <div class="terminal-body svelte-d3ct2b"><!> <!></div></section> <section class="content-grid svelte-d3ct2b"><article class="glass-panel stats-panel svelte-d3ct2b"><div class="card-head svelte-d3ct2b"><h2 class="svelte-d3ct2b">Stats</h2> <span class="svelte-d3ct2b">Recorded</span></div> <div class="stat-block svelte-d3ct2b"><h3 class="svelte-d3ct2b">Most Violated Rules</h3> <!></div> <div class="stat-block svelte-d3ct2b"><h3 class="svelte-d3ct2b">Problem Files</h3> <!></div> <div class="summary-strip svelte-d3ct2b"><div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Clean</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Issues</span><strong class="svelte-d3ct2b"> </strong></div> <div class="svelte-d3ct2b"><span class="svelte-d3ct2b">Events</span><strong class="svelte-d3ct2b"> </strong></div></div></article> <article class="glass-panel rule-engine svelte-d3ct2b"><div class="card-head svelte-d3ct2b"><h2 class="svelte-d3ct2b">Rule Engine</h2> <span class="svelte-d3ct2b"> </span></div> <form class="rule-form svelte-d3ct2b"><div class="control-grid svelte-d3ct2b"><select class="svelte-d3ct2b"><option>Rule</option><option>Decision</option><option>Pattern</option><option>Ignore</option></select> <select class="svelte-d3ct2b"><option>Project</option><option>Global</option></select></div> <textarea rows="3" placeholder="Rule or decision" class="svelte-d3ct2b"></textarea> <div class="control-grid svelte-d3ct2b"><input placeholder="Reason" class="svelte-d3ct2b"/> <input placeholder="Tags" class="svelte-d3ct2b"/></div> <button class="svelte-d3ct2b"> </button></form> <div class="control-grid filters svelte-d3ct2b"><select class="svelte-d3ct2b"><option>All types</option><option>Rules</option><option>Decisions</option><option>Patterns</option><option>Ignores</option></select> <input placeholder="Search rules..." class="svelte-d3ct2b"/></div> <div class="rule-list svelte-d3ct2b"></div></article></section></main></div></div>');function Rc(e,t){ci(t,!1);const n=G(),r=G(),s=G(),l=G(),c=G(),v=G(),o=G(),d=G(),g=G();let f=G({config:null,stats:{rules:{},files:{},topRules:[],topFiles:[]},files:[],memories:[]}),m=G([]),w=G(!1),b=G("all"),A=G(""),y=G(!1),T=G(""),R=G({type:"rule",scope:"project",content:"",reason:"",tags:"dashboard"});const I=()=>{var u;return((u=i(f).runtime)==null?void 0:u.project.name)??"memory-core"},re=()=>{var O,j;const u=((O=i(f).runtime)==null?void 0:O.project.declaredArchitectures)??[],_=((j=i(f).runtime)==null?void 0:j.project.activeArchitectures)??[];return u.length>0?u.join(", "):_.length>0?_.join(", "):"none"};function ue(u){F(m,[{...u,id:crypto.randomUUID()},...i(m)].slice(0,80))}function We(u){return u.type==="saved"?{type:"saved",timestamp:u.timestamp,file:u.file}:u.type==="clean"?{type:"clean",timestamp:u.timestamp,file:u.file}:u.type==="violations"?{type:"violations",timestamp:u.timestamp,file:u.file,violations:u.violations}:u.type==="error"?{type:"error",timestamp:u.timestamp,message:u.message}:u.type==="ready"?{type:"system",timestamp:u.timestamp,message:`Watching ${u.path} | ${u.rules} rules | ${u.model}`}:{type:"system",timestamp:u.timestamp,message:"Watch stopped"}}function ee(u=[]){F(m,u.map(We).map(_=>({..._,id:crypto.randomUUID()})).reverse().slice(0,80))}function He(u){return new Intl.DateTimeFormat(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date(u))}function Be(u){return Math.max(1,...u.map(_=>_.count))}function le(u,_){const O=u.file||_;return u.line?`${O}:${u.line}`:O}function Ct(u){return u.type==="saved"?"SAVE":u.type==="clean"?"OK":u.type==="violations"?"FAIL":u.type==="error"?"WARN":"SYS"}async function tt(){const u=await fetch("/api/snapshot");F(f,await u.json()),ee(i(f).events)}function Ht(){const u=location.protocol==="https:"?"wss:":"ws:",_=new WebSocket(`${u}//${location.host}/ws`);_.addEventListener("open",()=>{F(w,!0),ue({type:"system",timestamp:new Date().toISOString(),message:"Dashboard connected"})}),_.addEventListener("close",()=>{F(w,!1),ue({type:"error",timestamp:new Date().toISOString(),message:"Dashboard disconnected"}),setTimeout(Ht,1500)}),_.addEventListener("message",O=>{const j=JSON.parse(O.data);if(j.type==="snapshot"){F(f,j.snapshot),i(m).length===0&&ee(i(f).events);return}j.type==="watch"&&ue(We(j.event))})}async function gn(){if(i(R).content.trim()){F(y,!0),F(T,"");try{const u=await fetch("/api/memories",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(i(R))});if(!u.ok)throw new Error((await u.json()).error??"Save failed");F(R,{type:"rule",scope:"project",content:"",reason:"",tags:"dashboard"}),await tt()}catch(u){F(T,u.message)}finally{F(y,!1)}}}async function bn(u){F(T,"");const _=await fetch(`/api/memories/${u}`,{method:"DELETE"});if(!_.ok){F(T,(await _.json()).error??"Delete failed");return}await tt()}tt().catch(u=>{F(T,u.message)}),Ht(),Ke(()=>(i(f),i(b),i(A)),()=>{F(n,i(f).memories.filter(u=>{const _=i(b)==="all"||u.type===i(b),O=`${u.type} ${u.scope} ${u.content} ${u.reason??""} ${u.tags.join(" ")}`.toLowerCase();return _&&O.includes(i(A).toLowerCase())}))}),Ke(()=>i(f),()=>{F(r,i(f).files.reduce((u,_)=>u+_.violations.length,0))}),Ke(()=>i(f),()=>{F(s,i(f).files.length)}),Ke(()=>i(f),()=>{F(l,i(f).files.filter(u=>u.status==="clean").length)}),Ke(()=>i(f),()=>{F(c,i(f).files.filter(u=>u.status==="violations").length)}),Ke(()=>i(f),()=>{F(v,Object.values(i(f).stats.rules).reduce((u,_)=>u+_,0))}),Ke(()=>i(f),()=>{F(o,i(f).memories.filter(u=>["rule","pattern","decision"].includes(u.type)).length)}),Ke(()=>i(f),()=>{var u;F(d,((u=i(f).memoryCount)==null?void 0:u.total)??i(f).memories.length)}),Ke(()=>i(f),()=>{var u;F(g,((u=i(f).memoryCount)==null?void 0:u.relevant)??i(f).memories.length)}),Ao(),ic();var Bt=Ac(),Yt=p(Bt),mn=h(p(Yt),4),ve=p(mn);let Kt;var Vi=h(p(ve)),Wi=h(ve,2),Hi=p(Wi),Bi=h(Yt,2),Fr=p(Bi),Ir=p(Fr),Lr=h(p(Ir),2);let Pr;var Yi=h(p(Lr),2),Ki=p(Yi),Gi=h(Ir,2),jr=p(Gi),Ji=h(p(jr),2),Qi=p(Ji),$r=h(jr,2),Xi=h(p($r),2),Zi=p(Xi),el=h($r,2),tl=h(p(el),2),nl=p(tl),rl=h(Fr,2),qr=p(rl),Ur=p(qr),zr=p(Ur),sl=h(p(zr),2),il=p(sl),ll=h(zr,2),Vr=p(ll),al=h(p(Vr)),ol=p(al),Wr=h(Vr,2),cl=h(p(Wr)),fl=p(cl),Hr=h(Wr,2),ul=h(p(Hr)),vl=p(ul),dl=h(Hr,2),pl=h(p(dl)),_l=p(pl),Br=h(Ur,2),Yr=p(Br),hl=h(p(Yr),2),gl=p(hl),bl=h(Yr,2),Kr=p(bl),ml=h(p(Kr)),yl=p(ml),Gr=h(Kr,2),wl=h(p(Gr)),El=p(wl),Jr=h(Gr,2),Qr=h(p(Jr),2);let Xr;var xl=p(Qr);{var kl=u=>{var _=Ys();K(()=>S(_,(i(f),E(()=>{var O;return(O=i(f).runtime)!=null&&O.model.checkModelInstalled?"installed":"missing"})))),P(u,_)},Sl=u=>{var _=Ys();K(()=>S(_,(i(f),E(()=>{var O;return(O=i(f).runtime)!=null&&O.model.apiKeyConfigured?"api key set":"api key missing"})))),P(u,_)};Me(xl,u=>{i(f),E(()=>{var _;return((_=i(f).runtime)==null?void 0:_.model.provider)==="ollama"})?u(kl):u(Sl,-1)})}var Zr=h(Jr,2),Tl=h(p(Zr)),Al=p(Tl),Rl=h(Zr,2),Nl=h(p(Rl)),Cl=p(Nl),Ml=h(Br,2),es=p(Ml),ts=h(p(es),2);let ns;var Dl=p(ts),Ol=h(es,2),rs=p(Ol),Fl=h(p(rs)),Il=p(Fl),ss=h(rs,2),Ll=h(p(ss)),Pl=p(Ll),is=h(ss,2),jl=h(p(is)),$l=p(jl),ql=h(is,2),Ul=h(p(ql)),zl=p(Ul),ls=h(qr,2);{var Vl=u=>{var _=ac(),O=p(_);K(()=>S(O,(i(f),E(()=>i(f).dbError)))),P(u,_)};Me(ls,u=>{i(f),E(()=>i(f).dbError)&&u(Vl)})}var as=h(ls,2);{var Wl=u=>{var _=oc(),O=p(_);K(()=>S(O,i(T))),P(u,_)};Me(as,u=>{i(T)&&u(Wl)})}var os=h(as,2),Hl=h(p(os),2),cs=p(Hl);{var Bl=u=>{var _=cc();P(u,_)};Me(cs,u=>{i(m),E(()=>i(m).length===0)&&u(Bl)})}var Yl=h(cs,2);Jt(Yl,1,()=>(i(m),E(()=>[...i(m)].reverse())),u=>u.id,(u,_)=>{var O=mc();let j;var ae=p(O),ge=p(ae),Pe=p(ge),Re=h(ge,2),k=p(Re),V=h(Re,2);{var Mt=W=>{var te=fc(),Ye=p(te);K(()=>S(Ye,(i(_),E(()=>i(_).message)))),P(W,te)},Xn=W=>{var te=uc(),Ye=p(te);K(()=>S(Ye,`saved: ${i(_),E(()=>i(_).file)??""}`)),P(W,te)},Zn=W=>{var te=vc(),Ye=p(te);K(()=>S(Ye,`${i(_),E(()=>i(_).file)??""} - no violations`)),P(W,te)},yn=W=>{var te=dc(),Ye=p(te);K(()=>S(Ye,`${i(_),E(()=>i(_).violations.length)??""} violation${i(_),E(()=>i(_).violations.length===1?"":"s")??""} in ${i(_),E(()=>i(_).file)??""}`)),P(W,te)};Me(V,W=>{i(_),E(()=>i(_).type==="system"||i(_).type==="error")?W(Mt):(i(_),E(()=>i(_).type==="saved")?W(Xn,1):(i(_),E(()=>i(_).type==="clean")?W(Zn,2):W(yn,-1)))})}var ut=h(ae,2);{var wn=W=>{var te=zo(),Ye=mo(te);Jt(Ye,3,()=>(i(_),E(()=>i(_).violations)),(Ts,$)=>`${i(_).id}-${$}`,(Ts,$,va)=>{var As=bc(),Rs=p(As),da=p(Rs),Ns=h(Rs,2),pa=h(p(Ns)),Cs=h(Ns,2);{var _a=Q=>{var Ne=pc(),vt=h(p(Ne));K(()=>S(vt,` ${i($),E(()=>i($).reason)??""}`)),P(Q,Ne)};Me(Cs,Q=>{i($),E(()=>i($).reason)&&Q(_a)})}var Ms=h(Cs,2);{var ha=Q=>{var Ne=_c(),vt=h(p(Ne));K(()=>S(vt,` ${i($),E(()=>i($).issue)??""}`)),P(Q,Ne)};Me(Ms,Q=>{i($),E(()=>i($).issue)&&Q(ha)})}var Ds=h(Ms,2);{var ga=Q=>{var Ne=hc(),vt=h(p(Ne));K(()=>S(vt,` ${i($),E(()=>i($).suggestion)??""}`)),P(Q,Ne)};Me(Ds,Q=>{i($),E(()=>i($).suggestion)&&Q(ga)})}var ba=h(Ds,2);{var ma=Q=>{var Ne=gc(),vt=p(Ne);K(()=>S(vt,(i($),E(()=>i($).code)))),P(Q,Ne)};Me(ba,Q=>{i($),E(()=>i($).code)&&Q(ma)})}K(Q=>{S(da,`[${i(va)+1}] ${Q??""}`),S(pa,` ${i($),E(()=>i($).rule)??""}`)},[()=>(i($),i(_),E(()=>le(i($),i(_).file)))]),P(Ts,As)}),P(W,te)};Me(ut,W=>{i(_),E(()=>i(_).type==="violations")&&W(wn)})}K((W,te)=>{j=Xt(O,1,"svelte-d3ct2b",null,j,{"error-line":i(_).type==="error","ok-line":i(_).type==="clean","violation-line":i(_).type==="violations"}),S(Pe,W),S(k,te)},[()=>(i(_),E(()=>He(i(_).timestamp))),()=>(i(_),E(()=>Ct(i(_))))]),P(u,O)});var Kl=h(os,2),fs=p(Kl),us=h(p(fs),2),Gl=h(p(us),2);Jt(Gl,1,()=>(i(f),E(()=>i(f).stats.topRules.slice(0,5))),u=>u.name,(u,_)=>{var O=yc(),j=p(O),ae=p(j),ge=p(ae),Pe=h(ae,2),Re=p(Pe),k=h(j,2);K(V=>{S(ge,(i(_),E(()=>i(_).name))),S(Re,(i(_),E(()=>i(_).count))),Js(k,V)},[()=>(i(_),i(f),E(()=>`width: ${i(_).count/Be(i(f).stats.topRules)*100}%`))]),P(u,O)},u=>{var _=wc();P(u,_)});var vs=h(us,2),Jl=h(p(vs),2);Jt(Jl,1,()=>(i(f),E(()=>i(f).stats.topFiles.slice(0,5))),u=>u.name,(u,_)=>{var O=Ec(),j=p(O),ae=p(j),ge=p(ae),Pe=h(ae,2),Re=p(Pe),k=h(j,2);K(V=>{S(ge,(i(_),E(()=>i(_).name))),S(Re,(i(_),E(()=>i(_).count))),Js(k,V)},[()=>(i(_),i(f),E(()=>`width: ${i(_).count/Be(i(f).stats.topFiles)*100}%`))]),P(u,O)},u=>{var _=xc();P(u,_)});var Ql=h(vs,2),ds=p(Ql),Xl=h(p(ds)),Zl=p(Xl),ps=h(ds,2),ea=h(p(ps)),ta=p(ea),na=h(ps,2),ra=h(p(na)),sa=p(ra),ia=h(fs,2),_s=p(ia),la=h(p(_s),2),aa=p(la),Un=h(_s,2),hs=p(Un),zn=p(hs),Vn=p(zn);Vn.value=Vn.__value="rule";var Wn=h(Vn);Wn.value=Wn.__value="decision";var Hn=h(Wn);Hn.value=Hn.__value="pattern";var gs=h(Hn);gs.value=gs.__value="ignore";var bs=h(zn,2),Bn=p(bs);Bn.value=Bn.__value="project";var ms=h(Bn);ms.value=ms.__value="global";var ys=h(hs,2),ws=h(ys,2),Es=p(ws),oa=h(Es,2),xs=h(ws,2),ca=p(xs),ks=h(Un,2),Yn=p(ks),Kn=p(Yn);Kn.value=Kn.__value="all";var Gn=h(Kn);Gn.value=Gn.__value="rule";var Jn=h(Gn);Jn.value=Jn.__value="decision";var Qn=h(Jn);Qn.value=Qn.__value="pattern";var Ss=h(Qn);Ss.value=Ss.__value="ignore";var fa=h(Yn,2),ua=h(ks,2);Jt(ua,5,()=>i(n),u=>u.id,(u,_)=>{var O=Sc(),j=p(O),ae=p(j),ge=p(ae),Pe=p(ge),Re=h(ge,2),k=p(Re),V=h(ae,2),Mt=p(V),Xn=h(V,2);{var Zn=ut=>{var wn=kc(),W=p(wn);K(()=>S(W,(i(_),E(()=>i(_).reason)))),P(ut,wn)};Me(Xn,ut=>{i(_),E(()=>i(_).reason)&&ut(Zn)})}var yn=h(j,2);K(ut=>{S(Pe,(i(_),E(()=>i(_).scope))),S(k,`Rule-${ut??""}`),S(Mt,(i(_),E(()=>i(_).content))),tc(yn,"aria-label",(i(_),E(()=>`Delete ${i(_).id}`)))},[()=>(i(_),E(()=>String(i(_).id).padStart(3,"0")))]),Hs("click",yn,()=>bn(i(_).id)),P(u,O)},u=>{var _=Tc();P(u,_)}),K((u,_,O)=>{var j,ae,ge,Pe,Re;Kt=Xt(ve,1,"status-chip svelte-d3ct2b",null,Kt,{live:i(w)}),S(Vi,` ${i(w)?"System live":"Offline"}`),S(Hi,(i(f),E(()=>{var k;return((k=i(f).runtime)==null?void 0:k.model.label)??"runtime pending"}))),Pr=Xt(Lr,1,"live-label svelte-d3ct2b",null,Pr,{live:i(w)}),S(Ki,i(w)?"System live":"Disconnected"),S(Qi,i(r)),S(Zi,i(s)),S(nl,i(o)),S(il,(i(f),E(()=>{var k;return(k=i(f).runtime)!=null&&k.project.initialized?"Initialized":"Not initialized"}))),S(ol,u),S(fl,(i(f),E(()=>{var k;return((k=i(f).runtime)==null?void 0:k.project.type)??"unknown"}))),S(vl,(i(f),E(()=>{var k;return((k=i(f).runtime)==null?void 0:k.project.language)??"unknown"}))),S(_l,_),S(gl,(i(f),E(()=>{var k;return((k=i(f).runtime)==null?void 0:k.model.label)??"pending"}))),S(yl,(i(f),E(()=>{var k;return((k=i(f).runtime)==null?void 0:k.model.provider)??"unknown"}))),S(El,(i(f),E(()=>{var k,V,Mt;return((k=i(f).runtime)==null?void 0:k.model.checkModelResolved)??((V=i(f).runtime)==null?void 0:V.model.checkModel)??((Mt=i(f).runtime)==null?void 0:Mt.model.chatModel)??"unknown"}))),Xr=Xt(Qr,1,"svelte-d3ct2b",null,Xr,{"status-ok":((j=i(f).runtime)==null?void 0:j.model.checkModelInstalled)||((ae=i(f).runtime)==null?void 0:ae.model.apiKeyConfigured),"status-warn":((ge=i(f).runtime)==null?void 0:ge.model.checkModelInstalled)===!1||((Pe=i(f).runtime)==null?void 0:Pe.model.error)}),S(Al,(i(f),E(()=>{var k,V;return((k=i(f).runtime)==null?void 0:k.model.embeddingModelResolved)??((V=i(f).runtime)==null?void 0:V.model.embeddingModel)??"unknown"}))),S(Cl,(i(f),E(()=>{var k;return((k=i(f).runtime)==null?void 0:k.model.ollamaUrl)??"unknown"}))),ns=Xt(ts,1,"svelte-d3ct2b",null,ns,{success:(Re=i(f).runtime)==null?void 0:Re.postgres.connected}),S(Dl,(i(f),E(()=>{var k;return(k=i(f).runtime)!=null&&k.postgres.connected?"Connected":"Not connected"}))),S(Il,(i(f),E(()=>{var k,V;return((k=i(f).runtime)==null?void 0:k.postgres.serverDatabase)??((V=i(f).runtime)==null?void 0:V.postgres.database)??"unknown"}))),S(Pl,(i(f),E(()=>{var k,V;return((k=i(f).runtime)==null?void 0:k.postgres.serverUser)??((V=i(f).runtime)==null?void 0:V.postgres.user)??"unknown"}))),S($l,`${i(f),E(()=>{var k;return((k=i(f).runtime)==null?void 0:k.postgres.host)??"unknown"})??""}${i(f),E(()=>{var k;return(k=i(f).runtime)!=null&&k.postgres.port?`:${i(f).runtime.postgres.port}`:""})??""}`),S(zl,(i(f),E(()=>{var k;return((k=i(f).runtime)==null?void 0:k.postgres.url)??"(not set)"}))),S(Zl,i(l)),S(ta,i(r)),S(sa,i(v)),S(aa,`${i(o)??""} rules active`),xs.disabled=O,S(ca,i(y)?"Saving...":"Add New Architecture Rule")},[()=>E(I),()=>E(re),()=>(i(y),i(R),E(()=>i(y)||!i(R).content.trim()))]),rr(zn,()=>i(R).type,u=>Gt(R,i(R).type=u)),rr(bs,()=>i(R).scope,u=>Gt(R,i(R).scope=u)),kn(ys,()=>i(R).content,u=>Gt(R,i(R).content=u)),kn(Es,()=>i(R).reason,u=>Gt(R,i(R).reason=u)),kn(oa,()=>i(R).tags,u=>Gt(R,i(R).tags=u)),Hs("submit",Un,sc(gn)),rr(Yn,()=>i(b),u=>F(b,u)),kn(fa,()=>i(A),u=>F(A,u)),P(e,Bt),fi()}Vo(Rc,{target:document.getElementById("app")});
@@ -1 +0,0 @@
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}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select,textarea{font:inherit}button{border:0}:root{color-scheme:dark;--background: #111318;--surface: #1a1c20;--surface-low: #0c0e12;--surface-mid: #1e2024;--surface-high: #282a2e;--surface-bright: #37393e;--primary: #b8c3ff;--primary-container: #2e5bff;--secondary: #03f59b;--secondary-soft: #cfffdd;--tertiary: #ffba20;--error: #ffb4ab;--error-strong: #ff5d52;--text: #e2e2e8;--muted: #c4c5d9;--outline: #434656}body{overflow:hidden;background:radial-gradient(circle at 78% 2%,rgba(46,91,255,.18),transparent 28rem),radial-gradient(circle at 18% 0%,rgba(3,245,155,.08),transparent 22rem),var(--background);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{scrollbar-color:rgba(255,255,255,.18) transparent;scrollbar-width:thin}.command-center.svelte-d3ct2b{display:grid;grid-template-columns:256px minmax(0,1fr);height:100vh;min-width:0}.sidebar.svelte-d3ct2b{display:flex;min-height:0;flex-direction:column;border-right:1px solid rgba(255,255,255,.08);padding:24px 16px;background:#0c0e12db;box-shadow:18px 0 46px #00000047;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.brand.svelte-d3ct2b{margin-bottom:34px;padding:0 8px}.brand.svelte-d3ct2b h1:where(.svelte-d3ct2b){margin:0;color:var(--primary);font-size:30px;font-weight:900;line-height:1.05;text-shadow:0 0 16px rgba(184,195,255,.34)}.brand.svelte-d3ct2b span:where(.svelte-d3ct2b),.sidebar-footer.svelte-d3ct2b small:where(.svelte-d3ct2b),.card-head.svelte-d3ct2b span:where(.svelte-d3ct2b),.data-list.svelte-d3ct2b span:where(.svelte-d3ct2b),.header-metrics.svelte-d3ct2b span:where(.svelte-d3ct2b),.stat-block.svelte-d3ct2b h3:where(.svelte-d3ct2b),.rule-meta.svelte-d3ct2b,.empty.svelte-d3ct2b{color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase}.sidebar.svelte-d3ct2b nav:where(.svelte-d3ct2b){display:grid;gap:6px}.nav-item.svelte-d3ct2b{display:flex;align-items:center;gap:12px;border-right:2px solid var(--primary);border-radius:4px;padding:12px 14px;background:#2e5bff29;color:var(--primary);font-size:14px;font-weight:800;text-decoration:none}.nav-icon.svelte-d3ct2b{display:grid;place-items:center;width:22px;height:22px;border-radius:6px;background:#b8c3ff1f;font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:10px}.sidebar-footer.svelte-d3ct2b{display:grid;gap:10px;margin-top:auto;border-top:1px solid rgba(255,255,255,.06);padding:16px 8px 0}.status-chip.svelte-d3ct2b,.live-label.svelte-d3ct2b{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:11px;font-weight:900;text-transform:uppercase}.status-chip.svelte-d3ct2b i:where(.svelte-d3ct2b),.live-label.svelte-d3ct2b i:where(.svelte-d3ct2b){width:8px;height:8px;border-radius:50%;background:var(--tertiary);box-shadow:0 0 8px var(--tertiary)}.status-chip.live.svelte-d3ct2b i:where(.svelte-d3ct2b),.live-label.live.svelte-d3ct2b i:where(.svelte-d3ct2b){background:var(--secondary);box-shadow:0 0 8px var(--secondary),0 0 16px #03f59b80}.workspace.svelte-d3ct2b{display:flex;min-width:0;min-height:0;flex-direction:column}.topbar.svelte-d3ct2b{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:20px;height:64px;border-bottom:1px solid rgba(255,255,255,.06);padding:0 24px;background:#111318c2;box-shadow:0 0 24px #2e5bff17;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.topbar-left.svelte-d3ct2b,.top-actions.svelte-d3ct2b{display:flex;align-items:center;gap:10px}.top-actions.svelte-d3ct2b{justify-content:flex-end}.mobile-menu.svelte-d3ct2b{display:none}.icon-button.svelte-d3ct2b{display:grid;place-items:center;min-width:34px;height:34px;border:0;border-radius:999px;background:transparent;color:var(--muted);cursor:pointer;font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:11px;font-weight:900}.icon-button.svelte-d3ct2b:hover{background:var(--surface-high);color:var(--text)}.header-metrics.svelte-d3ct2b{display:flex;align-items:center;gap:32px;border-right:1px solid rgba(255,255,255,.06);border-left:1px solid rgba(255,255,255,.06);padding:0 32px}.header-metrics.svelte-d3ct2b div:where(.svelte-d3ct2b){text-align:center}.header-metrics.svelte-d3ct2b strong:where(.svelte-d3ct2b){display:block;margin-top:3px;font-size:20px;line-height:1}.canvas.svelte-d3ct2b{flex:1;min-height:0;overflow-y:auto;padding:24px}.status-grid.svelte-d3ct2b,.content-grid.svelte-d3ct2b,.control-grid.svelte-d3ct2b{display:grid;gap:12px}.status-grid.svelte-d3ct2b{grid-template-columns:repeat(3,minmax(0,1fr))}.content-grid.svelte-d3ct2b{grid-template-columns:4fr 8fr;margin-top:12px}.glass-panel.svelte-d3ct2b{position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:linear-gradient(135deg,#ffffff09,#fff0),#12141cb8;box-shadow:0 18px 36px #0000003d;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.status-card.svelte-d3ct2b,.stats-panel.svelte-d3ct2b,.rule-engine.svelte-d3ct2b{padding:16px}.card-head.svelte-d3ct2b{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid rgba(255,255,255,.06);padding-bottom:10px}h2.svelte-d3ct2b,h3.svelte-d3ct2b,p.svelte-d3ct2b{margin:0}h2.svelte-d3ct2b{color:var(--text);font-size:20px;font-weight:700;line-height:1.35}.card-head.svelte-d3ct2b span.success:where(.svelte-d3ct2b){color:var(--secondary)}.data-list.svelte-d3ct2b{display:grid;gap:9px;margin-top:14px;font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:13px}.data-list.svelte-d3ct2b div:where(.svelte-d3ct2b){display:flex;align-items:baseline;justify-content:space-between;gap:18px;min-width:0}.data-list.svelte-d3ct2b strong:where(.svelte-d3ct2b){min-width:0;overflow:hidden;color:var(--text);font-weight:700;text-align:right;text-overflow:ellipsis;white-space:nowrap}.data-list.svelte-d3ct2b div:where(.svelte-d3ct2b):first-child strong:where(.svelte-d3ct2b),.data-list.svelte-d3ct2b div:where(.svelte-d3ct2b):nth-child(2) strong:where(.svelte-d3ct2b){color:var(--primary)}.data-list.svelte-d3ct2b strong.status-ok:where(.svelte-d3ct2b){color:var(--secondary)}.data-list.svelte-d3ct2b strong.status-warn:where(.svelte-d3ct2b){color:var(--tertiary)}.notice.svelte-d3ct2b{margin-top:12px;border:1px solid rgba(255,186,32,.26);border-radius:8px;padding:12px 14px;background:#8f66002e;color:var(--tertiary)}.notice.danger.svelte-d3ct2b{border-color:#ffb4ab42;background:#93000a33;color:var(--error)}.terminal-panel.svelte-d3ct2b{margin-top:12px}.terminal-panel.svelte-d3ct2b:before{position:absolute;top:0;right:0;left:0;height:1px;background:linear-gradient(90deg,transparent,var(--primary-container),transparent);content:"";opacity:.7}.terminal-head.svelte-d3ct2b{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid rgba(255,255,255,.06);padding:10px 14px;background:#1e2024b8}.terminal-head.svelte-d3ct2b div:where(.svelte-d3ct2b):first-child{display:flex;align-items:center;gap:10px}.terminal-icon.svelte-d3ct2b{color:var(--primary);font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:13px;font-weight:900}.terminal-head.svelte-d3ct2b h2:where(.svelte-d3ct2b){font-size:12px;font-weight:900;text-transform:uppercase}.window-dots.svelte-d3ct2b{display:flex;gap:8px}.window-dots.svelte-d3ct2b i:where(.svelte-d3ct2b){width:8px;height:8px;border-radius:50%;background:#ffb4ab99}.window-dots.svelte-d3ct2b i:where(.svelte-d3ct2b):nth-child(2){background:#ffba2099}.window-dots.svelte-d3ct2b i:where(.svelte-d3ct2b):nth-child(3){background:#03f59b99}.terminal-body.svelte-d3ct2b{display:grid;gap:3px;height:220px;overflow:auto;padding:16px;background:#0c0e12;color:var(--muted);font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:12px;line-height:1.45}.terminal-body.svelte-d3ct2b section:where(.svelte-d3ct2b){display:grid;gap:6px}.terminal-line.svelte-d3ct2b{display:flex;gap:12px;min-width:0;opacity:.82}.terminal-line.svelte-d3ct2b time:where(.svelte-d3ct2b){flex:0 0 auto;color:var(--outline)}.terminal-line.svelte-d3ct2b span:where(.svelte-d3ct2b){flex:0 0 auto;color:var(--primary)}.terminal-line.svelte-d3ct2b strong:where(.svelte-d3ct2b){min-width:0;color:var(--text);font-weight:400;overflow-wrap:anywhere}.terminal-body.svelte-d3ct2b .ok-line:where(.svelte-d3ct2b) span:where(.svelte-d3ct2b){color:var(--secondary)}.terminal-body.svelte-d3ct2b .error-line:where(.svelte-d3ct2b) span:where(.svelte-d3ct2b),.terminal-body.svelte-d3ct2b .violation-line:where(.svelte-d3ct2b) span:where(.svelte-d3ct2b){color:var(--tertiary)}.terminal-detail.svelte-d3ct2b{display:grid;gap:3px;margin-left:96px;border-left:2px solid rgba(255,180,171,.45);padding-left:12px;color:var(--text)}.terminal-detail.svelte-d3ct2b b:where(.svelte-d3ct2b){color:var(--tertiary)}.terminal-detail.svelte-d3ct2b pre:where(.svelte-d3ct2b){overflow:auto;margin:4px 0 0;border-radius:6px;padding:8px;background:#ffffff0a;color:var(--text)}.stat-block.svelte-d3ct2b{display:grid;gap:9px;min-width:0;margin-top:16px}.metric-row.svelte-d3ct2b{display:grid;grid-template-rows:auto 4px;gap:7px;min-width:0}.metric-row.svelte-d3ct2b div:where(.svelte-d3ct2b){display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-width:0;color:var(--text);font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;font-size:12px}.metric-row.svelte-d3ct2b span:where(.svelte-d3ct2b){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.metric-row.svelte-d3ct2b strong:where(.svelte-d3ct2b){color:var(--error)}.metric-row.warning.svelte-d3ct2b strong:where(.svelte-d3ct2b){color:var(--tertiary)}.metric-row.svelte-d3ct2b:after{grid-row:2;grid-column:1;display:block;height:4px;border-radius:999px;background:var(--surface-high);content:"";z-index:0}.metric-row.svelte-d3ct2b i:where(.svelte-d3ct2b){grid-row:2;grid-column:1;z-index:1;display:block;height:4px;max-width:100%;border-radius:999px;background:var(--error)}.metric-row.warning.svelte-d3ct2b i:where(.svelte-d3ct2b){background:var(--tertiary)}.summary-strip.svelte-d3ct2b{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:18px}.summary-strip.svelte-d3ct2b div:where(.svelte-d3ct2b){border:1px solid rgba(255,255,255,.06);border-radius:6px;padding:10px;background:#ffffff09}.summary-strip.svelte-d3ct2b span:where(.svelte-d3ct2b){display:block;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase}.summary-strip.svelte-d3ct2b strong:where(.svelte-d3ct2b){display:block;margin-top:4px;color:var(--text);font-size:22px}.rule-engine.svelte-d3ct2b{min-width:0}.rule-form.svelte-d3ct2b,.rule-list.svelte-d3ct2b{display:grid;gap:10px;margin-top:12px}.control-grid.svelte-d3ct2b{grid-template-columns:repeat(2,minmax(0,1fr))}.filters.svelte-d3ct2b{margin-top:12px}input.svelte-d3ct2b,select.svelte-d3ct2b,textarea.svelte-d3ct2b{width:100%;border:1px solid rgba(255,255,255,.1);border-radius:6px;padding:10px 11px;background:var(--surface-high);color:var(--text);font:inherit}textarea.svelte-d3ct2b{resize:vertical}button.svelte-d3ct2b{cursor:pointer;border:0;border-radius:6px;padding:10px 12px;background:#2e5bff24;color:var(--primary);font:inherit;font-weight:900}button.svelte-d3ct2b:hover{background:#2e5bff3d}button.svelte-d3ct2b:disabled{cursor:not-allowed;opacity:.55}.rule-list.svelte-d3ct2b{max-height:300px;overflow:auto;padding-right:4px}.rule-item.svelte-d3ct2b{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;border:1px solid rgba(255,255,255,.06);border-radius:6px;padding:12px;background:#1e20248f}.rule-item.svelte-d3ct2b:hover{background:#282a2eb8}.rule-meta.svelte-d3ct2b{display:flex;align-items:center;gap:8px}.rule-meta.svelte-d3ct2b span:where(.svelte-d3ct2b){border:1px solid rgba(184,195,255,.18);border-radius:4px;padding:2px 6px;background:#b8c3ff1a;color:var(--primary)}.rule-meta.svelte-d3ct2b code:where(.svelte-d3ct2b){color:var(--muted);font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace}.rule-item.svelte-d3ct2b p:where(.svelte-d3ct2b){margin-top:7px;color:var(--text);font-size:14px;overflow-wrap:anywhere}.rule-item.svelte-d3ct2b small:where(.svelte-d3ct2b){display:block;margin-top:5px;color:var(--muted)}.rule-item.svelte-d3ct2b button:where(.svelte-d3ct2b){background:transparent;color:var(--muted)}.rule-item.svelte-d3ct2b button:where(.svelte-d3ct2b):hover{border-color:#ffb4ab4d;background:#ffb4ab1a;color:var(--error)}@media (max-width: 1080px){.command-center.svelte-d3ct2b{grid-template-columns:1fr}.sidebar.svelte-d3ct2b{display:none}.mobile-menu.svelte-d3ct2b{display:grid}.status-grid.svelte-d3ct2b,.content-grid.svelte-d3ct2b{grid-template-columns:1fr}}@media (max-width: 760px){.topbar.svelte-d3ct2b{grid-template-columns:1fr auto;height:auto;padding:12px}.header-metrics.svelte-d3ct2b{display:none}.top-actions.svelte-d3ct2b{gap:4px}.canvas.svelte-d3ct2b{padding:12px}.data-list.svelte-d3ct2b div:where(.svelte-d3ct2b),.terminal-line.svelte-d3ct2b,.rule-item.svelte-d3ct2b,.control-grid.svelte-d3ct2b{grid-template-columns:1fr}.data-list.svelte-d3ct2b div:where(.svelte-d3ct2b),.terminal-line.svelte-d3ct2b{display:grid;gap:4px}.data-list.svelte-d3ct2b strong:where(.svelte-d3ct2b){text-align:left}.terminal-detail.svelte-d3ct2b{margin-left:0}}