@vheins/local-memory-mcp 0.8.1 → 0.8.3

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.
@@ -173,8 +173,8 @@ var LOG_LEVEL_VALUES = Object.keys(LEVELS);
173
173
 
174
174
  // src/mcp/storage/sqlite.ts
175
175
  import Database from "better-sqlite3";
176
- import path2 from "path";
177
- import fs2 from "fs";
176
+ import path3 from "path";
177
+ import fs3 from "fs";
178
178
  import os from "os";
179
179
 
180
180
  // src/mcp/storage/migrations.ts
@@ -1893,16 +1893,79 @@ var SummaryEntity = class extends BaseEntity {
1893
1893
  }
1894
1894
  };
1895
1895
 
1896
+ // src/mcp/storage/write-lock.ts
1897
+ import lockfile from "proper-lockfile";
1898
+ import path2 from "path";
1899
+ import fs2 from "fs";
1900
+ var LOCK_STALE_MS = 15e3;
1901
+ var LOCK_RETRY_DELAY_MS = 100;
1902
+ var LOCK_RETRY_COUNT = 150;
1903
+ var WriteLock = class {
1904
+ lockTarget;
1905
+ locked = false;
1906
+ constructor(dbPath) {
1907
+ this.lockTarget = dbPath;
1908
+ if (!fs2.existsSync(dbPath)) {
1909
+ fs2.mkdirSync(path2.dirname(dbPath), { recursive: true });
1910
+ fs2.writeFileSync(dbPath, "");
1911
+ }
1912
+ }
1913
+ /**
1914
+ * Acquire the write lock. Waits up to 15s for other processes to release.
1915
+ */
1916
+ async acquire() {
1917
+ await lockfile.lock(this.lockTarget, {
1918
+ stale: LOCK_STALE_MS,
1919
+ retries: {
1920
+ retries: LOCK_RETRY_COUNT,
1921
+ minTimeout: LOCK_RETRY_DELAY_MS,
1922
+ maxTimeout: LOCK_RETRY_DELAY_MS
1923
+ },
1924
+ realpath: false
1925
+ });
1926
+ this.locked = true;
1927
+ }
1928
+ /**
1929
+ * Release the write lock.
1930
+ */
1931
+ async release() {
1932
+ if (!this.locked) return;
1933
+ try {
1934
+ await lockfile.unlock(this.lockTarget, { realpath: false });
1935
+ } catch {
1936
+ }
1937
+ this.locked = false;
1938
+ }
1939
+ /**
1940
+ * Run a synchronous write function under the lock.
1941
+ * Guarantees lock is always released, even on error.
1942
+ */
1943
+ async withLock(fn) {
1944
+ await this.acquire();
1945
+ try {
1946
+ return fn();
1947
+ } finally {
1948
+ await this.release();
1949
+ }
1950
+ }
1951
+ /**
1952
+ * Check if a lock file exists (another process may be writing).
1953
+ */
1954
+ isLocked() {
1955
+ return lockfile.checkSync(this.lockTarget, { realpath: false });
1956
+ }
1957
+ };
1958
+
1896
1959
  // src/mcp/storage/sqlite.ts
1897
1960
  function resolveDbPath() {
1898
1961
  if (process.env.MEMORY_DB_PATH) return process.env.MEMORY_DB_PATH;
1899
- const standardConfigDir = process.platform === "win32" ? path2.join(os.homedir(), ".local-memory-mcp") : process.platform === "darwin" ? path2.join(os.homedir(), "Library", "Application Support", "local-memory-mcp") : path2.join(os.homedir(), ".config", "local-memory-mcp");
1900
- const standardPath = path2.join(standardConfigDir, "memory.db");
1901
- if (fs2.existsSync(standardPath)) return standardPath;
1902
- const legacyPath = path2.join(os.homedir(), ".config", "local-memory-mcp", "memory.db");
1903
- if (fs2.existsSync(legacyPath)) return legacyPath;
1904
- const localCwdFile = path2.join(process.cwd(), "storage", "memory.db");
1905
- if (fs2.existsSync(localCwdFile)) return localCwdFile;
1962
+ const standardConfigDir = process.platform === "win32" ? path3.join(os.homedir(), ".local-memory-mcp") : process.platform === "darwin" ? path3.join(os.homedir(), "Library", "Application Support", "local-memory-mcp") : path3.join(os.homedir(), ".config", "local-memory-mcp");
1963
+ const standardPath = path3.join(standardConfigDir, "memory.db");
1964
+ if (fs3.existsSync(standardPath)) return standardPath;
1965
+ const legacyPath = path3.join(os.homedir(), ".config", "local-memory-mcp", "memory.db");
1966
+ if (fs3.existsSync(legacyPath)) return legacyPath;
1967
+ const localCwdFile = path3.join(process.cwd(), "storage", "memory.db");
1968
+ if (fs3.existsSync(localCwdFile)) return localCwdFile;
1906
1969
  return standardPath;
1907
1970
  }
1908
1971
  var DB_PATH = resolveDbPath();
@@ -1913,22 +1976,26 @@ var SQLiteStore = class _SQLiteStore {
1913
1976
  actions;
1914
1977
  system;
1915
1978
  summaries;
1979
+ lock;
1916
1980
  dbPathInstance;
1917
1981
  constructor(dbPath) {
1918
1982
  const finalPath = dbPath ?? DB_PATH;
1919
1983
  this.dbPathInstance = finalPath;
1920
1984
  if (finalPath !== ":memory:") {
1921
- const dbDir = path2.dirname(finalPath);
1922
- if (!fs2.existsSync(dbDir)) {
1923
- fs2.mkdirSync(dbDir, { recursive: true });
1985
+ const dbDir = path3.dirname(finalPath);
1986
+ if (!fs3.existsSync(dbDir)) {
1987
+ fs3.mkdirSync(dbDir, { recursive: true });
1924
1988
  }
1925
1989
  }
1926
1990
  this.db = new Database(finalPath);
1927
1991
  this.db.pragma("journal_mode = WAL");
1928
1992
  this.db.pragma("synchronous = FULL");
1929
- this.db.pragma("busy_timeout = 10000");
1993
+ this.db.pragma("busy_timeout = 30000");
1930
1994
  this.db.pragma("foreign_keys = ON");
1931
- this.db.pragma("wal_autocheckpoint = 1000");
1995
+ this.db.pragma("wal_autocheckpoint = 100");
1996
+ if (finalPath !== ":memory:") {
1997
+ this._startupChecks(finalPath);
1998
+ }
1932
1999
  const migrator = new MigrationManager(this.db);
1933
2000
  migrator.migrate();
1934
2001
  migrator.addMemoryCodeColumn();
@@ -1937,10 +2004,88 @@ var SQLiteStore = class _SQLiteStore {
1937
2004
  this.actions = new ActionEntity(this.db);
1938
2005
  this.system = new SystemEntity(this.db);
1939
2006
  this.summaries = new SummaryEntity(this.db);
2007
+ this.lock = new WriteLock(finalPath);
1940
2008
  }
1941
- async ready() {
2009
+ /**
2010
+ * Run on startup: checkpoint WAL and verify integrity.
2011
+ * If integrity check fails, attempt to restore from backup.
2012
+ */
2013
+ _startupChecks(dbPath) {
2014
+ try {
2015
+ this.db.pragma("wal_checkpoint(TRUNCATE)");
2016
+ logger.debug("[SQLiteStore] WAL checkpoint completed on startup");
2017
+ } catch (err) {
2018
+ logger.warn("[SQLiteStore] WAL checkpoint failed on startup", { error: String(err) });
2019
+ }
2020
+ try {
2021
+ const result = this.db.pragma("integrity_check");
2022
+ const ok = result.length === 1 && result[0].integrity_check === "ok";
2023
+ if (!ok) {
2024
+ logger.error("[SQLiteStore] Integrity check FAILED", { result });
2025
+ this._attemptRecovery(dbPath);
2026
+ } else {
2027
+ logger.debug("[SQLiteStore] Integrity check passed");
2028
+ }
2029
+ } catch (err) {
2030
+ logger.error("[SQLiteStore] Integrity check threw error", { error: String(err) });
2031
+ this._attemptRecovery(dbPath);
2032
+ }
2033
+ }
2034
+ /**
2035
+ * Attempt to recover from a corrupt DB by restoring the latest backup.
2036
+ */
2037
+ _attemptRecovery(dbPath) {
2038
+ const backupPath = dbPath + ".backup";
2039
+ if (fs3.existsSync(backupPath)) {
2040
+ logger.warn("[SQLiteStore] Attempting recovery from backup", { backupPath });
2041
+ try {
2042
+ const corruptPath = `${dbPath}.corrupt_${(/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "").slice(0, 15)}`;
2043
+ fs3.copyFileSync(dbPath, corruptPath);
2044
+ fs3.copyFileSync(backupPath, dbPath);
2045
+ logger.warn("[SQLiteStore] Recovery successful. Corrupt file saved to", { corruptPath });
2046
+ } catch (err) {
2047
+ logger.error("[SQLiteStore] Recovery failed", { error: String(err) });
2048
+ }
2049
+ } else {
2050
+ logger.error("[SQLiteStore] No backup found for recovery. DB may be corrupt.");
2051
+ }
1942
2052
  }
2053
+ /**
2054
+ * Create a timestamped backup of the DB file.
2055
+ * Called automatically after successful writes (via withWrite).
2056
+ */
2057
+ backup() {
2058
+ if (this.dbPathInstance === ":memory:") return;
2059
+ try {
2060
+ this.db.pragma("wal_checkpoint(PASSIVE)");
2061
+ const backupPath = this.dbPathInstance + ".backup";
2062
+ fs3.copyFileSync(this.dbPathInstance, backupPath);
2063
+ } catch (err) {
2064
+ logger.warn("[SQLiteStore] Backup failed", { error: String(err) });
2065
+ }
2066
+ }
2067
+ /**
2068
+ * Execute a write operation under the file lock.
2069
+ * This is the ONLY way writes should be performed.
2070
+ *
2071
+ * @example
2072
+ * await db.withWrite(() => db.tasks.insertTask(task));
2073
+ */
2074
+ async withWrite(fn) {
2075
+ return this.lock.withLock(fn);
2076
+ }
2077
+ /**
2078
+ * Checkpoint WAL so dashboard (and other readers) see latest data.
2079
+ * Called by dashboard controllers before reads.
2080
+ */
1943
2081
  async refresh() {
2082
+ try {
2083
+ this.db.pragma("wal_checkpoint(PASSIVE)");
2084
+ } catch (err) {
2085
+ logger.warn("[SQLiteStore] refresh checkpoint failed", { error: String(err) });
2086
+ }
2087
+ }
2088
+ async ready() {
1944
2089
  }
1945
2090
  static async create(dbPath) {
1946
2091
  return new _SQLiteStore(dbPath);
@@ -1950,13 +2095,17 @@ var SQLiteStore = class _SQLiteStore {
1950
2095
  }
1951
2096
  close() {
1952
2097
  if (this.db && this.db.open) {
2098
+ try {
2099
+ this.db.pragma("wal_checkpoint(TRUNCATE)");
2100
+ } catch {
2101
+ }
1953
2102
  this.db.close();
1954
2103
  }
1955
2104
  }
1956
2105
  };
1957
2106
 
1958
2107
  // src/mcp/session.ts
1959
- import path3 from "path";
2108
+ import path4 from "path";
1960
2109
  import { fileURLToPath as fileURLToPath2 } from "url";
1961
2110
  function createSessionContext() {
1962
2111
  return {
@@ -2022,7 +2171,7 @@ function getFilesystemRoots(session) {
2022
2171
  for (const root of session.roots) {
2023
2172
  if (!root.uri.startsWith("file://")) continue;
2024
2173
  try {
2025
- resolved.push(path3.resolve(fileURLToPath2(root.uri)));
2174
+ resolved.push(path4.resolve(fileURLToPath2(root.uri)));
2026
2175
  } catch {
2027
2176
  }
2028
2177
  }
@@ -2031,19 +2180,19 @@ function getFilesystemRoots(session) {
2031
2180
  function isPathWithinRoots(targetPath, session) {
2032
2181
  const roots = getFilesystemRoots(session);
2033
2182
  if (roots.length === 0) return true;
2034
- const normalizedTarget = path3.resolve(targetPath);
2183
+ const normalizedTarget = path4.resolve(targetPath);
2035
2184
  return roots.some((rootPath) => {
2036
- const relative = path3.relative(rootPath, normalizedTarget);
2037
- return relative === "" || !relative.startsWith("..") && !path3.isAbsolute(relative);
2185
+ const relative = path4.relative(rootPath, normalizedTarget);
2186
+ return relative === "" || !relative.startsWith("..") && !path4.isAbsolute(relative);
2038
2187
  });
2039
2188
  }
2040
2189
  function findContainingRoot(targetPath, session) {
2041
2190
  const roots = getFilesystemRoots(session);
2042
2191
  if (roots.length === 0) return null;
2043
- const normalizedTarget = path3.resolve(targetPath);
2192
+ const normalizedTarget = path4.resolve(targetPath);
2044
2193
  for (const rootPath of roots) {
2045
- const relative = path3.relative(rootPath, normalizedTarget);
2046
- if (relative === "" || !relative.startsWith("..") && !path3.isAbsolute(relative)) {
2194
+ const relative = path4.relative(rootPath, normalizedTarget);
2195
+ if (relative === "" || !relative.startsWith("..") && !path4.isAbsolute(relative)) {
2047
2196
  return rootPath;
2048
2197
  }
2049
2198
  }
@@ -2052,7 +2201,7 @@ function findContainingRoot(targetPath, session) {
2052
2201
  function inferRepoFromSession(session) {
2053
2202
  const roots = getFilesystemRoots(session);
2054
2203
  if (roots.length === 1) {
2055
- return path3.basename(roots[0]);
2204
+ return path4.basename(roots[0]);
2056
2205
  }
2057
2206
  return void 0;
2058
2207
  }
@@ -3480,9 +3629,9 @@ function parseRepoUri(uri) {
3480
3629
  const slashIdx = withoutQuery.indexOf("/");
3481
3630
  if (slashIdx === -1) return null;
3482
3631
  const name = withoutQuery.slice(0, slashIdx);
3483
- const path5 = withoutQuery.slice(slashIdx + 1);
3484
- if (!name || !path5) return null;
3485
- return { name, path: path5, query: new URLSearchParams(queryString) };
3632
+ const path6 = withoutQuery.slice(slashIdx + 1);
3633
+ if (!name || !path6) return null;
3634
+ return { name, path: path6, query: new URLSearchParams(queryString) };
3486
3635
  }
3487
3636
  function paginateEntries(key, entries, params) {
3488
3637
  const limit = normalizeLimit(params?.limit);
@@ -3517,12 +3666,12 @@ function invalidCompletionParams(message) {
3517
3666
  }
3518
3667
 
3519
3668
  // src/mcp/prompts/loader.ts
3520
- import fs3 from "fs";
3521
- import path4 from "path";
3669
+ import fs4 from "fs";
3670
+ import path5 from "path";
3522
3671
  import { fileURLToPath as fileURLToPath3 } from "url";
3523
3672
  import matter from "gray-matter";
3524
3673
  var __filename = fileURLToPath3(import.meta.url);
3525
- var __dirname2 = path4.dirname(__filename);
3674
+ var __dirname2 = path5.dirname(__filename);
3526
3675
  function findPromptDir() {
3527
3676
  const candidates = [
3528
3677
  // Production if chunked into dist/
@@ -3531,28 +3680,28 @@ function findPromptDir() {
3531
3680
  "../prompts",
3532
3681
  // Dev: /src/mcp/prompts/definitions (next to loader.ts)
3533
3682
  "./definitions"
3534
- ].map((relPath) => path4.resolve(__dirname2, relPath));
3683
+ ].map((relPath) => path5.resolve(__dirname2, relPath));
3535
3684
  for (const dir of candidates) {
3536
- if (fs3.existsSync(dir)) {
3537
- const files = fs3.readdirSync(dir);
3685
+ if (fs4.existsSync(dir)) {
3686
+ const files = fs4.readdirSync(dir);
3538
3687
  if (files.some((f) => f.endsWith(".md"))) {
3539
3688
  return dir;
3540
3689
  }
3541
3690
  }
3542
3691
  }
3543
- return path4.resolve(__dirname2, "./definitions");
3692
+ return path5.resolve(__dirname2, "./definitions");
3544
3693
  }
3545
3694
  var PROMPT_DIR = findPromptDir();
3546
3695
  function listPromptFiles() {
3547
- if (!fs3.existsSync(PROMPT_DIR)) return [];
3548
- return fs3.readdirSync(PROMPT_DIR).filter((file) => file.endsWith(".md")).map((file) => file.replace(/\.md$/, "")).sort();
3696
+ if (!fs4.existsSync(PROMPT_DIR)) return [];
3697
+ return fs4.readdirSync(PROMPT_DIR).filter((file) => file.endsWith(".md")).map((file) => file.replace(/\.md$/, "")).sort();
3549
3698
  }
3550
3699
  function loadPromptFromMarkdown(name) {
3551
- const filePath = path4.join(PROMPT_DIR, `${name}.md`);
3552
- if (!fs3.existsSync(filePath)) {
3700
+ const filePath = path5.join(PROMPT_DIR, `${name}.md`);
3701
+ if (!fs4.existsSync(filePath)) {
3553
3702
  throw new Error(`Prompt file not found: ${filePath}`);
3554
3703
  }
3555
- const fileContent = fs3.readFileSync(filePath, "utf-8");
3704
+ const fileContent = fs4.readFileSync(filePath, "utf-8");
3556
3705
  const { data, content } = matter(fileContent);
3557
3706
  return {
3558
3707
  name: data.name || name,
@@ -1,5 +1,5 @@
1
1
  (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible;function d(e){return typeof e==`function`}var f=()=>{};function p(e){return e()}function m(e){for(var t=0;t<e.length;t++)e[t]()}function h(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function g(e,t){if(Array.isArray(e))return e;if(t===void 0||!(Symbol.iterator in e))return Array.from(e);let n=[];for(let r of e)if(n.push(r),n.length===t)break;return n}var _=1<<24,v=1024,y=2048,b=4096,x=8192,S=16384,C=32768,w=1<<25,T=65536,E=1<<19,D=1<<20,ee=1<<25,te=65536,ne=1<<21,re=1<<22,ie=1<<23,ae=Symbol(`$state`),oe=Symbol(`legacy props`),se=Symbol(``),ce=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},le=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function ue(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function de(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function fe(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function pe(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function me(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function he(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function ge(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function _e(e){throw Error(`https://svelte.dev/e/lifecycle_legacy_only`)}function ve(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function ye(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function be(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function xe(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Se(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Ce={},we=Symbol(),Te=`http://www.w3.org/1999/xhtml`,Ee=`http://www.w3.org/2000/svg`;function De(){console.warn(`https://svelte.dev/e/derived_inert`)}function Oe(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function ke(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Ae(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var O=!1;function je(e){O=e}var k;function Me(e){if(e===null)throw Oe(),Ce;return k=e}function Ne(){return Me(xn(k))}function A(e){if(O){if(xn(k)!==null)throw Oe(),Ce;k=e}}function Pe(e=1){if(O){for(var t=e,n=k;t--;)n=xn(n);k=n}}function Fe(e=!0){for(var t=0,n=k;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else (r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=xn(n);e&&n.remove(),n=i}}function Ie(e){if(!e||e.nodeType!==8)throw Oe(),Ce;return e.data}function Le(e){return e===this.v}function Re(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function ze(e){return!Re(e,this.v)}var Be=!1,Ve=!1;function He(){Ve=!0}var Ue=null;function We(e){Ue=e}function Ge(e,t=!1,n){Ue={p:Ue,i:!1,c:null,e:null,s:e,x:null,r:B,l:Ve&&!t?{s:null,u:null,$:[]}:null}}function Ke(e){var t=Ue,n=t.e;if(n!==null){t.e=null;for(var r of n)Rn(r)}return e!==void 0&&(t.x=e),t.i=!0,Ue=t.p,e??{}}function qe(){return!Ve||Ue!==null&&Ue.l===null}var Je=[];function Ye(){var e=Je;Je=[],m(e)}function Xe(e){if(Je.length===0&&!xt){var t=Je;queueMicrotask(()=>{t===Je&&Ye()})}Je.push(e)}function Ze(){for(;Je.length>0;)Ye()}function Qe(e){var t=B;if(t===null)return fr.f|=ie,e;if(!(t.f&32768)&&!(t.f&4))throw e;$e(e,t)}function $e(e,t){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}var et=~(y|b|v);function tt(e,t){e.f=e.f&et|t}function nt(e){e.f&512||e.deps===null?tt(e,v):tt(e,b)}function rt(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=te,rt(t.deps))}function it(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),rt(e.deps),tt(e,v)}function at(e,t,n){if(e==null)return t(void 0),n&&n(void 0),f;let r=H(()=>e.subscribe(t,n));return r.unsubscribe?()=>r.unsubscribe():r}var ot=[];function st(e,t){return{subscribe:j(e,t).subscribe}}function j(e,t=f){let n=null,r=new Set;function i(t){if(Re(e,t)&&(e=t,n)){let t=!ot.length;for(let t of r)t[1](),ot.push(t,e);if(t){for(let e=0;e<ot.length;e+=2)ot[e][0](ot[e+1]);ot.length=0}}}function a(t){i(t(e))}function o(o,s=f){let c=[o,s];return r.add(c),r.size===1&&(n=t(i,a)||f),o(e),()=>{r.delete(c),r.size===0&&n&&(n(),n=null)}}return{set:i,update:a,subscribe:o}}function ct(e,t,n){let r=!Array.isArray(e),i=r?[e]:e;if(!i.every(Boolean))throw Error(`derived() expects stores as input, got a falsy value`);let a=t.length<2;return st(n,(e,n)=>{let o=!1,s=[],c=0,l=f,u=()=>{if(c)return;l();let i=t(r?s[0]:s,e,n);a?e(i):l=typeof i==`function`?i:f},d=i.map((e,t)=>at(e,e=>{s[t]=e,c&=~(1<<t),o&&u()},()=>{c|=1<<t}));return o=!0,u(),function(){m(d),l(),o=!1}})}function M(e){let t;return at(e,e=>t=e)(),t}var lt=!1,ut=!1,dt=Symbol();function N(e,t,n){let r=n[t]??={store:null,source:on(void 0),unsubscribe:f};if(r.store!==e&&!(dt in n))if(r.unsubscribe(),r.store=e??null,e==null)r.source.v=void 0,r.unsubscribe=f;else{var i=!0;r.unsubscribe=at(e,e=>{i?r.source.v=e:F(r.source,e)}),i=!1}return e&&dt in n?M(e):V(r.source)}function ft(e,t){return mt(e,t),t}function pt(){let e={};function t(){In(()=>{for(var t in e)e[t].unsubscribe();i(e,dt,{enumerable:!1,value:!0})})}return[e,t]}function mt(e,t){lt=!0;try{e.set(t)}finally{lt=!1}}function ht(e,t,n){return mt(e,n),t}function gt(e){var t=ut;try{return ut=!1,[e(),ut]}finally{ut=t}}var _t=new Set,P=null,vt=null,yt=null,bt=null,xt=!1,St=!1,Ct=null,wt=null,Tt=0,Et=1,Dt=class e{id=Et++;current=new Map;previous=new Map;#e=new Set;#t=new Set;#n=new Set;#r=new Map;#i=new Map;#a=null;#o=[];#s=[];#c=new Set;#l=new Set;#u=new Map;#d=new Set;is_fork=!1;#f=!1;#p=new Set;#m(){return this.is_fork||this.#i.size>0}#h(){for(let n of this.#p)for(let r of n.#i.keys()){for(var e=!1,t=r;t.parent!==null;){if(this.#u.has(t)){e=!0;break}t=t.parent}if(!e)return!0}return!1}skip_effect(e){this.#u.has(e)||this.#u.set(e,{d:[],m:[]}),this.#d.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#u.get(e);if(n){this.#u.delete(e);for(var r of n.d)tt(r,y),t(r);for(r of n.m)tt(r,b),t(r)}this.#d.add(e)}#g(){if(Tt++>1e3&&(_t.delete(this),kt()),!this.#m()){for(let e of this.#c)this.#l.delete(e),tt(e,y),this.schedule(e);for(let e of this.#l)tt(e,b),this.schedule(e)}let t=this.#o;this.#o=[],this.apply();var n=Ct=[],r=[],i=wt=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw It(e),t}if(P=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(Ct=null,wt=null,this.#m()||this.#h()){this.#v(r),this.#v(n);for(let[e,t]of this.#u)Ft(e,t)}else{this.#r.size===0&&_t.delete(this),this.#c.clear(),this.#l.clear();for(let e of this.#e)e(this);this.#e.clear(),vt=this,jt(r),jt(n),vt=null,this.#a?.resolve()}var o=P;if(this.#o.length>0){let e=o??=this;e.#o.push(...this.#o.filter(t=>!e.#o.includes(t)))}o!==null&&(_t.add(o),o.#g()),Be&&!_t.has(this)&&this.#y()}#_(e,t,n){e.f^=v;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#u.has(r))&&r.fn!==null){a?r.f^=v:i&4?t.push(r):Be&&i&16777224?n.push(r):Dr(r)&&(i&16&&this.#l.add(r),Mr(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(e){for(var t=0;t<e.length;t+=1)it(e[t],this.#c,this.#l)}capture(e,t,n=!1){e.v!==we&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),yt?.set(e,t)),this.is_fork||(e.v=t)}activate(){P=this}deactivate(){P=null,yt=null}flush(){try{St=!0,P=this,this.#g()}finally{Tt=0,bt=null,Ct=null,wt=null,St=!1,P=null,yt=null,tn.clear()}}discard(){for(let e of this.#t)e(this);this.#t.clear(),this.#n.clear(),_t.delete(this)}register_created_effect(e){this.#s.push(e)}#y(){for(let l of _t){var e=l.id<this.id,t=[];for(let[r,[i,a]]of this.current){if(l.current.has(r)){var n=l.current.get(r)[0];if(e&&i!==n)l.current.set(r,[i,a]);else continue}t.push(r)}var r=[...l.current.keys()].filter(e=>!this.current.has(e));if(r.length===0)e&&l.discard();else if(t.length>0){if(e)for(let e of this.#d)l.unskip_effect(e,e=>{e.f&4194320?l.schedule(e):l.#v([e])});l.activate();var i=new Set,a=new Map;for(var o of t)Mt(o,r,i,a);a=new Map;var s=[...l.current.keys()].filter(e=>this.current.has(e)?this.current.get(e)[0]!==e:!0);for(let e of this.#s)!(e.f&155648)&&Nt(e,s,a)&&(e.f&4194320?(tt(e,y),l.schedule(e)):l.#c.add(e));if(l.#o.length>0){l.apply();for(var c of l.#o)l.#_(c,[],[]);l.#o=[]}l.deactivate()}}for(let e of _t)e.#p.has(this)&&(e.#p.delete(this),e.#p.size===0&&!e.#m()&&(e.activate(),e.#g()))}increment(e,t){let n=this.#r.get(t)??0;if(this.#r.set(t,n+1),e){let e=this.#i.get(t)??0;this.#i.set(t,e+1)}}decrement(e,t,n){let r=this.#r.get(t)??0;if(r===1?this.#r.delete(t):this.#r.set(t,r-1),e){let e=this.#i.get(t)??0;e===1?this.#i.delete(t):this.#i.set(t,e-1)}this.#f||n||(this.#f=!0,Xe(()=>{this.#f=!1,this.flush()}))}transfer_effects(e,t){for(let t of e)this.#c.add(t);for(let e of t)this.#l.add(e);e.clear(),t.clear()}oncommit(e){this.#e.add(e)}ondiscard(e){this.#t.add(e)}on_fork_commit(e){this.#n.add(e)}run_fork_commit_callbacks(){for(let e of this.#n)e(this);this.#n.clear()}settled(){return(this.#a??=h()).promise}static ensure(){if(P===null){let t=P=new e;St||(_t.add(P),xt||Xe(()=>{P===t&&t.flush()}))}return P}apply(){if(!Be||!this.is_fork&&_t.size===1){yt=null;return}yt=new Map;for(let[e,[t]]of this.current)yt.set(e,t);for(let n of _t)if(!(n===this||n.is_fork)){var e=!1,t=!1;if(n.id<this.id)for(let[r,[,i]]of n.current)i||(e||=this.current.has(r),t||=!this.current.has(r));if(e&&t)this.#p.add(n);else for(let[e,t]of n.previous)yt.has(e)||yt.set(e,t)}}schedule(e){if(bt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(Ct!==null&&t===B&&(Be||(fr===null||!(fr.f&2))&&!lt))return;if(n&96){if(!(n&1024))return;t.f^=v}}this.#o.push(t)}};function Ot(e){var t=xt;xt=!0;try{var n;for(e&&(P!==null&&!P.is_fork&&P.flush(),n=e());;){if(Ze(),P===null)return n;P.flush()}}finally{xt=t}}function kt(){try{ge()}catch(e){$e(e,bt)}}var At=null;function jt(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&Dr(r)&&(At=new Set,Mr(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&er(r),At?.size>0)){tn.clear();for(let e of At){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)At.has(n)&&(At.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||Mr(n)}}At.clear()}}At=null}}function Mt(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?Mt(i,t,n,r):e&4194320&&!(e&2048)&&Nt(i,t,r)&&(tt(i,y),Pt(i))}}function Nt(e,t,r){let i=r.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(n.call(t,i))return!0;if(i.f&2&&Nt(i,t,r))return r.set(i,!0),!0}return r.set(e,!1),!1}function Pt(e){P.schedule(e)}function Ft(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),tt(e,v);for(var n=e.first;n!==null;)Ft(n,t),n=n.next}}function It(e){tt(e,v);for(var t=e.first;t!==null;)It(t),t=t.next}function Lt(e){let t=0,n=rn(0),r;return()=>{Fn()&&(V(n),Gn(()=>(t===0&&(r=H(()=>e(()=>ln(n)))),t+=1,()=>{Xe(()=>{--t,t===0&&(r?.(),r=void 0,ln(n))})})))}}var Rt=T|E;function zt(e,t,n,r){new Bt(e,t,n,r)}var Bt=class{parent;is_pending=!1;transform_error;#e;#t=O?k:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=Lt(()=>(this.#m=rn(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=B;t.b=this,t.f|=128,n(e)},this.parent=B.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Kn(()=>{if(O){let e=this.#t;Ne();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},Rt),O&&(this.#e=k)}#g(){try{this.#a=Jn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=Jn(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=Jn(()=>e(this.#e)),Xe(()=>{var e=this.#c=document.createDocumentFragment(),t=yn();e.append(t),this.#a=this.#x(()=>Jn(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,tr(this.#o,()=>{this.#o=null}),this.#b(P))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=Jn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();ar(this.#a,e);let t=this.#n.pending;this.#o=Jn(()=>t(this.#e))}else this.#b(P)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){it(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=B,n=fr,r=Ue;hr(this.#i),mr(this.#i),We(this.#i.ctx);try{return Dt.ensure(),e()}catch(e){return Qe(e),null}finally{hr(t),mr(n),We(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&tr(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,Xe(()=>{this.#d=!1,this.#m&&sn(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),V(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;P?.is_fork?(this.#a&&P.skip_effect(this.#a),this.#o&&P.skip_effect(this.#o),this.#s&&P.skip_effect(this.#s),P.on_fork_commit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(Qn(this.#a),null),this.#o&&=(Qn(this.#o),null),this.#s&&=(Qn(this.#s),null),O&&(Me(this.#t),Pe(),Me(Fe()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Ae();return}r=!0,i&&Se(),this.#s!==null&&tr(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){$e(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return Jn(()=>{var t=B;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return $e(e,this.#i.parent),null}}))};Xe(()=>{var t;try{t=this.transform_error(e)}catch(e){$e(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>$e(e,this.#i&&this.#i.parent)):o(t)})}};function Vt(e,t,n,r){let i=qe()?Gt:Jt;var a=e.filter(e=>!e.settled);if(n.length===0&&a.length===0){r(t.map(i));return}var o=B,s=Ht(),c=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function l(e){s();try{r(e)}catch(e){o.f&16384||$e(e,o)}Ut()}if(n.length===0){c.then(()=>l(t.map(i)));return}var u=Wt();function d(){Promise.all(n.map(e=>Kt(e))).then(e=>l([...t.map(i),...e])).catch(e=>$e(e,o)).finally(()=>u())}c?c.then(()=>{s(),d(),Ut()}):d()}function Ht(){var e=B,t=fr,n=Ue,r=P;return function(i=!0){hr(e),mr(t),We(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function Ut(e=!0){hr(null),mr(null),We(null),e&&P?.deactivate()}function Wt(){var e=B,t=e.b,n=P,r=t.is_rendered();return t.update_pending_count(1,n),n.increment(r,e),(i=!1)=>{t.update_pending_count(-1,n),n.decrement(r,e,i)}}function Gt(e){var t=2|y;return B!==null&&(B.f|=E),{ctx:Ue,deps:null,effects:null,equals:Le,f:t,fn:e,reactions:null,rv:0,v:we,wv:0,parent:B,ac:null}}function Kt(e,t,n){let r=B;r===null&&de();var i=void 0,a=rn(we),o=!fr,s=new Map;return Wn(()=>{var t=B,n=h();i=n.promise;try{Promise.resolve(e()).then(n.resolve,n.reject).finally(Ut)}catch(e){n.reject(e),Ut()}var c=P;if(o){if(t.f&32768)var l=Wt();if(r.b.is_rendered())s.get(c)?.reject(ce),s.delete(c);else{for(let e of s.values())e.reject(ce);s.clear()}s.set(c,n)}let u=(e,n=void 0)=>{if(l&&l(n===ce),!(n===ce||t.f&16384)){if(c.activate(),n)a.f|=ie,sn(a,n);else{a.f&8388608&&(a.f^=ie),sn(a,e);for(let[e,t]of s){if(s.delete(e),e===c)break;t.reject(ce)}}c.deactivate()}};n.promise.then(u,e=>u(null,e||`unknown`))}),In(()=>{for(let e of s.values())e.reject(ce)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function qt(e){let t=Gt(e);return Be||_r(t),t}function Jt(e){let t=Gt(e);return t.equals=ze,t}function Yt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)Qn(t[n])}}function Xt(e){var t,n=B,r=e.parent;if(!ur&&r!==null&&r.f&24576)return De(),e.v;hr(r);try{e.f&=~te,Yt(e),t=kr(e)}finally{hr(n)}return t}function Zt(e){var t=Xt(e);if(!e.equals(t)&&(e.wv=Er(),(!P?.is_fork||e.deps===null)&&(P===null?e.v=t:P.capture(e,t,!0),e.deps===null))){tt(e,v);return}ur||(yt===null?nt(e):(Fn()||P?.is_fork)&&yt.set(e,t))}function Qt(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort(ce),t.teardown=f,t.ac=null,jr(t,0),Xn(t))}function $t(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&Mr(t)}var en=new Set,tn=new Map,nn=!1;function rn(e,t){return{f:0,v:e,reactions:null,equals:Le,rv:0,wv:0}}function an(e,t){let n=rn(e,t);return _r(n),n}function on(e,t=!1,n=!0){let r=rn(e);return t||(r.equals=ze),Ve&&n&&Ue!==null&&Ue.l!==null&&(Ue.l.s??=[]).push(r),r}function F(e,t,r=!1){return fr!==null&&(!pr||fr.f&131072)&&qe()&&fr.f&4325394&&(gr===null||!n.call(gr,e))&&xe(),sn(e,r?dn(t):t,wt)}function sn(e,t,n=null){if(!e.equals(t)){tn.set(e,ur?t:e.v);var r=Dt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&Xt(t),yt===null&&nt(t)}e.wv=Er(),un(e,y,n),qe()&&B!==null&&B.f&1024&&!(B.f&96)&&(br===null?xr([e]):br.push(e)),!r.is_fork&&en.size>0&&!nn&&cn()}return t}function cn(){nn=!1;for(let e of en)e.f&1024&&tt(e,b),Dr(e)&&Mr(e);en.clear()}function ln(e){F(e,e.v+1)}function un(e,t,n){var r=e.reactions;if(r!==null)for(var i=qe(),a=r.length,o=0;o<a;o++){var s=r[o],c=s.f;if(!(!i&&s===B)){var l=(c&y)===0;if(l&&tt(s,t),c&2){var u=s;yt?.delete(u),c&65536||(c&512&&(s.f|=te),un(u,b,n))}else if(l){var d=s;c&16&&At!==null&&At.add(d),n===null?Pt(d):n.push(d)}}}}function dn(t){if(typeof t!=`object`||!t||ae in t)return t;let n=l(t);if(n!==s&&n!==c)return t;var r=new Map,i=e(t),o=an(0),u=null,d=wr,f=e=>{if(wr===d)return e();var t=fr,n=wr;mr(null),Tr(d);var r=e();return mr(t),Tr(n),r};return i&&r.set(`length`,an(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&ye();var i=r.get(t);return i===void 0?f(()=>{var e=an(n.value,u);return r.set(t,e),e}):F(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>an(we,u));r.set(t,e),ln(o)}}else F(n,we),ln(o);return!0},get(e,n,i){if(n===ae)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>an(dn(s?e[n]:we),u)),r.set(n,o)),o!==void 0){var c=V(o);return c===we?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=V(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==we)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===ae)return!0;var n=r.get(t),i=n!==void 0&&n.v!==we||Reflect.has(e,t);return(n!==void 0||B!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>an(i?dn(e[t]):we,u)),r.set(t,n)),V(n)===we)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;d<c.v;d+=1){var p=r.get(d+``);p===void 0?d in e&&(p=f(()=>an(we,u)),r.set(d+``,p)):F(p,we)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>an(void 0,u)),F(c,dn(n)),r.set(t,c));else{l=c.v!==we;var m=f(()=>dn(n));F(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&F(g,_+1)}ln(o)}return!0},ownKeys(e){V(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==we});for(var[n,i]of r)i.v!==we&&!(n in e)&&t.push(n);return t},setPrototypeOf(){be()}})}function fn(e){try{if(typeof e==`object`&&e&&ae in e)return e[ae]}catch{}return e}function pn(e,t){return Object.is(fn(e),fn(t))}var mn,hn,gn,_n;function vn(){if(mn===void 0){mn=window,hn=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;gn=a(t,`firstChild`).get,_n=a(t,`nextSibling`).get,u(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),u(n)&&(n.__t=void 0)}}function yn(e=``){return document.createTextNode(e)}function bn(e){return gn.call(e)}function xn(e){return _n.call(e)}function I(e,t){if(!O)return bn(e);var n=bn(k);if(n===null)n=k.appendChild(yn());else if(t&&n.nodeType!==3){var r=yn();return n?.before(r),Me(r),r}return t&&Tn(n),Me(n),n}function L(e,t=!1){if(!O){var n=bn(e);return n instanceof Comment&&n.data===``?xn(n):n}if(t){if(k?.nodeType!==3){var r=yn();return k?.before(r),Me(r),r}Tn(k)}return k}function R(e,t=1,n=!1){let r=O?k:e;for(var i;t--;)i=r,r=xn(r);if(!O)return r;if(n){if(r?.nodeType!==3){var a=yn();return r===null?i?.after(a):r.before(a),Me(a),a}Tn(r)}return Me(r),r}function Sn(e){e.textContent=``}function Cn(){return!Be||At!==null?!1:(B.f&C)!==0}function wn(e,t,n){let r=n?{is:n}:void 0;return document.createElementNS(t??`http://www.w3.org/1999/xhtml`,e,r)}function Tn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function En(e,t){if(t){let t=document.body;e.autofocus=!0,Xe(()=>{document.activeElement===t&&e.focus()})}}function Dn(e){O&&bn(e)!==null&&Sn(e)}var On=!1;function kn(){On||(On=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t.__on_r?.()})},{capture:!0}))}function An(e){var t=fr,n=B;mr(null),hr(null);try{return e()}finally{mr(t),hr(n)}}function jn(e,t,n,r=n){e.addEventListener(t,()=>An(n));let i=e.__on_r;i?e.__on_r=()=>{i(),r(!0)}:e.__on_r=()=>r(!0),kn()}function Mn(e){B===null&&(fr===null&&he(e),me()),ur&&pe(e)}function Nn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function Pn(e,t){var n=B;n!==null&&n.f&8192&&(e|=x);var r={ctx:Ue,deps:null,nodes:null,f:e|y|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};P?.register_created_effect(r);var i=r;if(e&4)Ct===null?Dt.ensure().schedule(r):Ct.push(r);else if(t!==null){try{Mr(r)}catch(e){throw Qn(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=T))}if(i!==null&&(i.parent=n,n!==null&&Nn(i,n),fr!==null&&fr.f&2&&!(e&64))){var a=fr;(a.effects??=[]).push(i)}return r}function Fn(){return fr!==null&&!pr}function In(e){let t=Pn(8,null);return tt(t,v),t.teardown=e,t}function Ln(e){Mn(`$effect`);var t=B.f;if(!fr&&t&32&&!(t&32768)){var n=Ue;(n.e??=[]).push(e)}else return Rn(e)}function Rn(e){return Pn(4|D,e)}function zn(e){return Mn(`$effect.pre`),Pn(8|D,e)}function Bn(e){Dt.ensure();let t=Pn(64|E,e);return(e={})=>new Promise(n=>{e.outro?tr(t,()=>{Qn(t),n(void 0)}):(Qn(t),n(void 0))})}function Vn(e){return Pn(4,e)}function Hn(e,t){var n=Ue,r={effect:null,ran:!1,deps:e};n.l.$.push(r),r.effect=Gn(()=>{if(e(),!r.ran){r.ran=!0;var n=B;try{hr(n.parent),H(t)}finally{hr(n)}}})}function Un(){var e=Ue;Gn(()=>{for(var t of e.l.$){t.deps();var n=t.effect;n.f&1024&&n.deps!==null&&tt(n,b),Dr(n)&&Mr(n),t.ran=!1}})}function Wn(e){return Pn(re|E,e)}function Gn(e,t=0){return Pn(8|t,e)}function z(e,t=[],n=[],r=[]){Vt(r,t,n,t=>{Pn(8,()=>e(...t.map(V)))})}function Kn(e,t=0){return Pn(16|t,e)}function qn(e,t=0){return Pn(_|t,e)}function Jn(e){return Pn(32|E,e)}function Yn(e){var t=e.teardown;if(t!==null){let e=ur,n=fr;dr(!0),mr(null);try{t.call(null)}finally{dr(e),mr(n)}}}function Xn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&An(()=>{e.abort(ce)});var r=n.next;n.f&64?n.parent=null:Qn(n,t),n=r}}function Zn(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Qn(t),t=n}}function Qn(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&($n(e.nodes.start,e.nodes.end),n=!0),tt(e,w),Xn(e,t&&!n),jr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Yn(e),e.f^=w,e.f|=S;var i=e.parent;i!==null&&i.first!==null&&er(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function $n(e,t){for(;e!==null;){var n=e===t?null:xn(e);e.remove(),e=n}}function er(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 tr(e,t,n=!0){var r=[];nr(e,r,!0);var i=()=>{n&&Qn(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function nr(e,t,n){if(!(e.f&8192)){e.f^=x;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next,o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;nr(i,t,o?n:!1),i=a}}}function rr(e){ir(e,!0)}function ir(e,t){if(e.f&8192){e.f^=x,e.f&1024||(tt(e,y),Dt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;ir(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function ar(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:xn(n);t.append(n),n=i}}var or=null;function sr(e){var t=or;try{if(or=new Set,H(e),t!==null)for(var n of or)t.add(n);return or}finally{or=t}}function cr(e){for(var t of sr(e))sn(t,t.v)}var lr=!1,ur=!1;function dr(e){ur=e}var fr=null,pr=!1;function mr(e){fr=e}var B=null;function hr(e){B=e}var gr=null;function _r(e){fr!==null&&(!Be||fr.f&2)&&(gr===null?gr=[e]:gr.push(e))}var vr=null,yr=0,br=null;function xr(e){br=e}var Sr=1,Cr=0,wr=Cr;function Tr(e){wr=e}function Er(){return++Sr}function Dr(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~te),t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(Dr(a)&&Zt(a),a.wv>e.wv)return!0}t&512&&yt===null&&tt(e,v)}return!1}function Or(e,t,r=!0){var i=e.reactions;if(i!==null&&!(!Be&&gr!==null&&n.call(gr,e)))for(var a=0;a<i.length;a++){var o=i[a];o.f&2?Or(o,t,!1):t===o&&(r?tt(o,y):o.f&1024&&tt(o,b),Pt(o))}}function kr(e){var t=vr,n=yr,r=br,i=fr,a=gr,o=Ue,s=pr,c=wr,l=e.f;vr=null,yr=0,br=null,fr=l&96?null:e,gr=null,We(e.ctx),pr=!1,wr=++Cr,e.ac!==null&&(An(()=>{e.ac.abort(ce)}),e.ac=null);try{e.f|=ne;var u=e.fn,d=u();e.f|=C;var f=e.deps,p=P?.is_fork;if(vr!==null){var m;if(p||jr(e,yr),f!==null&&yr>0)for(f.length=yr+vr.length,m=0;m<vr.length;m++)f[yr+m]=vr[m];else e.deps=f=vr;if(Fn()&&e.f&512)for(m=yr;m<f.length;m++)(f[m].reactions??=[]).push(e)}else !p&&f!==null&&yr<f.length&&(jr(e,yr),f.length=yr);if(qe()&&br!==null&&!pr&&f!==null&&!(e.f&6146))for(m=0;m<br.length;m++)Or(br[m],e);if(i!==null&&i!==e){if(Cr++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=Cr;if(t!==null)for(let e of t)e.rv=Cr;br!==null&&(r===null?r=br:r.push(...br))}return e.f&8388608&&(e.f^=ie),d}catch(e){return Qe(e)}finally{e.f^=ne,vr=t,yr=n,br=r,fr=i,gr=a,We(o),pr=s,wr=c}}function Ar(e,r){let i=r.reactions;if(i!==null){var a=t.call(i,e);if(a!==-1){var o=i.length-1;o===0?i=r.reactions=null:(i[a]=i[o],i.pop())}}if(i===null&&r.f&2&&(vr===null||!n.call(vr,r))){var s=r;s.f&512&&(s.f^=512,s.f&=~te),s.v!==we&&nt(s),Qt(s),jr(s,0)}}function jr(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)Ar(e,n[r])}function Mr(e){var t=e.f;if(!(t&16384)){tt(e,v);var n=B,r=lr;B=e,lr=!0;try{t&16777232?Zn(e):Xn(e),Yn(e);var i=kr(e);e.teardown=typeof i==`function`?i:null,e.wv=Sr}finally{lr=r,B=n}}}async function Nr(){if(Be)return new Promise(e=>{requestAnimationFrame(()=>e()),setTimeout(()=>e())});await Promise.resolve(),Ot()}function V(e){var t=(e.f&2)!=0;if(or?.add(e),fr!==null&&!pr&&!(B!==null&&B.f&16384)&&(gr===null||!n.call(gr,e))){var r=fr.deps;if(fr.f&2097152)e.rv<Cr&&(e.rv=Cr,vr===null&&r!==null&&r[yr]===e?yr++:vr===null?vr=[e]:vr.push(e));else{(fr.deps??=[]).push(e);var i=e.reactions;i===null?e.reactions=[fr]:n.call(i,fr)||i.push(fr)}}if(ur&&tn.has(e))return tn.get(e);if(t){var a=e;if(ur){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||Fr(a))&&(o=Xt(a)),tn.set(a,o),o}var s=(a.f&512)==0&&!pr&&fr!==null&&(lr||(fr.f&512)!=0),c=(a.f&C)===0;Dr(a)&&(s&&(a.f|=512),Zt(a)),s&&!c&&($t(a),Pr(a))}if(yt?.has(e))return yt.get(e);if(e.f&8388608)throw e.v;return e.v}function Pr(e){if(e.f|=512,e.deps!==null)for(let t of e.deps)(t.reactions??=[]).push(e),t.f&2&&!(t.f&512)&&($t(t),Pr(t))}function Fr(e){if(e.v===we)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(tn.has(t)||t.f&2&&Fr(t))return!0;return!1}function H(e){var t=pr;try{return pr=!0,e()}finally{pr=t}}function U(e){if(!(typeof e!=`object`||!e||e instanceof EventTarget)){if(ae in e)Ir(e);else if(!Array.isArray(e))for(let t in e){let n=e[t];typeof n==`object`&&n&&ae in n&&Ir(n)}}}function Ir(e,t=new Set){if(typeof e==`object`&&e&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let n in e)try{Ir(e[n],t)}catch{}let n=l(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){let t=o(n);for(let n in t){let r=t[n].get;if(r)try{r.call(e)}catch{}}}}}function Lr(e){return e.endsWith(`capture`)&&e!==`gotpointercapture`&&e!==`lostpointercapture`}var Rr=[`beforeinput`,`click`,`change`,`dblclick`,`contextmenu`,`focusin`,`focusout`,`input`,`keydown`,`keyup`,`mousedown`,`mousemove`,`mouseout`,`mouseover`,`mouseup`,`pointerdown`,`pointermove`,`pointerout`,`pointerover`,`pointerup`,`touchend`,`touchmove`,`touchstart`];function zr(e){return Rr.includes(e)}var Br=`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`),Vr={formnovalidate:`formNoValidate`,ismap:`isMap`,nomodule:`noModule`,playsinline:`playsInline`,readonly:`readOnly`,defaultvalue:`defaultValue`,defaultchecked:`defaultChecked`,srcobject:`srcObject`,novalidate:`noValidate`,allowfullscreen:`allowFullscreen`,disablepictureinpicture:`disablePictureInPicture`,disableremoteplayback:`disableRemotePlayback`};function Hr(e){return e=e.toLowerCase(),Vr[e]??e}[...Br];var Ur=[`touchstart`,`touchmove`];function Wr(e){return Ur.includes(e)}var Gr=[`textarea`,`script`,`style`,`title`];function Kr(e){return Gr.includes(e)}var qr=Symbol(`events`),Jr=new Set,Yr=new Set;function Xr(e,t,n,r={}){function i(e){if(r.capture||ei.call(t,e),!e.cancelBubble)return An(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?Xe(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function W(e,t,n,r,i){var a={capture:r,passive:i},o=Xr(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&In(()=>{t.removeEventListener(e,o,a)})}function Zr(e,t,n){(t[qr]??={})[e]=n}function Qr(e){for(var t=0;t<e.length;t++)Jr.add(e[t]);for(var n of Yr)n(e)}var $r=null;function ei(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;$r=e;var s=0,c=$r===e&&e[qr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[qr]=t;return}var u=a.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(o=a[s]||e.target,o!==t){i(e,`currentTarget`,{configurable:!0,get(){return o||n}});var d=fr,f=B;mr(null),hr(null);try{for(var p,m=[];o!==null;){var h=o.assignedSlot||o.parentNode||o.host||null;try{var g=o[qr]?.[r];g!=null&&(!o.disabled||e.target===o)&&g.call(o,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble||h===t||h===null)break;o=h}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[qr]=t,delete e.currentTarget,mr(d),hr(f)}}}var ti=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function ni(e){return ti?.createHTML(e)??e}function ri(e){var t=wn(`template`);return t.innerHTML=ni(e.replaceAll(`<!>`,`<!---->`)),t.content}function ii(e,t){var n=B;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function G(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(`<!>`);return()=>{if(O)return ii(k,null),k;i===void 0&&(i=ri(a?e:`<!>`+e),n||(i=bn(i)));var t=r||hn?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=bn(t),s=t.lastChild;ii(o,s)}else ii(t,t);return t}}function ai(e,t,n=`svg`){var r=!e.startsWith(`<!>`),i=(t&1)!=0,a=`<${n}>${r?e:`<!>`+e}</${n}>`,o;return()=>{if(O)return ii(k,null),k;if(!o){var e=bn(ri(a));if(i)for(o=document.createDocumentFragment();bn(e);)o.appendChild(bn(e));else o=bn(e)}var t=o.cloneNode(!0);if(i){var n=bn(t),r=t.lastChild;ii(n,r)}else ii(t,t);return t}}function oi(e,t){return ai(e,t,`svg`)}function si(e=``){if(!O){var t=yn(e+``);return ii(t,t),t}var n=k;return n.nodeType===3?Tn(n):(n.before(n=yn()),Me(n)),ii(n,n),n}function ci(){if(O)return ii(k,null),k;var e=document.createDocumentFragment(),t=document.createComment(``),n=yn();return e.append(t,n),ii(t,n),e}function K(e,t){if(O){var n=B;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=k),Ne();return}e!==null&&e.before(t)}var li=!0;function ui(e){li=e}function q(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e.__t??=e.nodeValue)&&(e.__t=n,e.nodeValue=`${n}`)}function di(e,t){return pi(e,t)}var fi=new Map;function pi(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){vn();var l=void 0,u=Bn(()=>{var u=n??t.appendChild(yn());zt(u,{pending:()=>{}},t=>{Ge({});var n=Ue;if(o&&(n.c=o),a&&(i.$$events=a),O&&ii(t,null),li=s,l=e(t,i)||{},li=!0,O&&(B.nodes.end=k,k===null||k.nodeType!==8||k.data!==`]`))throw Oe(),Ce;Ke()},c);var d=new Set,f=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!d.has(r)){d.add(r);var i=Wr(r);for(let e of[t,document]){var a=fi.get(e);a===void 0&&(a=new Map,fi.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,ei,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return f(r(Jr)),Yr.add(f),()=>{for(var e of d)for(let n of[t,document]){var r=fi.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,ei),r.delete(e),r.size===0&&fi.delete(n)):r.set(e,i)}Yr.delete(f),u!==n&&u.parentNode?.removeChild(u)}});return mi.set(l,u),l}var mi=new WeakMap,hi=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)rr(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(Qn(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();ar(r,t),t.append(yn()),this.#n.set(e,{effect:r,fragment:t})}else Qn(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),tr(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(Qn(n.effect),this.#n.delete(e))};ensure(e,t){var n=P,r=Cn();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=yn();i.append(a),this.#n.set(e,{effect:Jn(()=>t(a)),fragment:i})}else this.#t.set(e,Jn(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else O&&(this.anchor=k),this.#a(n)}};function J(e,t,n=!1){var r;O&&(r=k,Ne());var i=new hi(e),a=n?T:0;function o(e,t){if(O){var n=Ie(r);if(e!==parseInt(n.substring(1))){var a=Fe();Me(a),i.anchor=a,je(!1),i.ensure(e,t),je(!0);return}}i.ensure(e,t)}Kn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function Y(e,t){return t}function gi(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];tr(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;_i(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else --s},!1)}if(s===0){var l=i.length===0&&n!==null;if(l){var u=n,d=u.parentNode;Sn(d),d.append(u),e.items.clear()}_i(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function _i(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=ee,ar(a,document.createDocumentFragment())):Qn(t[i],n)}}var vi;function X(t,n,i,a,o,s=null){var c=t,l=new Map;if(n&4){var u=t;c=O?Me(bn(u)):u.appendChild(yn())}O&&Ne();var d=null,f=Jt(()=>{var t=i();return e(t)?t:t==null?[]:r(t)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,bi(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=ee,Si(d,null,c)):rr(d):tr(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Kn(()=>{p=V(f);var e=p.length;let t=!1;O&&Ie(c)===`[!`!=(e===0)&&(c=Fe(),Me(c),je(!1),t=!0);for(var r=new Set,u=P,v=Cn(),y=0;y<e;y+=1){O&&k.nodeType===8&&k.data===`]`&&(c=k,t=!0,je(!1));var b=p[y],x=a(b,y),S=h?null:l.get(x);S?(S.v&&sn(S.v,b),S.i&&sn(S.i,y),v&&u.unskip_effect(S.e)):(S=xi(l,h?c:vi??=yn(),b,x,y,o,n,i),h||(S.e.f|=ee),l.set(x,S)),r.add(x)}if(e===0&&s&&!d&&(h?d=Jn(()=>s(c)):(d=Jn(()=>s(vi??=yn())),d.f|=ee)),e>r.size&&fe(``,``,``),O&&e>0&&Me(Fe()),!h)if(m.set(u,r),v){for(let[e,t]of l)r.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&je(!0),V(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,O&&(c=k)}function yi(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function bi(e,t,n,i,a){var o=(i&8)!=0,s=t.length,c=e.items,l=yi(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v<s;v+=1)h=t[v],g=a(h,v),_=c.get(g).e,_.f&33554432||(_.nodes?.a?.measure(),(f??=new Set).add(_));for(v=0;v<s;v+=1){if(h=t[v],g=a(h,v),_=c.get(g).e,e.outrogroups!==null)for(let t of e.outrogroups)t.pending.delete(_),t.done.delete(_);if(_.f&8192&&(rr(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432)if(_.f^=ee,_===l)Si(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Ci(e,d,_),Ci(e,_,y),Si(_,y,n),d=_,p=[],m=[],l=yi(d.next);continue}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],C=p[p.length-1];for(x=0;x<p.length;x+=1)Si(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Ci(e,S.prev,C.next),Ci(e,d,S),Ci(e,C,b),l=b,d=C,--v,p=[],m=[]}else u.delete(_),Si(_,l,n),Ci(e,_.prev,_.next),Ci(e,_,d===null?e.effect.first:d.next),Ci(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=yi(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=yi(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(_i(e,r(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var w=[];if(u!==void 0)for(_ of u)_.f&8192||w.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&w.push(l),l=yi(l.next);var T=w.length;if(T>0){var E=i&4&&s===0?n:null;if(o){for(v=0;v<T;v+=1)w[v].nodes?.a?.measure();for(v=0;v<T;v+=1)w[v].nodes?.a?.fix()}gi(e,w,E)}}o&&Xe(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function xi(e,t,n,r,i,a,o,s){var c=o&1?o&16?rn(n):on(n,!1,!1):null,l=o&2?rn(i):null;return{v:c,i:l,e:Jn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Si(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=xn(r);if(a.before(r),r===i)return;r=o}}function Ci(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}var wi=()=>performance.now(),Ti={tick:e=>requestAnimationFrame(e),now:()=>wi(),tasks:new Set};function Ei(){let e=Ti.now();Ti.tasks.forEach(t=>{t.c(e)||(Ti.tasks.delete(t),t.f())}),Ti.tasks.size!==0&&Ti.tick(Ei)}function Di(e){let t;return Ti.tasks.size===0&&Ti.tick(Ei),{promise:new Promise(n=>{Ti.tasks.add(t={c:e,f:n})}),abort(){Ti.tasks.delete(t)}}}function Oi(e,t){An(()=>{e.dispatchEvent(new CustomEvent(t))})}function ki(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function Ai(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=ki(n.trim());t[i]=r.trim()}return t}var ji=e=>e;function Mi(e,t,n,r){var i=(e&1)!=0,a=(e&2)!=0,o=i&&a,s=(e&4)!=0,c=o?`both`:i?`in`:`out`,l,u=t.inert,d=t.style.overflow,f,p;function m(){return An(()=>l??=n()(t,r?.()??{},{direction:c}))}var h={is_global:s,in(){if(t.inert=u,!i){p?.abort(),p?.reset?.();return}a||f?.abort(),f=Ni(t,m(),p,1,()=>{Oi(t,`introend`),f?.abort(),f=l=void 0,t.style.overflow=d})},out(e){if(!a){e?.(),l=void 0;return}t.inert=!0,p=Ni(t,m(),f,0,()=>{Oi(t,`outroend`),e?.()})},stop:()=>{f?.abort(),p?.abort()}},g=B;if((g.nodes.t??=[]).push(h),i&&li){var _=s;if(!_){for(var v=g.parent;v&&v.f&65536;)for(;(v=v.parent)&&!(v.f&16););_=!v||(v.f&32768)!=0}_&&Vn(()=>{H(()=>h.in())})}}function Ni(e,t,n,r,i){var a=r===1;if(d(t)){var o,s=!1;return Xe(()=>{s||(o=Ni(e,t({direction:a?`in`:`out`}),n,r,i))}),{abort:()=>{s=!0,o?.abort()},deactivate:()=>o.deactivate(),reset:()=>o.reset(),t:()=>o.t()}}if(n?.deactivate(),!t?.duration&&!t?.delay)return Oi(e,a?`introstart`:`outrostart`),i(),{abort:f,deactivate:f,reset:f,t:()=>r};let{delay:c=0,css:l,tick:u,easing:p=ji}=t;var m=[];if(a&&n===void 0&&(u&&u(0,1),l)){var h=Ai(l(0,1));m.push(h,h)}var g=()=>1-r,_=e.animate(m,{duration:c,fill:`forwards`});return _.onfinish=()=>{_.cancel(),Oi(e,a?`introstart`:`outrostart`);var o=n?.t()??1-r;n?.abort();var s=r-o,c=t.duration*Math.abs(s),d=[];if(c>0){var f=!1;if(l)for(var m=Math.ceil(c/(1e3/60)),h=0;h<=m;h+=1){var v=o+s*p(h/m),y=Ai(l(v,1-v));d.push(y),f||=y.overflow===`hidden`}f&&(e.style.overflow=`hidden`),g=()=>{var e=_.currentTime;return o+s*p(e/c)},u&&Di(()=>{if(_.playState!==`running`)return!1;var e=g();return u(e,1-e),!0})}_=e.animate(d,{duration:c,fill:`forwards`}),_.onfinish=()=>{g=()=>r,u?.(r,1-r),i()}},{abort:()=>{_&&(_.cancel(),_.effect=null,_.onfinish=f)},deactivate:()=>{i=f},reset:()=>{r===0&&u?.(1,0)},t:()=>g()}}function Pi(e,t,n,r,i,a){let o=O;O&&Ne();var s=null;O&&k.nodeType===1&&(s=k,Ne());var c=O?k:e,l=new hi(c,!1);Kn(()=>{let e=t()||null;var a=i?i():n||e===`svg`?Ee:void 0;if(e===null){l.ensure(null,null),ui(!0);return}return l.ensure(e,t=>{if(e){if(s=O?s:wn(e,a),ii(s,s),r){O&&Kr(e)&&s.append(document.createComment(``));var n=O?bn(s):s.appendChild(yn());O&&(n===null?je(!1):Me(n)),r(s,n)}B.nodes.end=s,t.before(s)}O&&Me(t)}),ui(!0),()=>{e&&ui(!1)}},T),In(()=>{ui(!0)}),o&&(je(!0),Me(c))}function Fi(e,t){var n=void 0,r;qn(()=>{n!==(n=t())&&(r&&=(Qn(r),null),n&&(r=Jn(()=>{Vn(()=>n(e))})))})}function Ii(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=Ii(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function Li(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=Ii(e))&&(r&&(r+=` `),r+=t);return r}function Ri(e){return typeof e==`object`?Li(e):e??``}var zi=[...`
2
- \r\f\xA0\v`];function Bi(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||zi.includes(r[o-1]))&&(s===r.length||zi.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Vi(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Hi(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Ui(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Hi)),i&&c.push(...Object.keys(i).map(Hi));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=Hi(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=Vi(r)),i&&(n+=Vi(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function Wi(e,t,n,r,i,a){var o=e.__className;if(O||o!==n||o===void 0){var s=Bi(n,r,a);(!O||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e.__className=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function Gi(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function Ki(e,t,n,r){var i=e.__style;if(O||i!==t){var a=Ui(t,r);(!O||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e.__style=t}else r&&(Array.isArray(r)?(Gi(e,n?.[0],r[0]),Gi(e,n?.[1],r[1],`important`)):Gi(e,n,r));return r}function qi(t,n,r=!1){if(t.multiple){if(n==null)return;if(!e(n))return ke();for(var i of t.options)i.selected=n.includes(Xi(i));return}for(i of t.options)if(pn(Xi(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(t.selectedIndex=-1)}function Ji(e){var t=new MutationObserver(()=>{qi(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),In(()=>{t.disconnect()})}function Yi(e,t,n=t){var r=new WeakSet,i=!0;jn(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),Xi);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&Xi(o)}n(a),e.__value=a,P!==null&&r.add(P)}),Vn(()=>{var a=t();if(e===document.activeElement){var o=Be?vt:P;if(r.has(o))return}if(qi(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=Xi(s),n(a))}e.__value=a,i=!1}),Ji(e)}function Xi(e){return`__value`in e?e.__value:e.value}var Zi=Symbol(`class`),Qi=Symbol(`style`),$i=Symbol(`is custom element`),ea=Symbol(`is html`),ta=le?`link`:`LINK`,na=le?`input`:`INPUT`,ra=le?`option`:`OPTION`,ia=le?`select`:`SELECT`,aa=le?`progress`:`PROGRESS`;function oa(e){if(O){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;ua(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;ua(e,`checked`,null),e.checked=r}}};e.__on_r=n,Xe(n),kn()}}function sa(e,t){var n=pa(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==aa)||(e.value=t??``)}function ca(e,t){var n=pa(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function la(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function ua(e,t,n,r){var i=pa(e);O&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===ta)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[se]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ha(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function da(e,t,n,r,i=!1,a=!1){if(O&&i&&e.nodeName===na){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||oa(o)}var s=pa(e),c=s[$i],l=!s[ea];let u=O&&c;u&&je(!1);var d=t||{},f=e.nodeName===ra;for(var p in t)p in n||(n[p]=null);n.class?n.class=Ri(n.class):(r||n[Zi])&&(n.class=null),n[Qi]&&(n.style??=null);var m=ha(e);for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){Wi(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t?.[Zi],n[Zi]),d[i]=o,d[Zi]=n[Zi];continue}if(i===`style`){Ki(e,o,t?.[Qi],n[Qi]),d[i]=o,d[Qi]=n[Qi];continue}var h=d[i];if(!(o===h&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var g=i[0]+i[1];if(g!==`$$`)if(g===`on`){let t={},n=`$$`+i,r=i.slice(2);var _=zr(r);if(Lr(r)&&(r=r.slice(0,-7),t.capture=!0),!_&&h){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(_)Zr(r,e,o),Qr([r]);else if(o!=null){function a(e){d[i].call(this,e)}d[n]=Xr(r,e,a,t)}}else if(i===`style`)ua(e,i,o);else if(i===`autofocus`)En(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)la(e,o);else{var v=i;l||(v=Hr(v));var y=v===`defaultValue`||v===`defaultChecked`;if(o==null&&!c&&!y)if(s[i]=null,v===`value`||v===`checked`){let n=e,r=t===void 0;if(v===`value`){let e=n.defaultValue;n.removeAttribute(v),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(v),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else y||m.includes(v)&&(c||typeof o!=`string`)?(e[v]=o,v in s&&(s[v]=we)):typeof o!=`function`&&ua(e,v,o,a)}}}return u&&je(!0),d}function fa(e,t,n=[],r=[],i=[],a,o=!1,s=!1){Vt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===ia,l=!1;if(qn(()=>{var u=t(...n.map(V)),d=da(e,r,u,a,o,s);l&&c&&`value`in u&&qi(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||Qn(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&Qn(i[t]),i[t]=Jn(()=>Fi(e,()=>f))),d[t]=f}r=d}),c){var u=e;Vn(()=>{qi(u,r.value,!0),Ji(u)})}l=!0})}function pa(e){return e.__attributes??={[$i]:e.nodeName.includes(`-`),[ea]:e.namespaceURI===Te}}var ma=new Map;function ha(e){var t=e.getAttribute(`is`)||e.nodeName,n=ma.get(t);if(n)return n;ma.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&n.push(s);i=l(i)}return n}function ga(e,t,n=t){var r=new WeakSet;jn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=_a(e)?va(a):a,n(a),P!==null&&r.add(P),await Nr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(O&&e.defaultValue!==e.value||H(t)==null&&e.value)&&(n(_a(e)?va(e.value):e.value),P!==null&&r.add(P)),Gn(()=>{var n=t();if(e===document.activeElement){var i=Be?vt:P;if(r.has(i))return}_a(e)&&n===va(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function _a(e){var t=e.type;return t===`number`||t===`range`}function va(e){return e===``?null:+e}function ya(e,t,n){var r=a(e,t);r&&r.set&&(e[t]=n,In(()=>{e[t]=null}))}function ba(e,t){return e===t||e?.[ae]===t}function xa(e={},t,n,r){var i=Ue.r,a=B;return Vn(()=>{var o,s;return Gn(()=>{o=s,s=r?.()||[],H(()=>{e!==n(...s)&&(t(e,...s),o&&ba(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&ba(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function Sa(e){return function(...t){return t[0].stopPropagation(),e?.apply(this,t)}}function Ca(e){return function(...t){return t[0].preventDefault(),e?.apply(this,t)}}function wa(e=!1){let t=Ue,n=t.l.u;if(!n)return;let r=()=>U(t.s);if(e){let e=0,n={},i=Gt(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>V(i)}n.b.length&&zn(()=>{Ta(t,r),m(n.b)}),Ln(()=>{let e=H(()=>n.m.map(p));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&Ln(()=>{Ta(t,r),m(n.a)})}function Ta(e,t){if(e.l.s)for(let t of e.l.s)V(t);t()}function Ea(t,n){var r=t.$$events?.[n.type];for(var i of e(r)?r.slice():r==null?[]:[r])i.call(this,n)}function Z(e,t,n,r){var i=!Ve||(n&2)!=0,o=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=()=>(l&&(l=!1,c=s?H(r):r),c);let d;if(o){var f=ae in e||oe in e;d=a(e,t)?.set??(f&&t in e?n=>e[t]=n:void 0)}var p,m=!1;o?[p,m]=gt(()=>e[t]):p=e[t],p===void 0&&r!==void 0&&(p=u(),d&&(i&&ve(t),d(p)));var h=i?()=>{var n=e[t];return n===void 0?u():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return h;if(d){var g=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||g||m)&&d(t?h():e),e):h()})}var _=!1,v=(n&1?Gt:Jt)(()=>(_=!1,h()));o&&V(v);var y=B;return(function(e,t){if(arguments.length>0){let n=t?V(v):i&&o?dn(e):e;return F(v,n),_=!0,c!==void 0&&(c=n),e}return ur&&_||y.f&16384?v.v:V(v)})}function Da(e){Ue===null&&ue(`onMount`),Ve&&Ue.l!==null?Ma(Ue).m.push(e):Ln(()=>{let t=H(e);if(typeof t==`function`)return t})}function Oa(e){Ue===null&&ue(`onDestroy`),Da(()=>()=>H(e))}function ka(e,t,{bubbles:n=!1,cancelable:r=!1}={}){return new CustomEvent(e,{detail:t,bubbles:n,cancelable:r})}function Aa(){let t=Ue;return t===null&&ue(`createEventDispatcher`),(n,r,i)=>{let a=t.s.$$events?.[n];if(a){let o=e(a)?a.slice():[a],s=ka(n,r,i);for(let e of o)e.call(t.x,s);return!s.defaultPrevented}return!0}}function ja(e){Ue===null&&ue(`afterUpdate`),Ue.l===null&&_e(`afterUpdate`),Ma(Ue).a.push(e)}function Ma(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`),He();var Na=j(`light`),Pa=j(`dashboard`),Fa=j([]),Ia=j(null),La=j(!1),Ra=j([]),za=j(``),Ba=j(null),Va=j(null),Ha=j([]),Ua=j(0),Wa=j(1),Ga=j(25),Ka=j(``),qa=j(``),Ja=j(null),Ya=j(null),Xa=j(`updated_at`),Za=j(`desc`),Qa=j(new Set),$a=j(``),eo=j([]),to=j(0),no=j(1),ro=j(25),io=j(null),ao=ct([Fa,Ra,za],([e,t,n])=>{let r=n?e.filter(e=>e.repo.toLowerCase().includes(n.toLowerCase())):e;return{pinned:r.filter(e=>t.includes(e.repo)).sort((e,n)=>t.indexOf(e.repo)-t.indexOf(n.repo)),unpinned:r.filter(e=>!t.includes(e.repo))}}),oo=ct([Ua,Ga],([e,t])=>Math.max(1,Math.ceil(e/t)));function so(){let e=localStorage.getItem(`theme`)||`light`;Na.set(e),document.documentElement.classList.toggle(`dark`,e===`dark`),La.set(localStorage.getItem(`repoSidebarCollapsed`)===`1`);try{let e=localStorage.getItem(`pinnedRepos`);Ra.set(e?JSON.parse(e):[])}catch{Ra.set([])}let t=localStorage.getItem(`activeTab`);t&&Pa.set(t),Na.subscribe(e=>{localStorage.setItem(`theme`,e),document.documentElement.classList.toggle(`dark`,e===`dark`)}),La.subscribe(e=>{localStorage.setItem(`repoSidebarCollapsed`,e?`1`:`0`)}),Ra.subscribe(e=>{localStorage.setItem(`pinnedRepos`,JSON.stringify(e))}),Pa.subscribe(e=>{localStorage.setItem(`activeTab`,e)})}async function co(e,t){let n=await fetch(e,t);if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||e.errors?.[0]?.detail||`HTTP ${n.status}`)}return lo(await n.json())}function lo(e){if(!e||typeof e!=`object`||!(`data`in e))return e;let{data:t,meta:n}=e,r=e=>{let t=e.attributes||{};return e.type===`status`&&t.success===void 0&&(t.success=!0),e.id===`system`?t:{id:e.id,...t}};if(Array.isArray(t)){let e=t.map(r),i={};n&&(i.pagination=n);let a=t[0]?.type;if(a===`repository`)return{repos:e};if(a===`recent-action`)return{...i,actions:e};if(a===`memory`)return{...i,memories:e};if(a===`task`)return{...i,tasks:e};let o=a?`${a}s`:`data`;return i[o]=e,i}if(t.type===`capability`){let e=t.attributes,n=e=>e.map(e=>({data:{id:e.id,...e.attributes||{}}}));return{tools:n(e.tools||[]),prompts:n(e.prompts||[]),resources:n(e.resources||[])}}return r(t)}var uo={health:()=>co(`/api/health`),repos:()=>co(`/api/repos`),stats:e=>co(`/api/stats${e?`?repo=${encodeURIComponent(e)}`:``}`),recentActions:(e,t,n)=>{let r=`/api/recent-actions?page=${t}&pageSize=${n}`;return e&&(r+=`&repo=${encodeURIComponent(e)}`),co(r)},memories:e=>{let t=new URLSearchParams({repo:e.repo});return e.type&&t.set(`type`,e.type),e.search&&t.set(`search`,e.search),e.minImportance!=null&&t.set(`minImportance`,String(e.minImportance)),e.maxImportance!=null&&t.set(`maxImportance`,String(e.maxImportance)),e.sortBy&&t.set(`sortBy`,e.sortBy),e.sortOrder&&t.set(`sortOrder`,e.sortOrder),e.page&&t.set(`page`,String(e.page)),e.pageSize&&t.set(`pageSize`,String(e.pageSize)),co(`/api/memories?${t}`)},memoryById:e=>co(`/api/memories/${e}`),createMemory:e=>co(`/api/memories`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),updateMemory:(e,t)=>co(`/api/memories/${e}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}),deleteMemory:e=>co(`/api/memories/${e}`,{method:`DELETE`}),bulkImportMemories:(e,t)=>co(`/api/memories/import`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({repo:e,items:t})}),bulkMemoryAction:(e,t,n)=>co(`/api/memories/action`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:e,ids:t,updates:n})}),tasks:e=>{let t=new URLSearchParams({repo:e.repo});return e.status&&t.set(`status`,e.status),e.search&&t.set(`search`,e.search),e.page&&t.set(`page`,String(e.page)),e.pageSize&&t.set(`pageSize`,String(e.pageSize)),co(`/api/tasks?${t}`)},taskById:e=>co(`/api/tasks/${e}`),taskTimeStats:e=>co(`/api/tasks/stats/time?repo=${encodeURIComponent(e)}`),updateTask:(e,t)=>co(`/api/tasks/${e}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}),createTask:e=>co(`/api/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),deleteTask:e=>co(`/api/tasks/${e}`,{method:`DELETE`}),bulkImportTasks:(e,t)=>co(`/api/tasks/import`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({repo:e,items:t})}),updateTaskComment:(e,t)=>co(`/api/tasks/comments/${e}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({comment:t})}),deleteTaskComment:e=>co(`/api/tasks/comments/${e}`,{method:`DELETE`}),export:e=>co(`/api/export?repo=${encodeURIComponent(e)}`),capabilities:()=>co(`/api/capabilities`),callTool:(e,t)=>co(`/api/tools/${encodeURIComponent(e)}/call`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})},fo=[{id:`dashboard`,label:`Dashboard`,icon:`layout-dashboard`},{id:`activity`,label:`Activity`,icon:`activity`},{id:`memories`,label:`Memories`,icon:`brain`},{id:`tasks`,label:`Tasks`,icon:`clipboard-list`},{id:`reference`,label:`Reference`,icon:`book-open`}];function po(e){let{subscribe:t,set:n,update:r}=j({mobileMenuOpen:!1,selectedMemory:null,selectedTask:null,drawerOpen:!1,selectedReference:null,referenceDrawerOpen:!1,memoryDrawerOpen:!1,memoryDrawerItem:null,bulkImportOpen:!1,bulkImportTarget:`memories`,addTaskModalOpen:!1,newTask:{task_code:``,title:``,phase:``,description:``,status:`pending`,priority:3},capabilities:null,referenceSearch:``,referenceFilter:`all`});async function i(){try{let e=await uo.repos();if(Fa.set(e.repos||[]),e.repos?.length>0){let t=localStorage.getItem(`selectedRepo`),n=e.repos.find(e=>e.repo===t)?t:e.repos[0].repo;Ia.set(n),localStorage.setItem(`selectedRepo`,n)}}catch(e){console.error(`Failed to load repos:`,e)}}async function a(){try{let e=await uo.health();io.set(e)}catch{io.set(null)}}async function o(){let e=M(Ia);if(e){try{let t=await uo.stats(e);Ba.set(t)}catch(e){console.error(`Failed to load stats:`,e)}try{let t=await uo.taskTimeStats(e);Va.set(t)}catch(e){console.error(`Failed to load task time stats:`,e)}}}async function s(e,t=!1){let n=M(Ia);if(!n)return;let r=e??M(no);try{let e=await uo.recentActions(n,r,M(ro));t?eo.update(t=>[...t,...e.actions||[]]):eo.set(e.actions||[]),no.set(e.pagination?.page??r),to.set(e.pagination?.totalItems??0)}catch(e){console.error(`Failed to load recent actions:`,e)}}async function c(){M(Ia)&&await Promise.all([o(),s()])}async function l(t){Ia.set(t),await c(),e.memoryList?.refresh(),e.kanbanBoard?.loadTasks(t),r(e=>({...e,mobileMenuOpen:!1}))}async function u(){await a(),await c();let t=M(Pa),n=M(Ia);t===`memories`&&e.memoryList?.refresh(),t===`tasks`&&n&&e.kanbanBoard?.loadTasks(n)}async function d(n){Pa.set(n);let i=M(Ia);if(n===`memories`)setTimeout(()=>e.memoryList?.refresh(),50);else if(n===`tasks`&&i)setTimeout(()=>e.kanbanBoard?.loadTasks(i),50);else if(n===`reference`&&!M({subscribe:t}).capabilities)try{let e=await uo.capabilities();r(t=>({...t,capabilities:e}))}catch(e){console.error(`Failed to load capabilities:`,e)}}function f(e){r(t=>({...t,bulkImportTarget:e,bulkImportOpen:!0}))}function p(e,t){r(n=>({...n,selectedReference:{type:e,data:t},referenceDrawerOpen:!0}))}function m(e){r(t=>({...t,memoryDrawerItem:e,memoryDrawerOpen:!0}))}function h(){r(e=>({...e,memoryDrawerItem:null,memoryDrawerOpen:!0}))}function g(){e.memoryList?.refresh()}function _(){e.memoryList?.refresh()}async function v(e){r(t=>({...t,selectedTask:e,selectedMemory:null,drawerOpen:!0}));try{let n=await uo.taskById(e.id);M({subscribe:t}).selectedTask?.id===n.id&&r(e=>({...e,selectedTask:n}))}catch(e){console.error(`Failed to fetch full task details:`,e)}}function y(){r(e=>({...e,drawerOpen:!1})),setTimeout(()=>{r(e=>({...e,selectedMemory:null,selectedTask:null}))},300)}function b(t){r(e=>({...e,selectedTask:t}));let n=M(Ia);n&&e.kanbanBoard?.loadTasks(n)}async function x(){let n=M(Ia),{newTask:i}=M({subscribe:t});if(!(!n||!i.task_code||!i.title))try{await uo.createTask({...i,repo:n}),r(e=>({...e,addTaskModalOpen:!1,newTask:{task_code:``,title:``,phase:``,description:``,status:`pending`,priority:3}})),e.kanbanBoard?.loadTasks(n)}catch(e){let t=e instanceof Error?e.message:`Unknown error`;alert(`Failed to create task: `+t)}}function S(e){let t=e.target?.tagName;t===`INPUT`||t===`TEXTAREA`||t===`SELECT`||(e.key===`Escape`&&y(),(e.key===`r`||e.key===`R`)&&u())}function C(){r(e=>({...e,mobileMenuOpen:!e.mobileMenuOpen}))}function w(e){r(t=>({...t,referenceSearch:e}))}function T(e){r(t=>({...t,referenceFilter:e}))}function E(e){r(t=>({...t,referenceDrawerOpen:e}))}function D(e){r(t=>({...t,memoryDrawerOpen:e}))}function ee(e){r(t=>({...t,addTaskModalOpen:e}))}function te(e){r(t=>({...t,bulkImportOpen:e}))}return{subscribe:t,set:n,update:r,TABS:fo,sidebarCollapsed:ct(La,e=>e),filteredTools:ct({subscribe:t},e=>(e.capabilities?.tools||[]).filter(t=>(e.referenceFilter===`all`||e.referenceFilter===`tools`)&&(!e.referenceSearch||t.data.name.toLowerCase().includes(e.referenceSearch.toLowerCase())||(t.data.description||``).toLowerCase().includes(e.referenceSearch.toLowerCase())))),filteredPrompts:ct({subscribe:t},e=>(e.capabilities?.prompts||[]).filter(t=>(e.referenceFilter===`all`||e.referenceFilter===`prompts`)&&(!e.referenceSearch||t.data.name.toLowerCase().includes(e.referenceSearch.toLowerCase())||(t.data.description||``).toLowerCase().includes(e.referenceSearch.toLowerCase())))),filteredResources:ct({subscribe:t},e=>(e.capabilities?.resources||[]).filter(t=>(e.referenceFilter===`all`||e.referenceFilter===`resources`)&&(!e.referenceSearch||t.data.name.toLowerCase().includes(e.referenceSearch.toLowerCase())||(t.data.description||``).toLowerCase().includes(e.referenceSearch.toLowerCase())))),loadRepos:i,loadHealth:a,loadData:c,loadStats:o,loadRecentActions:s,onRepoSelect:l,onRefresh:u,onTabChange:d,openBulkImport:f,openReferenceDrawer:p,openMemoryDrawer:m,openNewMemoryDrawer:h,handleMemorySaved:g,handleMemoryDeleted:_,openTaskDrawer:v,closeDrawer:y,handleTaskUpdated:b,createTask:x,onKeyDown:S,toggleMobileMenu:C,setReferenceSearch:w,setReferenceFilter:T,toggleReferenceDrawer:E,toggleMemoryDrawer:D,toggleAddTaskModal:ee,toggleBulkImport:te,refs:e}}function mo(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var ho=mo();function go(e){ho=e}var _o={exec:()=>null};function vo(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(bo.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var yo=(()=>{try{return!0}catch{return!1}})(),bo={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,`i`),blockquoteBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}>`)},xo=/^(?:[ \t]*(?:\n|$))+/,So=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Co=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,wo=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,To=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Eo=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Do=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Oo=vo(Do).replace(/bull/g,Eo).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),ko=vo(Do).replace(/bull/g,Eo).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Ao=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,jo=/^[^\n]+/,Mo=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,No=vo(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,Mo).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Po=vo(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Eo).getRegex(),Fo=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,Io=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Lo=vo(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,Io).replace(`tag`,Fo).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ro=vo(Ao).replace(`hr`,wo).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Fo).getRegex(),zo={blockquote:vo(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,Ro).getRegex(),code:So,def:No,fences:Co,heading:To,hr:wo,html:Lo,lheading:Oo,list:Po,newline:xo,paragraph:Ro,table:_o,text:jo},Bo=vo(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,wo).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Fo).getRegex(),Vo={...zo,lheading:ko,table:Bo,paragraph:vo(Ao).replace(`hr`,wo).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,Bo).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Fo).getRegex()},Ho={...zo,html:vo(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,Io).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:_o,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:vo(Ao).replace(`hr`,wo).replace(`heading`,` *#{1,6} *[^
2
+ \r\f\xA0\v`];function Bi(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||zi.includes(r[o-1]))&&(s===r.length||zi.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Vi(e,t=!1){var n=t?` !important;`:`;`,r=``;for(var i of Object.keys(e)){var a=e[i];a!=null&&a!==``&&(r+=` `+i+`: `+a+n)}return r}function Hi(e){return e[0]!==`-`||e[1]!==`-`?e.toLowerCase():e}function Ui(e,t){if(t){var n=``,r,i;if(Array.isArray(t)?(r=t[0],i=t[1]):r=t,e){e=String(e).replaceAll(/\s*\/\*.*?\*\/\s*/g,``).trim();var a=!1,o=0,s=!1,c=[];r&&c.push(...Object.keys(r).map(Hi)),i&&c.push(...Object.keys(i).map(Hi));var l=0,u=-1;let t=e.length;for(var d=0;d<t;d++){var f=e[d];if(s?f===`/`&&e[d-1]===`*`&&(s=!1):a?a===f&&(a=!1):f===`/`&&e[d+1]===`*`?s=!0:f===`"`||f===`'`?a=f:f===`(`?o++:f===`)`&&o--,!s&&a===!1&&o===0){if(f===`:`&&u===-1)u=d;else if(f===`;`||d===t-1){if(u!==-1){var p=Hi(e.substring(l,u).trim());if(!c.includes(p)){f!==`;`&&d++;var m=e.substring(l,d).trim();n+=` `+m+`;`}}l=d+1,u=-1}}}}return r&&(n+=Vi(r)),i&&(n+=Vi(i,!0)),n=n.trim(),n===``?null:n}return e==null?null:String(e)}function Wi(e,t,n,r,i,a){var o=e.__className;if(O||o!==n||o===void 0){var s=Bi(n,r,a);(!O||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e.__className=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function Gi(e,t={},n,r){for(var i in n){var a=n[i];t[i]!==a&&(n[i]==null?e.style.removeProperty(i):e.style.setProperty(i,a,r))}}function Ki(e,t,n,r){var i=e.__style;if(O||i!==t){var a=Ui(t,r);(!O||a!==e.getAttribute(`style`))&&(a==null?e.removeAttribute(`style`):e.style.cssText=a),e.__style=t}else r&&(Array.isArray(r)?(Gi(e,n?.[0],r[0]),Gi(e,n?.[1],r[1],`important`)):Gi(e,n,r));return r}function qi(t,n,r=!1){if(t.multiple){if(n==null)return;if(!e(n))return ke();for(var i of t.options)i.selected=n.includes(Xi(i));return}for(i of t.options)if(pn(Xi(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(t.selectedIndex=-1)}function Ji(e){var t=new MutationObserver(()=>{qi(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),In(()=>{t.disconnect()})}function Yi(e,t,n=t){var r=new WeakSet,i=!0;jn(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),Xi);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&Xi(o)}n(a),e.__value=a,P!==null&&r.add(P)}),Vn(()=>{var a=t();if(e===document.activeElement){var o=Be?vt:P;if(r.has(o))return}if(qi(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=Xi(s),n(a))}e.__value=a,i=!1}),Ji(e)}function Xi(e){return`__value`in e?e.__value:e.value}var Zi=Symbol(`class`),Qi=Symbol(`style`),$i=Symbol(`is custom element`),ea=Symbol(`is html`),ta=le?`link`:`LINK`,na=le?`input`:`INPUT`,ra=le?`option`:`OPTION`,ia=le?`select`:`SELECT`,aa=le?`progress`:`PROGRESS`;function oa(e){if(O){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;ua(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;ua(e,`checked`,null),e.checked=r}}};e.__on_r=n,Xe(n),kn()}}function sa(e,t){var n=pa(e);n.value===(n.value=t??void 0)||e.value===t&&(t!==0||e.nodeName!==aa)||(e.value=t??``)}function ca(e,t){var n=pa(e);n.checked!==(n.checked=t??void 0)&&(e.checked=t)}function la(e,t){t?e.hasAttribute(`selected`)||e.setAttribute(`selected`,``):e.removeAttribute(`selected`)}function ua(e,t,n,r){var i=pa(e);O&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===ta)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[se]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&ha(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function da(e,t,n,r,i=!1,a=!1){if(O&&i&&e.nodeName===na){var o=e;(o.type===`checkbox`?`defaultChecked`:`defaultValue`)in n||oa(o)}var s=pa(e),c=s[$i],l=!s[ea];let u=O&&c;u&&je(!1);var d=t||{},f=e.nodeName===ra;for(var p in t)p in n||(n[p]=null);n.class?n.class=Ri(n.class):(r||n[Zi])&&(n.class=null),n[Qi]&&(n.style??=null);var m=ha(e);for(let i in n){let o=n[i];if(f&&i===`value`&&o==null){e.value=e.__value=``,d[i]=o;continue}if(i===`class`){Wi(e,e.namespaceURI===`http://www.w3.org/1999/xhtml`,o,r,t?.[Zi],n[Zi]),d[i]=o,d[Zi]=n[Zi];continue}if(i===`style`){Ki(e,o,t?.[Qi],n[Qi]),d[i]=o,d[Qi]=n[Qi];continue}var h=d[i];if(!(o===h&&!(o===void 0&&e.hasAttribute(i)))){d[i]=o;var g=i[0]+i[1];if(g!==`$$`)if(g===`on`){let t={},n=`$$`+i,r=i.slice(2);var _=zr(r);if(Lr(r)&&(r=r.slice(0,-7),t.capture=!0),!_&&h){if(o!=null)continue;e.removeEventListener(r,d[n],t),d[n]=null}if(_)Zr(r,e,o),Qr([r]);else if(o!=null){function a(e){d[i].call(this,e)}d[n]=Xr(r,e,a,t)}}else if(i===`style`)ua(e,i,o);else if(i===`autofocus`)En(e,!!o);else if(!c&&(i===`__value`||i===`value`&&o!=null))e.value=e.__value=o;else if(i===`selected`&&f)la(e,o);else{var v=i;l||(v=Hr(v));var y=v===`defaultValue`||v===`defaultChecked`;if(o==null&&!c&&!y)if(s[i]=null,v===`value`||v===`checked`){let n=e,r=t===void 0;if(v===`value`){let e=n.defaultValue;n.removeAttribute(v),n.defaultValue=e,n.value=n.__value=r?e:null}else{let e=n.defaultChecked;n.removeAttribute(v),n.defaultChecked=e,n.checked=r?e:!1}}else e.removeAttribute(i);else y||m.includes(v)&&(c||typeof o!=`string`)?(e[v]=o,v in s&&(s[v]=we)):typeof o!=`function`&&ua(e,v,o,a)}}}return u&&je(!0),d}function fa(e,t,n=[],r=[],i=[],a,o=!1,s=!1){Vt(i,n,r,n=>{var r=void 0,i={},c=e.nodeName===ia,l=!1;if(qn(()=>{var u=t(...n.map(V)),d=da(e,r,u,a,o,s);l&&c&&`value`in u&&qi(e,u.value);for(let e of Object.getOwnPropertySymbols(i))u[e]||Qn(i[e]);for(let t of Object.getOwnPropertySymbols(u)){var f=u[t];t.description===`@attach`&&(!r||f!==r[t])&&(i[t]&&Qn(i[t]),i[t]=Jn(()=>Fi(e,()=>f))),d[t]=f}r=d}),c){var u=e;Vn(()=>{qi(u,r.value,!0),Ji(u)})}l=!0})}function pa(e){return e.__attributes??={[$i]:e.nodeName.includes(`-`),[ea]:e.namespaceURI===Te}}var ma=new Map;function ha(e){var t=e.getAttribute(`is`)||e.nodeName,n=ma.get(t);if(n)return n;ma.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&n.push(s);i=l(i)}return n}function ga(e,t,n=t){var r=new WeakSet;jn(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=_a(e)?va(a):a,n(a),P!==null&&r.add(P),await Nr(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(O&&e.defaultValue!==e.value||H(t)==null&&e.value)&&(n(_a(e)?va(e.value):e.value),P!==null&&r.add(P)),Gn(()=>{var n=t();if(e===document.activeElement){var i=Be?vt:P;if(r.has(i))return}_a(e)&&n===va(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function _a(e){var t=e.type;return t===`number`||t===`range`}function va(e){return e===``?null:+e}function ya(e,t,n){var r=a(e,t);r&&r.set&&(e[t]=n,In(()=>{e[t]=null}))}function ba(e,t){return e===t||e?.[ae]===t}function xa(e={},t,n,r){var i=Ue.r,a=B;return Vn(()=>{var o,s;return Gn(()=>{o=s,s=r?.()||[],H(()=>{e!==n(...s)&&(t(e,...s),o&&ba(n(...o),e)&&t(null,...o))})}),()=>{let r=a;for(;r!==i&&r.parent!==null&&r.parent.f&33554432;)r=r.parent;let o=()=>{s&&ba(n(...s),e)&&t(null,...s)},c=r.teardown;r.teardown=()=>{o(),c?.()}}}),e}function Sa(e){return function(...t){return t[0].stopPropagation(),e?.apply(this,t)}}function Ca(e){return function(...t){return t[0].preventDefault(),e?.apply(this,t)}}function wa(e=!1){let t=Ue,n=t.l.u;if(!n)return;let r=()=>U(t.s);if(e){let e=0,n={},i=Gt(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>V(i)}n.b.length&&zn(()=>{Ta(t,r),m(n.b)}),Ln(()=>{let e=H(()=>n.m.map(p));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&Ln(()=>{Ta(t,r),m(n.a)})}function Ta(e,t){if(e.l.s)for(let t of e.l.s)V(t);t()}function Ea(t,n){var r=t.$$events?.[n.type];for(var i of e(r)?r.slice():r==null?[]:[r])i.call(this,n)}function Z(e,t,n,r){var i=!Ve||(n&2)!=0,o=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=()=>(l&&(l=!1,c=s?H(r):r),c);let d;if(o){var f=ae in e||oe in e;d=a(e,t)?.set??(f&&t in e?n=>e[t]=n:void 0)}var p,m=!1;o?[p,m]=gt(()=>e[t]):p=e[t],p===void 0&&r!==void 0&&(p=u(),d&&(i&&ve(t),d(p)));var h=i?()=>{var n=e[t];return n===void 0?u():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return h;if(d){var g=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||g||m)&&d(t?h():e),e):h()})}var _=!1,v=(n&1?Gt:Jt)(()=>(_=!1,h()));o&&V(v);var y=B;return(function(e,t){if(arguments.length>0){let n=t?V(v):i&&o?dn(e):e;return F(v,n),_=!0,c!==void 0&&(c=n),e}return ur&&_||y.f&16384?v.v:V(v)})}function Da(e){Ue===null&&ue(`onMount`),Ve&&Ue.l!==null?Ma(Ue).m.push(e):Ln(()=>{let t=H(e);if(typeof t==`function`)return t})}function Oa(e){Ue===null&&ue(`onDestroy`),Da(()=>()=>H(e))}function ka(e,t,{bubbles:n=!1,cancelable:r=!1}={}){return new CustomEvent(e,{detail:t,bubbles:n,cancelable:r})}function Aa(){let t=Ue;return t===null&&ue(`createEventDispatcher`),(n,r,i)=>{let a=t.s.$$events?.[n];if(a){let o=e(a)?a.slice():[a],s=ka(n,r,i);for(let e of o)e.call(t.x,s);return!s.defaultPrevented}return!0}}function ja(e){Ue===null&&ue(`afterUpdate`),Ue.l===null&&_e(`afterUpdate`),Ma(Ue).a.push(e)}function Ma(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`),He();var Na=j(`light`),Pa=j(`dashboard`),Fa=j([]),Ia=j(null),La=j(!1),Ra=j([]),za=j(``),Ba=j(null),Va=j(null),Ha=j([]),Ua=j(0),Wa=j(1),Ga=j(25),Ka=j(``),qa=j(``),Ja=j(null),Ya=j(null),Xa=j(`updated_at`),Za=j(`desc`),Qa=j(new Set),$a=j(``),eo=j([]),to=j(0),no=j(1),ro=j(25),io=j(null),ao=ct([Fa,Ra,za],([e,t,n])=>{let r=n?e.filter(e=>e.repo.toLowerCase().includes(n.toLowerCase())):e;return{pinned:r.filter(e=>t.includes(e.repo)).sort((e,n)=>t.indexOf(e.repo)-t.indexOf(n.repo)),unpinned:r.filter(e=>!t.includes(e.repo))}}),oo=ct([Ua,Ga],([e,t])=>Math.max(1,Math.ceil(e/t)));function so(){let e=localStorage.getItem(`theme`)||`light`;Na.set(e),document.documentElement.classList.toggle(`dark`,e===`dark`),La.set(localStorage.getItem(`repoSidebarCollapsed`)===`1`);try{let e=localStorage.getItem(`pinnedRepos`);Ra.set(e?JSON.parse(e):[])}catch{Ra.set([])}let t=localStorage.getItem(`activeTab`);t&&Pa.set(t),Na.subscribe(e=>{localStorage.setItem(`theme`,e),document.documentElement.classList.toggle(`dark`,e===`dark`)}),La.subscribe(e=>{localStorage.setItem(`repoSidebarCollapsed`,e?`1`:`0`)}),Ra.subscribe(e=>{localStorage.setItem(`pinnedRepos`,JSON.stringify(e))}),Pa.subscribe(e=>{localStorage.setItem(`activeTab`,e)})}async function co(e,t){let n=await fetch(e,t);if(!n.ok){let e=await n.json().catch(()=>({error:n.statusText}));throw Error(e.error||e.errors?.[0]?.detail||`HTTP ${n.status}`)}return lo(await n.json())}function lo(e){if(!e||typeof e!=`object`||!(`data`in e))return e;let{data:t,meta:n}=e,r=e=>{let t=e.attributes||{};return e.type===`status`&&t.success===void 0&&(t.success=!0),e.id===`system`?t:{id:e.id,...t}};if(Array.isArray(t)){let e=t.map(r),i={};n&&(i.pagination=n);let a=t[0]?.type;if(a===`repository`)return{repos:e};if(a===`recent-action`)return{...i,actions:e};if(a===`memory`)return{...i,memories:e};if(a===`task`)return{...i,tasks:e};let o=a?`${a}s`:`data`;return i[o]=e,i}if(t.type===`capability`){let e=t.attributes,n=e=>e.map(e=>({data:{id:e.id,...e.attributes||{}}}));return{tools:n(e.tools||[]),prompts:n(e.prompts||[]),resources:n(e.resources||[])}}return r(t)}var uo={health:()=>co(`/api/health`),repos:()=>co(`/api/repos`),stats:e=>co(`/api/stats${e?`?repo=${encodeURIComponent(e)}`:``}`),recentActions:(e,t,n)=>{let r=`/api/recent-actions?page=${t}&pageSize=${n}`;return e&&(r+=`&repo=${encodeURIComponent(e)}`),co(r)},memories:e=>{let t=new URLSearchParams({repo:e.repo});return e.type&&t.set(`type`,e.type),e.search&&t.set(`search`,e.search),e.minImportance!=null&&t.set(`minImportance`,String(e.minImportance)),e.maxImportance!=null&&t.set(`maxImportance`,String(e.maxImportance)),e.sortBy&&t.set(`sortBy`,e.sortBy),e.sortOrder&&t.set(`sortOrder`,e.sortOrder),e.page&&t.set(`page`,String(e.page)),e.pageSize&&t.set(`pageSize`,String(e.pageSize)),co(`/api/memories?${t}`)},memoryById:e=>co(`/api/memories/${e}`),createMemory:e=>co(`/api/memories`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),updateMemory:(e,t)=>co(`/api/memories/${e}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}),deleteMemory:e=>co(`/api/memories/${e}`,{method:`DELETE`}),bulkImportMemories:(e,t)=>co(`/api/memories/import`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({repo:e,items:t})}),bulkMemoryAction:(e,t,n)=>co(`/api/memories/action`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({action:e,ids:t,updates:n})}),tasks:e=>{let t=new URLSearchParams({repo:e.repo});return e.status&&t.set(`status`,e.status),e.search&&t.set(`search`,e.search),e.page&&t.set(`page`,String(e.page)),e.pageSize&&t.set(`pageSize`,String(e.pageSize)),co(`/api/tasks?${t}`)},taskById:e=>co(`/api/tasks/${e}`),taskByCode:(e,t)=>co(`/api/tasks/by-code?repo=${encodeURIComponent(e)}&task_code=${encodeURIComponent(t)}`),taskTimeStats:e=>co(`/api/tasks/stats/time?repo=${encodeURIComponent(e)}`),updateTask:(e,t)=>co(`/api/tasks/${e}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)}),createTask:e=>co(`/api/tasks`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(e)}),deleteTask:e=>co(`/api/tasks/${e}`,{method:`DELETE`}),bulkImportTasks:(e,t)=>co(`/api/tasks/import`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({repo:e,items:t})}),updateTaskComment:(e,t)=>co(`/api/tasks/comments/${e}`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({comment:t})}),deleteTaskComment:e=>co(`/api/tasks/comments/${e}`,{method:`DELETE`}),export:e=>co(`/api/export?repo=${encodeURIComponent(e)}`),capabilities:()=>co(`/api/capabilities`),callTool:(e,t)=>co(`/api/tools/${encodeURIComponent(e)}/call`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(t)})},fo=[{id:`dashboard`,label:`Dashboard`,icon:`layout-dashboard`},{id:`activity`,label:`Activity`,icon:`activity`},{id:`memories`,label:`Memories`,icon:`brain`},{id:`tasks`,label:`Tasks`,icon:`clipboard-list`},{id:`reference`,label:`Reference`,icon:`book-open`}];function po(e){let{subscribe:t,set:n,update:r}=j({mobileMenuOpen:!1,selectedMemory:null,selectedTask:null,drawerOpen:!1,selectedReference:null,referenceDrawerOpen:!1,memoryDrawerOpen:!1,memoryDrawerItem:null,bulkImportOpen:!1,bulkImportTarget:`memories`,addTaskModalOpen:!1,newTask:{task_code:``,title:``,phase:``,description:``,status:`pending`,priority:3},capabilities:null,referenceSearch:``,referenceFilter:`all`});async function i(){try{let e=await uo.repos();if(Fa.set(e.repos||[]),e.repos?.length>0){let t=localStorage.getItem(`selectedRepo`),n=e.repos.find(e=>e.repo===t)?t:e.repos[0].repo;Ia.set(n),localStorage.setItem(`selectedRepo`,n)}}catch(e){console.error(`Failed to load repos:`,e)}}async function a(){try{let e=await uo.health();io.set(e)}catch{io.set(null)}}async function o(){let e=M(Ia);if(e){try{let t=await uo.stats(e);Ba.set(t)}catch(e){console.error(`Failed to load stats:`,e)}try{let t=await uo.taskTimeStats(e);Va.set(t)}catch(e){console.error(`Failed to load task time stats:`,e)}}}async function s(e,t=!1){let n=M(Ia);if(!n)return;let r=e??M(no);try{let e=await uo.recentActions(n,r,M(ro));t?eo.update(t=>[...t,...e.actions||[]]):eo.set(e.actions||[]),no.set(e.pagination?.page??r),to.set(e.pagination?.totalItems??0)}catch(e){console.error(`Failed to load recent actions:`,e)}}async function c(){M(Ia)&&await Promise.all([o(),s()])}async function l(t){Ia.set(t),await c(),e.memoryList?.refresh(),e.kanbanBoard?.loadTasks(t),r(e=>({...e,mobileMenuOpen:!1}))}async function u(){await a(),await c();let t=M(Pa),n=M(Ia);t===`memories`&&e.memoryList?.refresh(),t===`tasks`&&n&&e.kanbanBoard?.loadTasks(n)}async function d(n){Pa.set(n);let i=M(Ia);if(n===`memories`)setTimeout(()=>e.memoryList?.refresh(),50);else if(n===`tasks`&&i)setTimeout(()=>e.kanbanBoard?.loadTasks(i),50);else if(n===`reference`&&!M({subscribe:t}).capabilities)try{let e=await uo.capabilities();r(t=>({...t,capabilities:e}))}catch(e){console.error(`Failed to load capabilities:`,e)}}function f(e){r(t=>({...t,bulkImportTarget:e,bulkImportOpen:!0}))}function p(e,t){r(n=>({...n,selectedReference:{type:e,data:t},referenceDrawerOpen:!0}))}function m(e){r(t=>({...t,memoryDrawerItem:e,memoryDrawerOpen:!0}))}function h(){r(e=>({...e,memoryDrawerItem:null,memoryDrawerOpen:!0}))}function g(){e.memoryList?.refresh()}function _(){e.memoryList?.refresh()}async function v(e){r(t=>({...t,selectedTask:e,selectedMemory:null,drawerOpen:!0}));try{let n=await uo.taskById(e.id);M({subscribe:t}).selectedTask?.id===n.id&&r(e=>({...e,selectedTask:n}))}catch(e){console.error(`Failed to fetch full task details:`,e)}}function y(){r(e=>({...e,drawerOpen:!1})),setTimeout(()=>{r(e=>({...e,selectedMemory:null,selectedTask:null}))},300)}function b(t){r(e=>({...e,selectedTask:t}));let n=M(Ia);n&&e.kanbanBoard?.loadTasks(n)}async function x(){let n=M(Ia),{newTask:i}=M({subscribe:t});if(!(!n||!i.task_code||!i.title))try{await uo.createTask({...i,repo:n}),r(e=>({...e,addTaskModalOpen:!1,newTask:{task_code:``,title:``,phase:``,description:``,status:`pending`,priority:3}})),e.kanbanBoard?.loadTasks(n)}catch(e){let t=e instanceof Error?e.message:`Unknown error`;alert(`Failed to create task: `+t)}}function S(e){let t=e.target?.tagName;t===`INPUT`||t===`TEXTAREA`||t===`SELECT`||(e.key===`Escape`&&y(),(e.key===`r`||e.key===`R`)&&u())}function C(){r(e=>({...e,mobileMenuOpen:!e.mobileMenuOpen}))}function w(e){r(t=>({...t,referenceSearch:e}))}function T(e){r(t=>({...t,referenceFilter:e}))}function E(e){r(t=>({...t,referenceDrawerOpen:e}))}function D(e){r(t=>({...t,memoryDrawerOpen:e}))}function ee(e){r(t=>({...t,addTaskModalOpen:e}))}function te(e){r(t=>({...t,bulkImportOpen:e}))}return{subscribe:t,set:n,update:r,TABS:fo,sidebarCollapsed:ct(La,e=>e),filteredTools:ct({subscribe:t},e=>(e.capabilities?.tools||[]).filter(t=>(e.referenceFilter===`all`||e.referenceFilter===`tools`)&&(!e.referenceSearch||t.data.name.toLowerCase().includes(e.referenceSearch.toLowerCase())||(t.data.description||``).toLowerCase().includes(e.referenceSearch.toLowerCase())))),filteredPrompts:ct({subscribe:t},e=>(e.capabilities?.prompts||[]).filter(t=>(e.referenceFilter===`all`||e.referenceFilter===`prompts`)&&(!e.referenceSearch||t.data.name.toLowerCase().includes(e.referenceSearch.toLowerCase())||(t.data.description||``).toLowerCase().includes(e.referenceSearch.toLowerCase())))),filteredResources:ct({subscribe:t},e=>(e.capabilities?.resources||[]).filter(t=>(e.referenceFilter===`all`||e.referenceFilter===`resources`)&&(!e.referenceSearch||t.data.name.toLowerCase().includes(e.referenceSearch.toLowerCase())||(t.data.description||``).toLowerCase().includes(e.referenceSearch.toLowerCase())))),loadRepos:i,loadHealth:a,loadData:c,loadStats:o,loadRecentActions:s,onRepoSelect:l,onRefresh:u,onTabChange:d,openBulkImport:f,openReferenceDrawer:p,openMemoryDrawer:m,openNewMemoryDrawer:h,handleMemorySaved:g,handleMemoryDeleted:_,openTaskDrawer:v,closeDrawer:y,handleTaskUpdated:b,createTask:x,onKeyDown:S,toggleMobileMenu:C,setReferenceSearch:w,setReferenceFilter:T,toggleReferenceDrawer:E,toggleMemoryDrawer:D,toggleAddTaskModal:ee,toggleBulkImport:te,refs:e}}function mo(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var ho=mo();function go(e){ho=e}var _o={exec:()=>null};function vo(e,t=``){let n=typeof e==`string`?e:e.source,r={replace:(e,t)=>{let i=typeof t==`string`?t:t.source;return i=i.replace(bo.caret,`$1`),n=n.replace(e,i),r},getRegex:()=>new RegExp(n,t)};return r}var yo=(()=>{try{return!0}catch{return!1}})(),bo={codeRemoveIndent:/^(?: {1,4}| {0,3}\t)/gm,outputLinkReplace:/\\([\[\]])/g,indentCodeCompensation:/^(\s+)(?:```)/,beginningSpace:/^\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\n/g,tabCharGlobal:/\t/g,multipleSpaceGlobal:/\s+/g,blankLine:/^[ \t]*$/,doubleBlankLine:/\n[ \t]*\n[ \t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\n {0,3}((?:=+|-+) *)(?=\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \t]?/gm,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\[[ xX]\] +\S/,listReplaceTask:/^\[[ xX]\] +/,listTaskCheckbox:/\[[ xX]\]/,anyLine:/\n.*\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\||\| *$/g,tableRowBlankLine:/\n[ \t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\s|>)/i,endPreScriptTag:/^<\/(pre|code|kbd|script)(\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'"]*[^\s])\s+(['"])(.*)\2/,unicodeAlphaNumeric:/[\p{L}\p{N}]/u,escapeTest:/[&<>"']/,escapeReplace:/[&<>"']/g,escapeTestNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/,escapeReplaceNoEncode:/[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g,caret:/(^|[^\[])\^/g,percentDecode:/%25/g,findPipe:/\|/g,splitPipe:/ \|/,slashPipe:/\\\|/g,carriageReturn:/\r\n|\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\S*/,endingNewline:/\n$/,listItemRegex:e=>RegExp(`^( {0,3}${e})((?:[ ][^\\n]*)?(?:\\n|$))`),nextBulletRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`),hrRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`),fencesBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}(?:\`\`\`|~~~)`),headingBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}#`),htmlBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}<(?:[a-z].*>|!--)`,`i`),blockquoteBeginRegex:e=>RegExp(`^ {0,${Math.min(3,e-1)}}>`)},xo=/^(?:[ \t]*(?:\n|$))+/,So=/^((?: {4}| {0,3}\t)[^\n]+(?:\n(?:[ \t]*(?:\n|$))*)?)+/,Co=/^ {0,3}(`{3,}(?=[^`\n]*(?:\n|$))|~{3,})([^\n]*)(?:\n|$)(?:|([\s\S]*?)(?:\n|$))(?: {0,3}\1[~`]* *(?=\n|$)|$)/,wo=/^ {0,3}((?:-[\t ]*){3,}|(?:_[ \t]*){3,}|(?:\*[ \t]*){3,})(?:\n+|$)/,To=/^ {0,3}(#{1,6})(?=\s|$)(.*)(?:\n+|$)/,Eo=/ {0,3}(?:[*+-]|\d{1,9}[.)])/,Do=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\n(?!\s*?\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\n {0,3}(=+|-+) *(?:\n+|$)/,Oo=vo(Do).replace(/bull/g,Eo).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/\|table/g,``).getRegex(),ko=vo(Do).replace(/bull/g,Eo).replace(/blockCode/g,/(?: {4}| {0,3}\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\n>]+>\n/).replace(/table/g,/ {0,3}\|?(?:[:\- ]*\|)+[\:\- ]*\n/).getRegex(),Ao=/^([^\n]+(?:\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\n)[^\n]+)*)/,jo=/^[^\n]+/,Mo=/(?!\s*\])(?:\\[\s\S]|[^\[\]\\])+/,No=vo(/^ {0,3}\[(label)\]: *(?:\n[ \t]*)?([^<\s][^\s]*|<.*?>)(?:(?: +(?:\n[ \t]*)?| *\n[ \t]*)(title))? *(?:\n+|$)/).replace(`label`,Mo).replace(`title`,/(?:"(?:\\"?|[^"\\])*"|'[^'\n]*(?:\n[^'\n]+)*\n?'|\([^()]*\))/).getRegex(),Po=vo(/^(bull)([ \t][^\n]+?)?(?:\n|$)/).replace(/bull/g,Eo).getRegex(),Fo=`address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul`,Io=/<!--(?:-?>|[\s\S]*?(?:-->|$))/,Lo=vo(`^ {0,3}(?:<(script|pre|style|textarea)[\\s>][\\s\\S]*?(?:</\\1>[^\\n]*\\n+|$)|comment[^\\n]*(\\n+|$)|<\\?[\\s\\S]*?(?:\\?>\\n*|$)|<![A-Z][\\s\\S]*?(?:>\\n*|$)|<!\\[CDATA\\[[\\s\\S]*?(?:\\]\\]>\\n*|$)|</?(tag)(?: +|\\n|/?>)[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|<(?!script|pre|style|textarea)([a-z][\\w-]*)(?:attribute)*? */?>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$)|</(?!script|pre|style|textarea)[a-z][\\w-]*\\s*>(?=[ \\t]*(?:\\n|$))[\\s\\S]*?(?:(?:\\n[ ]*)+\\n|$))`,`i`).replace(`comment`,Io).replace(`tag`,Fo).replace(`attribute`,/ +[a-zA-Z:_][\w.:-]*(?: *= *"[^"\n]*"| *= *'[^'\n]*'| *= *[^\s"'=<>`]+)?/).getRegex(),Ro=vo(Ao).replace(`hr`,wo).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Fo).getRegex(),zo={blockquote:vo(/^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/).replace(`paragraph`,Ro).getRegex(),code:So,def:No,fences:Co,heading:To,hr:wo,html:Lo,lheading:Oo,list:Po,newline:xo,paragraph:Ro,table:_o,text:jo},Bo=vo(`^ *([^\\n ].*)\\n {0,3}((?:\\| *)?:?-+:? *(?:\\| *:?-+:? *)*(?:\\| *)?)(?:\\n((?:(?! *\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\n|$))*)\\n*|$)`).replace(`hr`,wo).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`blockquote`,` {0,3}>`).replace(`code`,`(?: {4}| {0,3} )[^\\n]`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Fo).getRegex(),Vo={...zo,lheading:ko,table:Bo,paragraph:vo(Ao).replace(`hr`,wo).replace(`heading`,` {0,3}#{1,6}(?:\\s|$)`).replace(`|lheading`,``).replace(`table`,Bo).replace(`blockquote`,` {0,3}>`).replace(`fences`," {0,3}(?:`{3,}(?=[^`\\n]*\\n)|~{3,})[^\\n]*\\n").replace(`list`,` {0,3}(?:[*+-]|1[.)])[ \\t]`).replace(`html`,`</?(?:tag)(?: +|\\n|/?>)|<(?:script|pre|style|textarea|!--)`).replace(`tag`,Fo).getRegex()},Ho={...zo,html:vo(`^ *(?:comment *(?:\\n|\\s*$)|<(tag)[\\s\\S]+?</\\1> *(?:\\n{2,}|\\s*$)|<tag(?:"[^"]*"|'[^']*'|\\s[^'"/>\\s]*)*?/?> *(?:\\n{2,}|\\s*$))`).replace(`comment`,Io).replace(/tag/g,`(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b`).getRegex(),def:/^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +(["(][^\n]+[")]))? *(?:\n+|$)/,heading:/^(#{1,6})(.*)(?:\n+|$)/,fences:_o,lheading:/^(.+?)\n {0,3}(=+|-+) *(?:\n+|$)/,paragraph:vo(Ao).replace(`hr`,wo).replace(`heading`,` *#{1,6} *[^
3
3
  ]`).replace(`lheading`,Oo).replace(`|table`,``).replace(`blockquote`,` {0,3}>`).replace(`|fences`,``).replace(`|list`,``).replace(`|html`,``).replace(`|tag`,``).getRegex()},Uo=/^\\([!"#$%&'()*+,\-./:;<=>?@\[\]\\^_`{|}~])/,Wo=/^(`+)([^`]|[^`][\s\S]*?[^`])\1(?!`)/,Go=/^( {2,}|\\)\n(?!\s*$)/,Ko=/^(`+|[^`])(?:(?= {2,}\n)|[\s\S]*?(?:(?=[\\<!\[`*_]|\b_|$)|[^ ](?= {2,}\n)))/,qo=/[\p{P}\p{S}]/u,Jo=/[\s\p{P}\p{S}]/u,Yo=/[^\s\p{P}\p{S}]/u,Xo=vo(/^((?![*_])punctSpace)/,`u`).replace(/punctSpace/g,Jo).getRegex(),Zo=/(?!~)[\p{P}\p{S}]/u,Qo=/(?!~)[\s\p{P}\p{S}]/u,$o=/(?:[^\s\p{P}\p{S}]|~)/u,es=vo(/link|precode-code|html/,`g`).replace(`link`,/\[(?:[^\[\]`]|(?<a>`+)[^`]+\k<a>(?!`))*?\]\((?:\\[\s\S]|[^\\\(\)]|\((?:\\[\s\S]|[^\\\(\)])*\))*\)/).replace(`precode-`,yo?"(?<!`)()":"(^^|[^`])").replace(`code`,/(?<b>`+)[^`]+\k<b>(?!`)/).replace(`html`,/<(?! )[^<>]*?>/).getRegex(),ts=/^(?:\*+(?:((?!\*)punct)|([^\s*]))?)|^_+(?:((?!_)punct)|([^\s_]))?/,ns=vo(ts,`u`).replace(/punct/g,qo).getRegex(),rs=vo(ts,`u`).replace(/punct/g,Zo).getRegex(),is=`^[^_*]*?__[^_*]*?\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\*)punct(\\*+)(?=[\\s]|$)|notPunctSpace(\\*+)(?!\\*)(?=punctSpace|$)|(?!\\*)punctSpace(\\*+)(?=notPunctSpace)|[\\s](\\*+)(?!\\*)(?=punct)|(?!\\*)punct(\\*+)(?!\\*)(?=punct)|notPunctSpace(\\*+)(?=notPunctSpace)`,as=vo(is,`gu`).replace(/notPunctSpace/g,Yo).replace(/punctSpace/g,Jo).replace(/punct/g,qo).getRegex(),os=vo(is,`gu`).replace(/notPunctSpace/g,$o).replace(/punctSpace/g,Qo).replace(/punct/g,Zo).getRegex(),ss=vo(`^[^_*]*?\\*\\*[^_*]*?_[^_*]*?(?=\\*\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)`,`gu`).replace(/notPunctSpace/g,Yo).replace(/punctSpace/g,Jo).replace(/punct/g,qo).getRegex(),cs=vo(/^~~?(?:((?!~)punct)|[^\s~])/,`u`).replace(/punct/g,qo).getRegex(),ls=vo(`^[^~]+(?=[^~])|(?!~)punct(~~?)(?=[\\s]|$)|notPunctSpace(~~?)(?!~)(?=punctSpace|$)|(?!~)punctSpace(~~?)(?=notPunctSpace)|[\\s](~~?)(?!~)(?=punct)|(?!~)punct(~~?)(?!~)(?=punct)|notPunctSpace(~~?)(?=notPunctSpace)`,`gu`).replace(/notPunctSpace/g,Yo).replace(/punctSpace/g,Jo).replace(/punct/g,qo).getRegex(),us=vo(/\\(punct)/,`gu`).replace(/punct/g,qo).getRegex(),ds=vo(/^<(scheme:[^\s\x00-\x1f<>]*|email)>/).replace(`scheme`,/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(`email`,/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),fs=vo(Io).replace(`(?:-->|$)`,`-->`).getRegex(),ps=vo(`^comment|^</[a-zA-Z][\\w:-]*\\s*>|^<[a-zA-Z][\\w-]*(?:attribute)*?\\s*/?>|^<\\?[\\s\\S]*?\\?>|^<![a-zA-Z]+\\s[\\s\\S]*?>|^<!\\[CDATA\\[[\\s\\S]*?\\]\\]>`).replace(`comment`,fs).replace(`attribute`,/\s+[a-zA-Z:_][\w.:-]*(?:\s*=\s*"[^"]*"|\s*=\s*'[^']*'|\s*=\s*[^\s"'=<>`]+)?/).getRegex(),ms=/(?:\[(?:\\[\s\S]|[^\[\]\\])*\]|\\[\s\S]|`+(?!`)[^`]*?`+(?!`)|``+(?=\])|[^\[\]\\`])*?/,hs=vo(/^!?\[(label)\]\(\s*(href)(?:(?:[ \t]+(?:\n[ \t]*)?|\n[ \t]*)(title))?\s*\)/).replace(`label`,ms).replace(`href`,/<(?:\\.|[^\n<>\\])+>|[^ \t\n\x00-\x1f]*/).replace(`title`,/"(?:\\"?|[^"\\])*"|'(?:\\'?|[^'\\])*'|\((?:\\\)?|[^)\\])*\)/).getRegex(),gs=vo(/^!?\[(label)\]\[(ref)\]/).replace(`label`,ms).replace(`ref`,Mo).getRegex(),_s=vo(/^!?\[(ref)\](?:\[\])?/).replace(`ref`,Mo).getRegex(),vs=vo(`reflink|nolink(?!\\()`,`g`).replace(`reflink`,gs).replace(`nolink`,_s).getRegex(),ys=/[hH][tT][tT][pP][sS]?|[fF][tT][pP]/,bs={_backpedal:_o,anyPunctuation:us,autolink:ds,blockSkip:es,br:Go,code:Wo,del:_o,delLDelim:_o,delRDelim:_o,emStrongLDelim:ns,emStrongRDelimAst:as,emStrongRDelimUnd:ss,escape:Uo,link:hs,nolink:_s,punctuation:Xo,reflink:gs,reflinkSearch:vs,tag:ps,text:Ko,url:_o},xs={...bs,link:vo(/^!?\[(label)\]\((.*?)\)/).replace(`label`,ms).getRegex(),reflink:vo(/^!?\[(label)\]\s*\[([^\]]*)\]/).replace(`label`,ms).getRegex()},Ss={...bs,emStrongRDelimAst:os,emStrongLDelim:rs,delLDelim:cs,delRDelim:ls,url:vo(/^((?:protocol):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace(`protocol`,ys).replace(`email`,/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'"~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'"~)]+(?!$))+/,del:/^(~~?)(?=[^\s~])((?:\\[\s\S]|[^\\])*?(?:\\[\s\S]|[^\s~\\]))\1(?=[^~]|$)/,text:vo(/^([`~]+|[^`~])(?:(?= {2,}\n)|(?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)|[\s\S]*?(?:(?=[\\<!\[`*~_]|\b_|protocol:\/\/|www\.|$)|[^ ](?= {2,}\n)|[^a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-](?=[a-zA-Z0-9.!#$%&'*+\/=?_`{\|}~-]+@)))/).replace(`protocol`,ys).getRegex()},Cs={...Ss,br:vo(Go).replace(`{2,}`,`*`).getRegex(),text:vo(Ss.text).replace(`\\b_`,`\\b_| {2,}\\n`).replace(/\{2,\}/g,`*`).getRegex()},ws={normal:zo,gfm:Vo,pedantic:Ho},Ts={normal:bs,gfm:Ss,breaks:Cs,pedantic:xs},Es={"&":`&amp;`,"<":`&lt;`,">":`&gt;`,'"':`&quot;`,"'":`&#39;`},Ds=e=>Es[e];function Os(e,t){if(t){if(bo.escapeTest.test(e))return e.replace(bo.escapeReplace,Ds)}else if(bo.escapeTestNoEncode.test(e))return e.replace(bo.escapeReplaceNoEncode,Ds);return e}function ks(e){try{e=encodeURI(e).replace(bo.percentDecode,`%`)}catch{return null}return e}function As(e,t){let n=e.replace(bo.findPipe,(e,t,n)=>{let r=!1,i=t;for(;--i>=0&&n[i]===`\\`;)r=!r;return r?`|`:` |`}).split(bo.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),t)if(n.length>t)n.splice(t);else for(;n.length<t;)n.push(``);for(;r<n.length;r++)n[r]=n[r].trim().replace(bo.slashPipe,`|`);return n}function js(e,t,n){let r=e.length;if(r===0)return``;let i=0;for(;i<r;){let a=e.charAt(r-i-1);if(a===t&&!n)i++;else if(a!==t&&n)i++;else break}return e.slice(0,r-i)}function Ms(e){let t=e.split(`
4
4
  `),n=t.length-1;for(;n>=0&&!t[n].trim();)n--;return t.length-n<=2?e:t.slice(0,n+1).join(`
5
5
  `)}function Ns(e,t){if(e.indexOf(t[1])===-1)return-1;let n=0;for(let r=0;r<e.length;r++)if(e[r]===`\\`)r++;else if(e[r]===t[0])n++;else if(e[r]===t[1]&&(n--,n<0))return r;return n>0?-2:-1}function Ps(e,t=0){let n=t,r=``;for(let t of e)if(t===` `){let e=4-n%4;r+=` `.repeat(e),n+=e}else r+=t,n++;return r}function Fs(e,t,n,r,i){let a=t.href,o=t.title||null,s=e[1].replace(i.other.outputLinkReplace,`$1`);r.state.inLink=!0;let c={type:e[0].charAt(0)===`!`?`image`:`link`,raw:n,href:a,title:o,text:s,tokens:r.inlineTokens(s)};return r.state.inLink=!1,c}function Is(e,t,n){let r=e.match(n.other.indentCodeCompensation);if(r===null)return t;let i=r[1];return t.split(`
@@ -8,7 +8,7 @@
8
8
  <link rel="preconnect" href="https://fonts.googleapis.com">
9
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
10
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
11
- <script type="module" crossorigin src="/assets/index-CUiLXjvg.js"></script>
11
+ <script type="module" crossorigin src="/assets/index-BqbCB9_n.js"></script>
12
12
  <link rel="stylesheet" crossorigin href="/assets/index-OXSJZbwn.css">
13
13
  </head>
14
14
  <body>
@@ -6,7 +6,7 @@ import {
6
6
  TOOL_DEFINITIONS,
7
7
  listResources,
8
8
  logger
9
- } from "../chunk-3JIOCO3K.js";
9
+ } from "../chunk-MC6NSQJ6.js";
10
10
 
11
11
  // src/dashboard/server.ts
12
12
  import express from "express";
@@ -474,14 +474,16 @@ var MemoriesController = class {
474
474
  const { repo, type, content } = attributes;
475
475
  if (!repo || !type || !content) return res.status(400).json(jsonApiError("Required fields missing", 400));
476
476
  const id = randomUUID();
477
- db.memories.insert({
478
- ...attributes,
479
- id,
480
- created_at: (/* @__PURE__ */ new Date()).toISOString(),
481
- updated_at: (/* @__PURE__ */ new Date()).toISOString(),
482
- scope: { repo }
477
+ await db.withWrite(() => {
478
+ db.memories.insert({
479
+ ...attributes,
480
+ id,
481
+ created_at: (/* @__PURE__ */ new Date()).toISOString(),
482
+ updated_at: (/* @__PURE__ */ new Date()).toISOString(),
483
+ scope: { repo }
484
+ });
485
+ db.actions.logAction("write", repo, { memoryId: id });
483
486
  });
484
- db.actions.logAction("write", repo, { memoryId: id });
485
487
  res.json(jsonApiRes({ id }, "memory"));
486
488
  } catch (err) {
487
489
  const message = err instanceof Error ? err.message : "Internal server error";
@@ -507,8 +509,10 @@ var MemoriesController = class {
507
509
  repo,
508
510
  updated_at: (/* @__PURE__ */ new Date()).toISOString()
509
511
  };
510
- db.memories.update(id, updates);
511
- db.actions.logAction("update", existing.scope?.repo || attributes.repo || "", { memoryId: id });
512
+ await db.withWrite(() => {
513
+ db.memories.update(id, updates);
514
+ db.actions.logAction("update", existing.scope?.repo || attributes.repo || "", { memoryId: id });
515
+ });
512
516
  res.json(jsonApiRes({ message: "Updated" }, "status"));
513
517
  } catch (err) {
514
518
  const message = err instanceof Error ? err.message : "Internal server error";
@@ -521,8 +525,10 @@ var MemoriesController = class {
521
525
  const { id } = req.params;
522
526
  const existing = db.memories.getByIdWithStats ? db.memories.getByIdWithStats(id) : db.memories.getById(id);
523
527
  if (!existing) return res.status(404).json(jsonApiError("Memory not found", 404));
524
- db.memories.delete(id);
525
- db.actions.logAction("delete", existing.scope?.repo || "", { memoryId: id });
528
+ await db.withWrite(() => {
529
+ db.memories.delete(id);
530
+ db.actions.logAction("delete", existing.scope?.repo || "", { memoryId: id });
531
+ });
526
532
  res.json(jsonApiRes({ message: "Deleted" }, "status"));
527
533
  } catch (err) {
528
534
  const message = err instanceof Error ? err.message : "Internal server error";
@@ -542,8 +548,11 @@ var MemoriesController = class {
542
548
  created_at: item.created_at || (/* @__PURE__ */ new Date()).toISOString(),
543
549
  updated_at: item.updated_at || (/* @__PURE__ */ new Date()).toISOString()
544
550
  }));
545
- const count = db.memories.bulkInsertMemories(entries);
546
- db.actions.logAction("write", repo, { query: `Bulk imported ${count} memories` });
551
+ const count = await db.withWrite(() => {
552
+ const n = db.memories.bulkInsertMemories(entries);
553
+ db.actions.logAction("write", repo, { query: `Bulk imported ${n} memories` });
554
+ return n;
555
+ });
547
556
  res.json(jsonApiRes({ count }, "status"));
548
557
  } catch (err) {
549
558
  const message = err instanceof Error ? err.message : "Internal server error";
@@ -556,23 +565,26 @@ var MemoriesController = class {
556
565
  const { action, ids, updates } = getAttributes(req);
557
566
  if (!Array.isArray(ids) || !action)
558
567
  return res.status(400).json(jsonApiError("Invalid payload: requires 'ids' array and 'action'", 400));
559
- let count = 0;
560
- if (action === "delete") {
561
- count = db.memories.bulkDeleteMemories(ids);
562
- } else if (action === "update" || action === "archive") {
563
- count = db.memories.bulkUpdateMemories(
564
- ids,
565
- updates || { status: action === "archive" ? "archived" : "active" }
566
- );
567
- } else {
568
- return res.status(400).json(jsonApiError("Invalid action", 400));
569
- }
570
- if (ids.length > 0) {
571
- const mem = db.memories.getById(ids[0]);
572
- db.actions.logAction(action, mem?.scope?.repo || "unknown", {
573
- query: `Bulk ${action} applied to ${count} memories`
574
- });
575
- }
568
+ const count = await db.withWrite(() => {
569
+ let n = 0;
570
+ if (action === "delete") {
571
+ n = db.memories.bulkDeleteMemories(ids);
572
+ } else if (action === "update" || action === "archive") {
573
+ n = db.memories.bulkUpdateMemories(
574
+ ids,
575
+ updates || { status: action === "archive" ? "archived" : "active" }
576
+ );
577
+ } else {
578
+ throw new Error("Invalid action");
579
+ }
580
+ if (ids.length > 0) {
581
+ const mem = db.memories.getById(ids[0]);
582
+ db.actions.logAction(action, mem?.scope?.repo || "unknown", {
583
+ query: `Bulk ${action} applied to ${n} memories`
584
+ });
585
+ }
586
+ return n;
587
+ });
576
588
  res.json(jsonApiRes({ count }, "status"));
577
589
  } catch (err) {
578
590
  const message = err instanceof Error ? err.message : "Internal server error";
@@ -642,6 +654,19 @@ var TasksController = class {
642
654
  res.status(404).json(jsonApiError(message, 404));
643
655
  }
644
656
  }
657
+ static async getByCode(req, res) {
658
+ try {
659
+ await db.refresh();
660
+ const { repo, task_code } = req.query;
661
+ if (!repo || !task_code) return res.status(400).json(jsonApiError("repo and task_code are required", 400));
662
+ const task = db.tasks.getTaskByCode(repo, task_code);
663
+ if (!task) return res.status(404).json(jsonApiError("Task not found", 404));
664
+ res.json(jsonApiRes(task, "task"));
665
+ } catch (err) {
666
+ const message = err instanceof Error ? err.message : "Task not found";
667
+ res.status(404).json(jsonApiError(message, 404));
668
+ }
669
+ }
645
670
  static async create(req, res) {
646
671
  try {
647
672
  await db.refresh();
@@ -651,13 +676,15 @@ var TasksController = class {
651
676
  if (db.tasks.isTaskCodeDuplicate(repo, task_code))
652
677
  return res.status(400).json(jsonApiError("Duplicate task_code", 400));
653
678
  const id = randomUUID2();
654
- db.tasks.insertTask({
655
- ...attributes,
656
- id,
657
- created_at: (/* @__PURE__ */ new Date()).toISOString(),
658
- updated_at: (/* @__PURE__ */ new Date()).toISOString()
679
+ await db.withWrite(() => {
680
+ db.tasks.insertTask({
681
+ ...attributes,
682
+ id,
683
+ created_at: (/* @__PURE__ */ new Date()).toISOString(),
684
+ updated_at: (/* @__PURE__ */ new Date()).toISOString()
685
+ });
686
+ db.actions.logAction("write", repo, { taskId: id });
659
687
  });
660
- db.actions.logAction("write", repo, { taskId: id });
661
688
  res.json(jsonApiRes({ id }, "task"));
662
689
  } catch (err) {
663
690
  const message = err instanceof Error ? err.message : "Internal server error";
@@ -671,38 +698,40 @@ var TasksController = class {
671
698
  const attributes = getAttributes(req);
672
699
  const existingTask = db.tasks.getTaskById(id);
673
700
  if (!existingTask) return res.status(404).json(jsonApiError("Task not found", 404));
674
- db.tasks.updateTask(id, attributes);
675
- if (attributes.status && attributes.status !== existingTask.status) {
676
- db.actions.logAction("update", existingTask.repo, {
677
- taskId: id,
678
- query: `Status changed to ${attributes.status}`
679
- });
680
- db.tasks.insertTaskComment({
681
- id: randomUUID2(),
682
- task_id: id,
683
- repo: existingTask.repo,
684
- comment: attributes.comment || `Status updated via dashboard`,
685
- agent: "dashboard",
686
- role: "user",
687
- model: "web-ui",
688
- previous_status: existingTask.status,
689
- next_status: attributes.status,
690
- created_at: (/* @__PURE__ */ new Date()).toISOString()
691
- });
692
- } else if (attributes.comment) {
693
- db.tasks.insertTaskComment({
694
- id: randomUUID2(),
695
- task_id: id,
696
- repo: existingTask.repo,
697
- comment: attributes.comment,
698
- agent: "dashboard",
699
- role: "user",
700
- model: "web-ui",
701
- previous_status: null,
702
- next_status: null,
703
- created_at: (/* @__PURE__ */ new Date()).toISOString()
704
- });
705
- }
701
+ await db.withWrite(() => {
702
+ db.tasks.updateTask(id, attributes);
703
+ if (attributes.status && attributes.status !== existingTask.status) {
704
+ db.actions.logAction("update", existingTask.repo, {
705
+ taskId: id,
706
+ query: `Status changed to ${attributes.status}`
707
+ });
708
+ db.tasks.insertTaskComment({
709
+ id: randomUUID2(),
710
+ task_id: id,
711
+ repo: existingTask.repo,
712
+ comment: attributes.comment || `Status updated via dashboard`,
713
+ agent: "dashboard",
714
+ role: "user",
715
+ model: "web-ui",
716
+ previous_status: existingTask.status,
717
+ next_status: attributes.status,
718
+ created_at: (/* @__PURE__ */ new Date()).toISOString()
719
+ });
720
+ } else if (attributes.comment) {
721
+ db.tasks.insertTaskComment({
722
+ id: randomUUID2(),
723
+ task_id: id,
724
+ repo: existingTask.repo,
725
+ comment: attributes.comment,
726
+ agent: "dashboard",
727
+ role: "user",
728
+ model: "web-ui",
729
+ previous_status: null,
730
+ next_status: null,
731
+ created_at: (/* @__PURE__ */ new Date()).toISOString()
732
+ });
733
+ }
734
+ });
706
735
  res.json(jsonApiRes({ message: "Updated" }, "status"));
707
736
  } catch (err) {
708
737
  const message = err instanceof Error ? err.message : "Internal server error";
@@ -715,8 +744,10 @@ var TasksController = class {
715
744
  const { id } = req.params;
716
745
  const task = db.tasks.getTaskById(id);
717
746
  if (!task) return res.status(404).json(jsonApiError("Task not found", 404));
718
- db.tasks.deleteTask(id);
719
- db.actions.logAction("delete", task.repo, { taskId: id });
747
+ await db.withWrite(() => {
748
+ db.tasks.deleteTask(id);
749
+ db.actions.logAction("delete", task.repo, { taskId: id });
750
+ });
720
751
  res.json(jsonApiRes({ message: "Deleted" }, "status"));
721
752
  } catch (err) {
722
753
  const message = err instanceof Error ? err.message : "Internal server error";
@@ -737,8 +768,11 @@ var TasksController = class {
737
768
  created_at: item.created_at || (/* @__PURE__ */ new Date()).toISOString(),
738
769
  updated_at: item.updated_at || (/* @__PURE__ */ new Date()).toISOString()
739
770
  }));
740
- const count = db.tasks.bulkInsertTasks(tasks);
741
- db.actions.logAction("write", repo, { query: `Bulk imported ${count} tasks` });
771
+ const count = await db.withWrite(() => {
772
+ const n = db.tasks.bulkInsertTasks(tasks);
773
+ db.actions.logAction("write", repo, { query: `Bulk imported ${n} tasks` });
774
+ return n;
775
+ });
742
776
  res.json(jsonApiRes({ count }, "status"));
743
777
  } catch (err) {
744
778
  const message = err instanceof Error ? err.message : "Internal server error";
@@ -781,7 +815,7 @@ var TasksController = class {
781
815
  const { comment } = getAttributes(req);
782
816
  const existingComment = db.tasks.getTaskCommentById(id);
783
817
  if (!existingComment) return res.status(404).json(jsonApiError("Comment not found", 404));
784
- db.tasks.updateTaskComment(id, { comment });
818
+ await db.withWrite(() => db.tasks.updateTaskComment(id, { comment }));
785
819
  res.json(jsonApiRes({ message: "Updated" }, "status"));
786
820
  } catch (err) {
787
821
  const message = err instanceof Error ? err.message : "Internal server error";
@@ -792,7 +826,7 @@ var TasksController = class {
792
826
  try {
793
827
  await db.refresh();
794
828
  const { id } = req.params;
795
- db.tasks.deleteTaskComment(id);
829
+ await db.withWrite(() => db.tasks.deleteTaskComment(id));
796
830
  res.json(jsonApiRes({ message: "Deleted" }, "status"));
797
831
  } catch (err) {
798
832
  const message = err instanceof Error ? err.message : "Internal server error";
@@ -807,6 +841,7 @@ router3.get("/", TasksController.list);
807
841
  router3.post("/", TasksController.create);
808
842
  router3.post("/import", TasksController.bulkCreate);
809
843
  router3.get("/stats/time", TasksController.getTimeStats);
844
+ router3.get("/by-code", TasksController.getByCode);
810
845
  router3.get("/:id", TasksController.get);
811
846
  router3.put("/:id", TasksController.update);
812
847
  router3.delete("/:id", TasksController.delete);
@@ -42,7 +42,7 @@ import {
42
42
  setLogLevel,
43
43
  updateSessionFromInitialize,
44
44
  updateSessionRoots
45
- } from "../chunk-3JIOCO3K.js";
45
+ } from "../chunk-MC6NSQJ6.js";
46
46
 
47
47
  // src/mcp/server.ts
48
48
  import readline from "readline";
@@ -1875,68 +1875,73 @@ function createRouter(db2, vectors2, options) {
1875
1875
  throw new Error(`Unsupported method: ${method}`);
1876
1876
  }
1877
1877
  }
1878
+ const WRITE_TOOLS = /* @__PURE__ */ new Set([
1879
+ "memory-store",
1880
+ "memory-acknowledge",
1881
+ "memory-update",
1882
+ "memory-delete",
1883
+ "memory-bulk-delete",
1884
+ "memory-summarize",
1885
+ "task-create",
1886
+ "task-create-interactive",
1887
+ "task-update",
1888
+ "task-delete"
1889
+ ]);
1878
1890
  async function handleToolCall(params, signal, onProgress) {
1879
1891
  const { name } = params || {};
1880
1892
  const args = normalizeToolArguments(params?.arguments, getSessionContext?.());
1881
1893
  const toolName = String(name).replace(/\./g, "-");
1882
1894
  let result;
1883
1895
  const repo = args?.repo || args?.scope?.repo || "unknown";
1884
- switch (toolName) {
1885
- case "memory-store":
1886
- result = await handleMemoryStore(args, db2, vectors2);
1887
- break;
1888
- case "memory-acknowledge":
1889
- result = await handleMemoryAcknowledge(args, db2);
1890
- break;
1891
- case "memory-update":
1892
- result = await handleMemoryUpdate(args, db2, vectors2);
1893
- break;
1894
- case "memory-recap":
1895
- result = await handleMemoryRecap(args, db2);
1896
- break;
1897
- case "memory-search":
1898
- result = await handleMemorySearch(args, db2, vectors2);
1899
- break;
1900
- case "memory-summarize":
1901
- result = await handleMemorySummarize(args, db2);
1902
- break;
1903
- case "memory-synthesize":
1904
- result = await handleMemorySynthesize(args, db2, vectors2, {
1905
- session: getSessionContext?.(),
1906
- sampleMessage: options?.sampleMessage,
1907
- elicit: options?.elicit
1908
- });
1909
- break;
1910
- case "memory-delete":
1911
- case "memory-bulk-delete":
1912
- result = await handleMemoryDelete(args, db2, vectors2, onProgress);
1913
- break;
1914
- case "memory-detail":
1915
- result = await handleMemoryDetail(args, db2);
1916
- break;
1917
- case "task-create":
1918
- result = await handleTaskCreate(args, db2);
1919
- break;
1920
- case "task-create-interactive":
1921
- result = await handleTaskCreateInteractive(args, db2, {
1922
- session: getSessionContext?.(),
1923
- elicit: options?.elicit
1924
- });
1925
- break;
1926
- case "task-update":
1927
- result = await handleTaskUpdate(args, db2, vectors2);
1928
- break;
1929
- case "task-delete":
1930
- result = await handleTaskDelete(args, db2);
1931
- break;
1932
- case "task-list":
1933
- result = await handleTaskList(args, db2);
1934
- break;
1935
- case "task-detail":
1936
- result = await handleTaskGet(args, db2);
1937
- break;
1938
- default:
1939
- throw new Error(`Unknown tool: ${name}`);
1896
+ const isWrite = WRITE_TOOLS.has(toolName);
1897
+ const executeToolLogic = async () => {
1898
+ switch (toolName) {
1899
+ case "memory-store":
1900
+ return await handleMemoryStore(args, db2, vectors2);
1901
+ case "memory-acknowledge":
1902
+ return await handleMemoryAcknowledge(args, db2);
1903
+ case "memory-update":
1904
+ return await handleMemoryUpdate(args, db2, vectors2);
1905
+ case "memory-recap":
1906
+ return await handleMemoryRecap(args, db2);
1907
+ case "memory-search":
1908
+ return await handleMemorySearch(args, db2, vectors2);
1909
+ case "memory-summarize":
1910
+ return await handleMemorySummarize(args, db2);
1911
+ case "memory-synthesize":
1912
+ return await handleMemorySynthesize(args, db2, vectors2, {
1913
+ session: getSessionContext?.(),
1914
+ sampleMessage: options?.sampleMessage,
1915
+ elicit: options?.elicit
1916
+ });
1917
+ case "memory-delete":
1918
+ case "memory-bulk-delete":
1919
+ return await handleMemoryDelete(args, db2, vectors2, onProgress);
1920
+ case "memory-detail":
1921
+ return await handleMemoryDetail(args, db2);
1922
+ case "task-create":
1923
+ return await handleTaskCreate(args, db2);
1924
+ case "task-create-interactive":
1925
+ return await handleTaskCreateInteractive(args, db2, {
1926
+ session: getSessionContext?.(),
1927
+ elicit: options?.elicit
1928
+ });
1929
+ case "task-update":
1930
+ return await handleTaskUpdate(args, db2, vectors2);
1931
+ case "task-delete":
1932
+ return await handleTaskDelete(args, db2);
1933
+ case "task-list":
1934
+ return await handleTaskList(args, db2);
1935
+ case "task-detail":
1936
+ return await handleTaskGet(args, db2);
1937
+ default:
1938
+ throw new Error(`Unknown tool: ${name}`);
1939
+ }
1940
+ };
1941
+ if (isWrite) {
1942
+ result = await db2.withWrite(executeToolLogic);
1943
+ } else {
1944
+ result = await executeToolLogic();
1940
1945
  }
1941
1946
  try {
1942
1947
  const actionType = toolName.split("-")[1] || toolName;
@@ -1949,7 +1954,11 @@ function createRouter(db2, vectors2, options) {
1949
1954
  taskId: args?.id || args?.task_id || sc?.id,
1950
1955
  resultCount: Array.isArray(sc?.results) ? sc.results.length : sc?.count || 0
1951
1956
  };
1952
- db2.actions.logAction(actionType, repo, logOptions);
1957
+ if (isWrite) {
1958
+ db2.actions.logAction(actionType, repo, logOptions);
1959
+ } else {
1960
+ await db2.withWrite(() => db2.actions.logAction(actionType, repo, logOptions));
1961
+ }
1953
1962
  } catch (e) {
1954
1963
  logger.error("Failed to log action", { toolName, error: String(e) });
1955
1964
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vheins/local-memory-mcp",
3
- "version": "0.8.1",
3
+ "version": "0.8.3",
4
4
  "description": "MCP Local Memory Service for coding copilot agents",
5
5
  "mcpName": "io.github.vheins/local-memory-mcp",
6
6
  "type": "module",
@@ -44,6 +44,7 @@
44
44
  "format": "prettier --write \"src/**/*.{ts,js,svelte}\""
45
45
  },
46
46
  "dependencies": {
47
+ "@types/proper-lockfile": "^4.1.4",
47
48
  "@xenova/transformers": "^2.17.2",
48
49
  "better-sqlite3": "^12.9.0",
49
50
  "chart.js": "^4.5.1",
@@ -51,6 +52,7 @@
51
52
  "express": "^5.2.1",
52
53
  "gray-matter": "^4.0.3",
53
54
  "marked": "^18.0.0",
55
+ "proper-lockfile": "^4.1.2",
54
56
  "qs": "^6.15.0",
55
57
  "zod": "^4.3.5"
56
58
  },