@vheins/local-memory-mcp 0.8.1 → 0.8.2
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
|
|
177
|
-
import
|
|
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" ?
|
|
1900
|
-
const standardPath =
|
|
1901
|
-
if (
|
|
1902
|
-
const legacyPath =
|
|
1903
|
-
if (
|
|
1904
|
-
const localCwdFile =
|
|
1905
|
-
if (
|
|
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 =
|
|
1922
|
-
if (!
|
|
1923
|
-
|
|
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 =
|
|
1993
|
+
this.db.pragma("busy_timeout = 30000");
|
|
1930
1994
|
this.db.pragma("foreign_keys = ON");
|
|
1931
|
-
this.db.pragma("wal_autocheckpoint =
|
|
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
|
-
|
|
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
|
|
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(
|
|
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 =
|
|
2183
|
+
const normalizedTarget = path4.resolve(targetPath);
|
|
2035
2184
|
return roots.some((rootPath) => {
|
|
2036
|
-
const relative =
|
|
2037
|
-
return relative === "" || !relative.startsWith("..") && !
|
|
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 =
|
|
2192
|
+
const normalizedTarget = path4.resolve(targetPath);
|
|
2044
2193
|
for (const rootPath of roots) {
|
|
2045
|
-
const relative =
|
|
2046
|
-
if (relative === "" || !relative.startsWith("..") && !
|
|
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
|
|
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
|
|
3484
|
-
if (!name || !
|
|
3485
|
-
return { name, path:
|
|
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
|
|
3521
|
-
import
|
|
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 =
|
|
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) =>
|
|
3683
|
+
].map((relPath) => path5.resolve(__dirname2, relPath));
|
|
3535
3684
|
for (const dir of candidates) {
|
|
3536
|
-
if (
|
|
3537
|
-
const files =
|
|
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
|
|
3692
|
+
return path5.resolve(__dirname2, "./definitions");
|
|
3544
3693
|
}
|
|
3545
3694
|
var PROMPT_DIR = findPromptDir();
|
|
3546
3695
|
function listPromptFiles() {
|
|
3547
|
-
if (!
|
|
3548
|
-
return
|
|
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 =
|
|
3552
|
-
if (!
|
|
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 =
|
|
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={"&":`&`,"<":`<`,">":`>`,'"':`"`,"'":`'`},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-
|
|
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>
|
package/dist/dashboard/server.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
TOOL_DEFINITIONS,
|
|
7
7
|
listResources,
|
|
8
8
|
logger
|
|
9
|
-
} from "../chunk-
|
|
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.
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
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.
|
|
511
|
-
|
|
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.
|
|
525
|
-
|
|
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.
|
|
546
|
-
|
|
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
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
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.
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
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.
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
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.
|
|
719
|
-
|
|
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.
|
|
741
|
-
|
|
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);
|
package/dist/mcp/server.js
CHANGED
|
@@ -42,7 +42,7 @@ import {
|
|
|
42
42
|
setLogLevel,
|
|
43
43
|
updateSessionFromInitialize,
|
|
44
44
|
updateSessionRoots
|
|
45
|
-
} from "../chunk-
|
|
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
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
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
|
-
|
|
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.
|
|
3
|
+
"version": "0.8.2",
|
|
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
|
},
|