@shahmilsaari/memory-core 1.0.27 → 1.0.28
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.
- package/README.md +68 -73
- package/dist/cli.js +232 -44
- package/dist/dashboard/assets/index-9hcL4kCI.js +2 -0
- package/dist/dashboard/index.html +1 -1
- package/dist/{dashboard-server-TWLZQE2J.js → dashboard-server-S6T2XPRI.js} +1 -1
- package/package.json +1 -1
- package/dist/dashboard/assets/index-Cd_SCzKw.js +0 -2
package/README.md
CHANGED
|
@@ -2,128 +2,123 @@
|
|
|
2
2
|
|
|
3
3
|
> Universal AI memory for developers. Store architecture rules once — every AI coding agent reads them before writing code.
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/@shahmilsaari/memory-core)
|
|
5
|
+
[](https://www.npmjs.com/package/@shahmilsaari/memory-core)
|
|
6
|
+
[](https://www.npmjs.com/package/@shahmilsaari/memory-core)
|
|
7
|
+
[](https://nodejs.org)
|
|
6
8
|
[](LICENSE)
|
|
7
9
|
|
|
8
10
|
---
|
|
9
11
|
|
|
10
|
-
##
|
|
12
|
+
## The problem
|
|
13
|
+
|
|
14
|
+
AI tools like Copilot, Cursor, and Claude Code start fresh every session. They don't know your architecture decisions, your layer boundaries, or your team conventions. They write code that violates patterns you spent months establishing.
|
|
15
|
+
|
|
16
|
+
**memory-core fixes that.** Store your rules once, enforce them everywhere.
|
|
17
|
+
|
|
18
|
+
---
|
|
11
19
|
|
|
12
|
-
|
|
20
|
+
## What it does
|
|
13
21
|
|
|
14
|
-
1. **Remember** — store architecture decisions and rules in PostgreSQL with reasons
|
|
15
|
-
2. **Distribute** — generate instruction files for 14 AI agents from your stored rules
|
|
16
|
-
3. **Enforce** — two-tier pipeline catches violations: deterministic layer graph (instant, confidence 1.0) then AI semantic review
|
|
22
|
+
1. **Remember** — store architecture decisions and rules in PostgreSQL with plain-English reasons
|
|
23
|
+
2. **Distribute** — generate instruction files for 14 AI agents automatically from your stored rules
|
|
24
|
+
3. **Enforce** — two-tier pipeline catches violations before they merge: deterministic layer graph (instant, confidence 1.0) then AI semantic review
|
|
17
25
|
|
|
18
26
|
```bash
|
|
19
27
|
npx @shahmilsaari/memory-core init
|
|
20
28
|
```
|
|
21
29
|
|
|
22
|
-
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Key features
|
|
33
|
+
|
|
34
|
+
- **281 pre-built rules** — seed best-practice rules for your stack in one command, with plain-English reasons
|
|
35
|
+
- **14 AI agents supported** — generates instruction files for Copilot, Cursor, Claude Code, Windsurf, and more automatically
|
|
36
|
+
- **Evidence-based enforcement** — catches layer violations deterministically before touching AI, then uses semantic review for the rest
|
|
37
|
+
- **Runs fully local** — embeddings stay on your machine via Ollama; use any cloud provider (DeepSeek, OpenAI, Anthropic) only for code analysis
|
|
38
|
+
- **Live dashboard** — real-time violations feed, interactive architecture graph, and model switcher at `localhost:5178`
|
|
39
|
+
- **Team-ready** — export rules to `memories.json`, commit it, and teammates import with one command — no shared database needed
|
|
40
|
+
- **CI/CD built-in** — generates a GitHub Actions workflow; CI reads `memories.json` directly, no Ollama required
|
|
41
|
+
- **Commit message linting** — enforce conventional commits or any regex pattern via the `commit-msg` hook
|
|
42
|
+
- **Violation analytics** — track which rules fire most and auto-tune noisy ones with `memory-core tune`
|
|
43
|
+
- **Pre-commit hook** — advisory or strict mode; bypass anytime with `MEMORY_CORE_SKIP_HOOK=1`
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Get started
|
|
48
|
+
|
|
49
|
+
**Requires:** Node.js ≥ 18, PostgreSQL 14+, [Ollama](https://ollama.com) with `nomic-embed-text`
|
|
23
50
|
|
|
24
51
|
```bash
|
|
25
52
|
# 1. Initialize in your project
|
|
26
53
|
npx @shahmilsaari/memory-core init
|
|
27
54
|
|
|
28
|
-
# 2. Load best-practice rules for your
|
|
55
|
+
# 2. Load best-practice rules for your stack
|
|
29
56
|
memory-core seed --arch clean-architecture
|
|
30
57
|
|
|
31
|
-
# 3. Store
|
|
58
|
+
# 3. Store your own decisions
|
|
32
59
|
memory-core remember "No direct DB calls from controllers"
|
|
33
60
|
|
|
34
|
-
# 4. Enforce on every
|
|
35
|
-
memory-core
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
## Architecture enforcement
|
|
39
|
-
|
|
40
|
-
The `check --diff` command runs a two-tier enforcement pipeline:
|
|
41
|
-
|
|
42
|
-
```
|
|
43
|
-
git diff → FileClassifier → ASTAnalyzer → GraphBuilder
|
|
44
|
-
→ RuleMatcher → EvidencePacketBuilder
|
|
45
|
-
→ graphEngine (full codebase graph)
|
|
46
|
-
→ DeterministicValidator (confidence 1.0)
|
|
47
|
-
→ AI judge (OllamaJudge / DeepSeek / OpenAI-compatible)
|
|
48
|
-
→ ConfidenceGate → allow | warn | block
|
|
61
|
+
# 4. Enforce on every commit
|
|
62
|
+
memory-core hook install
|
|
49
63
|
```
|
|
50
64
|
|
|
51
|
-
|
|
65
|
+
That's it. Every AI agent in your project now reads your rules before writing code.
|
|
52
66
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
## Installation requirements
|
|
67
|
+
---
|
|
56
68
|
|
|
57
|
-
|
|
58
|
-
|---|---|---|
|
|
59
|
-
| Node.js 18+ | Runtime | — |
|
|
60
|
-
| PostgreSQL 14+ | Rules storage | `brew install postgresql@16` |
|
|
61
|
-
| pgvector | Semantic search | `brew install pgvector` |
|
|
62
|
-
| Ollama | Local embeddings | `ollama pull nomic-embed-text` |
|
|
69
|
+
## Supported agents
|
|
63
70
|
|
|
64
|
-
|
|
71
|
+
Claude Code · GitHub Copilot · Cursor · Windsurf · Cline · Roo Code · Aider · Continue.dev · Devin · Amazon Q · Gemini Code Assist · Zed AI · JetBrains AI · OpenHands
|
|
65
72
|
|
|
66
|
-
|
|
73
|
+
---
|
|
67
74
|
|
|
68
|
-
|
|
75
|
+
## Architecture profiles
|
|
69
76
|
|
|
70
|
-
|
|
77
|
+
281 pre-built rules ready to load:
|
|
71
78
|
|
|
72
|
-
|
|
73
|
-
|---|---|
|
|
74
|
-
| `memory-core init` | Set up memory-core in the current project |
|
|
75
|
-
| `memory-core remember "..."` | Store an architecture decision |
|
|
76
|
-
| `memory-core check --diff <ref>` | Evidence-based arch enforcement against a git ref |
|
|
77
|
-
| `memory-core check --staged` | Check staged diff (pre-commit hook path) |
|
|
78
|
-
| `memory-core watch --auto-fix` | Real-time violation detection with AI auto-fix |
|
|
79
|
-
| `memory-core dashboard` | Live command center at `localhost:5178` |
|
|
80
|
-
| `memory-core graph build` | Snapshot full codebase dependency graph |
|
|
81
|
-
| `memory-core seed` | Load 281 best-practice rules |
|
|
82
|
-
| `memory-core sync` | Regenerate all agent instruction files |
|
|
83
|
-
| `memory-core export` | Export rules to `memories.json` for team sharing |
|
|
79
|
+
`clean-architecture` · `nestjs` · `react` · `svelte` · `vue` · `hexagonal` · `modular-monolith` · `mvc` · `laravel-service-repository` · `nuxt` · `angular` · `go-api` · `react-native`
|
|
84
80
|
|
|
85
|
-
|
|
81
|
+
---
|
|
86
82
|
|
|
87
|
-
##
|
|
83
|
+
## Commands
|
|
88
84
|
|
|
89
85
|
```bash
|
|
90
|
-
memory-core
|
|
86
|
+
memory-core remember "..." # store a rule or decision
|
|
87
|
+
memory-core sync # push rules to all AI agent files
|
|
88
|
+
memory-core check --diff HEAD~1 # enforce architecture on a diff
|
|
89
|
+
memory-core watch # real-time violation detection
|
|
90
|
+
memory-core dashboard # live command center at localhost:5178
|
|
91
|
+
memory-core export # share rules with your team via memories.json
|
|
92
|
+
memory-core stats # see which rules fire most
|
|
91
93
|
```
|
|
92
94
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
- Model switcher — change provider/model without restart
|
|
97
|
-
- Token usage — Ollama shows "LOCAL (FREE)", paid providers show real counts
|
|
98
|
-
- Actions panel — Sync Agents, Check All without opening a terminal
|
|
95
|
+
→ [Full command reference](COMMANDS.md)
|
|
96
|
+
|
|
97
|
+
---
|
|
99
98
|
|
|
100
99
|
## Environment
|
|
101
100
|
|
|
102
101
|
```env
|
|
103
|
-
|
|
104
|
-
DATABASE_URL=postgres://localhost:5432/memory_core
|
|
105
|
-
|
|
106
|
-
# Ollama (local, for embeddings)
|
|
102
|
+
DATABASE_URL=postgresql://localhost:5432/memory_core
|
|
107
103
|
OLLAMA_URL=http://localhost:11434
|
|
108
104
|
OLLAMA_MODEL=nomic-embed-text
|
|
109
105
|
|
|
110
|
-
# AI provider for code analysis
|
|
111
|
-
CHAT_PROVIDER=ollama
|
|
112
|
-
CHAT_MODEL=qwen2.5-coder:7b
|
|
113
|
-
|
|
114
|
-
# OpenAI-compatible (e.g. DeepSeek)
|
|
106
|
+
# Pick your AI provider for code analysis
|
|
115
107
|
CHAT_PROVIDER=openai-compatible
|
|
116
|
-
CHAT_BASE_URL=https://api.deepseek.com
|
|
108
|
+
CHAT_BASE_URL=https://api.deepseek.com
|
|
117
109
|
CHAT_MODEL=deepseek-chat
|
|
118
110
|
CHAT_API_KEY=sk-...
|
|
119
111
|
```
|
|
120
112
|
|
|
121
|
-
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Links
|
|
122
116
|
|
|
117
|
+
- [Website](https://memory-core.shahmilsaari.my/)
|
|
123
118
|
- [Commands reference](COMMANDS.md)
|
|
124
|
-
- [Dashboard](docs/dashboard.md)
|
|
125
|
-
|
|
126
|
-
|
|
119
|
+
- [Dashboard guide](docs/dashboard.md)
|
|
120
|
+
|
|
121
|
+
---
|
|
127
122
|
|
|
128
123
|
## License
|
|
129
124
|
|
package/dist/cli.js
CHANGED
|
@@ -1074,7 +1074,8 @@ program.command("init").description("Initialize memory-core in the current proje
|
|
|
1074
1074
|
console.log(chalk.green(" \u2713 Created .archmind/layers.json"));
|
|
1075
1075
|
}
|
|
1076
1076
|
if (!existsSync(rulesPath)) {
|
|
1077
|
-
|
|
1077
|
+
const arch2 = backendArchitecture ?? frontendFramework ?? "custom";
|
|
1078
|
+
writeFileSync(rulesPath, JSON.stringify(buildArchRules(arch2), null, 2) + "\n", "utf-8");
|
|
1078
1079
|
console.log(chalk.green(" \u2713 Created .archmind/rules.json"));
|
|
1079
1080
|
}
|
|
1080
1081
|
if (!existsSync(archmindGitignorePath)) {
|
|
@@ -1752,7 +1753,7 @@ program.command("dashboard").description("Start the live Svelte dashboard with W
|
|
|
1752
1753
|
}
|
|
1753
1754
|
return void 0;
|
|
1754
1755
|
};
|
|
1755
|
-
const { startDashboard } = await import("./dashboard-server-
|
|
1756
|
+
const { startDashboard } = await import("./dashboard-server-S6T2XPRI.js");
|
|
1756
1757
|
await startDashboard({
|
|
1757
1758
|
port: parseInt(opts.port, 10),
|
|
1758
1759
|
path: resolveDashboardPath(),
|
|
@@ -1802,6 +1803,19 @@ program.command("seed").description("Load all predefined memories into the datab
|
|
|
1802
1803
|
const dbVersionPath = join(process.cwd(), ".memory-core-db-version");
|
|
1803
1804
|
writeFileSync(dbVersionPath, (/* @__PURE__ */ new Date()).toISOString() + "\n", "utf-8");
|
|
1804
1805
|
}
|
|
1806
|
+
if (opts.arch) {
|
|
1807
|
+
try {
|
|
1808
|
+
const archmindDir = join(process.cwd(), ".archmind");
|
|
1809
|
+
mkdirSync(archmindDir, { recursive: true });
|
|
1810
|
+
const layersPath = join(archmindDir, "layers.json");
|
|
1811
|
+
const rulesPath = join(archmindDir, "rules.json");
|
|
1812
|
+
writeFileSync(layersPath, JSON.stringify(buildLayersTemplate(opts.arch), null, 2) + "\n", "utf-8");
|
|
1813
|
+
writeFileSync(rulesPath, JSON.stringify(buildArchRules(opts.arch), null, 2) + "\n", "utf-8");
|
|
1814
|
+
console.log(chalk.green(` \u2713 Updated .archmind/layers.json for ${opts.arch}`));
|
|
1815
|
+
console.log(chalk.green(` \u2713 Updated .archmind/rules.json for ${opts.arch}`));
|
|
1816
|
+
} catch {
|
|
1817
|
+
}
|
|
1818
|
+
}
|
|
1805
1819
|
console.log(chalk.bold.green(`
|
|
1806
1820
|
Done. ${saved} memories seeded, ${skipped} skipped.
|
|
1807
1821
|
`));
|
|
@@ -2561,51 +2575,225 @@ program.command("watch").description("Watch source files and check violations in
|
|
|
2561
2575
|
});
|
|
2562
2576
|
});
|
|
2563
2577
|
var ARCHMIND_DIR = join(process.cwd(), ".archmind");
|
|
2564
|
-
var DEFAULT_ARCH_RULES = {
|
|
2565
|
-
rules: [
|
|
2566
|
-
{ id: "domain-no-infra", name: "Domain must not import infrastructure", fromLayer: "domain", toLayer: "infrastructure", allowed: false, severity: "critical", enforcement: "block" },
|
|
2567
|
-
{ id: "domain-no-api", name: "Domain must not import API layer", fromLayer: "domain", toLayer: "api", allowed: false, severity: "critical", enforcement: "block" },
|
|
2568
|
-
{ id: "api-no-infra-direct", name: "API should not import infrastructure directly", fromLayer: "api", toLayer: "infrastructure", allowed: false, severity: "medium", enforcement: "warn" },
|
|
2569
|
-
{ id: "api-depends-on-domain", name: "API depends on domain", fromLayer: "api", toLayer: "domain", allowed: true, severity: "low", enforcement: "suggest" },
|
|
2570
|
-
{ id: "no-circular", name: "No circular dependencies", fromLayer: "*", toLayer: "*", allowed: false, severity: "critical", enforcement: "block" },
|
|
2571
|
-
{ id: "application-no-api", name: "Application must not import API layer", fromLayer: "application", toLayer: "api", allowed: false, severity: "critical", enforcement: "block" },
|
|
2572
|
-
{ id: "application-uses-domain", name: "Application depends on domain", fromLayer: "application", toLayer: "domain", allowed: true, severity: "low", enforcement: "suggest" },
|
|
2573
|
-
{ id: "shared-no-domain", name: "Shared must not import domain", fromLayer: "shared", toLayer: "domain", allowed: false, severity: "medium", enforcement: "warn" }
|
|
2574
|
-
]
|
|
2575
|
-
};
|
|
2576
2578
|
function buildLayersTemplate(arch2) {
|
|
2577
|
-
|
|
2578
|
-
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2586
|
-
|
|
2587
|
-
|
|
2579
|
+
switch (arch2) {
|
|
2580
|
+
case "nestjs":
|
|
2581
|
+
return {
|
|
2582
|
+
layers: [
|
|
2583
|
+
{ name: "modules", paths: ["src/modules/**"], description: "Feature modules \u2014 each owns its controller, service, DTOs, entities" },
|
|
2584
|
+
{ name: "controllers", paths: ["src/modules/*/controllers/**", "src/modules/*.controller.ts"], description: "HTTP request handlers \u2014 thin, delegate to services" },
|
|
2585
|
+
{ name: "services", paths: ["src/modules/*/services/**", "src/modules/*.service.ts"], description: "Business logic \u2014 never import controllers or HTTP classes" },
|
|
2586
|
+
{ name: "repositories", paths: ["src/modules/*/repositories/**"], description: "Data access \u2014 services depend on these interfaces" },
|
|
2587
|
+
{ name: "common", paths: ["src/common/**", "src/guards/**", "src/filters/**", "src/interceptors/**", "src/pipes/**"], description: "Guards, filters, interceptors, pipes" }
|
|
2588
|
+
]
|
|
2589
|
+
};
|
|
2590
|
+
case "mvc":
|
|
2591
|
+
return {
|
|
2592
|
+
layers: [
|
|
2593
|
+
{ name: "models", paths: ["src/models/**", "app/models/**"], description: "Data models \u2014 represent DB records" },
|
|
2594
|
+
{ name: "controllers", paths: ["src/controllers/**", "app/controllers/**"], description: "Route handlers \u2014 thin, delegate to services" },
|
|
2595
|
+
{ name: "services", paths: ["src/services/**", "app/services/**"], description: "Business logic \u2014 called by controllers" },
|
|
2596
|
+
{ name: "views", paths: ["src/views/**", "app/views/**", "resources/views/**"], description: "Templates and view logic" },
|
|
2597
|
+
{ name: "shared", paths: ["src/utils/**", "src/helpers/**", "app/helpers/**"], description: "Shared utilities and helpers" }
|
|
2598
|
+
]
|
|
2599
|
+
};
|
|
2600
|
+
case "laravel-service-repository":
|
|
2601
|
+
return {
|
|
2602
|
+
layers: [
|
|
2603
|
+
{ name: "models", paths: ["app/Models/**"], description: "Eloquent models" },
|
|
2604
|
+
{ name: "controllers", paths: ["app/Http/Controllers/**"], description: "HTTP controllers \u2014 thin, delegate to services" },
|
|
2605
|
+
{ name: "services", paths: ["app/Services/**"], description: "Business logic services" },
|
|
2606
|
+
{ name: "repositories", paths: ["app/Repositories/**"], description: "Data access \u2014 services depend on these" },
|
|
2607
|
+
{ name: "shared", paths: ["app/Helpers/**", "app/Traits/**"], description: "Helpers and traits" }
|
|
2608
|
+
]
|
|
2609
|
+
};
|
|
2610
|
+
case "go-api":
|
|
2611
|
+
return {
|
|
2612
|
+
layers: [
|
|
2613
|
+
{ name: "handlers", paths: ["internal/handlers/**", "api/**"], description: "HTTP handlers \u2014 parse request, call service, write response" },
|
|
2614
|
+
{ name: "services", paths: ["internal/services/**"], description: "Business logic \u2014 orchestrates domain and repositories" },
|
|
2615
|
+
{ name: "repositories", paths: ["internal/repositories/**", "internal/store/**"], description: "Data access \u2014 DB queries, external calls" },
|
|
2616
|
+
{ name: "models", paths: ["internal/models/**", "internal/domain/**"], description: "Structs and domain types" },
|
|
2617
|
+
{ name: "shared", paths: ["pkg/**", "internal/utils/**"], description: "Shared packages \u2014 no business logic" }
|
|
2618
|
+
]
|
|
2619
|
+
};
|
|
2620
|
+
case "react":
|
|
2621
|
+
return {
|
|
2622
|
+
layers: [
|
|
2623
|
+
{ name: "pages", paths: ["src/pages/**", "src/app/**", "src/routes/**"], description: "Route-level components \u2014 wire hooks and components together" },
|
|
2624
|
+
{ name: "components", paths: ["src/components/**"], description: "Reusable UI components \u2014 presentational and feature" },
|
|
2625
|
+
{ name: "hooks", paths: ["src/hooks/**"], description: "Custom hooks \u2014 stateful and side-effect logic" },
|
|
2626
|
+
{ name: "store", paths: ["src/store/**", "src/state/**", "src/atoms/**"], description: "Global client state \u2014 Zustand, Jotai, Redux" },
|
|
2627
|
+
{ name: "services", paths: ["src/services/**", "src/api/**", "src/clients/**"], description: "API clients and external service calls" }
|
|
2628
|
+
]
|
|
2629
|
+
};
|
|
2630
|
+
case "vue":
|
|
2631
|
+
return {
|
|
2632
|
+
layers: [
|
|
2633
|
+
{ name: "pages", paths: ["src/pages/**", "src/views/**"], description: "Route-level views" },
|
|
2634
|
+
{ name: "components", paths: ["src/components/**"], description: "Reusable Vue components" },
|
|
2635
|
+
{ name: "composables", paths: ["src/composables/**"], description: "Composables \u2014 stateful and reusable logic" },
|
|
2636
|
+
{ name: "store", paths: ["src/stores/**", "src/store/**"], description: "Pinia stores \u2014 global state" },
|
|
2637
|
+
{ name: "services", paths: ["src/services/**", "src/api/**"], description: "API clients and external calls" }
|
|
2638
|
+
]
|
|
2639
|
+
};
|
|
2640
|
+
case "svelte":
|
|
2641
|
+
return {
|
|
2642
|
+
layers: [
|
|
2643
|
+
{ name: "routes", paths: ["src/routes/**"], description: "SvelteKit routes \u2014 pages and layouts" },
|
|
2644
|
+
{ name: "components", paths: ["src/lib/components/**", "src/components/**"], description: "Reusable Svelte components" },
|
|
2645
|
+
{ name: "stores", paths: ["src/lib/stores/**", "src/stores/**"], description: "Svelte stores \u2014 reactive state" },
|
|
2646
|
+
{ name: "lib", paths: ["src/lib/**"], description: "Shared utilities, server actions, API clients" },
|
|
2647
|
+
{ name: "utils", paths: ["src/utils/**", "src/helpers/**"], description: "Pure utility functions" }
|
|
2648
|
+
]
|
|
2649
|
+
};
|
|
2650
|
+
case "nuxt":
|
|
2651
|
+
return {
|
|
2652
|
+
layers: [
|
|
2653
|
+
{ name: "pages", paths: ["pages/**"], description: "Nuxt pages \u2014 file-based routing" },
|
|
2654
|
+
{ name: "components", paths: ["components/**"], description: "Auto-imported Vue components" },
|
|
2655
|
+
{ name: "composables", paths: ["composables/**"], description: "Auto-imported composables" },
|
|
2656
|
+
{ name: "server", paths: ["server/**"], description: "Nitro server routes and API" },
|
|
2657
|
+
{ name: "utils", paths: ["utils/**", "lib/**"], description: "Shared utilities" }
|
|
2658
|
+
]
|
|
2659
|
+
};
|
|
2660
|
+
case "angular":
|
|
2661
|
+
return {
|
|
2662
|
+
layers: [
|
|
2663
|
+
{ name: "modules", paths: ["src/app/**/*.module.ts"], description: "Angular feature modules" },
|
|
2664
|
+
{ name: "components", paths: ["src/app/**/*.component.ts"], description: "Components \u2014 UI logic only" },
|
|
2665
|
+
{ name: "services", paths: ["src/app/**/*.service.ts"], description: "Injectable services \u2014 business logic and HTTP" },
|
|
2666
|
+
{ name: "guards", paths: ["src/app/**/*.guard.ts"], description: "Route guards \u2014 auth and access control" },
|
|
2667
|
+
{ name: "shared", paths: ["src/app/shared/**", "src/shared/**"], description: "Shared module \u2014 directives, pipes, components" }
|
|
2668
|
+
]
|
|
2669
|
+
};
|
|
2670
|
+
case "react-native":
|
|
2671
|
+
return {
|
|
2672
|
+
layers: [
|
|
2673
|
+
{ name: "screens", paths: ["src/screens/**", "app/**"], description: "Screen components \u2014 navigation targets" },
|
|
2674
|
+
{ name: "components", paths: ["src/components/**"], description: "Reusable UI components" },
|
|
2675
|
+
{ name: "hooks", paths: ["src/hooks/**"], description: "Custom hooks \u2014 stateful logic" },
|
|
2676
|
+
{ name: "store", paths: ["src/store/**", "src/state/**"], description: "Global state \u2014 Zustand, Redux, Jotai" },
|
|
2677
|
+
{ name: "services", paths: ["src/services/**", "src/api/**"], description: "API clients and native service wrappers" }
|
|
2678
|
+
]
|
|
2679
|
+
};
|
|
2680
|
+
case "hexagonal":
|
|
2681
|
+
return {
|
|
2682
|
+
layers: [
|
|
2683
|
+
{ name: "domain", paths: ["src/domain/**", "src/core/**"], description: "Pure domain \u2014 entities, value objects, domain services" },
|
|
2684
|
+
{ name: "ports", paths: ["src/ports/**", "src/application/ports/**"], description: "Interfaces \u2014 driving and driven port contracts" },
|
|
2685
|
+
{ name: "adapters", paths: ["src/adapters/**", "src/infrastructure/adapters/**"], description: "Adapter implementations \u2014 REST, DB, queues" },
|
|
2686
|
+
{ name: "infrastructure", paths: ["src/infrastructure/**"], description: "Technical infrastructure \u2014 config, DI, framework" },
|
|
2687
|
+
{ name: "shared", paths: ["src/shared/**", "src/utils/**"], description: "Cross-cutting utilities" }
|
|
2688
|
+
]
|
|
2689
|
+
};
|
|
2690
|
+
case "modular-monolith":
|
|
2691
|
+
return {
|
|
2692
|
+
layers: [
|
|
2693
|
+
{ name: "modules", paths: ["src/modules/**"], description: "Self-contained feature modules \u2014 each owns its DB, API, logic" },
|
|
2694
|
+
{ name: "shared", paths: ["src/shared/**", "src/common/**"], description: "Shared kernel \u2014 only pure utilities, no module business logic" },
|
|
2695
|
+
{ name: "infrastructure", paths: ["src/infrastructure/**"], description: "Technical infrastructure \u2014 DB connections, messaging, config" },
|
|
2696
|
+
{ name: "api", paths: ["src/api/**", "src/interfaces/**"], description: "Public API surface \u2014 HTTP, GraphQL, events" }
|
|
2697
|
+
]
|
|
2698
|
+
};
|
|
2699
|
+
default:
|
|
2700
|
+
return {
|
|
2701
|
+
layers: [
|
|
2702
|
+
{ name: "domain", paths: ["src/domain/**", "src/core/domain/**", "src/modules/*/domain/**"], description: "Business logic, entities, use cases" },
|
|
2703
|
+
{ name: "application", paths: ["src/application/**", "src/core/application/**", "src/modules/*/application/**"], description: "Use cases and orchestration" },
|
|
2704
|
+
{ name: "infrastructure", paths: ["src/infrastructure/**", "src/modules/*/infrastructure/**"], description: "Database, external APIs, low-level I/O" },
|
|
2705
|
+
{ name: "api", paths: ["src/api/**", "src/interfaces/**", "src/controllers/**"], description: "HTTP handlers, request/response" },
|
|
2706
|
+
{ name: "shared", paths: ["src/shared/**", "src/utils/**", "src/helpers/**"], description: "Utilities, helpers, constants" }
|
|
2707
|
+
]
|
|
2708
|
+
};
|
|
2588
2709
|
}
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2593
|
-
|
|
2594
|
-
{
|
|
2595
|
-
{ name: "
|
|
2596
|
-
{
|
|
2597
|
-
|
|
2598
|
-
|
|
2710
|
+
}
|
|
2711
|
+
function buildArchRules(arch2) {
|
|
2712
|
+
switch (arch2) {
|
|
2713
|
+
case "nestjs":
|
|
2714
|
+
return { rules: [
|
|
2715
|
+
{ id: "no-circular", name: "No circular dependencies", fromLayer: "*", toLayer: "*", allowed: false, severity: "critical", enforcement: "block" },
|
|
2716
|
+
{ id: "controllers-no-repos", name: "Controllers must not import repositories", fromLayer: "controllers", toLayer: "repositories", allowed: false, severity: "critical", enforcement: "block" },
|
|
2717
|
+
{ id: "services-no-controllers", name: "Services must not import controllers", fromLayer: "services", toLayer: "controllers", allowed: false, severity: "critical", enforcement: "block" },
|
|
2718
|
+
{ id: "controllers-use-services", name: "Controllers delegate to services", fromLayer: "controllers", toLayer: "services", allowed: true, severity: "low", enforcement: "suggest" },
|
|
2719
|
+
{ id: "services-use-repos", name: "Services use repositories", fromLayer: "services", toLayer: "repositories", allowed: true, severity: "low", enforcement: "suggest" },
|
|
2720
|
+
{ id: "common-no-modules", name: "Common must not import feature modules", fromLayer: "common", toLayer: "modules", allowed: false, severity: "medium", enforcement: "warn" }
|
|
2721
|
+
] };
|
|
2722
|
+
case "mvc":
|
|
2723
|
+
case "laravel-service-repository":
|
|
2724
|
+
return { rules: [
|
|
2725
|
+
{ id: "no-circular", name: "No circular dependencies", fromLayer: "*", toLayer: "*", allowed: false, severity: "critical", enforcement: "block" },
|
|
2726
|
+
{ id: "controllers-no-models", name: "Controllers must not query models directly", fromLayer: "controllers", toLayer: "models", allowed: false, severity: "medium", enforcement: "warn" },
|
|
2727
|
+
{ id: "controllers-use-services", name: "Controllers delegate to services", fromLayer: "controllers", toLayer: "services", allowed: true, severity: "low", enforcement: "suggest" },
|
|
2728
|
+
{ id: "services-use-repos", name: "Services use repositories for data access", fromLayer: "services", toLayer: "repositories", allowed: true, severity: "low", enforcement: "suggest" },
|
|
2729
|
+
{ id: "shared-no-controllers", name: "Shared must not import controllers", fromLayer: "shared", toLayer: "controllers", allowed: false, severity: "medium", enforcement: "warn" }
|
|
2730
|
+
] };
|
|
2731
|
+
case "go-api":
|
|
2732
|
+
return { rules: [
|
|
2733
|
+
{ id: "no-circular", name: "No circular dependencies", fromLayer: "*", toLayer: "*", allowed: false, severity: "critical", enforcement: "block" },
|
|
2734
|
+
{ id: "handlers-no-repos", name: "Handlers must not import repositories", fromLayer: "handlers", toLayer: "repositories", allowed: false, severity: "critical", enforcement: "block" },
|
|
2735
|
+
{ id: "handlers-use-services", name: "Handlers call services only", fromLayer: "handlers", toLayer: "services", allowed: true, severity: "low", enforcement: "suggest" },
|
|
2736
|
+
{ id: "services-use-repos", name: "Services use repositories", fromLayer: "services", toLayer: "repositories", allowed: true, severity: "low", enforcement: "suggest" },
|
|
2737
|
+
{ id: "shared-no-services", name: "Shared must not import services", fromLayer: "shared", toLayer: "services", allowed: false, severity: "medium", enforcement: "warn" }
|
|
2738
|
+
] };
|
|
2739
|
+
case "react":
|
|
2740
|
+
case "react-native":
|
|
2741
|
+
return { rules: [
|
|
2742
|
+
{ id: "no-circular", name: "No circular dependencies", fromLayer: "*", toLayer: "*", allowed: false, severity: "critical", enforcement: "block" },
|
|
2743
|
+
{ id: "components-no-pages", name: "Components must not import pages", fromLayer: "components", toLayer: "pages", allowed: false, severity: "critical", enforcement: "block" },
|
|
2744
|
+
{ id: "components-no-store", name: "Presentational components must not read store", fromLayer: "components", toLayer: "store", allowed: false, severity: "medium", enforcement: "warn" },
|
|
2745
|
+
{ id: "services-no-components", name: "Services must not import components", fromLayer: "services", toLayer: "components", allowed: false, severity: "critical", enforcement: "block" },
|
|
2746
|
+
{ id: "hooks-use-services", name: "Hooks use services for API calls", fromLayer: "hooks", toLayer: "services", allowed: true, severity: "low", enforcement: "suggest" }
|
|
2747
|
+
] };
|
|
2748
|
+
case "vue":
|
|
2749
|
+
case "nuxt":
|
|
2750
|
+
return { rules: [
|
|
2751
|
+
{ id: "no-circular", name: "No circular dependencies", fromLayer: "*", toLayer: "*", allowed: false, severity: "critical", enforcement: "block" },
|
|
2752
|
+
{ id: "components-no-pages", name: "Components must not import pages/views", fromLayer: "components", toLayer: "pages", allowed: false, severity: "critical", enforcement: "block" },
|
|
2753
|
+
{ id: "services-no-components", name: "Services must not import components", fromLayer: "services", toLayer: "components", allowed: false, severity: "critical", enforcement: "block" },
|
|
2754
|
+
{ id: "composables-use-services", name: "Composables use services for API calls", fromLayer: "composables", toLayer: "services", allowed: true, severity: "low", enforcement: "suggest" },
|
|
2755
|
+
{ id: "store-no-components", name: "Store must not import components", fromLayer: "store", toLayer: "components", allowed: false, severity: "medium", enforcement: "warn" }
|
|
2756
|
+
] };
|
|
2757
|
+
case "svelte":
|
|
2758
|
+
return { rules: [
|
|
2759
|
+
{ id: "no-circular", name: "No circular dependencies", fromLayer: "*", toLayer: "*", allowed: false, severity: "critical", enforcement: "block" },
|
|
2760
|
+
{ id: "components-no-routes", name: "Components must not import route modules", fromLayer: "components", toLayer: "routes", allowed: false, severity: "critical", enforcement: "block" },
|
|
2761
|
+
{ id: "stores-no-components", name: "Stores must not import components", fromLayer: "stores", toLayer: "components", allowed: false, severity: "critical", enforcement: "block" },
|
|
2762
|
+
{ id: "utils-no-stores", name: "Utils must not import stores", fromLayer: "utils", toLayer: "stores", allowed: false, severity: "medium", enforcement: "warn" }
|
|
2763
|
+
] };
|
|
2764
|
+
case "angular":
|
|
2765
|
+
return { rules: [
|
|
2766
|
+
{ id: "no-circular", name: "No circular dependencies", fromLayer: "*", toLayer: "*", allowed: false, severity: "critical", enforcement: "block" },
|
|
2767
|
+
{ id: "components-no-services-in-template", name: "Components use DI \u2014 do not import services directly", fromLayer: "components", toLayer: "services", allowed: false, severity: "medium", enforcement: "warn" },
|
|
2768
|
+
{ id: "guards-use-services", name: "Guards use auth services", fromLayer: "guards", toLayer: "services", allowed: true, severity: "low", enforcement: "suggest" },
|
|
2769
|
+
{ id: "shared-no-modules", name: "Shared must not import feature modules", fromLayer: "shared", toLayer: "modules", allowed: false, severity: "medium", enforcement: "warn" }
|
|
2770
|
+
] };
|
|
2771
|
+
case "hexagonal":
|
|
2772
|
+
return { rules: [
|
|
2773
|
+
{ id: "no-circular", name: "No circular dependencies", fromLayer: "*", toLayer: "*", allowed: false, severity: "critical", enforcement: "block" },
|
|
2774
|
+
{ id: "domain-no-adapters", name: "Domain must not import adapters", fromLayer: "domain", toLayer: "adapters", allowed: false, severity: "critical", enforcement: "block" },
|
|
2775
|
+
{ id: "domain-no-infra", name: "Domain must not import infrastructure", fromLayer: "domain", toLayer: "infrastructure", allowed: false, severity: "critical", enforcement: "block" },
|
|
2776
|
+
{ id: "adapters-implement-ports", name: "Adapters implement port interfaces", fromLayer: "adapters", toLayer: "ports", allowed: true, severity: "low", enforcement: "suggest" },
|
|
2777
|
+
{ id: "ports-no-adapters", name: "Ports must not import adapters", fromLayer: "ports", toLayer: "adapters", allowed: false, severity: "critical", enforcement: "block" }
|
|
2778
|
+
] };
|
|
2779
|
+
case "modular-monolith":
|
|
2780
|
+
return { rules: [
|
|
2781
|
+
{ id: "no-circular", name: "No circular dependencies", fromLayer: "*", toLayer: "*", allowed: false, severity: "critical", enforcement: "block" },
|
|
2782
|
+
{ id: "modules-no-direct-import", name: "Modules must not import each other directly", fromLayer: "modules", toLayer: "modules", allowed: false, severity: "critical", enforcement: "block" },
|
|
2783
|
+
{ id: "shared-no-modules", name: "Shared kernel must not import feature modules", fromLayer: "shared", toLayer: "modules", allowed: false, severity: "critical", enforcement: "block" },
|
|
2784
|
+
{ id: "modules-use-shared", name: "Modules may use shared kernel", fromLayer: "modules", toLayer: "shared", allowed: true, severity: "low", enforcement: "suggest" }
|
|
2785
|
+
] };
|
|
2786
|
+
default:
|
|
2787
|
+
return { rules: [
|
|
2788
|
+
{ id: "no-circular", name: "No circular dependencies", fromLayer: "*", toLayer: "*", allowed: false, severity: "critical", enforcement: "block" },
|
|
2789
|
+
{ id: "domain-no-infra", name: "Domain must not import infrastructure", fromLayer: "domain", toLayer: "infrastructure", allowed: false, severity: "critical", enforcement: "block" },
|
|
2790
|
+
{ id: "domain-no-api", name: "Domain must not import API layer", fromLayer: "domain", toLayer: "api", allowed: false, severity: "critical", enforcement: "block" },
|
|
2791
|
+
{ id: "api-no-infra-direct", name: "API should not import infrastructure directly", fromLayer: "api", toLayer: "infrastructure", allowed: false, severity: "medium", enforcement: "warn" },
|
|
2792
|
+
{ id: "application-no-api", name: "Application must not import API layer", fromLayer: "application", toLayer: "api", allowed: false, severity: "critical", enforcement: "block" },
|
|
2793
|
+
{ id: "application-uses-domain", name: "Application depends on domain", fromLayer: "application", toLayer: "domain", allowed: true, severity: "low", enforcement: "suggest" },
|
|
2794
|
+
{ id: "shared-no-domain", name: "Shared must not import domain", fromLayer: "shared", toLayer: "domain", allowed: false, severity: "medium", enforcement: "warn" }
|
|
2795
|
+
] };
|
|
2599
2796
|
}
|
|
2600
|
-
return {
|
|
2601
|
-
layers: [
|
|
2602
|
-
{ name: "domain", paths: ["src/domain/**", "src/core/domain/**", "src/modules/*/domain/**"], description: "Business logic, entities, use cases" },
|
|
2603
|
-
{ name: "application", paths: ["src/application/**", "src/core/application/**", "src/modules/*/application/**"], description: "Use cases and orchestration" },
|
|
2604
|
-
{ name: "infrastructure", paths: ["src/infrastructure/**", "src/modules/*/infrastructure/**"], description: "Database, external APIs, low-level I/O" },
|
|
2605
|
-
{ name: "api", paths: ["src/api/**", "src/interfaces/**", "src/controllers/**"], description: "HTTP handlers, request/response" },
|
|
2606
|
-
{ name: "shared", paths: ["src/shared/**", "src/utils/**", "src/helpers/**"], description: "Utilities, helpers, constants" }
|
|
2607
|
-
]
|
|
2608
|
-
};
|
|
2609
2797
|
}
|
|
2610
2798
|
function getArchmindDir() {
|
|
2611
2799
|
return ARCHMIND_DIR;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var To=Object.defineProperty;var Un=e=>{throw TypeError(e)};var Co=(e,t,r)=>t in e?To(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var kt=(e,t,r)=>Co(e,typeof t!="symbol"?t+"":t,r),na=(e,t,r)=>t.has(e)||Un("Cannot "+r);var v=(e,t,r)=>(na(e,t,"read from private field"),r?r.call(e):t.get(e)),V=(e,t,r)=>t.has(e)?Un("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),z=(e,t,r,a)=>(na(e,t,"write to private field"),a?a.call(e,r):t.set(e,r),r),ue=(e,t,r)=>(na(e,t,"access private method"),r);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))a(n);new MutationObserver(n=>{for(const i of n)if(i.type==="childList")for(const d of i.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&a(d)}).observe(document,{childList:!0,subtree:!0});function r(n){const i={};return n.integrity&&(i.integrity=n.integrity),n.referrerPolicy&&(i.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?i.credentials="include":n.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function a(n){if(n.ep)return;n.ep=!0;const i=r(n);fetch(n.href,i)}})();const Oo=!1;var Ea=Array.isArray,Lo=Array.prototype.indexOf,Vs=Array.prototype.includes,Vr=Array.from,Ro=Object.defineProperty,nr=Object.getOwnPropertyDescriptor,cl=Object.getOwnPropertyDescriptors,No=Object.prototype,Io=Array.prototype,Sa=Object.getPrototypeOf,Kn=Object.isExtensible;const Do=()=>{};function Fo(e){return e()}function va(e){for(var t=0;t<e.length;t++)e[t]()}function vl(){var e,t,r=new Promise((a,n)=>{e=a,t=n});return{promise:r,resolve:e,reject:t}}const Ke=2,Us=4,mr=8,dl=1<<24,jt=16,Mt=32,ds=64,da=128,bt=512,Oe=1024,We=2048,At=4096,Ge=8192,mt=16384,Ls=32768,qn=1<<25,Ks=65536,fa=1<<17,$o=1<<18,Gs=1<<19,fl=1<<20,Pt=1<<25,As=65536,Pr=1<<21,cr=1<<22,cs=1<<23,xs=Symbol("$state"),Po=Symbol(""),qt=new class extends Error{constructor(){super(...arguments);kt(this,"name","StaleReactionError");kt(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}};function jo(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function Ho(e,t,r){throw new Error("https://svelte.dev/e/each_key_duplicate")}function Bo(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Wo(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Vo(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Uo(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function Ko(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function qo(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function zo(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function Yo(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const Go=1,Xo=2,ul=4,Jo=8,Qo=16,Zo=1,ec=2,Fe=Symbol(),pl="http://www.w3.org/1999/xhtml";function tc(){console.warn("https://svelte.dev/e/derived_inert")}function sc(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function rc(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function hl(e){return e===this.v}function ac(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function _l(e){return!ac(e,this.v)}let Ur=!1,nc=!1;function lc(){Ur=!0}let Le=null;function qs(e){Le=e}function bl(e,t=!1,r){Le={p:Le,i:!1,c:null,e:null,s:e,x:null,r:G,l:Ur&&!t?{s:null,u:null,$:[]}:null}}function ml(e){var t=Le,r=t.e;if(r!==null){t.e=null;for(var a of r)Pl(a)}return t.i=!0,Le=t.p,{}}function gr(){return!Ur||Le!==null&&Le.l===null}let _s=[];function gl(){var e=_s;_s=[],va(e)}function vs(e){if(_s.length===0&&!lr){var t=_s;queueMicrotask(()=>{t===_s&&gl()})}_s.push(e)}function ic(){for(;_s.length>0;)gl()}function yl(e){var t=G;if(t===null)return X.f|=cs,e;if(!(t.f&Ls)&&!(t.f&Us))throw e;os(e,t)}function os(e,t){for(;t!==null;){if(t.f&da){if(!(t.f&Ls))throw e;try{t.b.error(e);return}catch(r){e=r}}t=t.parent}throw e}const oc=-7169;function we(e,t){e.f=e.f&oc|t}function Ma(e){e.f&bt||e.deps===null?we(e,Oe):we(e,At)}function wl(e){if(e!==null)for(const t of e)!(t.f&Ke)||!(t.f&As)||(t.f^=As,wl(t.deps))}function kl(e,t,r){e.f&We?t.add(e):e.f&At&&r.add(e),wl(e.deps),we(e,Oe)}const hs=new Set;let L=null,Be=null,ua=null,lr=!1,la=!1,Fs=null,Or=null;var zn=0;let cc=1;var Ps,js,ms,zt,Dt,fr,nt,ur,ls,Yt,Ft,Hs,Bs,gs,Re,Lr,xl,Rr,pa,Nr,vc;const Hr=class Hr{constructor(){V(this,Re);kt(this,"id",cc++);kt(this,"current",new Map);kt(this,"previous",new Map);V(this,Ps,new Set);V(this,js,new Set);V(this,ms,new Set);V(this,zt,new Map);V(this,Dt,new Map);V(this,fr,null);V(this,nt,[]);V(this,ur,[]);V(this,ls,new Set);V(this,Yt,new Set);V(this,Ft,new Map);V(this,Hs,new Set);kt(this,"is_fork",!1);V(this,Bs,!1);V(this,gs,new Set)}skip_effect(t){v(this,Ft).has(t)||v(this,Ft).set(t,{d:[],m:[]}),v(this,Hs).delete(t)}unskip_effect(t,r=a=>this.schedule(a)){var a=v(this,Ft).get(t);if(a){v(this,Ft).delete(t);for(var n of a.d)we(n,We),r(n);for(n of a.m)we(n,At),r(n)}v(this,Hs).add(t)}capture(t,r,a=!1){t.v!==Fe&&!this.previous.has(t)&&this.previous.set(t,t.v),t.f&cs||(this.current.set(t,[r,a]),Be==null||Be.set(t,r)),this.is_fork||(t.v=r)}activate(){L=this}deactivate(){L=null,Be=null}flush(){try{la=!0,L=this,ue(this,Re,Rr).call(this)}finally{zn=0,ua=null,Fs=null,Or=null,la=!1,L=null,Be=null,Es.clear()}}discard(){for(const t of v(this,js))t(this);v(this,js).clear(),v(this,ms).clear(),hs.delete(this)}register_created_effect(t){v(this,ur).push(t)}increment(t,r){let a=v(this,zt).get(r)??0;if(v(this,zt).set(r,a+1),t){let n=v(this,Dt).get(r)??0;v(this,Dt).set(r,n+1)}}decrement(t,r,a){let n=v(this,zt).get(r)??0;if(n===1?v(this,zt).delete(r):v(this,zt).set(r,n-1),t){let i=v(this,Dt).get(r)??0;i===1?v(this,Dt).delete(r):v(this,Dt).set(r,i-1)}v(this,Bs)||a||(z(this,Bs,!0),vs(()=>{z(this,Bs,!1),this.flush()}))}transfer_effects(t,r){for(const a of t)v(this,ls).add(a);for(const a of r)v(this,Yt).add(a);t.clear(),r.clear()}oncommit(t){v(this,Ps).add(t)}ondiscard(t){v(this,js).add(t)}on_fork_commit(t){v(this,ms).add(t)}run_fork_commit_callbacks(){for(const t of v(this,ms))t(this);v(this,ms).clear()}settled(){return(v(this,fr)??z(this,fr,vl())).promise}static ensure(){if(L===null){const t=L=new Hr;la||(hs.add(L),lr||vs(()=>{L===t&&t.flush()}))}return L}apply(){{Be=null;return}}schedule(t){var n;if(ua=t,(n=t.b)!=null&&n.is_pending&&t.f&(Us|mr|dl)&&!(t.f&Ls)){t.b.defer_effect(t);return}for(var r=t;r.parent!==null;){r=r.parent;var a=r.f;if(Fs!==null&&r===G&&(X===null||!(X.f&Ke)))return;if(a&(ds|Mt)){if(!(a&Oe))return;r.f^=Oe}}v(this,nt).push(r)}};Ps=new WeakMap,js=new WeakMap,ms=new WeakMap,zt=new WeakMap,Dt=new WeakMap,fr=new WeakMap,nt=new WeakMap,ur=new WeakMap,ls=new WeakMap,Yt=new WeakMap,Ft=new WeakMap,Hs=new WeakMap,Bs=new WeakMap,gs=new WeakMap,Re=new WeakSet,Lr=function(){return this.is_fork||v(this,Dt).size>0},xl=function(){for(const a of v(this,gs))for(const n of v(a,Dt).keys()){for(var t=!1,r=n;r.parent!==null;){if(v(this,Ft).has(r)){t=!0;break}r=r.parent}if(!t)return!0}return!1},Rr=function(){var u,f;if(zn++>1e3&&(hs.delete(this),fc()),!ue(this,Re,Lr).call(this)){for(const p of v(this,ls))v(this,Yt).delete(p),we(p,We),this.schedule(p);for(const p of v(this,Yt))we(p,At),this.schedule(p)}const t=v(this,nt);z(this,nt,[]),this.apply();var r=Fs=[],a=[],n=Or=[];for(const p of t)try{ue(this,Re,pa).call(this,p,r,a)}catch(m){throw Ml(p),m}if(L=null,n.length>0){var i=Hr.ensure();for(const p of n)i.schedule(p)}if(Fs=null,Or=null,ue(this,Re,Lr).call(this)||ue(this,Re,xl).call(this)){ue(this,Re,Nr).call(this,a),ue(this,Re,Nr).call(this,r);for(const[p,m]of v(this,Ft))Sl(p,m)}else{v(this,zt).size===0&&hs.delete(this),v(this,ls).clear(),v(this,Yt).clear();for(const p of v(this,Ps))p(this);v(this,Ps).clear(),Yn(a),Yn(r),(u=v(this,fr))==null||u.resolve()}var d=L;if(v(this,nt).length>0){const p=d??(d=this);v(p,nt).push(...v(this,nt).filter(m=>!v(p,nt).includes(m)))}d!==null&&(hs.add(d),ue(f=d,Re,Rr).call(f))},pa=function(t,r,a){t.f^=Oe;for(var n=t.first;n!==null;){var i=n.f,d=(i&(Mt|ds))!==0,u=d&&(i&Oe)!==0,f=u||(i&Ge)!==0||v(this,Ft).has(n);if(!f&&n.fn!==null){d?n.f^=Oe:i&Us?r.push(n):Xs(n)&&(i&jt&&v(this,Yt).add(n),Os(n));var p=n.first;if(p!==null){n=p;continue}}for(;n!==null;){var m=n.next;if(m!==null){n=m;break}n=n.parent}}},Nr=function(t){for(var r=0;r<t.length;r+=1)kl(t[r],v(this,ls),v(this,Yt))},vc=function(){var m,C,k;for(const E of hs){var t=E.id<this.id,r=[];for(const[y,[D,S]]of this.current){if(E.current.has(y)){var a=E.current.get(y)[0];if(t&&D!==a)E.current.set(y,[D,S]);else continue}r.push(y)}var n=[...E.current.keys()].filter(y=>!this.current.has(y));if(n.length===0)t&&E.discard();else if(r.length>0){if(t)for(const y of v(this,Hs))E.unskip_effect(y,D=>{var S;D.f&(jt|cr)?E.schedule(D):ue(S=E,Re,Nr).call(S,[D])});E.activate();var i=new Set,d=new Map;for(var u of r)El(u,n,i,d);d=new Map;var f=[...E.current.keys()].filter(y=>this.current.has(y)?this.current.get(y)[0]!==y:!0);for(const y of v(this,ur))!(y.f&(mt|Ge|fa))&&Aa(y,f,d)&&(y.f&(cr|jt)?(we(y,We),E.schedule(y)):v(E,ls).add(y));if(v(E,nt).length>0){E.apply();for(var p of v(E,nt))ue(m=E,Re,pa).call(m,p,[],[]);z(E,nt,[])}E.deactivate()}}for(const E of hs)v(E,gs).has(this)&&(v(E,gs).delete(this),v(E,gs).size===0&&!ue(C=E,Re,Lr).call(C)&&(E.activate(),ue(k=E,Re,Rr).call(k)))};let Ts=Hr;function dc(e){var t=lr;lr=!0;try{for(var r;;){if(ic(),L===null)return r;L.flush()}}finally{lr=t}}function fc(){try{Uo()}catch(e){os(e,ua)}}let xt=null;function Yn(e){var t=e.length;if(t!==0){for(var r=0;r<t;){var a=e[r++];if(!(a.f&(mt|Ge))&&Xs(a)&&(xt=new Set,Os(a),a.deps===null&&a.first===null&&a.nodes===null&&a.teardown===null&&a.ac===null&&Hl(a),(xt==null?void 0:xt.size)>0)){Es.clear();for(const n of xt){if(n.f&(mt|Ge))continue;const i=[n];let d=n.parent;for(;d!==null;)xt.has(d)&&(xt.delete(d),i.push(d)),d=d.parent;for(let u=i.length-1;u>=0;u--){const f=i[u];f.f&(mt|Ge)||Os(f)}}xt.clear()}}xt=null}}function El(e,t,r,a){if(!r.has(e)&&(r.add(e),e.reactions!==null))for(const n of e.reactions){const i=n.f;i&Ke?El(n,t,r,a):i&(cr|jt)&&!(i&We)&&Aa(n,t,a)&&(we(n,We),Ta(n))}}function Aa(e,t,r){const a=r.get(e);if(a!==void 0)return a;if(e.deps!==null)for(const n of e.deps){if(Vs.call(t,n))return!0;if(n.f&Ke&&Aa(n,t,r))return r.set(n,!0),!0}return r.set(e,!1),!1}function Ta(e){L.schedule(e)}function Sl(e,t){if(!(e.f&Mt&&e.f&Oe)){e.f&We?t.d.push(e):e.f&At&&t.m.push(e),we(e,Oe);for(var r=e.first;r!==null;)Sl(r,t),r=r.next}}function Ml(e){we(e,Oe);for(var t=e.first;t!==null;)Ml(t),t=t.next}function uc(e){let t=0,r=Cs(0),a;return()=>{La()&&(s(r),qr(()=>(t===0&&(a=h(()=>e(()=>ir(r)))),t+=1,()=>{vs(()=>{t-=1,t===0&&(a==null||a(),a=void 0,ir(r))})})))}}var pc=Ks|Gs;function hc(e,t,r,a){new _c(e,t,r,a)}var ut,xa,pt,ys,Ze,ht,Ye,lt,Gt,ws,is,Ws,pr,hr,Xt,Br,ke,bc,mc,gc,ha,Ir,Dr,_a,ba;class _c{constructor(t,r,a,n){V(this,ke);kt(this,"parent");kt(this,"is_pending",!1);kt(this,"transform_error");V(this,ut);V(this,xa,null);V(this,pt);V(this,ys);V(this,Ze);V(this,ht,null);V(this,Ye,null);V(this,lt,null);V(this,Gt,null);V(this,ws,0);V(this,is,0);V(this,Ws,!1);V(this,pr,new Set);V(this,hr,new Set);V(this,Xt,null);V(this,Br,uc(()=>(z(this,Xt,Cs(v(this,ws))),()=>{z(this,Xt,null)})));var i;z(this,ut,t),z(this,pt,r),z(this,ys,d=>{var u=G;u.b=this,u.f|=da,a(d)}),this.parent=G.b,this.transform_error=n??((i=this.parent)==null?void 0:i.transform_error)??(d=>d),z(this,Ze,Na(()=>{ue(this,ke,ha).call(this)},pc))}defer_effect(t){kl(t,v(this,pr),v(this,hr))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!v(this,pt).pending}update_pending_count(t,r){ue(this,ke,_a).call(this,t,r),z(this,ws,v(this,ws)+t),!(!v(this,Xt)||v(this,Ws))&&(z(this,Ws,!0),vs(()=>{z(this,Ws,!1),v(this,Xt)&&zs(v(this,Xt),v(this,ws))}))}get_effect_pending(){return v(this,Br).call(this),s(v(this,Xt))}error(t){if(!v(this,pt).onerror&&!v(this,pt).failed)throw t;L!=null&&L.is_fork?(v(this,ht)&&L.skip_effect(v(this,ht)),v(this,Ye)&&L.skip_effect(v(this,Ye)),v(this,lt)&&L.skip_effect(v(this,lt)),L.on_fork_commit(()=>{ue(this,ke,ba).call(this,t)})):ue(this,ke,ba).call(this,t)}}ut=new WeakMap,xa=new WeakMap,pt=new WeakMap,ys=new WeakMap,Ze=new WeakMap,ht=new WeakMap,Ye=new WeakMap,lt=new WeakMap,Gt=new WeakMap,ws=new WeakMap,is=new WeakMap,Ws=new WeakMap,pr=new WeakMap,hr=new WeakMap,Xt=new WeakMap,Br=new WeakMap,ke=new WeakSet,bc=function(){try{z(this,ht,_t(()=>v(this,ys).call(this,v(this,ut))))}catch(t){this.error(t)}},mc=function(t){const r=v(this,pt).failed;r&&z(this,lt,_t(()=>{r(v(this,ut),()=>t,()=>()=>{})}))},gc=function(){const t=v(this,pt).pending;t&&(this.is_pending=!0,z(this,Ye,_t(()=>t(v(this,ut)))),vs(()=>{var r=z(this,Gt,document.createDocumentFragment()),a=Jt();r.append(a),z(this,ht,ue(this,ke,Dr).call(this,()=>_t(()=>v(this,ys).call(this,a)))),v(this,is)===0&&(v(this,ut).before(r),z(this,Gt,null),Ss(v(this,Ye),()=>{z(this,Ye,null)}),ue(this,ke,Ir).call(this,L))}))},ha=function(){try{if(this.is_pending=this.has_pending_snippet(),z(this,is,0),z(this,ws,0),z(this,ht,_t(()=>{v(this,ys).call(this,v(this,ut))})),v(this,is)>0){var t=z(this,Gt,document.createDocumentFragment());Fa(v(this,ht),t);const r=v(this,pt).pending;z(this,Ye,_t(()=>r(v(this,ut))))}else ue(this,ke,Ir).call(this,L)}catch(r){this.error(r)}},Ir=function(t){this.is_pending=!1,t.transfer_effects(v(this,pr),v(this,hr))},Dr=function(t){var r=G,a=X,n=Le;wt(v(this,Ze)),yt(v(this,Ze)),qs(v(this,Ze).ctx);try{return Ts.ensure(),t()}catch(i){return yl(i),null}finally{wt(r),yt(a),qs(n)}},_a=function(t,r){var a;if(!this.has_pending_snippet()){this.parent&&ue(a=this.parent,ke,_a).call(a,t,r);return}z(this,is,v(this,is)+t),v(this,is)===0&&(ue(this,ke,Ir).call(this,r),v(this,Ye)&&Ss(v(this,Ye),()=>{z(this,Ye,null)}),v(this,Gt)&&(v(this,ut).before(v(this,Gt)),z(this,Gt,null)))},ba=function(t){v(this,ht)&&(tt(v(this,ht)),z(this,ht,null)),v(this,Ye)&&(tt(v(this,Ye)),z(this,Ye,null)),v(this,lt)&&(tt(v(this,lt)),z(this,lt,null));var r=v(this,pt).onerror;let a=v(this,pt).failed;var n=!1,i=!1;const d=()=>{if(n){rc();return}n=!0,i&&Yo(),v(this,lt)!==null&&Ss(v(this,lt),()=>{z(this,lt,null)}),ue(this,ke,Dr).call(this,()=>{ue(this,ke,ha).call(this)})},u=f=>{try{i=!0,r==null||r(f,d),i=!1}catch(p){os(p,v(this,Ze)&&v(this,Ze).parent)}a&&z(this,lt,ue(this,ke,Dr).call(this,()=>{try{return _t(()=>{var p=G;p.b=this,p.f|=da,a(v(this,ut),()=>f,()=>d)})}catch(p){return os(p,v(this,Ze).parent),null}}))};vs(()=>{var f;try{f=this.transform_error(t)}catch(p){os(p,v(this,Ze)&&v(this,Ze).parent);return}f!==null&&typeof f=="object"&&typeof f.then=="function"?f.then(u,p=>os(p,v(this,Ze)&&v(this,Ze).parent)):u(f)})};function yc(e,t,r,a){const n=gr()?Ca:$s;var i=e.filter(k=>!k.settled);if(r.length===0&&i.length===0){a(t.map(n));return}var d=G,u=wc(),f=i.length===1?i[0].promise:i.length>1?Promise.all(i.map(k=>k.promise)):null;function p(k){u();try{a(k)}catch(E){d.f&mt||os(E,d)}jr()}if(r.length===0){f.then(()=>p(t.map(n)));return}var m=Al();function C(){Promise.all(r.map(k=>kc(k))).then(k=>p([...t.map(n),...k])).catch(k=>os(k,d)).finally(()=>m())}f?f.then(()=>{u(),C(),jr()}):C()}function wc(){var e=G,t=X,r=Le,a=L;return function(i=!0){wt(e),yt(t),qs(r),i&&!(e.f&mt)&&(a==null||a.activate(),a==null||a.apply())}}function jr(e=!0){wt(null),yt(null),qs(null),e&&(L==null||L.deactivate())}function Al(){var e=G,t=e.b,r=L,a=t.is_rendered();return t.update_pending_count(1,r),r.increment(a,e),(n=!1)=>{t.update_pending_count(-1,r),r.decrement(a,e,n)}}function Ca(e){var t=Ke|We;return G!==null&&(G.f|=Gs),{ctx:Le,deps:null,effects:null,equals:hl,f:t,fn:e,reactions:null,rv:0,v:Fe,wv:0,parent:G,ac:null}}function kc(e,t,r){let a=G;a===null&&jo();var n=void 0,i=Cs(Fe),d=!X,u=new Map;return Fc(()=>{var E;var f=G,p=vl();n=p.promise;try{Promise.resolve(e()).then(p.resolve,p.reject).finally(jr)}catch(y){p.reject(y),jr()}var m=L;if(d){if(f.f&Ls)var C=Al();if(a.b.is_rendered())(E=u.get(m))==null||E.reject(qt),u.delete(m);else{for(const y of u.values())y.reject(qt);u.clear()}u.set(m,p)}const k=(y,D=void 0)=>{if(C){var S=D===qt;C(S)}if(!(D===qt||f.f&mt)){if(m.activate(),D)i.f|=cs,zs(i,D);else{i.f&cs&&(i.f^=cs),zs(i,y);for(const[I,ae]of u){if(u.delete(I),I===m)break;ae.reject(qt)}}m.deactivate()}};p.promise.then(k,y=>k(null,y||"unknown"))}),Ra(()=>{for(const f of u.values())f.reject(qt)}),new Promise(f=>{function p(m){function C(){m===n?f(i):p(n)}m.then(C,C)}p(n)})}function $s(e){const t=Ca(e);return t.equals=_l,t}function xc(e){var t=e.effects;if(t!==null){e.effects=null;for(var r=0;r<t.length;r+=1)tt(t[r])}}function Oa(e){var t,r=G,a=e.parent;if(!fs&&a!==null&&a.f&(mt|Ge))return tc(),e.v;wt(a);try{e.f&=~As,xc(e),t=ql(e)}finally{wt(r)}return t}function Tl(e){var t=Oa(e);if(!e.equals(t)&&(e.wv=Ul(),(!(L!=null&&L.is_fork)||e.deps===null)&&(L!==null?L.capture(e,t,!0):e.v=t,e.deps===null))){we(e,Oe);return}fs||(Be!==null?(La()||L!=null&&L.is_fork)&&Be.set(e,t):Ma(e))}function Ec(e){var t,r;if(e.effects!==null)for(const a of e.effects)(a.teardown||a.ac)&&((t=a.teardown)==null||t.call(a),(r=a.ac)==null||r.abort(qt),a.teardown=Do,a.ac=null,vr(a,0),Ia(a))}function Cl(e){if(e.effects!==null)for(const t of e.effects)t.teardown&&Os(t)}let ma=new Set;const Es=new Map;let Ol=!1;function Cs(e,t){var r={f:0,v:e,reactions:null,equals:hl,rv:0,wv:0};return r}function rs(e,t){const r=Cs(e);return jc(r),r}function B(e,t=!1,r=!0){var n;const a=Cs(e);return t||(a.equals=_l),Ur&&r&&Le!==null&&Le.l!==null&&((n=Le.l).s??(n.s=[])).push(a),a}function Nt(e,t){return w(e,h(()=>s(e))),t}function w(e,t,r=!1){X!==null&&(!St||X.f&fa)&&gr()&&X.f&(Ke|jt|cr|fa)&&(gt===null||!Vs.call(gt,e))&&zo();let a=r?rr(t):t;return zs(e,a,Or)}function zs(e,t,r=null){if(!e.equals(t)){Es.set(e,fs?t:e.v);var a=Ts.ensure();if(a.capture(e,t),e.f&Ke){const n=e;e.f&We&&Oa(n),Be===null&&Ma(n)}e.wv=Ul(),Ll(e,We,r),gr()&&G!==null&&G.f&Oe&&!(G.f&(Mt|ds))&&(ft===null?Hc([e]):ft.push(e)),!a.is_fork&&ma.size>0&&!Ol&&Sc()}return t}function Sc(){Ol=!1;for(const e of ma)e.f&Oe&&we(e,At),Xs(e)&&Os(e);ma.clear()}function ir(e){w(e,e.v+1)}function Ll(e,t,r){var a=e.reactions;if(a!==null)for(var n=gr(),i=a.length,d=0;d<i;d++){var u=a[d],f=u.f;if(!(!n&&u===G)){var p=(f&We)===0;if(p&&we(u,t),f&Ke){var m=u;Be==null||Be.delete(m),f&As||(f&bt&&(G===null||!(G.f&Pr))&&(u.f|=As),Ll(m,At,r))}else if(p){var C=u;f&jt&&xt!==null&&xt.add(C),r!==null?r.push(C):Ta(C)}}}}function rr(e){if(typeof e!="object"||e===null||xs in e)return e;const t=Sa(e);if(t!==No&&t!==Io)return e;var r=new Map,a=Ea(e),n=rs(0),i=Ms,d=u=>{if(Ms===i)return u();var f=X,p=Ms;yt(null),Zn(i);var m=u();return yt(f),Zn(p),m};return a&&r.set("length",rs(e.length)),new Proxy(e,{defineProperty(u,f,p){(!("value"in p)||p.configurable===!1||p.enumerable===!1||p.writable===!1)&&Ko();var m=r.get(f);return m===void 0?d(()=>{var C=rs(p.value);return r.set(f,C),C}):w(m,p.value,!0),!0},deleteProperty(u,f){var p=r.get(f);if(p===void 0){if(f in u){const m=d(()=>rs(Fe));r.set(f,m),ir(n)}}else w(p,Fe),ir(n);return!0},get(u,f,p){var E;if(f===xs)return e;var m=r.get(f),C=f in u;if(m===void 0&&(!C||(E=nr(u,f))!=null&&E.writable)&&(m=d(()=>{var y=rr(C?u[f]:Fe),D=rs(y);return D}),r.set(f,m)),m!==void 0){var k=s(m);return k===Fe?void 0:k}return Reflect.get(u,f,p)},getOwnPropertyDescriptor(u,f){var p=Reflect.getOwnPropertyDescriptor(u,f);if(p&&"value"in p){var m=r.get(f);m&&(p.value=s(m))}else if(p===void 0){var C=r.get(f),k=C==null?void 0:C.v;if(C!==void 0&&k!==Fe)return{enumerable:!0,configurable:!0,value:k,writable:!0}}return p},has(u,f){var k;if(f===xs)return!0;var p=r.get(f),m=p!==void 0&&p.v!==Fe||Reflect.has(u,f);if(p!==void 0||G!==null&&(!m||(k=nr(u,f))!=null&&k.writable)){p===void 0&&(p=d(()=>{var E=m?rr(u[f]):Fe,y=rs(E);return y}),r.set(f,p));var C=s(p);if(C===Fe)return!1}return m},set(u,f,p,m){var ie;var C=r.get(f),k=f in u;if(a&&f==="length")for(var E=p;E<C.v;E+=1){var y=r.get(E+"");y!==void 0?w(y,Fe):E in u&&(y=d(()=>rs(Fe)),r.set(E+"",y))}if(C===void 0)(!k||(ie=nr(u,f))!=null&&ie.writable)&&(C=d(()=>rs(void 0)),w(C,rr(p)),r.set(f,C));else{k=C.v!==Fe;var D=d(()=>rr(p));w(C,D)}var S=Reflect.getOwnPropertyDescriptor(u,f);if(S!=null&&S.set&&S.set.call(m,p),!k){if(a&&typeof f=="string"){var I=r.get("length"),ae=Number(f);Number.isInteger(ae)&&ae>=I.v&&w(I,ae+1)}ir(n)}return!0},ownKeys(u){s(n);var f=Reflect.ownKeys(u).filter(C=>{var k=r.get(C);return k===void 0||k.v!==Fe});for(var[p,m]of r)m.v!==Fe&&!(p in u)&&f.push(p);return f},setPrototypeOf(){qo()}})}function Gn(e){try{if(e!==null&&typeof e=="object"&&xs in e)return e[xs]}catch{}return e}function Mc(e,t){return Object.is(Gn(e),Gn(t))}var ga,Rl,Nl,Il;function Ac(){if(ga===void 0){ga=window,Rl=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,r=Text.prototype;Nl=nr(t,"firstChild").get,Il=nr(t,"nextSibling").get,Kn(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),Kn(r)&&(r.__t=void 0)}}function Jt(e=""){return document.createTextNode(e)}function Ys(e){return Nl.call(e)}function yr(e){return Il.call(e)}function o(e,t){return Ys(e)}function Ue(e,t=!1){{var r=Ys(e);return r instanceof Comment&&r.data===""?yr(r):r}}function c(e,t=1,r=!1){let a=e;for(;t--;)a=yr(a);return a}function Tc(e){e.textContent=""}function Dl(){return!1}function Cc(e,t,r){return document.createElementNS(pl,e,void 0)}let Xn=!1;function Oc(){Xn||(Xn=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{var t;if(!e.defaultPrevented)for(const r of e.target.elements)(t=r.__on_r)==null||t.call(r)})},{capture:!0}))}function Kr(e){var t=X,r=G;yt(null),wt(null);try{return e()}finally{yt(t),wt(r)}}function Fl(e,t,r,a=r){e.addEventListener(t,()=>Kr(r));const n=e.__on_r;n?e.__on_r=()=>{n(),a(!0)}:e.__on_r=()=>a(!0),Oc()}function $l(e){G===null&&(X===null&&Vo(),Wo()),fs&&Bo()}function Lc(e,t){var r=t.last;r===null?t.last=t.first=e:(r.next=e,e.prev=r,t.last=e)}function Ht(e,t){var r=G;r!==null&&r.f&Ge&&(e|=Ge);var a={ctx:Le,deps:null,nodes:null,f:e|We|bt,first:null,fn:t,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};L==null||L.register_created_effect(a);var n=a;if(e&Us)Fs!==null?Fs.push(a):Ts.ensure().schedule(a);else if(t!==null){try{Os(a)}catch(d){throw tt(a),d}n.deps===null&&n.teardown===null&&n.nodes===null&&n.first===n.last&&!(n.f&Gs)&&(n=n.first,e&jt&&e&Ks&&n!==null&&(n.f|=Ks))}if(n!==null&&(n.parent=r,r!==null&&Lc(n,r),X!==null&&X.f&Ke&&!(e&ds))){var i=X;(i.effects??(i.effects=[])).push(n)}return a}function La(){return X!==null&&!St}function Ra(e){const t=Ht(mr,null);return we(t,Oe),t.teardown=e,t}function Jn(e){$l();var t=G.f,r=!X&&(t&Mt)!==0&&(t&Ls)===0;if(r){var a=Le;(a.e??(a.e=[])).push(e)}else return Pl(e)}function Pl(e){return Ht(Us|fl,e)}function Rc(e){return $l(),Ht(mr|fl,e)}function Nc(e){Ts.ensure();const t=Ht(ds|Gs,e);return(r={})=>new Promise(a=>{r.outro?Ss(t,()=>{tt(t),a(void 0)}):(tt(t),a(void 0))})}function Ic(e){return Ht(Us,e)}function Ee(e,t){var r=Le,a={effect:null,ran:!1,deps:e};r.l.$.push(a),a.effect=qr(()=>{if(e(),!a.ran){a.ran=!0;var n=G;try{wt(n.parent),h(t)}finally{wt(n)}}})}function Dc(){var e=Le;qr(()=>{for(var t of e.l.$){t.deps();var r=t.effect;r.f&Oe&&r.deps!==null&&we(r,At),Xs(r)&&Os(r),t.ran=!1}})}function Fc(e){return Ht(cr|Gs,e)}function qr(e,t=0){return Ht(mr|t,e)}function W(e,t=[],r=[],a=[]){yc(a,t,r,n=>{Ht(mr,()=>e(...n.map(s)))})}function Na(e,t=0){var r=Ht(jt|t,e);return r}function _t(e){return Ht(Mt|Gs,e)}function jl(e){var t=e.teardown;if(t!==null){const r=fs,a=X;Qn(!0),yt(null);try{t.call(null)}finally{Qn(r),yt(a)}}}function Ia(e,t=!1){var r=e.first;for(e.first=e.last=null;r!==null;){const n=r.ac;n!==null&&Kr(()=>{n.abort(qt)});var a=r.next;r.f&ds?r.parent=null:tt(r,t),r=a}}function $c(e){for(var t=e.first;t!==null;){var r=t.next;t.f&Mt||tt(t),t=r}}function tt(e,t=!0){var r=!1;(t||e.f&$o)&&e.nodes!==null&&e.nodes.end!==null&&(Pc(e.nodes.start,e.nodes.end),r=!0),we(e,qn),Ia(e,t&&!r),vr(e,0);var a=e.nodes&&e.nodes.t;if(a!==null)for(const i of a)i.stop();jl(e),e.f^=qn,e.f|=mt;var n=e.parent;n!==null&&n.first!==null&&Hl(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Pc(e,t){for(;e!==null;){var r=e===t?null:yr(e);e.remove(),e=r}}function Hl(e){var t=e.parent,r=e.prev,a=e.next;r!==null&&(r.next=a),a!==null&&(a.prev=r),t!==null&&(t.first===e&&(t.first=a),t.last===e&&(t.last=r))}function Ss(e,t,r=!0){var a=[];Bl(e,a,!0);var n=()=>{r&&tt(e),t&&t()},i=a.length;if(i>0){var d=()=>--i||n();for(var u of a)u.out(d)}else n()}function Bl(e,t,r){if(!(e.f&Ge)){e.f^=Ge;var a=e.nodes&&e.nodes.t;if(a!==null)for(const u of a)(u.is_global||r)&&t.push(u);for(var n=e.first;n!==null;){var i=n.next;if(!(n.f&ds)){var d=(n.f&Ks)!==0||(n.f&Mt)!==0&&(e.f&jt)!==0;Bl(n,t,d?r:!1)}n=i}}}function Da(e){Wl(e,!0)}function Wl(e,t){if(e.f&Ge){e.f^=Ge,e.f&Oe||(we(e,We),Ts.ensure().schedule(e));for(var r=e.first;r!==null;){var a=r.next,n=(r.f&Ks)!==0||(r.f&Mt)!==0;Wl(r,n?t:!1),r=a}var i=e.nodes&&e.nodes.t;if(i!==null)for(const d of i)(d.is_global||t)&&d.in()}}function Fa(e,t){if(e.nodes)for(var r=e.nodes.start,a=e.nodes.end;r!==null;){var n=r===a?null:yr(r);t.append(r),r=n}}let Fr=!1,fs=!1;function Qn(e){fs=e}let X=null,St=!1;function yt(e){X=e}let G=null;function wt(e){G=e}let gt=null;function jc(e){X!==null&&(gt===null?gt=[e]:gt.push(e))}let et=null,at=0,ft=null;function Hc(e){ft=e}let Vl=1,bs=0,Ms=bs;function Zn(e){Ms=e}function Ul(){return++Vl}function Xs(e){var t=e.f;if(t&We)return!0;if(t&Ke&&(e.f&=~As),t&At){for(var r=e.deps,a=r.length,n=0;n<a;n++){var i=r[n];if(Xs(i)&&Tl(i),i.wv>e.wv)return!0}t&bt&&Be===null&&we(e,Oe)}return!1}function Kl(e,t,r=!0){var a=e.reactions;if(a!==null&&!(gt!==null&&Vs.call(gt,e)))for(var n=0;n<a.length;n++){var i=a[n];i.f&Ke?Kl(i,t,!1):t===i&&(r?we(i,We):i.f&Oe&&we(i,At),Ta(i))}}function ql(e){var D;var t=et,r=at,a=ft,n=X,i=gt,d=Le,u=St,f=Ms,p=e.f;et=null,at=0,ft=null,X=p&(Mt|ds)?null:e,gt=null,qs(e.ctx),St=!1,Ms=++bs,e.ac!==null&&(Kr(()=>{e.ac.abort(qt)}),e.ac=null);try{e.f|=Pr;var m=e.fn,C=m();e.f|=Ls;var k=e.deps,E=L==null?void 0:L.is_fork;if(et!==null){var y;if(E||vr(e,at),k!==null&&at>0)for(k.length=at+et.length,y=0;y<et.length;y++)k[at+y]=et[y];else e.deps=k=et;if(La()&&e.f&bt)for(y=at;y<k.length;y++)((D=k[y]).reactions??(D.reactions=[])).push(e)}else!E&&k!==null&&at<k.length&&(vr(e,at),k.length=at);if(gr()&&ft!==null&&!St&&k!==null&&!(e.f&(Ke|At|We)))for(y=0;y<ft.length;y++)Kl(ft[y],e);if(n!==null&&n!==e){if(bs++,n.deps!==null)for(let S=0;S<r;S+=1)n.deps[S].rv=bs;if(t!==null)for(const S of t)S.rv=bs;ft!==null&&(a===null?a=ft:a.push(...ft))}return e.f&cs&&(e.f^=cs),C}catch(S){return yl(S)}finally{e.f^=Pr,et=t,at=r,ft=a,X=n,gt=i,qs(d),St=u,Ms=f}}function Bc(e,t){let r=t.reactions;if(r!==null){var a=Lo.call(r,e);if(a!==-1){var n=r.length-1;n===0?r=t.reactions=null:(r[a]=r[n],r.pop())}}if(r===null&&t.f&Ke&&(et===null||!Vs.call(et,t))){var i=t;i.f&bt&&(i.f^=bt,i.f&=~As),i.v!==Fe&&Ma(i),Ec(i),vr(i,0)}}function vr(e,t){var r=e.deps;if(r!==null)for(var a=t;a<r.length;a++)Bc(e,r[a])}function Os(e){var t=e.f;if(!(t&mt)){we(e,Oe);var r=G,a=Fr;G=e,Fr=!0;try{t&(jt|dl)?$c(e):Ia(e),jl(e);var n=ql(e);e.teardown=typeof n=="function"?n:null,e.wv=Vl;var i;Oo&&nc&&e.f&We&&e.deps}finally{Fr=a,G=r}}}async function Wc(){await Promise.resolve(),dc()}function s(e){var t=e.f,r=(t&Ke)!==0;if(X!==null&&!St){var a=G!==null&&(G.f&mt)!==0;if(!a&&(gt===null||!Vs.call(gt,e))){var n=X.deps;if(X.f&Pr)e.rv<bs&&(e.rv=bs,et===null&&n!==null&&n[at]===e?at++:et===null?et=[e]:et.push(e));else{(X.deps??(X.deps=[])).push(e);var i=e.reactions;i===null?e.reactions=[X]:Vs.call(i,X)||i.push(X)}}}if(fs&&Es.has(e))return Es.get(e);if(r){var d=e;if(fs){var u=d.v;return(!(d.f&Oe)&&d.reactions!==null||Yl(d))&&(u=Oa(d)),Es.set(d,u),u}var f=(d.f&bt)===0&&!St&&X!==null&&(Fr||(X.f&bt)!==0),p=(d.f&Ls)===0;Xs(d)&&(f&&(d.f|=bt),Tl(d)),f&&!p&&(Cl(d),zl(d))}if(Be!=null&&Be.has(e))return Be.get(e);if(e.f&cs)throw e.v;return e.v}function zl(e){if(e.f|=bt,e.deps!==null)for(const t of e.deps)(t.reactions??(t.reactions=[])).push(e),t.f&Ke&&!(t.f&bt)&&(Cl(t),zl(t))}function Yl(e){if(e.v===Fe)return!0;if(e.deps===null)return!1;for(const t of e.deps)if(Es.has(t)||t.f&Ke&&Yl(t))return!0;return!1}function h(e){var t=St;try{return St=!0,e()}finally{St=t}}function $r(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if(xs in e)ya(e);else if(!Array.isArray(e))for(let t in e){const r=e[t];typeof r=="object"&&r&&xs in r&&ya(r)}}}function ya(e,t=new Set){if(typeof e=="object"&&e!==null&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let a in e)try{ya(e[a],t)}catch{}const r=Sa(e);if(r!==Object.prototype&&r!==Array.prototype&&r!==Map.prototype&&r!==Set.prototype&&r!==Date.prototype){const a=cl(r);for(let n in a){const i=a[n].get;if(i)try{i.call(e)}catch{}}}}}const Vc=["touchstart","touchmove"];function Uc(e){return Vc.includes(e)}const Ar=Symbol("events"),Kc=new Set,el=new Set;function qc(e,t,r,a={}){function n(i){if(a.capture||wa.call(t,i),!i.cancelBubble)return Kr(()=>r==null?void 0:r.call(this,i))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?vs(()=>{t.addEventListener(e,n,a)}):t.addEventListener(e,n,a),n}function re(e,t,r,a,n){var i={capture:a,passive:n},d=qc(e,t,r,i);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Ra(()=>{t.removeEventListener(e,d,i)})}let tl=null;function wa(e){var S,I;var t=this,r=t.ownerDocument,a=e.type,n=((S=e.composedPath)==null?void 0:S.call(e))||[],i=n[0]||e.target;tl=e;var d=0,u=tl===e&&e[Ar];if(u){var f=n.indexOf(u);if(f!==-1&&(t===document||t===window)){e[Ar]=t;return}var p=n.indexOf(t);if(p===-1)return;f<=p&&(d=f)}if(i=n[d]||e.target,i!==t){Ro(e,"currentTarget",{configurable:!0,get(){return i||r}});var m=X,C=G;yt(null),wt(null);try{for(var k,E=[];i!==null;){var y=i.assignedSlot||i.parentNode||i.host||null;try{var D=(I=i[Ar])==null?void 0:I[a];D!=null&&(!i.disabled||e.target===i)&&D.call(i,e)}catch(ae){k?E.push(ae):k=ae}if(e.cancelBubble||y===t||y===null)break;i=y}if(k){for(let ae of E)queueMicrotask(()=>{throw ae});throw k}}finally{e[Ar]=t,delete e.currentTarget,yt(m),wt(C)}}}var il;const ia=((il=globalThis==null?void 0:globalThis.window)==null?void 0:il.trustedTypes)&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function zc(e){return(ia==null?void 0:ia.createHTML(e))??e}function Gl(e){var t=Cc("template");return t.innerHTML=zc(e.replaceAll("<!>","<!---->")),t.content}function dr(e,t){var r=G;r.nodes===null&&(r.nodes={start:e,end:t,a:null,t:null})}function P(e,t){var r=(t&Zo)!==0,a=(t&ec)!==0,n,i=!e.startsWith("<!>");return()=>{n===void 0&&(n=Gl(i?e:"<!>"+e),r||(n=Ys(n)));var d=a||Rl?document.importNode(n,!0):n.cloneNode(!0);if(r){var u=Ys(d),f=d.lastChild;dr(u,f)}else dr(d,d);return d}}function Yc(e,t,r="svg"){var a=!e.startsWith("<!>"),n=`<${r}>${a?e:"<!>"+e}</${r}>`,i;return()=>{if(!i){var d=Gl(n),u=Ys(d);i=Ys(u)}var f=i.cloneNode(!0);return dr(f,f),f}}function Js(e,t){return Yc(e,t,"svg")}function It(e=""){{var t=Jt(e+"");return dr(t,t),t}}function Ds(){var e=document.createDocumentFragment(),t=document.createComment(""),r=Jt();return e.append(t,r),dr(t,r),e}function T(e,t){e!==null&&e.before(t)}function M(e,t){var r=t==null?"":typeof t=="object"?`${t}`:t;r!==(e.__t??(e.__t=e.nodeValue))&&(e.__t=r,e.nodeValue=`${r}`)}function Gc(e,t){return Xc(e,t)}const Tr=new Map;function Xc(e,{target:t,anchor:r,props:a={},events:n,context:i,intro:d=!0,transformError:u}){Ac();var f=void 0,p=Nc(()=>{var m=r??t.appendChild(Jt());hc(m,{pending:()=>{}},E=>{bl({});var y=Le;i&&(y.c=i),n&&(a.$$events=n),f=e(E,a)||{},ml()},u);var C=new Set,k=E=>{for(var y=0;y<E.length;y++){var D=E[y];if(!C.has(D)){C.add(D);var S=Uc(D);for(const ie of[t,document]){var I=Tr.get(ie);I===void 0&&(I=new Map,Tr.set(ie,I));var ae=I.get(D);ae===void 0?(ie.addEventListener(D,wa,{passive:S}),I.set(D,1)):I.set(D,ae+1)}}}};return k(Vr(Kc)),el.add(k),()=>{var S;for(var E of C)for(const I of[t,document]){var y=Tr.get(I),D=y.get(E);--D==0?(I.removeEventListener(E,wa),y.delete(E),y.size===0&&Tr.delete(I)):y.set(E,D)}el.delete(k),m!==r&&((S=m.parentNode)==null||S.removeChild(m))}});return Jc.set(f,p),f}let Jc=new WeakMap;var Et,$t,it,ks,_r,br,Wr;class Qc{constructor(t,r=!0){kt(this,"anchor");V(this,Et,new Map);V(this,$t,new Map);V(this,it,new Map);V(this,ks,new Set);V(this,_r,!0);V(this,br,t=>{if(v(this,Et).has(t)){var r=v(this,Et).get(t),a=v(this,$t).get(r);if(a)Da(a),v(this,ks).delete(r);else{var n=v(this,it).get(r);n&&(v(this,$t).set(r,n.effect),v(this,it).delete(r),n.fragment.lastChild.remove(),this.anchor.before(n.fragment),a=n.effect)}for(const[i,d]of v(this,Et)){if(v(this,Et).delete(i),i===t)break;const u=v(this,it).get(d);u&&(tt(u.effect),v(this,it).delete(d))}for(const[i,d]of v(this,$t)){if(i===r||v(this,ks).has(i))continue;const u=()=>{if(Array.from(v(this,Et).values()).includes(i)){var p=document.createDocumentFragment();Fa(d,p),p.append(Jt()),v(this,it).set(i,{effect:d,fragment:p})}else tt(d);v(this,ks).delete(i),v(this,$t).delete(i)};v(this,_r)||!a?(v(this,ks).add(i),Ss(d,u,!1)):u()}}});V(this,Wr,t=>{v(this,Et).delete(t);const r=Array.from(v(this,Et).values());for(const[a,n]of v(this,it))r.includes(a)||(tt(n.effect),v(this,it).delete(a))});this.anchor=t,z(this,_r,r)}ensure(t,r){var a=L,n=Dl();if(r&&!v(this,$t).has(t)&&!v(this,it).has(t))if(n){var i=document.createDocumentFragment(),d=Jt();i.append(d),v(this,it).set(t,{effect:_t(()=>r(d)),fragment:i})}else v(this,$t).set(t,_t(()=>r(this.anchor)));if(v(this,Et).set(a,t),n){for(const[u,f]of v(this,$t))u===t?a.unskip_effect(f):a.skip_effect(f);for(const[u,f]of v(this,it))u===t?a.unskip_effect(f.effect):a.skip_effect(f.effect);a.oncommit(v(this,br)),a.ondiscard(v(this,Wr))}else v(this,br).call(this,a)}}Et=new WeakMap,$t=new WeakMap,it=new WeakMap,ks=new WeakMap,_r=new WeakMap,br=new WeakMap,Wr=new WeakMap;function Y(e,t,r=!1){var a=new Qc(e),n=r?Ks:0;function i(d,u){a.ensure(d,u)}Na(()=>{var d=!1;t((u,f=0)=>{d=!0,i(f,u)}),d||i(-1,null)},n)}function as(e,t){return t}function Zc(e,t,r){for(var a=[],n=t.length,i,d=t.length,u=0;u<n;u++){let C=t[u];Ss(C,()=>{if(i){if(i.pending.delete(C),i.done.add(C),i.pending.size===0){var k=e.outrogroups;ka(e,Vr(i.done)),k.delete(i),k.size===0&&(e.outrogroups=null)}}else d-=1},!1)}if(d===0){var f=a.length===0&&r!==null;if(f){var p=r,m=p.parentNode;Tc(m),m.append(p),e.items.clear()}ka(e,t,!f)}else i={pending:new Set(t),done:new Set},(e.outrogroups??(e.outrogroups=new Set)).add(i)}function ka(e,t,r=!0){var a;if(e.pending.size>0){a=new Set;for(const d of e.pending.values())for(const u of d)a.add(e.items.get(u).e)}for(var n=0;n<t.length;n++){var i=t[n];if(a!=null&&a.has(i)){i.f|=Pt;const d=document.createDocumentFragment();Fa(i,d)}else tt(t[n],r)}}var sl;function dt(e,t,r,a,n,i=null){var d=e,u=new Map,f=(t&ul)!==0;if(f){var p=e;d=p.appendChild(Jt())}var m=null,C=$s(()=>{var ie=r();return Ea(ie)?ie:ie==null?[]:Vr(ie)}),k,E=new Map,y=!0;function D(ie){ae.effect.f&mt||(ae.pending.delete(ie),ae.fallback=m,ev(ae,k,d,t,a),m!==null&&(k.length===0?m.f&Pt?(m.f^=Pt,ar(m,null,d)):Da(m):Ss(m,()=>{m=null})))}function S(ie){ae.pending.delete(ie)}var I=Na(()=>{k=s(C);for(var ie=k.length,me=new Set,Xe=L,_=Dl(),ge=0;ge<ie;ge+=1){var ot=k[ge],ct=a(ot,ge),$e=y?null:u.get(ct);$e?($e.v&&zs($e.v,ot),$e.i&&zs($e.i,ge),_&&Xe.unskip_effect($e.e)):($e=tv(u,y?d:sl??(sl=Jt()),ot,ct,ge,n,t,r),y||($e.e.f|=Pt),u.set(ct,$e)),me.add(ct)}if(ie===0&&i&&!m&&(y?m=_t(()=>i(d)):(m=_t(()=>i(sl??(sl=Jt()))),m.f|=Pt)),ie>me.size&&Ho(),!y)if(E.set(Xe,me),_){for(const[Tt,Je]of u)me.has(Tt)||Xe.skip_effect(Je.e);Xe.oncommit(D),Xe.ondiscard(S)}else D(Xe);s(C)}),ae={effect:I,items:u,pending:E,outrogroups:null,fallback:m};y=!1}function sr(e){for(;e!==null&&!(e.f&Mt);)e=e.next;return e}function ev(e,t,r,a,n){var $e,Tt,Je,_e,Pe,qe,Ie,Ct,Qt;var i=(a&Jo)!==0,d=t.length,u=e.items,f=sr(e.effect.first),p,m=null,C,k=[],E=[],y,D,S,I;if(i)for(I=0;I<d;I+=1)y=t[I],D=n(y,I),S=u.get(D).e,S.f&Pt||((Tt=($e=S.nodes)==null?void 0:$e.a)==null||Tt.measure(),(C??(C=new Set)).add(S));for(I=0;I<d;I+=1){if(y=t[I],D=n(y,I),S=u.get(D).e,e.outrogroups!==null)for(const Ve of e.outrogroups)Ve.pending.delete(S),Ve.done.delete(S);if(S.f&Ge&&(Da(S),i&&((_e=(Je=S.nodes)==null?void 0:Je.a)==null||_e.unfix(),(C??(C=new Set)).delete(S))),S.f&Pt)if(S.f^=Pt,S===f)ar(S,null,r);else{var ae=m?m.next:f;S===e.effect.last&&(e.effect.last=S.prev),S.prev&&(S.prev.next=S.next),S.next&&(S.next.prev=S.prev),ns(e,m,S),ns(e,S,ae),ar(S,ae,r),m=S,k=[],E=[],f=sr(m.next);continue}if(S!==f){if(p!==void 0&&p.has(S)){if(k.length<E.length){var ie=E[0],me;m=ie.prev;var Xe=k[0],_=k[k.length-1];for(me=0;me<k.length;me+=1)ar(k[me],ie,r);for(me=0;me<E.length;me+=1)p.delete(E[me]);ns(e,Xe.prev,_.next),ns(e,m,Xe),ns(e,_,ie),f=ie,m=_,I-=1,k=[],E=[]}else p.delete(S),ar(S,f,r),ns(e,S.prev,S.next),ns(e,S,m===null?e.effect.first:m.next),ns(e,m,S),m=S;continue}for(k=[],E=[];f!==null&&f!==S;)(p??(p=new Set)).add(f),E.push(f),f=sr(f.next);if(f===null)continue}S.f&Pt||k.push(S),m=S,f=sr(S.next)}if(e.outrogroups!==null){for(const Ve of e.outrogroups)Ve.pending.size===0&&(ka(e,Vr(Ve.done)),(Pe=e.outrogroups)==null||Pe.delete(Ve));e.outrogroups.size===0&&(e.outrogroups=null)}if(f!==null||p!==void 0){var ge=[];if(p!==void 0)for(S of p)S.f&Ge||ge.push(S);for(;f!==null;)!(f.f&Ge)&&f!==e.fallback&&ge.push(f),f=sr(f.next);var ot=ge.length;if(ot>0){var ct=a&ul&&d===0?r:null;if(i){for(I=0;I<ot;I+=1)(Ie=(qe=ge[I].nodes)==null?void 0:qe.a)==null||Ie.measure();for(I=0;I<ot;I+=1)(Qt=(Ct=ge[I].nodes)==null?void 0:Ct.a)==null||Qt.fix()}Zc(e,ge,ct)}}i&&vs(()=>{var Ve,Qs;if(C!==void 0)for(S of C)(Qs=(Ve=S.nodes)==null?void 0:Ve.a)==null||Qs.apply()})}function tv(e,t,r,a,n,i,d,u){var f=d&Go?d&Qo?Cs(r):B(r,!1,!1):null,p=d&Xo?Cs(n):null;return{v:f,i:p,e:_t(()=>(i(t,f??r,p??n,u),()=>{e.delete(a)}))}}function ar(e,t,r){if(e.nodes)for(var a=e.nodes.start,n=e.nodes.end,i=t&&!(t.f&Pt)?t.nodes.start:r;a!==null;){var d=yr(a);if(i.before(a),a===n)return;a=d}}function ns(e,t,r){t===null?e.effect.first=r:t.next=r,r===null?e.effect.last=t:r.prev=t}const rl=[...`
|
|
2
|
+
\r\f \v\uFEFF`];function sv(e,t,r){var a=e==null?"":""+e;if(t&&(a=a?a+" "+t:t),r){for(var n of Object.keys(r))if(r[n])a=a?a+" "+n:n;else if(a.length)for(var i=n.length,d=0;(d=a.indexOf(n,d))>=0;){var u=d+i;(d===0||rl.includes(a[d-1]))&&(u===a.length||rl.includes(a[u]))?a=(d===0?"":a.substring(0,d))+a.substring(u+1):d=u}}return a===""?null:a}function rv(e,t){return e==null?null:String(e)}function ce(e,t,r,a,n,i){var d=e.__className;if(d!==r||d===void 0){var u=sv(r,a,i);u==null?e.removeAttribute("class"):t?e.className=u:e.setAttribute("class",u),e.__className=r}else if(i&&n!==i)for(var f in i){var p=!!i[f];(n==null||p!==!!n[f])&&e.classList.toggle(f,p)}return i}function av(e,t,r,a){var n=e.__style;if(n!==t){var i=rv(t);i==null?e.removeAttribute("style"):e.style.cssText=i,e.__style=t}return a}function Xl(e,t,r=!1){if(e.multiple){if(t==null)return;if(!Ea(t))return sc();for(var a of e.options)a.selected=t.includes(or(a));return}for(a of e.options){var n=or(a);if(Mc(n,t)){a.selected=!0;return}}(!r||t!==void 0)&&(e.selectedIndex=-1)}function nv(e){var t=new MutationObserver(()=>{Xl(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Ra(()=>{t.disconnect()})}function Cr(e,t,r=t){var a=new WeakSet,n=!0;Fl(e,"change",i=>{var d=i?"[selected]":":checked",u;if(e.multiple)u=[].map.call(e.querySelectorAll(d),or);else{var f=e.querySelector(d)??e.querySelector("option:not([disabled])");u=f&&or(f)}r(u),e.__value=u,L!==null&&a.add(L)}),Ic(()=>{var i=t();if(e===document.activeElement){var d=L;if(a.has(d))return}if(Xl(e,i,n),n&&i===void 0){var u=e.querySelector(":checked");u!==null&&(i=or(u),r(i))}e.__value=i,n=!1}),nv(e)}function or(e){return"__value"in e?e.__value:e.value}const lv=Symbol("is custom element"),iv=Symbol("is html");function he(e,t,r,a){var n=ov(e);n[t]!==(n[t]=r)&&(t==="loading"&&(e[Po]=r),r==null?e.removeAttribute(t):typeof r!="string"&&cv(e).includes(t)?e[t]=r:e.setAttribute(t,r))}function ov(e){return e.__attributes??(e.__attributes={[lv]:e.nodeName.includes("-"),[iv]:e.namespaceURI===pl})}var al=new Map;function cv(e){var t=e.getAttribute("is")||e.nodeName,r=al.get(t);if(r)return r;al.set(t,r=[]);for(var a,n=e,i=Element.prototype;i!==n;){a=cl(n);for(var d in a)a[d].set&&r.push(d);n=Sa(n)}return r}function Kt(e,t,r=t){var a=new WeakSet;Fl(e,"input",async n=>{var i=n?e.defaultValue:e.value;if(i=oa(e)?ca(i):i,r(i),L!==null&&a.add(L),await Wc(),i!==(i=t())){var d=e.selectionStart,u=e.selectionEnd,f=e.value.length;if(e.value=i??"",u!==null){var p=e.value.length;d===u&&u===f&&p>f?(e.selectionStart=p,e.selectionEnd=p):(e.selectionStart=d,e.selectionEnd=Math.min(u,p))}}}),h(t)==null&&e.value&&(r(oa(e)?ca(e.value):e.value),L!==null&&a.add(L)),qr(()=>{var n=t();if(e===document.activeElement){var i=L;if(a.has(i))return}oa(e)&&n===ca(e.value)||e.type==="date"&&!n&&!e.value||n!==e.value&&(e.value=n??"")})}function oa(e){var t=e.type;return t==="number"||t==="range"}function ca(e){return e===""?null:+e}function nl(e){return function(...t){var r=t[0];r.target===this&&(e==null||e.apply(this,t))}}function vv(e){return function(...t){var r=t[0];return r.stopPropagation(),e==null?void 0:e.apply(this,t)}}function dv(e){return function(...t){var r=t[0];return r.preventDefault(),e==null?void 0:e.apply(this,t)}}function fv(e=!1){const t=Le,r=t.l.u;if(!r)return;let a=()=>$r(t.s);if(e){let n=0,i={};const d=Ca(()=>{let u=!1;const f=t.s;for(const p in f)f[p]!==i[p]&&(i[p]=f[p],u=!0);return u&&n++,n});a=()=>s(d)}r.b.length&&Rc(()=>{ll(t,a),va(r.b)}),Jn(()=>{const n=h(()=>r.m.map(Fo));return()=>{for(const i of n)typeof i=="function"&&i()}}),r.a.length&&Jn(()=>{ll(t,a),va(r.a)})}function ll(e,t){if(e.l.s)for(const r of e.l.s)s(r);t()}const uv="5";var ol;typeof window<"u"&&((ol=window.__svelte??(window.__svelte={})).v??(ol.v=new Set)).add(uv);lc();var pv=P('<span class="tab-badge svelte-d3ct2b"> </span>'),hv=Js('<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><circle cx="12" cy="12" r="5" class="svelte-d3ct2b"></circle><line x1="12" y1="1" x2="12" y2="3" class="svelte-d3ct2b"></line><line x1="12" y1="21" x2="12" y2="23" class="svelte-d3ct2b"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64" class="svelte-d3ct2b"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78" class="svelte-d3ct2b"></line><line x1="1" y1="12" x2="3" y2="12" class="svelte-d3ct2b"></line><line x1="21" y1="12" x2="23" y2="12" class="svelte-d3ct2b"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36" class="svelte-d3ct2b"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22" class="svelte-d3ct2b"></line></svg>'),_v=Js('<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" class="svelte-d3ct2b"></path></svg>'),bv=P('<div class="health-badge health-warn svelte-d3ct2b"><i class="dot dot-warn svelte-d3ct2b"></i> <span class="svelte-d3ct2b"> </span></div>'),mv=P('<div><i></i> <span class="svelte-d3ct2b"> </span></div>'),gv=P('<span class="health-error svelte-d3ct2b"> </span>'),yv=P('<span class="health-error svelte-d3ct2b"> </span>'),wv=P('<span class="dropdown-badge svelte-d3ct2b"> </span>'),kv=P('<div class="dropdown svelte-d3ct2b"><button><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-d3ct2b"><circle cx="12" cy="12" r="3" class="svelte-d3ct2b"></circle><path d="M12 1v4M12 19v4M4.22 4.22l2.83 2.83M16.95 16.95l2.83 2.83M1 12h4M19 12h4" class="svelte-d3ct2b"></path></svg> Core Engine</button> <button><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-d3ct2b"><circle cx="12" cy="12" r="4" class="svelte-d3ct2b"></circle><path d="M4 12H2M22 12h-2M12 4V2M12 22v-2" class="svelte-d3ct2b"></path><path d="m6.34 6.34-1.41-1.42M19.07 19.07l-1.41-1.41" class="svelte-d3ct2b"></path></svg> Commit Hook <!></button></div>'),xv=Js('<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" class="svelte-d3ct2b"><polygon points="5 3 19 12 5 21 5 3" class="svelte-d3ct2b"></polygon></svg>'),Ev=Js('<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" class="svelte-d3ct2b"><rect x="6" y="4" width="4" height="16" class="svelte-d3ct2b"></rect><rect x="14" y="4" width="4" height="16" class="svelte-d3ct2b"></rect></svg>'),Sv=P('<div class="log-row log-row-warn svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-warn svelte-d3ct2b">ARCH</span> <span class="log-msg svelte-d3ct2b">Custom architecture — no profile rules loaded. Add rules: memory-core remember "..." --type rule</span></div> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-sys svelte-d3ct2b">SYS</span> <span class="log-msg svelte-d3ct2b">Or load a profile when ready: memory-core seed --arch clean-architecture</span></div>',1),Mv=P('<div class="log-row log-row-warn svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-warn svelte-d3ct2b">WARN</span> <span class="log-msg svelte-d3ct2b">No architecture rules configured in .memory-core.json — nothing to watch.</span></div> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-sys svelte-d3ct2b">SYS</span> <span class="log-msg svelte-d3ct2b">Awaiting manual rule configuration...</span></div>',1),Av=P('<div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-sys svelte-d3ct2b">SYS</span> <span class="log-msg svelte-d3ct2b">Initialization sequence started for memory-core...</span></div> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-ok svelte-d3ct2b">DB</span> <span class="log-msg svelte-d3ct2b">Waiting for PostgreSQL connection...</span></div> <!> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b"></span> <span class="log-label svelte-d3ct2b"></span> <span class="log-msg cursor-blink svelte-d3ct2b">_</span></div>',1),Tv=P('· <em class="svelte-d3ct2b"> </em>',1),Cv=P('<br class="svelte-d3ct2b"/><span class="detail-fix svelte-d3ct2b"> </span>',1),Ov=P('<div class="log-detail svelte-d3ct2b"><span class="detail-index svelte-d3ct2b"> </span> <span class="detail-body svelte-d3ct2b"><strong class="svelte-d3ct2b"> </strong> <!> <!> <!></span></div>'),Lv=P('<div><span class="log-time svelte-d3ct2b"> </span> <span> </span> <span class="log-msg svelte-d3ct2b"><!></span> <button class="copy-btn svelte-d3ct2b" title="Copy">⎘</button></div> <!>',1),Rv=P('<div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-ok svelte-d3ct2b">[OK]</span> <span class="log-msg svelte-d3ct2b">No commit hook violations in the last 24 hours.</span></div> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b"></span> <span class="log-label svelte-d3ct2b"></span> <span class="log-msg cursor-blink svelte-d3ct2b">_</span></div>',1),Nv=P('<br class="svelte-d3ct2b"/><span class="detail-fix svelte-d3ct2b"> </span>',1),Iv=P('<div class="log-detail svelte-d3ct2b"><span class="detail-index svelte-d3ct2b"></span> <span class="detail-body svelte-d3ct2b"><!> <!></span></div>'),Dv=P('<div class="log-row log-row-fail svelte-d3ct2b"><span class="log-time svelte-d3ct2b"> </span> <span class="log-label label-hook svelte-d3ct2b"> </span> <span class="log-msg svelte-d3ct2b"><strong class="svelte-d3ct2b"> </strong> <!></span></div> <!>',1),Fv=P('<div class="section-header svelte-d3ct2b"><span class="section-title svelte-d3ct2b">Commit Hook</span> <span class="section-meta svelte-d3ct2b"> </span></div> <!>',1),$v=P('<span class="rule-reason svelte-d3ct2b"> </span>'),Pv=P('<div class="rule-row svelte-d3ct2b"><span class="rule-badge svelte-d3ct2b"> </span> <span class="rule-scope svelte-d3ct2b"> </span> <span class="rule-content svelte-d3ct2b"> </span> <!> <button class="del-btn svelte-d3ct2b">✕</button></div>'),jv=P('Custom architecture — no profile rules loaded. Add rules from the terminal: <code class="svelte-d3ct2b">memory-core remember "..." --type rule</code>',1),Hv=P('<div class="log-row svelte-d3ct2b"><span class="log-msg svelte-d3ct2b" style="color: var(--outline)"><!></span></div>'),Bv=P('<div class="section-header svelte-d3ct2b"><span class="section-title svelte-d3ct2b">Rule Engine</span> <span class="section-meta svelte-d3ct2b"> </span></div> <div class="rules-toolbar svelte-d3ct2b"><select class="rules-select svelte-d3ct2b"><option class="svelte-d3ct2b">All types</option><option class="svelte-d3ct2b">Rules</option><option class="svelte-d3ct2b">Decisions</option><option class="svelte-d3ct2b">Patterns</option><option class="svelte-d3ct2b">Ignores</option></select> <input class="rules-search svelte-d3ct2b" placeholder="Search rules..."/></div> <div class="rule-form-wrap svelte-d3ct2b"><form class="rule-form svelte-d3ct2b"><div class="rule-form-row svelte-d3ct2b"><select class="rules-select svelte-d3ct2b"><option class="svelte-d3ct2b">Rule</option><option class="svelte-d3ct2b">Decision</option><option class="svelte-d3ct2b">Pattern</option><option class="svelte-d3ct2b">Ignore</option></select> <select class="rules-select svelte-d3ct2b"><option class="svelte-d3ct2b">Project</option><option class="svelte-d3ct2b">Global</option></select> <input class="rules-input svelte-d3ct2b" placeholder="Reason"/> <input class="rules-input svelte-d3ct2b" placeholder="Tags"/></div> <div class="rule-form-row svelte-d3ct2b"><textarea rows="2" class="rules-textarea svelte-d3ct2b" placeholder="Rule or decision content..."></textarea> <button class="add-btn svelte-d3ct2b"> </button></div></form></div> <div class="rule-list svelte-d3ct2b"></div>',1),Wv=P('<div class="log-row svelte-d3ct2b"><span class="log-label label-warn svelte-d3ct2b">[WARN]</span> <span class="log-msg svelte-d3ct2b">No .archmind/layers.json found. Run <code class="svelte-d3ct2b">memory-core init</code> or create the file manually.</span></div>'),Vv=Js('<line stroke-width="1.5" opacity="0.75" class="svelte-d3ct2b"></line>'),Uv=Js('<g role="button" tabindex="0"><rect rx="6"></rect><text text-anchor="middle" class="arch-node-label svelte-d3ct2b"> </text><text text-anchor="middle" class="arch-node-desc svelte-d3ct2b"> </text></g>'),Kv=P('<div class="arch-node-panel-path svelte-d3ct2b"> </div>'),qv=P('<div class="arch-node-panel-paths svelte-d3ct2b"><div class="arch-node-panel-section svelte-d3ct2b">Glob patterns</div> <!></div>'),zv=P('<div class="arch-node-panel-rule svelte-d3ct2b"><span> </span> <span style="font-size:12px" class="svelte-d3ct2b"> </span></div>'),Yv=P('<div class="arch-node-panel-paths svelte-d3ct2b"><div class="arch-node-panel-section svelte-d3ct2b">Rules involving this layer</div> <!></div>'),Gv=P('<div class="arch-node-panel svelte-d3ct2b"><div class="arch-node-panel-header svelte-d3ct2b"><span class="arch-node-panel-name svelte-d3ct2b"> </span> <span class="arch-node-panel-meta svelte-d3ct2b"> </span> <button class="arch-node-panel-close svelte-d3ct2b" aria-label="Close">✕</button></div> <!> <!></div>'),Xv=P('<div class="arch-rule-row svelte-d3ct2b"><span> </span> <span class="arch-rule-layers svelte-d3ct2b"> </span> <span class="arch-rule-name svelte-d3ct2b"> </span></div>'),Jv=P('<div class="arch-graph-wrap svelte-d3ct2b"><svg class="arch-svg svelte-d3ct2b"><defs class="svelte-d3ct2b"><marker id="arrow-block" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto" class="svelte-d3ct2b"><path d="M0,0 L0,6 L8,3 z" fill="var(--error)" class="svelte-d3ct2b"></path></marker><marker id="arrow-warn" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto" class="svelte-d3ct2b"><path d="M0,0 L0,6 L8,3 z" fill="#f59e0b" class="svelte-d3ct2b"></path></marker><marker id="arrow-allow" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto" class="svelte-d3ct2b"><path d="M0,0 L0,6 L8,3 z" fill="var(--green)" class="svelte-d3ct2b"></path></marker></defs><!><!></svg> <div class="arch-legend svelte-d3ct2b"><div class="legend-item svelte-d3ct2b"><svg width="24" height="8" class="svelte-d3ct2b"><line x1="0" y1="4" x2="20" y2="4" stroke="var(--error)" stroke-width="1.5" marker-end="url(#arrow-block)" class="svelte-d3ct2b"></line></svg> Block</div> <div class="legend-item svelte-d3ct2b"><svg width="24" height="8" class="svelte-d3ct2b"><line x1="0" y1="4" x2="20" y2="4" stroke="#f59e0b" stroke-width="1.5" stroke-dasharray="4,3" class="svelte-d3ct2b"></line></svg> Warn</div> <div class="legend-item svelte-d3ct2b"><svg width="24" height="8" class="svelte-d3ct2b"><line x1="0" y1="4" x2="20" y2="4" stroke="var(--green)" stroke-width="1.5" stroke-dasharray="6,3" class="svelte-d3ct2b"></line></svg> Allow</div></div> <!> <div class="arch-rule-list svelte-d3ct2b"></div></div>'),Qv=P('<div class="section-header svelte-d3ct2b"><span class="section-title svelte-d3ct2b">Layer Graph</span> <span class="section-meta svelte-d3ct2b"> </span></div> <!>',1),Zv=P('<div class="log-row svelte-d3ct2b"><span class="log-label label-ok svelte-d3ct2b">[OK]</span> <span class="log-msg svelte-d3ct2b">No violations recorded yet. Violations from watch mode are logged here.</span></div>'),ed=P('<span class="history-issue svelte-d3ct2b"> </span>'),td=P('<div class="history-violation svelte-d3ct2b"><span class="log-label label-error svelte-d3ct2b">[VIOLATION]</span> <span class="history-rule svelte-d3ct2b"> </span> <!></div>'),sd=P('<div class="history-entry svelte-d3ct2b"><div class="history-header svelte-d3ct2b"><span class="history-file svelte-d3ct2b"> </span> <span class="history-time svelte-d3ct2b"> </span></div> <!></div>'),rd=P('<div class="history-list svelte-d3ct2b"></div>'),ad=P('<div class="section-header svelte-d3ct2b"><span class="section-title svelte-d3ct2b">Violation History</span> <span class="section-meta svelte-d3ct2b"> </span></div> <!>',1),nd=P('<div class="modal-row svelte-d3ct2b"><label class="modal-label svelte-d3ct2b" for="model-apikey">API Key</label> <input id="model-apikey" class="modal-input svelte-d3ct2b" type="password"/></div>'),ld=P("<div> </div>"),id=P('<div class="modal-backdrop svelte-d3ct2b" role="presentation"><div class="modal svelte-d3ct2b"><div class="modal-header svelte-d3ct2b"><span class="modal-title svelte-d3ct2b">Settings</span> <button class="modal-close svelte-d3ct2b">✕</button></div> <section class="modal-section svelte-d3ct2b"><div class="modal-section-title svelte-d3ct2b">AI Model</div> <div class="modal-row svelte-d3ct2b"><label class="modal-label svelte-d3ct2b" for="model-provider">Provider</label> <select id="model-provider" class="modal-input svelte-d3ct2b"><option class="svelte-d3ct2b">Ollama (local)</option><option class="svelte-d3ct2b">OpenAI</option><option class="svelte-d3ct2b">Anthropic</option><option class="svelte-d3ct2b">MiniMax</option><option class="svelte-d3ct2b">OpenAI-compatible</option></select></div> <div class="modal-row svelte-d3ct2b"><label class="modal-label svelte-d3ct2b" for="model-name">Model</label> <input id="model-name" class="modal-input svelte-d3ct2b" placeholder="e.g. llama3.2, gpt-4o, claude-sonnet-4-6"/></div> <!> <div class="modal-row svelte-d3ct2b"><div class="svelte-d3ct2b"></div> <div class="modal-row-actions svelte-d3ct2b"><button class="modal-btn modal-btn-primary svelte-d3ct2b"> </button> <button class="modal-btn svelte-d3ct2b">Refresh Config</button></div></div> <!></section> <section class="modal-section svelte-d3ct2b"><div class="modal-section-title svelte-d3ct2b">Timeouts</div> <div class="modal-row svelte-d3ct2b"><label class="modal-label svelte-d3ct2b" for="chat-timeout">CHAT_TIMEOUT_MS</label> <input id="chat-timeout" class="modal-input svelte-d3ct2b" placeholder="60000" type="text" inputmode="numeric"/></div> <div class="modal-row svelte-d3ct2b"><label class="modal-label svelte-d3ct2b" for="check-timeout">CHECK_TIMEOUT_MS</label> <input id="check-timeout" class="modal-input svelte-d3ct2b" placeholder="20000" type="text" inputmode="numeric"/></div></section> <section class="modal-section svelte-d3ct2b"><div class="modal-section-title svelte-d3ct2b">Current Status</div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Provider</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Model</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">API Key</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Embedding</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Chat timeout</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Check timeout</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">AI calls this session</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Total tokens</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Input / Output</span><span class="modal-status-val svelte-d3ct2b"> </span></div></section></div></div>'),od=P('<div class="shell svelte-d3ct2b"><header class="topbar svelte-d3ct2b"><div class="topbar-brand svelte-d3ct2b"><span class="brand-name svelte-d3ct2b">memory-core</span> <nav class="topbar-nav svelte-d3ct2b"><button>Dashboard</button> <button>Live Feed</button> <button>Metrics</button> <button>Arch Graph</button> <button>History <!></button></nav></div> <div class="topbar-search svelte-d3ct2b"><span class="search-icon svelte-d3ct2b">⌕</span> <input class="search-input svelte-d3ct2b" placeholder="Search system logs, traces, and metrics..." type="text"/></div> <div class="topbar-actions svelte-d3ct2b"><button class="icon-btn svelte-d3ct2b" title="Notifications"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9" class="svelte-d3ct2b"></path><path d="M13.73 21a2 2 0 0 1-3.46 0" class="svelte-d3ct2b"></path></svg></button> <button><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><rect x="2" y="3" width="20" height="14" rx="2" class="svelte-d3ct2b"></rect><path d="m7 21 5-5 5 5" class="svelte-d3ct2b"></path><path d="m7 8 3 3-3 3" class="svelte-d3ct2b"></path><path d="M13 14h4" class="svelte-d3ct2b"></path></svg></button> <button class="icon-btn svelte-d3ct2b" title="Settings"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><circle cx="12" cy="12" r="3" class="svelte-d3ct2b"></circle><path d="M19.07 4.93a10 10 0 0 1 0 14.14M4.93 4.93a10 10 0 0 0 0 14.14" class="svelte-d3ct2b"></path><path d="M12 2v2M12 20v2M2 12h2M20 12h2" class="svelte-d3ct2b"></path></svg></button> <button class="icon-btn svelte-d3ct2b"><!></button> <div class="avatar svelte-d3ct2b" title="System Administrator">S</div></div></header> <div class="body svelte-d3ct2b"><aside class="sidebar svelte-d3ct2b"><div class="sidebar-logo svelte-d3ct2b"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-d3ct2b"><circle cx="12" cy="12" r="3" class="svelte-d3ct2b"></circle><path d="M12 1v4M12 19v4M4.22 4.22l2.83 2.83M16.95 16.95l2.83 2.83M1 12h4M19 12h4M4.22 19.78l2.83-2.83M16.95 7.05l2.83-2.83" class="svelte-d3ct2b"></path></svg></div> <nav class="sidebar-nav svelte-d3ct2b"><button class="side-btn side-btn-active svelte-d3ct2b" title="Live Feed"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><rect x="2" y="3" width="20" height="14" rx="2" class="svelte-d3ct2b"></rect><path d="m7 21 5-5 5 5" class="svelte-d3ct2b"></path><path d="m7 8 3 3-3 3" class="svelte-d3ct2b"></path><path d="M13 14h4" class="svelte-d3ct2b"></path></svg></button></nav> <div></div></aside> <main class="content svelte-d3ct2b"><div class="health-bar svelte-d3ct2b"><span class="health-label svelte-d3ct2b">System Health:</span> <div class="health-badge health-green svelte-d3ct2b"><i class="dot dot-green svelte-d3ct2b"></i> <span class="svelte-d3ct2b"> </span></div> <div><i></i> <span class="svelte-d3ct2b"> </span></div> <div><i></i> <span class="svelte-d3ct2b"> </span></div> <!> <!> <!> <!></div> <div class="filter-bar svelte-d3ct2b"><div class="filter-left svelte-d3ct2b"><div class="chip chip-primary svelte-d3ct2b"><span class="svelte-d3ct2b">LEVEL: ALL</span> <button class="chip-close svelte-d3ct2b" title="Clear cache">✕</button></div> <div class="service-dropdown-wrap svelte-d3ct2b"><button class="chip chip-outline svelte-d3ct2b"><span class="svelte-d3ct2b"> </span> <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9" class="svelte-d3ct2b"></polyline></svg></button> <!></div> <div class="divider-v svelte-d3ct2b"></div> <div class="metrics-strip svelte-d3ct2b"><div class="metric-item svelte-d3ct2b"><span class="metric-label svelte-d3ct2b">VIOLATIONS</span> <span> </span></div> <div class="metric-item svelte-d3ct2b"><span class="metric-label svelte-d3ct2b">FILES</span> <span class="metric-value svelte-d3ct2b"> </span></div> <div class="metric-item svelte-d3ct2b"><span class="metric-label svelte-d3ct2b">RULES</span> <span class="metric-value svelte-d3ct2b"> </span></div></div></div> <div class="filter-right svelte-d3ct2b"><div class="live-badge svelte-d3ct2b"><i></i> <span class="svelte-d3ct2b"> </span></div> <button><!></button> <button class="icon-btn svelte-d3ct2b" title="Download snapshot"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-d3ct2b"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" class="svelte-d3ct2b"></path><polyline points="7 10 12 15 17 10" class="svelte-d3ct2b"></polyline><line x1="12" y1="15" x2="12" y2="3" class="svelte-d3ct2b"></line></svg></button></div></div> <div class="feed-area svelte-d3ct2b"><!> <!> <!></div> <footer class="metrics-footer svelte-d3ct2b"><div class="footer-left svelte-d3ct2b"><div class="footer-metric svelte-d3ct2b"><span class="footer-label svelte-d3ct2b">Checks</span> <span class="footer-val svelte-d3ct2b"> </span> <span class="footer-unit svelte-d3ct2b">AI CALLS</span></div> <div class="footer-metric svelte-d3ct2b"><span class="footer-label svelte-d3ct2b">Tokens</span> <span class="footer-val svelte-d3ct2b"> </span> <span class="footer-unit svelte-d3ct2b"> </span></div> <div class="footer-metric svelte-d3ct2b"><span class="footer-label svelte-d3ct2b">Error Rate</span> <span class="footer-val footer-val-error svelte-d3ct2b"> </span></div> <div class="footer-metric svelte-d3ct2b"><span class="footer-label svelte-d3ct2b">Bypasses</span> <span> </span></div></div> <div class="footer-right svelte-d3ct2b"><div class="footer-actions svelte-d3ct2b"><button class="action-btn svelte-d3ct2b" title="Sync rules to all AI agent files"> </button> <button class="action-btn svelte-d3ct2b" title="Run full scan on all tracked files"> </button> <button class="action-btn action-btn-warn svelte-d3ct2b" title="Tune noisy rules"> </button></div> <div class="storage-bar-wrap svelte-d3ct2b"><div class="storage-bar svelte-d3ct2b"><div class="storage-fill svelte-d3ct2b"></div></div> <span class="footer-label svelte-d3ct2b"> </span></div></div></footer></main></div> <!></div>');function cd(e,t){bl(t,!1);const r=B(),a=B(),n=B(),i=B(),d=B(),u=B(),f=B(),p=B(),m=B(),C=B(),k=B(),E=B(),y=B(),D=B(),S=B(),I=B(),ae=B(),ie=B(),me=B(),Xe=B();let _=B({config:null,stats:{rules:{},files:{},topRules:[],topFiles:[]},files:[],memories:[]}),ge=B([]),ot=B(!1),ct=B("all"),$e=B(""),Tt=B(!1),Je=B(""),_e=B({type:"rule",scope:"project",content:"",reason:"",tags:"dashboard"}),Pe=B("live-feed"),qe=B("live-feed"),Ie=B(null),Ct=B(!1),Qt=B("core-engine"),Ve=B(!1),Qs=B(""),Rs=B(!1),Se=B({provider:"",model:"",apiKey:"",chatTimeoutMs:"",checkTimeoutMs:""}),wr=B(!1),Zt=B(""),es=B("");const Jl=24*60*60*1e3,$a=640,Pa=380,Bt=110,Wt=38,Ql={nestjs:["controllers","services","repositories","modules","common"],mvc:["controllers","services","models","views","shared"],"laravel-service-repository":["controllers","services","repositories","models","shared"],"go-api":["handlers","services","repositories","models","shared"],react:["pages","components","hooks","store","services"],"react-native":["screens","components","hooks","store","services"],vue:["pages","components","composables","store","services"],svelte:["routes","components","stores","lib","utils"],nuxt:["pages","components","composables","server","utils"],angular:["modules","components","services","guards","shared"],hexagonal:["domain","ports","adapters","infrastructure","shared"],"modular-monolith":["modules","api","shared","infrastructure"],"clean-architecture":["api","application","domain","infrastructure","shared"]};function kr(l){s(Ve)||w(ge,[{...l,id:crypto.randomUUID()},...s(ge)].slice(0,80))}function ja(l){return l.type==="saved"?{type:"saved",timestamp:l.timestamp,file:l.file}:l.type==="clean"?{type:"clean",timestamp:l.timestamp,file:l.file}:l.type==="skipped"?{type:"skipped",timestamp:l.timestamp,file:l.file,reason:l.reason}:l.type==="violations"?{type:"violations",timestamp:l.timestamp,file:l.file,violations:l.violations}:l.type==="log"?{type:"log",timestamp:l.timestamp,file:l.file,message:l.message}:l.type==="error"?{type:"error",timestamp:l.timestamp,message:l.message}:l.type==="ready"?{type:"system",timestamp:l.timestamp,message:`Watching ${l.path} | ${l.rules} rules | ${l.model}`}:{type:"system",timestamp:l.timestamp,message:"Watch stopped"}}function xr(l){const b=s(_).files??[],A=b.findIndex($=>$.file===l.file),O=b.slice();return A===-1?O.push(l):O[A]=l,O.sort(($,q)=>q.lastSeen.localeCompare($.lastSeen))}function Zl(l){const b=s(_).watcher??{enabled:!0,running:!1,path:void 0,model:void 0,rules:void 0,lastEventAt:void 0,error:void 0};let A=s(_).files,O={...b,lastEventAt:l.timestamp,enabled:!0};l.type==="ready"&&(O={...O,running:!0,error:void 0,path:l.path,model:l.model,rules:l.rules}),l.type==="saved"&&(A=xr({file:l.file,status:"checking",lastSeen:l.timestamp,violations:[]})),l.type==="clean"&&(A=xr({file:l.file,status:"clean",lastSeen:l.timestamp,violations:[]})),l.type==="skipped"&&(A=xr({file:l.file,status:"skipped",lastSeen:l.timestamp,violations:[],message:l.reason})),l.type==="violations"&&(A=xr({file:l.file,status:"violations",lastSeen:l.timestamp,violations:l.violations})),l.type==="error"&&(O={...O,running:!1,error:l.message}),l.type==="stopped"&&(O={...O,running:!1});const $=[l,...s(_).events??[]].slice(0,100);w(_,{...s(_),files:A,events:$,watcher:O})}function zr(l=[]){w(ge,l.map(ja).map(b=>({...b,id:crypto.randomUUID()})).reverse().slice(0,80))}function Ha(l){return new Intl.DateTimeFormat(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date(l))}function Ba(l,b){const A=l.file||b;return l.line?`${A}:${l.line}`:A}function ei(l){return l.type==="saved"?"SAVE":l.type==="clean"?"OK":l.type==="skipped"?"SKIP":l.type==="violations"?"FAIL":l.type==="log"?"CHCK":l.type==="error"?"WARN":"SYS"}function ti(l){return l.type==="clean"?"label-ok":l.type==="violations"||l.type==="error"?"label-warn":l.type==="log"?"label-chck":l.type==="system"?"label-sys":"label-info"}async function Zs(){const l=await fetch(`/api/snapshot?t=${Date.now()}`,{cache:"no-store"});w(_,await l.json()),zr(s(_).events)}async function si(){w(Je,"");try{const l=await fetch("/api/refresh",{method:"POST",headers:{"content-type":"application/json"},cache:"no-store"});if(!l.ok)throw new Error((await l.json()).error??"Refresh failed");const b=await l.json();b.snapshot?(w(_,b.snapshot),zr(s(_).events)):await Zs()}catch(l){w(Je,l.message)}}function ri(){try{localStorage.clear(),sessionStorage.clear()}finally{location.reload()}}async function ai(){w(wr,!0),w(Zt,"");try{const l=await fetch("/api/config/model",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(s(Se))}),b=await l.json().catch(()=>({}));if(!l.ok)throw new Error(b.error??"Save failed");const A=Array.isArray(b.warnings)&&b.warnings.length>0?" — "+b.warnings.join("; "):"";w(Zt,`✓ ${b.message??"Settings updated"}${A}`),await Zs()}catch(l){w(Zt,`✗ ${l.message}`)}finally{w(wr,!1)}}async function Yr(l){w(es,l);try{await fetch(`/api/actions/${l}`,{method:"POST"}),kr({type:"system",timestamp:new Date().toISOString(),message:`Action started: memory-core ${l==="check-all"?"check --all":l}`})}catch{}finally{w(es,"")}}function Wa(){const l=location.protocol==="https:"?"wss:":"ws:",b=new WebSocket(`${l}//${location.host}/ws`);b.addEventListener("open",()=>{w(ot,!0),kr({type:"system",timestamp:new Date().toISOString(),message:"Dashboard connected"})}),b.addEventListener("close",()=>{w(ot,!1),kr({type:"error",timestamp:new Date().toISOString(),message:"Dashboard disconnected"}),setTimeout(Wa,1500)}),b.addEventListener("message",A=>{const O=JSON.parse(A.data);if(O.type==="snapshot"){w(_,O.snapshot),s(ge).length===0&&zr(s(_).events);return}if(O.type==="stats"){w(_,{...s(_),stats:O.stats});return}O.type==="watch"&&(Zl(O.event),kr(ja(O.event)))})}async function ni(){if(s(_e).content.trim()){w(Tt,!0),w(Je,"");try{const l=await fetch("/api/memories",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(s(_e))});if(!l.ok)throw new Error((await l.json()).error??"Save failed");w(_e,{type:"rule",scope:"project",content:"",reason:"",tags:"dashboard"}),await Zs()}catch(l){w(Je,l.message)}finally{w(Tt,!1)}}}async function li(l){w(Je,"");const b=await fetch(`/api/memories/${l}`,{method:"DELETE"});if(!b.ok){w(Je,(await b.json()).error??"Delete failed");return}await Zs()}function Va(l){w(Qt,l),w(Ct,!1),l==="commit-hook"?w(Pe,"commit-hook"):w(Pe,"live-feed")}function ii(){w(Pe,s(Pe)==="commit-hook"?"live-feed":"commit-hook"),w(Qt,s(Pe)==="commit-hook"?"commit-hook":"core-engine")}function oi(l){s(Ct)&&(l.target.closest(".service-dropdown-wrap")||w(Ct,!1))}let ts=B(localStorage.getItem("mc-theme")==="dark"||!localStorage.getItem("mc-theme")&&window.matchMedia("(prefers-color-scheme: dark)").matches);function ci(){w(ts,!s(ts)),localStorage.setItem("mc-theme",s(ts)?"dark":"light")}document.documentElement.setAttribute("data-theme",s(ts)?"dark":"light"),Zs().catch(l=>{w(Je,l.message)}),Wa(),Ee(()=>(s(_),s(ct),s($e)),()=>{w(r,s(_).memories.filter(l=>{const b=s(ct)==="all"||l.type===s(ct),A=`${l.type} ${l.scope} ${l.content} ${l.reason??""} ${l.tags.join(" ")}`.toLowerCase();return b&&A.includes(s($e).toLowerCase())}))}),Ee(()=>s(_),()=>{w(a,s(_).files.reduce((l,b)=>l+b.violations.length,0))}),Ee(()=>s(_),()=>{w(n,s(_).files.filter(l=>l.status==="clean").length)}),Ee(()=>s(_),()=>{w(i,Object.values(s(_).stats.rules).reduce((l,b)=>l+b,0))}),Ee(()=>s(_),()=>{w(d,s(_).stats.recentViolations??[])}),Ee(()=>s(d),()=>{w(u,s(d).filter(l=>{if(!(l.source==="hook"||l.source==="ci"))return!1;const b=Date.parse(l.timestamp);return Number.isNaN(b)?!1:Date.now()-b<=Jl}))}),Ee(()=>s(a),()=>{w(f,s(a))}),Ee(()=>s(_),()=>{w(p,s(_).files.filter(l=>l.status!=="checking").length)}),Ee(()=>s(_),()=>{w(m,s(_).memories.filter(l=>["rule","pattern","decision"].includes(l.type)).length)}),Ee(()=>s(_),()=>{var l;w(C,((l=s(_).memoryCount)==null?void 0:l.total)??s(_).memories.length)}),Ee(()=>(s(ot),s(_)),()=>{var l,b;w(k,s(ot)?((l=s(_).watcher)==null?void 0:l.enabled)===!1?{live:!1,label:"Watch off"}:(b=s(_).watcher)!=null&&b.running?{live:!0,label:"Watcher live"}:{live:!1,label:"Watcher idle"}:{live:!1,label:"Disconnected"})}),Ee(()=>s(_),()=>{var l;w(E,((l=s(_).arch)==null?void 0:l.layers)??[])}),Ee(()=>s(_),()=>{var l;w(y,((l=s(_).arch)==null?void 0:l.rules)??[])}),Ee(()=>(s(E),s(_)),()=>{w(D,(()=>{var R,g,U,j;const l=s(E);if(l.length===0)return[];const b=((R=s(_).runtime)==null?void 0:R.project.backendArchitecture)??((g=s(_).runtime)==null?void 0:g.project.frontendFramework)??((j=(U=s(_).runtime)==null?void 0:U.project.activeArchitectures)==null?void 0:j[0])??"",A=Ql[b]??["api","application","domain","infrastructure","shared"],O=[...l].sort((F,de)=>{const Me=A.indexOf(F.name)===-1?99:A.indexOf(F.name),Ae=A.indexOf(de.name)===-1?99:A.indexOf(de.name);return Me-Ae}),$=Math.min(O.length,3),q=Math.ceil(O.length/$),Z=($a-$*Bt)/($+1),te=(Pa-q*Wt)/(q+1);return O.map((F,de)=>{const Me=de%$,Ae=Math.floor(de/$);return{name:F.name,description:F.description,x:Z+Me*(Bt+Z),y:te+Ae*(Wt+te)}})})())}),Ee(()=>(s(D),s(y)),()=>{w(S,(()=>{const l=new Map(s(D).map(b=>[b.name,b]));return s(y).filter(b=>b.fromLayer!=="*"&&b.toLayer!=="*").map(b=>{const A=l.get(b.fromLayer),O=l.get(b.toLayer);if(!A||!O)return null;const $=A.x+Bt/2,q=A.y+Wt/2,Z=O.x+Bt/2,te=O.y+Wt/2,R=Z-$,g=te-q,U=Math.sqrt(R*R+g*g)||1,j=$+R/U*(Bt/2+4),F=q+g/U*(Wt/2+4),de=Z-R/U*(Bt/2+4),Me=te-g/U*(Wt/2+4);return{r:b,sx:j,sy:F,ex:de,ey:Me}}).filter(Boolean)})())}),Ee(()=>s(_),()=>{var l;w(I,((l=s(_).runtime)==null?void 0:l.postgres.connected)??!1)}),Ee(()=>s(_),()=>{var l;w(ae,((l=s(_).runtime)==null?void 0:l.model.ollamaReachable)??!1)}),Ee(()=>s(_),()=>{var l,b;w(ie,(((l=s(_).runtime)==null?void 0:l.model.checkModelResolved)??((b=s(_).runtime)==null?void 0:b.model.chatModel)??"unknown").toUpperCase())}),Ee(()=>s(_),()=>{var l,b;w(me,((l=s(_).runtime)==null?void 0:l.project.backendArchitecture)==="custom"||((b=s(_).runtime)==null?void 0:b.project.frontendFramework)==="custom")}),Ee(()=>s(_),()=>{w(Xe,(()=>{var O,$;const l=(O=s(_).runtime)==null?void 0:O.project.backendArchitecture,b=($=s(_).runtime)==null?void 0:$.project.frontendFramework,A=[l?l==="custom"?"Custom":l:null,b?b==="custom"?"Custom":b:null].filter(Boolean);return A.length>0?A.join(" / "):null})())}),Ee(()=>s(ts),()=>{document.documentElement.setAttribute("data-theme",s(ts)?"dark":"light")}),Dc(),fv();var Ua=od();re("click",ga,oi);var Ka=o(Ua),qa=o(Ka),vi=c(o(qa),2),Gr=o(vi);let za;var Xr=c(Gr,2);let Ya;var Jr=c(Xr,2);let Ga;var Qr=c(Jr,2);let Xa;var Zr=c(Qr,2);let Ja;var di=c(o(Zr));{var fi=l=>{var b=pv(),A=o(b);W(()=>M(A,(s(_),h(()=>{var O;return(O=s(_).violationHistory)==null?void 0:O.length})))),T(l,b)};Y(di,l=>{s(_),h(()=>{var b;return(((b=s(_).violationHistory)==null?void 0:b.length)??0)>0})&&l(fi)})}var Qa=c(qa,2),ui=c(o(Qa),2),pi=c(Qa,2),Er=c(o(pi),2);let Za;var en=c(Er,2),ea=c(en,2),hi=o(ea);{var _i=l=>{var b=hv();T(l,b)},bi=l=>{var b=_v();T(l,b)};Y(hi,l=>{s(ts)?l(_i):l(bi,-1)})}var tn=c(Ka,2),sn=o(tn),rn=c(o(sn),4);let an;var mi=c(sn,2),nn=o(mi),ln=c(o(nn),2),gi=c(o(ln),2),yi=o(gi),ta=c(ln,2);let on;var cn=o(ta);let vn;var wi=c(cn,2),ki=o(wi),sa=c(ta,2);let dn;var fn=o(sa);let un;var xi=c(fn,2),Ei=o(xi),pn=c(sa,2);{var Si=l=>{var b=bv(),A=c(o(b),2),O=o(A);W(()=>M(O,`${s(_),h(()=>{var $;return($=s(_).arch)==null?void 0:$.pendingRules})??""} PENDING RULES`)),T(l,b)};Y(pn,l=>{s(_),h(()=>{var b;return(((b=s(_).arch)==null?void 0:b.pendingRules)??0)>0})&&l(Si)})}var hn=c(pn,2);{var Mi=l=>{var b=mv();let A;var O=o(b);let $;var q=c(O,2),Z=o(q);W(te=>{A=ce(b,1,"health-badge svelte-d3ct2b",null,A,{"health-warn":s(me),"health-green":!s(me)}),$=ce(O,1,"dot svelte-d3ct2b",null,$,{"dot-warn":s(me),"dot-green":!s(me)}),M(Z,`ARCH: ${te??""}${s(me)?" — ADD RULES":""}`)},[()=>(s(Xe),h(()=>s(Xe).toUpperCase()))]),T(l,b)};Y(hn,l=>{s(Xe)&&l(Mi)})}var _n=c(hn,2);{var Ai=l=>{var b=gv(),A=o(b);W(()=>M(A,(s(_),h(()=>s(_).dbError)))),T(l,b)};Y(_n,l=>{s(_),h(()=>s(_).dbError)&&l(Ai)})}var Ti=c(_n,2);{var Ci=l=>{var b=yv(),A=o(b);W(()=>M(A,s(Je))),T(l,b)};Y(Ti,l=>{s(Je)&&l(Ci)})}var bn=c(nn,2),mn=o(bn),gn=o(mn),Oi=c(o(gn),2),yn=c(gn,2),ra=o(yn),wn=o(ra),Li=o(wn),Ri=c(wn,2);let kn;var Ni=c(ra,2);{var Ii=l=>{var b=kv(),A=o(b);let O;var $=c(A,2);let q;var Z=c(o($),2);{var te=R=>{var g=wv(),U=o(g);W(()=>M(U,(s(u),h(()=>s(u).length)))),T(R,g)};Y(Z,R=>{s(u),h(()=>s(u).length>0)&&R(te)})}W(()=>{O=ce(A,1,"dropdown-item svelte-d3ct2b",null,O,{"dropdown-item-active":s(Qt)==="core-engine"}),q=ce($,1,"dropdown-item svelte-d3ct2b",null,q,{"dropdown-item-active":s(Qt)==="commit-hook"})}),re("click",A,()=>Va("core-engine")),re("click",$,()=>Va("commit-hook")),T(l,b)};Y(Ni,l=>{s(Ct)&&l(Ii)})}var Di=c(yn,4),xn=o(Di),En=c(o(xn),2);let Sn;var Fi=o(En),Mn=c(xn,2),$i=c(o(Mn),2),Pi=o($i),ji=c(Mn,2),Hi=c(o(ji),2),Bi=o(Hi),Wi=c(mn,2),An=o(Wi),Tn=o(An);let Cn;var Vi=c(Tn,2),Ui=o(Vi),er=c(An,2);let On;var Ki=o(er);{var qi=l=>{var b=xv();T(l,b)},zi=l=>{var b=Ev();T(l,b)};Y(Ki,l=>{s(Ve)?l(qi):l(zi,-1)})}var Yi=c(er,2),Ln=c(bn,2),Rn=o(Ln);{var Gi=l=>{var b=Ds(),A=Ue(b);{var O=q=>{var Z=Av(),te=c(Ue(Z),4);{var R=U=>{var j=Sv();T(U,j)},g=U=>{var j=Mv();T(U,j)};Y(te,U=>{s(me)?U(R):U(g,-1)})}T(q,Z)},$=q=>{var Z=Ds(),te=Ue(Z);dt(te,1,()=>(s(ge),h(()=>[...s(ge)].reverse())),R=>R.id,(R,g)=>{var U=Lv(),j=Ue(U);let F;var de=o(j),Me=o(de),Ae=c(de,2),xe=o(Ae),x=c(Ae,2),oe=o(x);{var ne=N=>{var H=It();W(()=>M(H,(s(g),h(()=>s(g).message)))),T(N,H)},J=N=>{var H=It();W(()=>M(H,`saved: ${s(g),h(()=>s(g).file)??""}`)),T(N,H)},fe=N=>{var H=It();W(()=>M(H,`${s(g),h(()=>s(g).file)??""} — no violations`)),T(N,H)},ye=N=>{var H=It();W(()=>M(H,`${s(g),h(()=>s(g).file)??""} — skipped: ${s(g),h(()=>s(g).reason)??""}`)),T(N,H)},Te=N=>{var H=It();W(()=>M(H,`${s(g),h(()=>s(g).file)??""} — ${s(g),h(()=>s(g).message)??""}`)),T(N,H)},Ne=N=>{var H=It();W(()=>M(H,`${s(g),h(()=>s(g).violations.length)??""} violation${s(g),h(()=>s(g).violations.length===1?"":"s")??""} in ${s(g),h(()=>s(g).file)??""}`)),T(N,H)};Y(oe,N=>{s(g),h(()=>s(g).type==="system"||s(g).type==="error")?N(ne):(s(g),h(()=>s(g).type==="saved")?N(J,1):(s(g),h(()=>s(g).type==="clean")?N(fe,2):(s(g),h(()=>s(g).type==="skipped")?N(ye,3):(s(g),h(()=>s(g).type==="log")?N(Te,4):N(Ne,-1)))))})}var se=c(x,2),be=c(j,2);{var je=N=>{var H=Ds(),De=Ue(H);dt(De,3,()=>(s(g),h(()=>s(g).violations)),(Q,K)=>`${s(g).id}-${K}`,(Q,K,pe)=>{var Ce=Ov(),vt=o(Ce),st=o(vt),ve=c(vt,2),Qe=o(ve),Ot=o(Qe),Lt=c(Qe,2);{var us=ze=>{var Rt=Tv(),Is=c(Ue(Rt)),tr=o(Is);W(()=>M(tr,(s(K),h(()=>s(K).rule)))),T(ze,Rt)};Y(Lt,ze=>{s(K),h(()=>s(K).rule)&&ze(us)})}var Vt=c(Lt,2);{var Ut=ze=>{var Rt=It();W(()=>M(Rt,`— ${s(K),h(()=>s(K).issue)??""}`)),T(ze,Rt)};Y(Vt,ze=>{s(K),h(()=>s(K).issue)&&ze(Ut)})}var ss=c(Vt,2);{var Ns=ze=>{var Rt=Cv(),Is=c(Ue(Rt)),tr=o(Is);W(()=>M(tr,`→ ${s(K),h(()=>s(K).suggestion)??""}`)),T(ze,Rt)};Y(ss,ze=>{s(K),h(()=>s(K).suggestion)&&ze(Ns)})}W(ze=>{M(st,`[${s(pe)+1}]`),M(Ot,ze)},[()=>(s(K),s(g),h(()=>Ba(s(K),s(g).file)))]),T(Q,Ce)}),T(N,H)};Y(be,N=>{s(g),h(()=>s(g).type==="violations")&&N(je)})}W((N,H,De)=>{F=ce(j,1,"log-row svelte-d3ct2b",null,F,{"log-row-warn":s(g).type==="error","log-row-ok":s(g).type==="clean","log-row-fail":s(g).type==="violations"}),M(Me,N),ce(Ae,1,`log-label ${H??""}`,"svelte-d3ct2b"),M(xe,`[${De??""}]`)},[()=>(s(g),h(()=>Ha(s(g).timestamp))),()=>(s(g),h(()=>ti(s(g)))),()=>(s(g),h(()=>ei(s(g))))]),re("click",se,()=>{var H;const N=s(g).type==="system"||s(g).type==="error"?s(g).message:s(g).type==="saved"?`saved: ${s(g).file}`:s(g).file;(H=navigator.clipboard)==null||H.writeText(N)}),T(R,U)}),T(q,Z)};Y(A,q=>{s(ge),h(()=>s(ge).length===0)?q(O):q($,-1)})}T(l,b)},Xi=l=>{var b=Fv(),A=Ue(b),O=c(o(A),2),$=o(O),q=c(A,2);{var Z=R=>{var g=Rv();T(R,g)},te=R=>{var g=Ds(),U=Ue(g);dt(U,3,()=>(s(u),h(()=>s(u).slice(0,20))),(j,F)=>`${j.timestamp}-${F}`,(j,F)=>{var de=Dv(),Me=Ue(de),Ae=o(Me),xe=o(Ae),x=c(Ae,2),oe=o(x),ne=c(x,2),J=o(ne),fe=o(J),ye=c(J,2);{var Te=be=>{var je=It();W(N=>M(je,`— ${N??""}`),[()=>(s(F),h(()=>Ba(s(F),s(F).file)))]),T(be,je)};Y(ye,be=>{s(F),h(()=>s(F).file)&&be(Te)})}var Ne=c(Me,2);{var se=be=>{var je=Iv(),N=c(o(je),2),H=o(N);{var De=pe=>{var Ce=It();W(()=>M(Ce,(s(F),h(()=>s(F).issue)))),T(pe,Ce)};Y(H,pe=>{s(F),h(()=>s(F).issue)&&pe(De)})}var Q=c(H,2);{var K=pe=>{var Ce=Nv(),vt=c(Ue(Ce)),st=o(vt);W(()=>M(st,`→ ${s(F),h(()=>s(F).suggestion)??""}`)),T(pe,Ce)};Y(Q,pe=>{s(F),h(()=>s(F).suggestion)&&pe(K)})}T(be,je)};Y(Ne,be=>{s(F),h(()=>s(F).issue||s(F).suggestion)&&be(se)})}W(be=>{M(xe,be),M(oe,`[${s(F),h(()=>s(F).source==="ci"?"CI":"HOOK")??""}]`),M(fe,(s(F),h(()=>s(F).rule)))},[()=>(s(F),h(()=>Ha(s(F).timestamp)))]),T(j,de)}),T(R,g)};Y(q,R=>{s(u),h(()=>s(u).length===0)?R(Z):R(te,-1)})}W(()=>M($,`${s(u),h(()=>s(u).length)??""} violation${s(u),h(()=>s(u).length===1?"":"s")??""} in last 24h`)),T(l,b)},Ji=l=>{var b=Bv(),A=Ue(b),O=c(o(A),2),$=o(O),q=c(A,2),Z=o(q),te=o(Z);te.value=te.__value="all";var R=c(te);R.value=R.__value="rule";var g=c(R);g.value=g.__value="decision";var U=c(g);U.value=U.__value="pattern";var j=c(U);j.value=j.__value="ignore";var F=c(Z,2),de=c(q,2),Me=o(de),Ae=o(Me),xe=o(Ae),x=o(xe);x.value=x.__value="rule";var oe=c(x);oe.value=oe.__value="decision";var ne=c(oe);ne.value=ne.__value="pattern";var J=c(ne);J.value=J.__value="ignore";var fe=c(xe,2),ye=o(fe);ye.value=ye.__value="project";var Te=c(ye);Te.value=Te.__value="global";var Ne=c(fe,2),se=c(Ne,2),be=c(Ae,2),je=o(be),N=c(je,2),H=o(N),De=c(de,2);dt(De,5,()=>s(r),Q=>Q.id,(Q,K)=>{var pe=Pv(),Ce=o(pe),vt=o(Ce),st=c(Ce,2),ve=o(st),Qe=c(st,2),Ot=o(Qe),Lt=c(Qe,2);{var us=Ut=>{var ss=$v(),Ns=o(ss);W(()=>M(Ns,(s(K),h(()=>s(K).reason)))),T(Ut,ss)};Y(Lt,Ut=>{s(K),h(()=>s(K).reason)&&Ut(us)})}var Vt=c(Lt,2);W(()=>{M(vt,(s(K),h(()=>s(K).type))),M(ve,(s(K),h(()=>s(K).scope))),M(Ot,(s(K),h(()=>s(K).content)))}),re("click",Vt,()=>li(s(K).id)),T(Q,pe)},Q=>{var K=Hv(),pe=o(K),Ce=o(pe);{var vt=ve=>{var Qe=jv();T(ve,Qe)},st=ve=>{var Qe=It("No rules match the current filters.");T(ve,Qe)};Y(Ce,ve=>{s(me)&&s(m)===0?ve(vt):ve(st,-1)})}T(Q,K)}),W(Q=>{M($,`${s(m)??""} rules active`),N.disabled=Q,M(H,s(Tt)?"Saving…":"+ Add Rule")},[()=>(s(Tt),s(_e),h(()=>s(Tt)||!s(_e).content.trim()))]),Cr(Z,()=>s(ct),Q=>w(ct,Q)),Kt(F,()=>s($e),Q=>w($e,Q)),Cr(xe,()=>s(_e).type,Q=>Nt(_e,s(_e).type=Q)),Cr(fe,()=>s(_e).scope,Q=>Nt(_e,s(_e).scope=Q)),Kt(Ne,()=>s(_e).reason,Q=>Nt(_e,s(_e).reason=Q)),Kt(se,()=>s(_e).tags,Q=>Nt(_e,s(_e).tags=Q)),Kt(je,()=>s(_e).content,Q=>Nt(_e,s(_e).content=Q)),re("submit",Me,dv(ni)),T(l,b)};Y(Rn,l=>{s(Pe)==="live-feed"?l(Gi):s(Pe)==="commit-hook"?l(Xi,1):s(Pe)==="rules"&&l(Ji,2)})}var Nn=c(Rn,2);{var Qi=l=>{var b=Qv(),A=Ue(b),O=c(o(A),2),$=o(O),q=c(A,2);{var Z=R=>{var g=Wv();T(R,g)},te=R=>{var g=Jv(),U=o(g);he(U,"width",$a),he(U,"height",Pa);var j=c(o(U));dt(j,1,()=>s(S),as,(xe,x)=>{var oe=Ds(),ne=Ue(oe);{var J=fe=>{const ye=$s(()=>(s(x),h(()=>s(x).r.allowed?"var(--green)":s(x).r.enforcement==="warn"?"#f59e0b":"var(--error)"))),Te=$s(()=>(s(x),h(()=>s(x).r.allowed?"arrow-allow":s(x).r.enforcement==="warn"?"arrow-warn":"arrow-block"))),Ne=$s(()=>(s(x),h(()=>s(x).r.allowed?"6,3":s(x).r.enforcement==="warn"?"4,3":"none")));var se=Vv();W(()=>{he(se,"x1",(s(x),h(()=>s(x).sx))),he(se,"y1",(s(x),h(()=>s(x).sy))),he(se,"x2",(s(x),h(()=>s(x).ex))),he(se,"y2",(s(x),h(()=>s(x).ey))),he(se,"stroke",s(ye)),he(se,"stroke-dasharray",s(Ne)),he(se,"marker-end",`url(#${s(Te)??""})`)}),T(fe,se)};Y(ne,fe=>{s(x)&&fe(J)})}T(xe,oe)});var F=c(j);dt(F,1,()=>s(D),as,(xe,x)=>{var oe=Uv();let ne;var J=o(oe);he(J,"width",Bt),he(J,"height",Wt);var fe=c(J),ye=o(fe),Te=c(fe),Ne=o(Te);W(se=>{ne=ce(oe,0,"arch-node arch-node-clickable svelte-d3ct2b",null,ne,{"arch-node-selected":s(Ie)===s(x).name}),he(oe,"aria-label",`Show files in ${s(x),h(()=>s(x).name)??""} layer`),he(J,"x",(s(x),h(()=>s(x).x))),he(J,"y",(s(x),h(()=>s(x).y))),ce(J,0,`arch-node-rect arch-node-${s(x),h(()=>s(x).name)??""}`,"svelte-d3ct2b"),he(J,"stroke-width",(s(Ie),s(x),h(()=>s(Ie)===s(x).name?2.5:1.5))),he(fe,"x",(s(x),h(()=>s(x).x+Bt/2))),he(fe,"y",(s(x),h(()=>s(x).y+Wt/2-5))),M(ye,(s(x),h(()=>s(x).name))),he(Te,"x",(s(x),h(()=>s(x).x+Bt/2))),he(Te,"y",(s(x),h(()=>s(x).y+Wt/2+9))),M(Ne,se)},[()=>(s(x),h(()=>s(x).description.length>18?s(x).description.slice(0,16)+"…":s(x).description))]),re("click",oe,()=>{w(Ie,s(Ie)===s(x).name?null:s(x).name)}),re("keydown",oe,se=>{(se.key==="Enter"||se.key===" ")&&w(Ie,s(Ie)===s(x).name?null:s(x).name)}),T(xe,oe)});var de=c(U,4);{var Me=xe=>{const x=$s(()=>(s(E),s(Ie),h(()=>s(E).find(N=>N.name===s(Ie)))));var oe=Gv(),ne=o(oe),J=o(ne),fe=o(J),ye=c(J,2),Te=o(ye),Ne=c(ye,2),se=c(ne,2);{var be=N=>{var H=qv(),De=c(o(H),2);dt(De,1,()=>($r(s(x)),h(()=>s(x).paths)),as,(Q,K)=>{var pe=Kv(),Ce=o(pe);W(()=>M(Ce,s(K))),T(Q,pe)}),T(N,H)};Y(se,N=>{$r(s(x)),h(()=>{var H,De;return(De=(H=s(x))==null?void 0:H.paths)==null?void 0:De.length})&&N(be)})}var je=c(se,2);dt(je,1,()=>(s(y),s(Ie),h(()=>[s(y).filter(N=>N.fromLayer===s(Ie)||N.toLayer===s(Ie))])),as,(N,H)=>{var De=Ds(),Q=Ue(De);{var K=pe=>{var Ce=Yv(),vt=c(o(Ce),2);dt(vt,1,()=>s(H),as,(st,ve)=>{var Qe=zv(),Ot=o(Qe);let Lt;var us=o(Ot),Vt=c(Ot,2),Ut=o(Vt);W(ss=>{Lt=ce(Ot,1,"arch-rule-badge svelte-d3ct2b",null,Lt,{"badge-block":!s(ve).allowed&&s(ve).enforcement==="block","badge-warn":!s(ve).allowed&&s(ve).enforcement==="warn","badge-allow":s(ve).allowed}),M(us,ss),M(Ut,`${s(ve),h(()=>s(ve).fromLayer)??""} → ${s(ve),h(()=>s(ve).toLayer)??""} — ${s(ve),h(()=>s(ve).name)??""}`)},[()=>(s(ve),h(()=>s(ve).enforcement.toUpperCase()))]),T(st,Qe)}),T(pe,Ce)};Y(Q,pe=>{s(H),h(()=>s(H).length)&&pe(K)})}T(N,De)}),W(()=>{M(fe,s(Ie)),M(Te,($r(s(x)),h(()=>{var N;return((N=s(x))==null?void 0:N.description)??""})))}),re("click",Ne,()=>w(Ie,null)),T(xe,oe)};Y(de,xe=>{s(Ie)&&xe(Me)})}var Ae=c(de,2);dt(Ae,5,()=>s(y),as,(xe,x)=>{var oe=Xv(),ne=o(oe);let J;var fe=o(ne),ye=c(ne,2),Te=o(ye),Ne=c(ye,2),se=o(Ne);W(be=>{J=ce(ne,1,"arch-rule-badge svelte-d3ct2b",null,J,{"badge-block":!s(x).allowed&&s(x).enforcement==="block","badge-warn":!s(x).allowed&&s(x).enforcement==="warn","badge-allow":s(x).allowed}),M(fe,be),M(Te,`${s(x),h(()=>s(x).fromLayer)??""} → ${s(x),h(()=>s(x).toLayer)??""}`),M(se,(s(x),h(()=>s(x).name)))},[()=>(s(x),h(()=>s(x).enforcement.toUpperCase()))]),T(xe,oe)}),T(R,g)};Y(q,R=>{s(E),h(()=>s(E).length===0)?R(Z):R(te,-1)})}W(()=>M($,`${s(E),h(()=>s(E).length)??""} layers · ${s(y),h(()=>s(y).length)??""} rules`)),T(l,b)};Y(Nn,l=>{s(qe)==="arch-graph"&&l(Qi)})}var Zi=c(Nn,2);{var eo=l=>{var b=ad(),A=Ue(b),O=c(o(A),2),$=o(O),q=c(A,2);{var Z=R=>{var g=Zv();T(R,g)},te=R=>{var g=rd();dt(g,5,()=>(s(_),h(()=>s(_).violationHistory??[])),as,(U,j)=>{var F=sd(),de=o(F),Me=o(de),Ae=o(Me),xe=c(Me,2),x=o(xe),oe=c(de,2);dt(oe,1,()=>(s(j),h(()=>s(j).violations)),as,(ne,J)=>{var fe=td(),ye=c(o(fe),2),Te=o(ye),Ne=c(ye,2);{var se=be=>{var je=ed(),N=o(je);W(()=>M(N,`— ${s(J),h(()=>s(J).issue)??""}`)),T(be,je)};Y(Ne,be=>{s(J),h(()=>s(J).issue)&&be(se)})}W(()=>M(Te,(s(J),h(()=>s(J).rule)))),T(ne,fe)}),W(ne=>{M(Ae,(s(j),h(()=>s(j).file))),M(x,ne)},[()=>(s(j),h(()=>new Date(s(j).timestamp).toLocaleString()))]),T(U,F)}),T(R,g)};Y(q,R=>{s(_),h(()=>{var g;return!((g=s(_).violationHistory)!=null&&g.length)})?R(Z):R(te,-1)})}W(()=>M($,`${s(_),h(()=>{var R;return((R=s(_).violationHistory)==null?void 0:R.length)??0})??""} entries (last 200)`)),T(l,b)};Y(Zi,l=>{s(qe)==="history"&&l(eo)})}var to=c(Ln,2),In=o(to),Dn=o(In),so=c(o(Dn),2),ro=o(so),Fn=c(Dn,2),$n=c(o(Fn),2),ao=o($n),no=c($n,2),lo=o(no),Pn=c(Fn,2),io=c(o(Pn),2),oo=o(io),co=c(Pn,2),jn=c(o(co),2);let Hn;var vo=o(jn),fo=c(In,2),Bn=o(fo),Sr=o(Bn),uo=o(Sr),Mr=c(Sr,2),po=o(Mr),aa=c(Mr,2),ho=o(aa),_o=c(Bn,2),Wn=o(_o),bo=o(Wn),mo=c(Wn,2),go=o(mo),yo=c(tn,2);{var wo=l=>{var b=id(),A=o(b),O=o(A),$=c(o(O),2),q=c(O,2),Z=c(o(q),2),te=c(o(Z),2),R=o(te);R.value=R.__value="ollama";var g=c(R);g.value=g.__value="openai";var U=c(g);U.value=U.__value="anthropic";var j=c(U);j.value=j.__value="minimax";var F=c(j);F.value=F.__value="openai-compatible";var de=c(Z,2),Me=c(o(de),2),Ae=c(de,2);{var xe=le=>{var He=nd(),ps=c(o(He),2);W(()=>he(ps,"placeholder",(s(_),h(()=>{var ee;return(ee=s(_).runtime)!=null&&ee.model.apiKeyConfigured?"(already set — leave blank to keep)":"sk-..."})))),Kt(ps,()=>s(Se).apiKey,ee=>Nt(Se,s(Se).apiKey=ee)),T(le,He)};Y(Ae,le=>{s(Se),h(()=>s(Se).provider&&s(Se).provider!=="ollama")&&le(xe)})}var x=c(Ae,2),oe=c(o(x),2),ne=o(oe),J=o(ne),fe=c(ne,2),ye=c(x,2);{var Te=le=>{var He=ld();let ps;var ee=o(He);W(rt=>{ps=ce(He,1,"modal-msg svelte-d3ct2b",null,ps,rt),M(ee,s(Zt))},[()=>({"modal-msg-ok":s(Zt).startsWith("✓"),"modal-msg-err":s(Zt).startsWith("✗")})]),T(le,He)};Y(ye,le=>{s(Zt)&&le(Te)})}var Ne=c(q,2),se=c(o(Ne),2),be=c(o(se),2),je=c(se,2),N=c(o(je),2),H=c(Ne,2),De=c(o(H),2),Q=c(o(De)),K=o(Q),pe=c(De,2),Ce=c(o(pe)),vt=o(Ce),st=c(pe,2),ve=c(o(st)),Qe=o(ve),Ot=c(st,2),Lt=c(o(Ot)),us=o(Lt),Vt=c(Ot,2),Ut=c(o(Vt)),ss=o(Ut),Ns=c(Vt,2),ze=c(o(Ns)),Rt=o(ze),Is=c(Ns,2),tr=c(o(Is)),ko=o(tr),Vn=c(Is,2),xo=c(o(Vn)),Eo=o(xo),So=c(Vn,2),Mo=c(o(So)),Ao=o(Mo);W((le,He,ps)=>{ne.disabled=s(wr),M(J,s(wr)?"Saving…":"Apply"),M(K,(s(_),h(()=>{var ee;return((ee=s(_).runtime)==null?void 0:ee.model.provider)??"—"}))),M(vt,(s(_),h(()=>{var ee,rt;return((ee=s(_).runtime)==null?void 0:ee.model.checkModelResolved)??((rt=s(_).runtime)==null?void 0:rt.model.chatModel)??"—"}))),M(Qe,(s(_),h(()=>{var ee;return(ee=s(_).runtime)!=null&&ee.model.apiKeyConfigured?"Configured":"Not set"}))),M(us,(s(_),h(()=>{var ee,rt;return((ee=s(_).runtime)==null?void 0:ee.model.embeddingModelResolved)??((rt=s(_).runtime)==null?void 0:rt.model.embeddingModel)??"—"}))),M(ss,`${s(_),h(()=>{var ee,rt;return((rt=(ee=s(_).runtime)==null?void 0:ee.timeouts)==null?void 0:rt.chatTimeoutMs)??"60000"})??""} ms`),M(Rt,`${s(_),h(()=>{var ee,rt;return((rt=(ee=s(_).runtime)==null?void 0:ee.timeouts)==null?void 0:rt.checkTimeoutMs)??"20000"})??""} ms`),M(ko,(s(_),h(()=>{var ee;return((ee=s(_).stats.tokens)==null?void 0:ee.calls)??0}))),M(Eo,`${le??""} ${s(_),h(()=>{var ee;return((ee=s(_).runtime)==null?void 0:ee.model.provider)==="ollama"?"(local — free)":""})??""}`),M(Ao,`${He??""} in / ${ps??""} out`)},[()=>(s(_),h(()=>{var le,He;return((He=(le=s(_).stats.tokens)==null?void 0:le.totalTokens)==null?void 0:He.toLocaleString())??"0"})),()=>(s(_),h(()=>{var le,He;return((He=(le=s(_).stats.tokens)==null?void 0:le.inputTokens)==null?void 0:He.toLocaleString())??"0"})),()=>(s(_),h(()=>{var le,He;return((He=(le=s(_).stats.tokens)==null?void 0:le.outputTokens)==null?void 0:He.toLocaleString())??"0"}))]),re("click",$,()=>w(Rs,!1)),Cr(te,()=>s(Se).provider,le=>Nt(Se,s(Se).provider=le)),Kt(Me,()=>s(Se).model,le=>Nt(Se,s(Se).model=le)),re("click",ne,ai),re("click",fe,si),Kt(be,()=>s(Se).chatTimeoutMs,le=>Nt(Se,s(Se).chatTimeoutMs=le)),Kt(N,()=>s(Se).checkTimeoutMs,le=>Nt(Se,s(Se).checkTimeoutMs=le)),re("click",b,nl(()=>w(Rs,!1))),re("keydown",b,nl(le=>{le.key==="Escape"&&w(Rs,!1)})),T(l,b)};Y(yo,l=>{s(Rs)&&l(wo)})}W((l,b,A,O,$,q)=>{var Z,te,R,g,U;za=ce(Gr,1,"tab-btn svelte-d3ct2b",null,za,{"tab-active":s(qe)==="dashboard"}),Ya=ce(Xr,1,"tab-btn svelte-d3ct2b",null,Ya,{"tab-active":s(qe)==="live-feed"}),Ga=ce(Jr,1,"tab-btn svelte-d3ct2b",null,Ga,{"tab-active":s(qe)==="metrics"}),Xa=ce(Qr,1,"tab-btn svelte-d3ct2b",null,Xa,{"tab-active":s(qe)==="arch-graph"}),Ja=ce(Zr,1,"tab-btn svelte-d3ct2b",null,Ja,{"tab-active":s(qe)==="history"}),Za=ce(Er,1,"icon-btn svelte-d3ct2b",null,Za,{"icon-btn-active":s(Pe)==="commit-hook"}),he(Er,"title",s(Pe)==="commit-hook"?"Switch to Live Feed":"Switch to Commit Hook"),he(ea,"title",s(ts)?"Switch to light mode":"Switch to dark mode"),an=ce(rn,1,"sidebar-footer-dot svelte-d3ct2b",null,an,{"dot-live":s(k).live}),he(rn,"title",(s(k),h(()=>s(k).label))),M(yi,`CORE ${s(k),h(()=>s(k).live?"LIVE":"IDLE")??""}`),on=ce(ta,1,"health-badge svelte-d3ct2b",null,on,{"health-green":s(I),"health-warn":!s(I)}),vn=ce(cn,1,"dot svelte-d3ct2b",null,vn,{"dot-green":s(I),"dot-warn":!s(I)}),M(ki,`DB ${s(I)?"CONNECTED":"DISCONNECTED"}`),dn=ce(sa,1,"health-badge svelte-d3ct2b",null,dn,{"health-blue":s(ae)||((Z=s(_).runtime)==null?void 0:Z.model.provider)!=="ollama","health-warn":!s(ae)&&((te=s(_).runtime)==null?void 0:te.model.provider)==="ollama"}),un=ce(fn,1,"dot svelte-d3ct2b",null,un,{"dot-blue":s(ae)||((R=s(_).runtime)==null?void 0:R.model.provider)!=="ollama","dot-warn":!s(ae)&&((g=s(_).runtime)==null?void 0:g.model.provider)==="ollama"}),M(Ei,`MODEL: ${s(ie)??""}`),M(Li,`SERVICE: ${s(Qt)==="commit-hook"?"COMMIT HOOK":"CORE-ENGINE"}`),kn=ce(Ri,0,"chevron svelte-d3ct2b",null,kn,{"chevron-open":s(Ct)}),Sn=ce(En,1,"metric-value svelte-d3ct2b",null,Sn,{"metric-value-warn":s(f)>0}),M(Fi,s(f)),M(Pi,l),M(Bi,b),Cn=ce(Tn,1,"dot dot-green svelte-d3ct2b",null,Cn,{"dot-pulse":s(k).live}),M(Ui,A),On=ce(er,1,"icon-btn svelte-d3ct2b",null,On,{"icon-btn-active":s(Ve)}),he(er,"title",s(Ve)?"Resume":"Pause"),M(ro,(s(_),h(()=>{var j;return((j=s(_).stats.tokens)==null?void 0:j.calls)??0}))),M(ao,O),M(lo,(s(_),h(()=>{var j;return((j=s(_).runtime)==null?void 0:j.model.provider)==="ollama"?"LOCAL (FREE)":"USED"}))),M(oo,$),Hn=ce(jn,1,"footer-val svelte-d3ct2b",null,Hn,{"footer-val-error":(((U=s(_).stats.bypasses)==null?void 0:U.withoutReason)??0)>0}),M(vo,`${s(_),h(()=>{var j;return((j=s(_).stats.bypasses)==null?void 0:j.withoutReason)??0})??""} unrecorded`),Sr.disabled=s(es)==="sync",M(uo,`${s(es)==="sync"?"…":"⟳"} Sync Agents`),Mr.disabled=s(es)==="check-all",M(po,`${s(es)==="check-all"?"…":"⊛"} Check All`),aa.disabled=s(es)==="tune",M(ho,`${s(es)==="tune"?"…":"⚙"} Tune Rules`),av(bo,`width: ${q??""}%`),M(go,`Storage: ${s(C)??""} memories`)},[()=>(s(p),h(()=>s(p).toLocaleString())),()=>(s(m),h(()=>s(m).toLocaleString())),()=>(s(k),h(()=>s(k).live?"LIVE STREAMING":s(k).label.toUpperCase())),()=>(s(_),h(()=>{var l;return(l=s(_).stats.tokens)!=null&&l.totalTokens?(s(_).stats.tokens.totalTokens/1e3).toFixed(1)+"K":"—"})),()=>(s(f),s(p),h(()=>s(f)===0?"0.00%":(s(f)/Math.max(1,s(p))*100).toFixed(2)+"%")),()=>(s(C),h(()=>Math.min(100,s(C)/Math.max(1,s(C)+100)*100+20)))]),re("click",Gr,()=>{w(qe,"dashboard"),w(Pe,"live-feed")}),re("click",Xr,()=>{w(qe,"live-feed"),w(Pe,"live-feed")}),re("click",Jr,()=>{w(qe,"metrics"),w(Pe,"rules")}),re("click",Qr,()=>{w(qe,"arch-graph"),w(Pe,"live-feed")}),re("click",Zr,()=>{w(qe,"history")}),Kt(ui,()=>s(Qs),l=>w(Qs,l)),re("click",Er,ii),re("click",en,()=>{var l,b,A,O,$,q;w(Rs,!s(Rs)),w(Se,{provider:((l=s(_).runtime)==null?void 0:l.model.provider)??"",model:((b=s(_).runtime)==null?void 0:b.model.chatModel)??"",apiKey:"",chatTimeoutMs:((O=(A=s(_).runtime)==null?void 0:A.timeouts)==null?void 0:O.chatTimeoutMs)??"",checkTimeoutMs:((q=($=s(_).runtime)==null?void 0:$.timeouts)==null?void 0:q.checkTimeoutMs)??""}),w(Zt,"")}),re("click",ea,ci),re("click",Oi,ri),re("click",ra,vv(()=>w(Ct,!s(Ct)))),re("click",er,()=>w(Ve,!s(Ve))),re("click",Yi,()=>{const l=new Blob([JSON.stringify(s(_),null,2)],{type:"application/json"}),b=document.createElement("a");b.href=URL.createObjectURL(l),b.download="memory-core-snapshot.json",b.click()}),re("click",Sr,()=>Yr("sync")),re("click",Mr,()=>Yr("check-all")),re("click",aa,()=>Yr("tune")),T(e,Ua),ml()}Gc(cd,{target:document.getElementById("app")});
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
8
8
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
9
9
|
<link href="https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap" rel="stylesheet">
|
|
10
|
-
<script type="module" crossorigin src="/assets/index-
|
|
10
|
+
<script type="module" crossorigin src="/assets/index-9hcL4kCI.js"></script>
|
|
11
11
|
<link rel="stylesheet" crossorigin href="/assets/index-DAEzcad9.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
@@ -883,7 +883,7 @@ function acceptWebSocket(req, socket) {
|
|
|
883
883
|
function startConfigWatch() {
|
|
884
884
|
let timer;
|
|
885
885
|
const watchedFiles = [".env", ".memory-core.env", ".memory-core.json", ".memory-core-stats.json"];
|
|
886
|
-
const archmindFiles = ["approval-queue.json", "rules.json"];
|
|
886
|
+
const archmindFiles = ["approval-queue.json", "rules.json", "layers.json"];
|
|
887
887
|
const archmindDir = join(projectRoot, ".archmind");
|
|
888
888
|
const watchedPaths = /* @__PURE__ */ new Set();
|
|
889
889
|
const watchers = [];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shahmilsaari/memory-core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.28",
|
|
4
4
|
"description": "Universal AI memory core — generate AI context files from architecture profiles with RAG support",
|
|
5
5
|
"homepage": "https://memory-core.shahmilsaari.my/",
|
|
6
6
|
"type": "module",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
var To=Object.defineProperty;var Un=e=>{throw TypeError(e)};var Ao=(e,t,r)=>t in e?To(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var kt=(e,t,r)=>Ao(e,typeof t!="symbol"?t+"":t,r),na=(e,t,r)=>t.has(e)||Un("Cannot "+r);var v=(e,t,r)=>(na(e,t,"read from private field"),r?r.call(e):t.get(e)),W=(e,t,r)=>t.has(e)?Un("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),z=(e,t,r,a)=>(na(e,t,"write to private field"),a?a.call(e,r):t.set(e,r),r),fe=(e,t,r)=>(na(e,t,"access private method"),r);(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const n of document.querySelectorAll('link[rel="modulepreload"]'))a(n);new MutationObserver(n=>{for(const i of n)if(i.type==="childList")for(const d of i.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&a(d)}).observe(document,{childList:!0,subtree:!0});function r(n){const i={};return n.integrity&&(i.integrity=n.integrity),n.referrerPolicy&&(i.referrerPolicy=n.referrerPolicy),n.crossOrigin==="use-credentials"?i.credentials="include":n.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function a(n){if(n.ep)return;n.ep=!0;const i=r(n);fetch(n.href,i)}})();const Co=!1;var Ea=Array.isArray,Oo=Array.prototype.indexOf,Vs=Array.prototype.includes,Vr=Array.from,Lo=Object.defineProperty,nr=Object.getOwnPropertyDescriptor,cl=Object.getOwnPropertyDescriptors,Ro=Object.prototype,No=Array.prototype,Sa=Object.getPrototypeOf,Kn=Object.isExtensible;const Io=()=>{};function Do(e){return e()}function va(e){for(var t=0;t<e.length;t++)e[t]()}function vl(){var e,t,r=new Promise((a,n)=>{e=a,t=n});return{promise:r,resolve:e,reject:t}}const Ke=2,Us=4,mr=8,dl=1<<24,jt=16,Mt=32,ds=64,da=128,bt=512,Te=1024,He=2048,Tt=4096,Ge=8192,mt=16384,Ls=32768,qn=1<<25,Ks=65536,fa=1<<17,Fo=1<<18,Gs=1<<19,fl=1<<20,Pt=1<<25,Ts=65536,Pr=1<<21,cr=1<<22,cs=1<<23,xs=Symbol("$state"),$o=Symbol(""),qt=new class extends Error{constructor(){super(...arguments);kt(this,"name","StaleReactionError");kt(this,"message","The reaction that called `getAbortSignal()` was re-run or destroyed")}};function Po(){throw new Error("https://svelte.dev/e/async_derived_orphan")}function jo(e,t,r){throw new Error("https://svelte.dev/e/each_key_duplicate")}function Ho(e){throw new Error("https://svelte.dev/e/effect_in_teardown")}function Bo(){throw new Error("https://svelte.dev/e/effect_in_unowned_derived")}function Wo(e){throw new Error("https://svelte.dev/e/effect_orphan")}function Vo(){throw new Error("https://svelte.dev/e/effect_update_depth_exceeded")}function Uo(){throw new Error("https://svelte.dev/e/state_descriptors_fixed")}function Ko(){throw new Error("https://svelte.dev/e/state_prototype_fixed")}function qo(){throw new Error("https://svelte.dev/e/state_unsafe_mutation")}function zo(){throw new Error("https://svelte.dev/e/svelte_boundary_reset_onerror")}const Yo=1,Go=2,ul=4,Xo=8,Jo=16,Qo=1,Zo=2,Ie=Symbol(),pl="http://www.w3.org/1999/xhtml";function ec(){console.warn("https://svelte.dev/e/derived_inert")}function tc(){console.warn("https://svelte.dev/e/select_multiple_invalid_value")}function sc(){console.warn("https://svelte.dev/e/svelte_boundary_reset_noop")}function hl(e){return e===this.v}function rc(e,t){return e!=e?t==t:e!==t||e!==null&&typeof e=="object"||typeof e=="function"}function _l(e){return!rc(e,this.v)}let Ur=!1,ac=!1;function nc(){Ur=!0}let Ae=null;function qs(e){Ae=e}function bl(e,t=!1,r){Ae={p:Ae,i:!1,c:null,e:null,s:e,x:null,r:G,l:Ur&&!t?{s:null,u:null,$:[]}:null}}function ml(e){var t=Ae,r=t.e;if(r!==null){t.e=null;for(var a of r)Pl(a)}return t.i=!0,Ae=t.p,{}}function gr(){return!Ur||Ae!==null&&Ae.l===null}let _s=[];function gl(){var e=_s;_s=[],va(e)}function vs(e){if(_s.length===0&&!lr){var t=_s;queueMicrotask(()=>{t===_s&&gl()})}_s.push(e)}function lc(){for(;_s.length>0;)gl()}function yl(e){var t=G;if(t===null)return X.f|=cs,e;if(!(t.f&Ls)&&!(t.f&Us))throw e;os(e,t)}function os(e,t){for(;t!==null;){if(t.f&da){if(!(t.f&Ls))throw e;try{t.b.error(e);return}catch(r){e=r}}t=t.parent}throw e}const ic=-7169;function ye(e,t){e.f=e.f&ic|t}function Ma(e){e.f&bt||e.deps===null?ye(e,Te):ye(e,Tt)}function wl(e){if(e!==null)for(const t of e)!(t.f&Ke)||!(t.f&Ts)||(t.f^=Ts,wl(t.deps))}function kl(e,t,r){e.f&He?t.add(e):e.f&Tt&&r.add(e),wl(e.deps),ye(e,Te)}const hs=new Set;let R=null,je=null,ua=null,lr=!1,la=!1,Fs=null,Or=null;var zn=0;let oc=1;var Ps,js,ms,zt,Dt,fr,nt,ur,ls,Yt,Ft,Hs,Bs,gs,Ce,Lr,xl,Rr,pa,Nr,cc;const Hr=class Hr{constructor(){W(this,Ce);kt(this,"id",oc++);kt(this,"current",new Map);kt(this,"previous",new Map);W(this,Ps,new Set);W(this,js,new Set);W(this,ms,new Set);W(this,zt,new Map);W(this,Dt,new Map);W(this,fr,null);W(this,nt,[]);W(this,ur,[]);W(this,ls,new Set);W(this,Yt,new Set);W(this,Ft,new Map);W(this,Hs,new Set);kt(this,"is_fork",!1);W(this,Bs,!1);W(this,gs,new Set)}skip_effect(t){v(this,Ft).has(t)||v(this,Ft).set(t,{d:[],m:[]}),v(this,Hs).delete(t)}unskip_effect(t,r=a=>this.schedule(a)){var a=v(this,Ft).get(t);if(a){v(this,Ft).delete(t);for(var n of a.d)ye(n,He),r(n);for(n of a.m)ye(n,Tt),r(n)}v(this,Hs).add(t)}capture(t,r,a=!1){t.v!==Ie&&!this.previous.has(t)&&this.previous.set(t,t.v),t.f&cs||(this.current.set(t,[r,a]),je==null||je.set(t,r)),this.is_fork||(t.v=r)}activate(){R=this}deactivate(){R=null,je=null}flush(){try{la=!0,R=this,fe(this,Ce,Rr).call(this)}finally{zn=0,ua=null,Fs=null,Or=null,la=!1,R=null,je=null,Es.clear()}}discard(){for(const t of v(this,js))t(this);v(this,js).clear(),v(this,ms).clear(),hs.delete(this)}register_created_effect(t){v(this,ur).push(t)}increment(t,r){let a=v(this,zt).get(r)??0;if(v(this,zt).set(r,a+1),t){let n=v(this,Dt).get(r)??0;v(this,Dt).set(r,n+1)}}decrement(t,r,a){let n=v(this,zt).get(r)??0;if(n===1?v(this,zt).delete(r):v(this,zt).set(r,n-1),t){let i=v(this,Dt).get(r)??0;i===1?v(this,Dt).delete(r):v(this,Dt).set(r,i-1)}v(this,Bs)||a||(z(this,Bs,!0),vs(()=>{z(this,Bs,!1),this.flush()}))}transfer_effects(t,r){for(const a of t)v(this,ls).add(a);for(const a of r)v(this,Yt).add(a);t.clear(),r.clear()}oncommit(t){v(this,Ps).add(t)}ondiscard(t){v(this,js).add(t)}on_fork_commit(t){v(this,ms).add(t)}run_fork_commit_callbacks(){for(const t of v(this,ms))t(this);v(this,ms).clear()}settled(){return(v(this,fr)??z(this,fr,vl())).promise}static ensure(){if(R===null){const t=R=new Hr;la||(hs.add(R),lr||vs(()=>{R===t&&t.flush()}))}return R}apply(){{je=null;return}}schedule(t){var n;if(ua=t,(n=t.b)!=null&&n.is_pending&&t.f&(Us|mr|dl)&&!(t.f&Ls)){t.b.defer_effect(t);return}for(var r=t;r.parent!==null;){r=r.parent;var a=r.f;if(Fs!==null&&r===G&&(X===null||!(X.f&Ke)))return;if(a&(ds|Mt)){if(!(a&Te))return;r.f^=Te}}v(this,nt).push(r)}};Ps=new WeakMap,js=new WeakMap,ms=new WeakMap,zt=new WeakMap,Dt=new WeakMap,fr=new WeakMap,nt=new WeakMap,ur=new WeakMap,ls=new WeakMap,Yt=new WeakMap,Ft=new WeakMap,Hs=new WeakMap,Bs=new WeakMap,gs=new WeakMap,Ce=new WeakSet,Lr=function(){return this.is_fork||v(this,Dt).size>0},xl=function(){for(const a of v(this,gs))for(const n of v(a,Dt).keys()){for(var t=!1,r=n;r.parent!==null;){if(v(this,Ft).has(r)){t=!0;break}r=r.parent}if(!t)return!0}return!1},Rr=function(){var u,f;if(zn++>1e3&&(hs.delete(this),dc()),!fe(this,Ce,Lr).call(this)){for(const p of v(this,ls))v(this,Yt).delete(p),ye(p,He),this.schedule(p);for(const p of v(this,Yt))ye(p,Tt),this.schedule(p)}const t=v(this,nt);z(this,nt,[]),this.apply();var r=Fs=[],a=[],n=Or=[];for(const p of t)try{fe(this,Ce,pa).call(this,p,r,a)}catch(m){throw Ml(p),m}if(R=null,n.length>0){var i=Hr.ensure();for(const p of n)i.schedule(p)}if(Fs=null,Or=null,fe(this,Ce,Lr).call(this)||fe(this,Ce,xl).call(this)){fe(this,Ce,Nr).call(this,a),fe(this,Ce,Nr).call(this,r);for(const[p,m]of v(this,Ft))Sl(p,m)}else{v(this,zt).size===0&&hs.delete(this),v(this,ls).clear(),v(this,Yt).clear();for(const p of v(this,Ps))p(this);v(this,Ps).clear(),Yn(a),Yn(r),(u=v(this,fr))==null||u.resolve()}var d=R;if(v(this,nt).length>0){const p=d??(d=this);v(p,nt).push(...v(this,nt).filter(m=>!v(p,nt).includes(m)))}d!==null&&(hs.add(d),fe(f=d,Ce,Rr).call(f))},pa=function(t,r,a){t.f^=Te;for(var n=t.first;n!==null;){var i=n.f,d=(i&(Mt|ds))!==0,u=d&&(i&Te)!==0,f=u||(i&Ge)!==0||v(this,Ft).has(n);if(!f&&n.fn!==null){d?n.f^=Te:i&Us?r.push(n):Xs(n)&&(i&jt&&v(this,Yt).add(n),Os(n));var p=n.first;if(p!==null){n=p;continue}}for(;n!==null;){var m=n.next;if(m!==null){n=m;break}n=n.parent}}},Nr=function(t){for(var r=0;r<t.length;r+=1)kl(t[r],v(this,ls),v(this,Yt))},cc=function(){var m,A,k;for(const E of hs){var t=E.id<this.id,r=[];for(const[y,[D,S]]of this.current){if(E.current.has(y)){var a=E.current.get(y)[0];if(t&&D!==a)E.current.set(y,[D,S]);else continue}r.push(y)}var n=[...E.current.keys()].filter(y=>!this.current.has(y));if(n.length===0)t&&E.discard();else if(r.length>0){if(t)for(const y of v(this,Hs))E.unskip_effect(y,D=>{var S;D.f&(jt|cr)?E.schedule(D):fe(S=E,Ce,Nr).call(S,[D])});E.activate();var i=new Set,d=new Map;for(var u of r)El(u,n,i,d);d=new Map;var f=[...E.current.keys()].filter(y=>this.current.has(y)?this.current.get(y)[0]!==y:!0);for(const y of v(this,ur))!(y.f&(mt|Ge|fa))&&Ta(y,f,d)&&(y.f&(cr|jt)?(ye(y,He),E.schedule(y)):v(E,ls).add(y));if(v(E,nt).length>0){E.apply();for(var p of v(E,nt))fe(m=E,Ce,pa).call(m,p,[],[]);z(E,nt,[])}E.deactivate()}}for(const E of hs)v(E,gs).has(this)&&(v(E,gs).delete(this),v(E,gs).size===0&&!fe(A=E,Ce,Lr).call(A)&&(E.activate(),fe(k=E,Ce,Rr).call(k)))};let As=Hr;function vc(e){var t=lr;lr=!0;try{for(var r;;){if(lc(),R===null)return r;R.flush()}}finally{lr=t}}function dc(){try{Vo()}catch(e){os(e,ua)}}let xt=null;function Yn(e){var t=e.length;if(t!==0){for(var r=0;r<t;){var a=e[r++];if(!(a.f&(mt|Ge))&&Xs(a)&&(xt=new Set,Os(a),a.deps===null&&a.first===null&&a.nodes===null&&a.teardown===null&&a.ac===null&&Hl(a),(xt==null?void 0:xt.size)>0)){Es.clear();for(const n of xt){if(n.f&(mt|Ge))continue;const i=[n];let d=n.parent;for(;d!==null;)xt.has(d)&&(xt.delete(d),i.push(d)),d=d.parent;for(let u=i.length-1;u>=0;u--){const f=i[u];f.f&(mt|Ge)||Os(f)}}xt.clear()}}xt=null}}function El(e,t,r,a){if(!r.has(e)&&(r.add(e),e.reactions!==null))for(const n of e.reactions){const i=n.f;i&Ke?El(n,t,r,a):i&(cr|jt)&&!(i&He)&&Ta(n,t,a)&&(ye(n,He),Aa(n))}}function Ta(e,t,r){const a=r.get(e);if(a!==void 0)return a;if(e.deps!==null)for(const n of e.deps){if(Vs.call(t,n))return!0;if(n.f&Ke&&Ta(n,t,r))return r.set(n,!0),!0}return r.set(e,!1),!1}function Aa(e){R.schedule(e)}function Sl(e,t){if(!(e.f&Mt&&e.f&Te)){e.f&He?t.d.push(e):e.f&Tt&&t.m.push(e),ye(e,Te);for(var r=e.first;r!==null;)Sl(r,t),r=r.next}}function Ml(e){ye(e,Te);for(var t=e.first;t!==null;)Ml(t),t=t.next}function fc(e){let t=0,r=Cs(0),a;return()=>{La()&&(s(r),qr(()=>(t===0&&(a=h(()=>e(()=>ir(r)))),t+=1,()=>{vs(()=>{t-=1,t===0&&(a==null||a(),a=void 0,ir(r))})})))}}var uc=Ks|Gs;function pc(e,t,r,a){new hc(e,t,r,a)}var ut,xa,pt,ys,Ze,ht,Ye,lt,Gt,ws,is,Ws,pr,hr,Xt,Br,we,_c,bc,mc,ha,Ir,Dr,_a,ba;class hc{constructor(t,r,a,n){W(this,we);kt(this,"parent");kt(this,"is_pending",!1);kt(this,"transform_error");W(this,ut);W(this,xa,null);W(this,pt);W(this,ys);W(this,Ze);W(this,ht,null);W(this,Ye,null);W(this,lt,null);W(this,Gt,null);W(this,ws,0);W(this,is,0);W(this,Ws,!1);W(this,pr,new Set);W(this,hr,new Set);W(this,Xt,null);W(this,Br,fc(()=>(z(this,Xt,Cs(v(this,ws))),()=>{z(this,Xt,null)})));var i;z(this,ut,t),z(this,pt,r),z(this,ys,d=>{var u=G;u.b=this,u.f|=da,a(d)}),this.parent=G.b,this.transform_error=n??((i=this.parent)==null?void 0:i.transform_error)??(d=>d),z(this,Ze,Na(()=>{fe(this,we,ha).call(this)},uc))}defer_effect(t){kl(t,v(this,pr),v(this,hr))}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!v(this,pt).pending}update_pending_count(t,r){fe(this,we,_a).call(this,t,r),z(this,ws,v(this,ws)+t),!(!v(this,Xt)||v(this,Ws))&&(z(this,Ws,!0),vs(()=>{z(this,Ws,!1),v(this,Xt)&&zs(v(this,Xt),v(this,ws))}))}get_effect_pending(){return v(this,Br).call(this),s(v(this,Xt))}error(t){if(!v(this,pt).onerror&&!v(this,pt).failed)throw t;R!=null&&R.is_fork?(v(this,ht)&&R.skip_effect(v(this,ht)),v(this,Ye)&&R.skip_effect(v(this,Ye)),v(this,lt)&&R.skip_effect(v(this,lt)),R.on_fork_commit(()=>{fe(this,we,ba).call(this,t)})):fe(this,we,ba).call(this,t)}}ut=new WeakMap,xa=new WeakMap,pt=new WeakMap,ys=new WeakMap,Ze=new WeakMap,ht=new WeakMap,Ye=new WeakMap,lt=new WeakMap,Gt=new WeakMap,ws=new WeakMap,is=new WeakMap,Ws=new WeakMap,pr=new WeakMap,hr=new WeakMap,Xt=new WeakMap,Br=new WeakMap,we=new WeakSet,_c=function(){try{z(this,ht,_t(()=>v(this,ys).call(this,v(this,ut))))}catch(t){this.error(t)}},bc=function(t){const r=v(this,pt).failed;r&&z(this,lt,_t(()=>{r(v(this,ut),()=>t,()=>()=>{})}))},mc=function(){const t=v(this,pt).pending;t&&(this.is_pending=!0,z(this,Ye,_t(()=>t(v(this,ut)))),vs(()=>{var r=z(this,Gt,document.createDocumentFragment()),a=Jt();r.append(a),z(this,ht,fe(this,we,Dr).call(this,()=>_t(()=>v(this,ys).call(this,a)))),v(this,is)===0&&(v(this,ut).before(r),z(this,Gt,null),Ss(v(this,Ye),()=>{z(this,Ye,null)}),fe(this,we,Ir).call(this,R))}))},ha=function(){try{if(this.is_pending=this.has_pending_snippet(),z(this,is,0),z(this,ws,0),z(this,ht,_t(()=>{v(this,ys).call(this,v(this,ut))})),v(this,is)>0){var t=z(this,Gt,document.createDocumentFragment());Fa(v(this,ht),t);const r=v(this,pt).pending;z(this,Ye,_t(()=>r(v(this,ut))))}else fe(this,we,Ir).call(this,R)}catch(r){this.error(r)}},Ir=function(t){this.is_pending=!1,t.transfer_effects(v(this,pr),v(this,hr))},Dr=function(t){var r=G,a=X,n=Ae;wt(v(this,Ze)),yt(v(this,Ze)),qs(v(this,Ze).ctx);try{return As.ensure(),t()}catch(i){return yl(i),null}finally{wt(r),yt(a),qs(n)}},_a=function(t,r){var a;if(!this.has_pending_snippet()){this.parent&&fe(a=this.parent,we,_a).call(a,t,r);return}z(this,is,v(this,is)+t),v(this,is)===0&&(fe(this,we,Ir).call(this,r),v(this,Ye)&&Ss(v(this,Ye),()=>{z(this,Ye,null)}),v(this,Gt)&&(v(this,ut).before(v(this,Gt)),z(this,Gt,null)))},ba=function(t){v(this,ht)&&(tt(v(this,ht)),z(this,ht,null)),v(this,Ye)&&(tt(v(this,Ye)),z(this,Ye,null)),v(this,lt)&&(tt(v(this,lt)),z(this,lt,null));var r=v(this,pt).onerror;let a=v(this,pt).failed;var n=!1,i=!1;const d=()=>{if(n){sc();return}n=!0,i&&zo(),v(this,lt)!==null&&Ss(v(this,lt),()=>{z(this,lt,null)}),fe(this,we,Dr).call(this,()=>{fe(this,we,ha).call(this)})},u=f=>{try{i=!0,r==null||r(f,d),i=!1}catch(p){os(p,v(this,Ze)&&v(this,Ze).parent)}a&&z(this,lt,fe(this,we,Dr).call(this,()=>{try{return _t(()=>{var p=G;p.b=this,p.f|=da,a(v(this,ut),()=>f,()=>d)})}catch(p){return os(p,v(this,Ze).parent),null}}))};vs(()=>{var f;try{f=this.transform_error(t)}catch(p){os(p,v(this,Ze)&&v(this,Ze).parent);return}f!==null&&typeof f=="object"&&typeof f.then=="function"?f.then(u,p=>os(p,v(this,Ze)&&v(this,Ze).parent)):u(f)})};function gc(e,t,r,a){const n=gr()?Ca:$s;var i=e.filter(k=>!k.settled);if(r.length===0&&i.length===0){a(t.map(n));return}var d=G,u=yc(),f=i.length===1?i[0].promise:i.length>1?Promise.all(i.map(k=>k.promise)):null;function p(k){u();try{a(k)}catch(E){d.f&mt||os(E,d)}jr()}if(r.length===0){f.then(()=>p(t.map(n)));return}var m=Tl();function A(){Promise.all(r.map(k=>wc(k))).then(k=>p([...t.map(n),...k])).catch(k=>os(k,d)).finally(()=>m())}f?f.then(()=>{u(),A(),jr()}):A()}function yc(){var e=G,t=X,r=Ae,a=R;return function(i=!0){wt(e),yt(t),qs(r),i&&!(e.f&mt)&&(a==null||a.activate(),a==null||a.apply())}}function jr(e=!0){wt(null),yt(null),qs(null),e&&(R==null||R.deactivate())}function Tl(){var e=G,t=e.b,r=R,a=t.is_rendered();return t.update_pending_count(1,r),r.increment(a,e),(n=!1)=>{t.update_pending_count(-1,r),r.decrement(a,e,n)}}function Ca(e){var t=Ke|He;return G!==null&&(G.f|=Gs),{ctx:Ae,deps:null,effects:null,equals:hl,f:t,fn:e,reactions:null,rv:0,v:Ie,wv:0,parent:G,ac:null}}function wc(e,t,r){let a=G;a===null&&Po();var n=void 0,i=Cs(Ie),d=!X,u=new Map;return Dc(()=>{var E;var f=G,p=vl();n=p.promise;try{Promise.resolve(e()).then(p.resolve,p.reject).finally(jr)}catch(y){p.reject(y),jr()}var m=R;if(d){if(f.f&Ls)var A=Tl();if(a.b.is_rendered())(E=u.get(m))==null||E.reject(qt),u.delete(m);else{for(const y of u.values())y.reject(qt);u.clear()}u.set(m,p)}const k=(y,D=void 0)=>{if(A){var S=D===qt;A(S)}if(!(D===qt||f.f&mt)){if(m.activate(),D)i.f|=cs,zs(i,D);else{i.f&cs&&(i.f^=cs),zs(i,y);for(const[I,ae]of u){if(u.delete(I),I===m)break;ae.reject(qt)}}m.deactivate()}};p.promise.then(k,y=>k(null,y||"unknown"))}),Ra(()=>{for(const f of u.values())f.reject(qt)}),new Promise(f=>{function p(m){function A(){m===n?f(i):p(n)}m.then(A,A)}p(n)})}function $s(e){const t=Ca(e);return t.equals=_l,t}function kc(e){var t=e.effects;if(t!==null){e.effects=null;for(var r=0;r<t.length;r+=1)tt(t[r])}}function Oa(e){var t,r=G,a=e.parent;if(!fs&&a!==null&&a.f&(mt|Ge))return ec(),e.v;wt(a);try{e.f&=~Ts,kc(e),t=ql(e)}finally{wt(r)}return t}function Al(e){var t=Oa(e);if(!e.equals(t)&&(e.wv=Ul(),(!(R!=null&&R.is_fork)||e.deps===null)&&(R!==null?R.capture(e,t,!0):e.v=t,e.deps===null))){ye(e,Te);return}fs||(je!==null?(La()||R!=null&&R.is_fork)&&je.set(e,t):Ma(e))}function xc(e){var t,r;if(e.effects!==null)for(const a of e.effects)(a.teardown||a.ac)&&((t=a.teardown)==null||t.call(a),(r=a.ac)==null||r.abort(qt),a.teardown=Io,a.ac=null,vr(a,0),Ia(a))}function Cl(e){if(e.effects!==null)for(const t of e.effects)t.teardown&&Os(t)}let ma=new Set;const Es=new Map;let Ol=!1;function Cs(e,t){var r={f:0,v:e,reactions:null,equals:hl,rv:0,wv:0};return r}function rs(e,t){const r=Cs(e);return Pc(r),r}function P(e,t=!1,r=!0){var n;const a=Cs(e);return t||(a.equals=_l),Ur&&r&&Ae!==null&&Ae.l!==null&&((n=Ae.l).s??(n.s=[])).push(a),a}function Nt(e,t){return w(e,h(()=>s(e))),t}function w(e,t,r=!1){X!==null&&(!St||X.f&fa)&&gr()&&X.f&(Ke|jt|cr|fa)&&(gt===null||!Vs.call(gt,e))&&qo();let a=r?rr(t):t;return zs(e,a,Or)}function zs(e,t,r=null){if(!e.equals(t)){Es.set(e,fs?t:e.v);var a=As.ensure();if(a.capture(e,t),e.f&Ke){const n=e;e.f&He&&Oa(n),je===null&&Ma(n)}e.wv=Ul(),Ll(e,He,r),gr()&&G!==null&&G.f&Te&&!(G.f&(Mt|ds))&&(ft===null?jc([e]):ft.push(e)),!a.is_fork&&ma.size>0&&!Ol&&Ec()}return t}function Ec(){Ol=!1;for(const e of ma)e.f&Te&&ye(e,Tt),Xs(e)&&Os(e);ma.clear()}function ir(e){w(e,e.v+1)}function Ll(e,t,r){var a=e.reactions;if(a!==null)for(var n=gr(),i=a.length,d=0;d<i;d++){var u=a[d],f=u.f;if(!(!n&&u===G)){var p=(f&He)===0;if(p&&ye(u,t),f&Ke){var m=u;je==null||je.delete(m),f&Ts||(f&bt&&(G===null||!(G.f&Pr))&&(u.f|=Ts),Ll(m,Tt,r))}else if(p){var A=u;f&jt&&xt!==null&&xt.add(A),r!==null?r.push(A):Aa(A)}}}}function rr(e){if(typeof e!="object"||e===null||xs in e)return e;const t=Sa(e);if(t!==Ro&&t!==No)return e;var r=new Map,a=Ea(e),n=rs(0),i=Ms,d=u=>{if(Ms===i)return u();var f=X,p=Ms;yt(null),Zn(i);var m=u();return yt(f),Zn(p),m};return a&&r.set("length",rs(e.length)),new Proxy(e,{defineProperty(u,f,p){(!("value"in p)||p.configurable===!1||p.enumerable===!1||p.writable===!1)&&Uo();var m=r.get(f);return m===void 0?d(()=>{var A=rs(p.value);return r.set(f,A),A}):w(m,p.value,!0),!0},deleteProperty(u,f){var p=r.get(f);if(p===void 0){if(f in u){const m=d(()=>rs(Ie));r.set(f,m),ir(n)}}else w(p,Ie),ir(n);return!0},get(u,f,p){var E;if(f===xs)return e;var m=r.get(f),A=f in u;if(m===void 0&&(!A||(E=nr(u,f))!=null&&E.writable)&&(m=d(()=>{var y=rr(A?u[f]:Ie),D=rs(y);return D}),r.set(f,m)),m!==void 0){var k=s(m);return k===Ie?void 0:k}return Reflect.get(u,f,p)},getOwnPropertyDescriptor(u,f){var p=Reflect.getOwnPropertyDescriptor(u,f);if(p&&"value"in p){var m=r.get(f);m&&(p.value=s(m))}else if(p===void 0){var A=r.get(f),k=A==null?void 0:A.v;if(A!==void 0&&k!==Ie)return{enumerable:!0,configurable:!0,value:k,writable:!0}}return p},has(u,f){var k;if(f===xs)return!0;var p=r.get(f),m=p!==void 0&&p.v!==Ie||Reflect.has(u,f);if(p!==void 0||G!==null&&(!m||(k=nr(u,f))!=null&&k.writable)){p===void 0&&(p=d(()=>{var E=m?rr(u[f]):Ie,y=rs(E);return y}),r.set(f,p));var A=s(p);if(A===Ie)return!1}return m},set(u,f,p,m){var ie;var A=r.get(f),k=f in u;if(a&&f==="length")for(var E=p;E<A.v;E+=1){var y=r.get(E+"");y!==void 0?w(y,Ie):E in u&&(y=d(()=>rs(Ie)),r.set(E+"",y))}if(A===void 0)(!k||(ie=nr(u,f))!=null&&ie.writable)&&(A=d(()=>rs(void 0)),w(A,rr(p)),r.set(f,A));else{k=A.v!==Ie;var D=d(()=>rr(p));w(A,D)}var S=Reflect.getOwnPropertyDescriptor(u,f);if(S!=null&&S.set&&S.set.call(m,p),!k){if(a&&typeof f=="string"){var I=r.get("length"),ae=Number(f);Number.isInteger(ae)&&ae>=I.v&&w(I,ae+1)}ir(n)}return!0},ownKeys(u){s(n);var f=Reflect.ownKeys(u).filter(A=>{var k=r.get(A);return k===void 0||k.v!==Ie});for(var[p,m]of r)m.v!==Ie&&!(p in u)&&f.push(p);return f},setPrototypeOf(){Ko()}})}function Gn(e){try{if(e!==null&&typeof e=="object"&&xs in e)return e[xs]}catch{}return e}function Sc(e,t){return Object.is(Gn(e),Gn(t))}var ga,Rl,Nl,Il;function Mc(){if(ga===void 0){ga=window,Rl=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,r=Text.prototype;Nl=nr(t,"firstChild").get,Il=nr(t,"nextSibling").get,Kn(e)&&(e.__click=void 0,e.__className=void 0,e.__attributes=null,e.__style=void 0,e.__e=void 0),Kn(r)&&(r.__t=void 0)}}function Jt(e=""){return document.createTextNode(e)}function Ys(e){return Nl.call(e)}function yr(e){return Il.call(e)}function o(e,t){return Ys(e)}function Ue(e,t=!1){{var r=Ys(e);return r instanceof Comment&&r.data===""?yr(r):r}}function c(e,t=1,r=!1){let a=e;for(;t--;)a=yr(a);return a}function Tc(e){e.textContent=""}function Dl(){return!1}function Ac(e,t,r){return document.createElementNS(pl,e,void 0)}let Xn=!1;function Cc(){Xn||(Xn=!0,document.addEventListener("reset",e=>{Promise.resolve().then(()=>{var t;if(!e.defaultPrevented)for(const r of e.target.elements)(t=r.__on_r)==null||t.call(r)})},{capture:!0}))}function Kr(e){var t=X,r=G;yt(null),wt(null);try{return e()}finally{yt(t),wt(r)}}function Fl(e,t,r,a=r){e.addEventListener(t,()=>Kr(r));const n=e.__on_r;n?e.__on_r=()=>{n(),a(!0)}:e.__on_r=()=>a(!0),Cc()}function $l(e){G===null&&(X===null&&Wo(),Bo()),fs&&Ho()}function Oc(e,t){var r=t.last;r===null?t.last=t.first=e:(r.next=e,e.prev=r,t.last=e)}function Ht(e,t){var r=G;r!==null&&r.f&Ge&&(e|=Ge);var a={ctx:Ae,deps:null,nodes:null,f:e|He|bt,first:null,fn:t,last:null,next:null,parent:r,b:r&&r.b,prev:null,teardown:null,wv:0,ac:null};R==null||R.register_created_effect(a);var n=a;if(e&Us)Fs!==null?Fs.push(a):As.ensure().schedule(a);else if(t!==null){try{Os(a)}catch(d){throw tt(a),d}n.deps===null&&n.teardown===null&&n.nodes===null&&n.first===n.last&&!(n.f&Gs)&&(n=n.first,e&jt&&e&Ks&&n!==null&&(n.f|=Ks))}if(n!==null&&(n.parent=r,r!==null&&Oc(n,r),X!==null&&X.f&Ke&&!(e&ds))){var i=X;(i.effects??(i.effects=[])).push(n)}return a}function La(){return X!==null&&!St}function Ra(e){const t=Ht(mr,null);return ye(t,Te),t.teardown=e,t}function Jn(e){$l();var t=G.f,r=!X&&(t&Mt)!==0&&(t&Ls)===0;if(r){var a=Ae;(a.e??(a.e=[])).push(e)}else return Pl(e)}function Pl(e){return Ht(Us|fl,e)}function Lc(e){return $l(),Ht(mr|fl,e)}function Rc(e){As.ensure();const t=Ht(ds|Gs,e);return(r={})=>new Promise(a=>{r.outro?Ss(t,()=>{tt(t),a(void 0)}):(tt(t),a(void 0))})}function Nc(e){return Ht(Us,e)}function xe(e,t){var r=Ae,a={effect:null,ran:!1,deps:e};r.l.$.push(a),a.effect=qr(()=>{if(e(),!a.ran){a.ran=!0;var n=G;try{wt(n.parent),h(t)}finally{wt(n)}}})}function Ic(){var e=Ae;qr(()=>{for(var t of e.l.$){t.deps();var r=t.effect;r.f&Te&&r.deps!==null&&ye(r,Tt),Xs(r)&&Os(r),t.ran=!1}})}function Dc(e){return Ht(cr|Gs,e)}function qr(e,t=0){return Ht(mr|t,e)}function H(e,t=[],r=[],a=[]){gc(a,t,r,n=>{Ht(mr,()=>e(...n.map(s)))})}function Na(e,t=0){var r=Ht(jt|t,e);return r}function _t(e){return Ht(Mt|Gs,e)}function jl(e){var t=e.teardown;if(t!==null){const r=fs,a=X;Qn(!0),yt(null);try{t.call(null)}finally{Qn(r),yt(a)}}}function Ia(e,t=!1){var r=e.first;for(e.first=e.last=null;r!==null;){const n=r.ac;n!==null&&Kr(()=>{n.abort(qt)});var a=r.next;r.f&ds?r.parent=null:tt(r,t),r=a}}function Fc(e){for(var t=e.first;t!==null;){var r=t.next;t.f&Mt||tt(t),t=r}}function tt(e,t=!0){var r=!1;(t||e.f&Fo)&&e.nodes!==null&&e.nodes.end!==null&&($c(e.nodes.start,e.nodes.end),r=!0),ye(e,qn),Ia(e,t&&!r),vr(e,0);var a=e.nodes&&e.nodes.t;if(a!==null)for(const i of a)i.stop();jl(e),e.f^=qn,e.f|=mt;var n=e.parent;n!==null&&n.first!==null&&Hl(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function $c(e,t){for(;e!==null;){var r=e===t?null:yr(e);e.remove(),e=r}}function Hl(e){var t=e.parent,r=e.prev,a=e.next;r!==null&&(r.next=a),a!==null&&(a.prev=r),t!==null&&(t.first===e&&(t.first=a),t.last===e&&(t.last=r))}function Ss(e,t,r=!0){var a=[];Bl(e,a,!0);var n=()=>{r&&tt(e),t&&t()},i=a.length;if(i>0){var d=()=>--i||n();for(var u of a)u.out(d)}else n()}function Bl(e,t,r){if(!(e.f&Ge)){e.f^=Ge;var a=e.nodes&&e.nodes.t;if(a!==null)for(const u of a)(u.is_global||r)&&t.push(u);for(var n=e.first;n!==null;){var i=n.next;if(!(n.f&ds)){var d=(n.f&Ks)!==0||(n.f&Mt)!==0&&(e.f&jt)!==0;Bl(n,t,d?r:!1)}n=i}}}function Da(e){Wl(e,!0)}function Wl(e,t){if(e.f&Ge){e.f^=Ge,e.f&Te||(ye(e,He),As.ensure().schedule(e));for(var r=e.first;r!==null;){var a=r.next,n=(r.f&Ks)!==0||(r.f&Mt)!==0;Wl(r,n?t:!1),r=a}var i=e.nodes&&e.nodes.t;if(i!==null)for(const d of i)(d.is_global||t)&&d.in()}}function Fa(e,t){if(e.nodes)for(var r=e.nodes.start,a=e.nodes.end;r!==null;){var n=r===a?null:yr(r);t.append(r),r=n}}let Fr=!1,fs=!1;function Qn(e){fs=e}let X=null,St=!1;function yt(e){X=e}let G=null;function wt(e){G=e}let gt=null;function Pc(e){X!==null&&(gt===null?gt=[e]:gt.push(e))}let et=null,at=0,ft=null;function jc(e){ft=e}let Vl=1,bs=0,Ms=bs;function Zn(e){Ms=e}function Ul(){return++Vl}function Xs(e){var t=e.f;if(t&He)return!0;if(t&Ke&&(e.f&=~Ts),t&Tt){for(var r=e.deps,a=r.length,n=0;n<a;n++){var i=r[n];if(Xs(i)&&Al(i),i.wv>e.wv)return!0}t&bt&&je===null&&ye(e,Te)}return!1}function Kl(e,t,r=!0){var a=e.reactions;if(a!==null&&!(gt!==null&&Vs.call(gt,e)))for(var n=0;n<a.length;n++){var i=a[n];i.f&Ke?Kl(i,t,!1):t===i&&(r?ye(i,He):i.f&Te&&ye(i,Tt),Aa(i))}}function ql(e){var D;var t=et,r=at,a=ft,n=X,i=gt,d=Ae,u=St,f=Ms,p=e.f;et=null,at=0,ft=null,X=p&(Mt|ds)?null:e,gt=null,qs(e.ctx),St=!1,Ms=++bs,e.ac!==null&&(Kr(()=>{e.ac.abort(qt)}),e.ac=null);try{e.f|=Pr;var m=e.fn,A=m();e.f|=Ls;var k=e.deps,E=R==null?void 0:R.is_fork;if(et!==null){var y;if(E||vr(e,at),k!==null&&at>0)for(k.length=at+et.length,y=0;y<et.length;y++)k[at+y]=et[y];else e.deps=k=et;if(La()&&e.f&bt)for(y=at;y<k.length;y++)((D=k[y]).reactions??(D.reactions=[])).push(e)}else!E&&k!==null&&at<k.length&&(vr(e,at),k.length=at);if(gr()&&ft!==null&&!St&&k!==null&&!(e.f&(Ke|Tt|He)))for(y=0;y<ft.length;y++)Kl(ft[y],e);if(n!==null&&n!==e){if(bs++,n.deps!==null)for(let S=0;S<r;S+=1)n.deps[S].rv=bs;if(t!==null)for(const S of t)S.rv=bs;ft!==null&&(a===null?a=ft:a.push(...ft))}return e.f&cs&&(e.f^=cs),A}catch(S){return yl(S)}finally{e.f^=Pr,et=t,at=r,ft=a,X=n,gt=i,qs(d),St=u,Ms=f}}function Hc(e,t){let r=t.reactions;if(r!==null){var a=Oo.call(r,e);if(a!==-1){var n=r.length-1;n===0?r=t.reactions=null:(r[a]=r[n],r.pop())}}if(r===null&&t.f&Ke&&(et===null||!Vs.call(et,t))){var i=t;i.f&bt&&(i.f^=bt,i.f&=~Ts),i.v!==Ie&&Ma(i),xc(i),vr(i,0)}}function vr(e,t){var r=e.deps;if(r!==null)for(var a=t;a<r.length;a++)Hc(e,r[a])}function Os(e){var t=e.f;if(!(t&mt)){ye(e,Te);var r=G,a=Fr;G=e,Fr=!0;try{t&(jt|dl)?Fc(e):Ia(e),jl(e);var n=ql(e);e.teardown=typeof n=="function"?n:null,e.wv=Vl;var i;Co&&ac&&e.f&He&&e.deps}finally{Fr=a,G=r}}}async function Bc(){await Promise.resolve(),vc()}function s(e){var t=e.f,r=(t&Ke)!==0;if(X!==null&&!St){var a=G!==null&&(G.f&mt)!==0;if(!a&&(gt===null||!Vs.call(gt,e))){var n=X.deps;if(X.f&Pr)e.rv<bs&&(e.rv=bs,et===null&&n!==null&&n[at]===e?at++:et===null?et=[e]:et.push(e));else{(X.deps??(X.deps=[])).push(e);var i=e.reactions;i===null?e.reactions=[X]:Vs.call(i,X)||i.push(X)}}}if(fs&&Es.has(e))return Es.get(e);if(r){var d=e;if(fs){var u=d.v;return(!(d.f&Te)&&d.reactions!==null||Yl(d))&&(u=Oa(d)),Es.set(d,u),u}var f=(d.f&bt)===0&&!St&&X!==null&&(Fr||(X.f&bt)!==0),p=(d.f&Ls)===0;Xs(d)&&(f&&(d.f|=bt),Al(d)),f&&!p&&(Cl(d),zl(d))}if(je!=null&&je.has(e))return je.get(e);if(e.f&cs)throw e.v;return e.v}function zl(e){if(e.f|=bt,e.deps!==null)for(const t of e.deps)(t.reactions??(t.reactions=[])).push(e),t.f&Ke&&!(t.f&bt)&&(Cl(t),zl(t))}function Yl(e){if(e.v===Ie)return!0;if(e.deps===null)return!1;for(const t of e.deps)if(Es.has(t)||t.f&Ke&&Yl(t))return!0;return!1}function h(e){var t=St;try{return St=!0,e()}finally{St=t}}function $r(e){if(!(typeof e!="object"||!e||e instanceof EventTarget)){if(xs in e)ya(e);else if(!Array.isArray(e))for(let t in e){const r=e[t];typeof r=="object"&&r&&xs in r&&ya(r)}}}function ya(e,t=new Set){if(typeof e=="object"&&e!==null&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let a in e)try{ya(e[a],t)}catch{}const r=Sa(e);if(r!==Object.prototype&&r!==Array.prototype&&r!==Map.prototype&&r!==Set.prototype&&r!==Date.prototype){const a=cl(r);for(let n in a){const i=a[n].get;if(i)try{i.call(e)}catch{}}}}}const Wc=["touchstart","touchmove"];function Vc(e){return Wc.includes(e)}const Tr=Symbol("events"),Uc=new Set,el=new Set;function Kc(e,t,r,a={}){function n(i){if(a.capture||wa.call(t,i),!i.cancelBubble)return Kr(()=>r==null?void 0:r.call(this,i))}return e.startsWith("pointer")||e.startsWith("touch")||e==="wheel"?vs(()=>{t.addEventListener(e,n,a)}):t.addEventListener(e,n,a),n}function re(e,t,r,a,n){var i={capture:a,passive:n},d=Kc(e,t,r,i);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Ra(()=>{t.removeEventListener(e,d,i)})}let tl=null;function wa(e){var S,I;var t=this,r=t.ownerDocument,a=e.type,n=((S=e.composedPath)==null?void 0:S.call(e))||[],i=n[0]||e.target;tl=e;var d=0,u=tl===e&&e[Tr];if(u){var f=n.indexOf(u);if(f!==-1&&(t===document||t===window)){e[Tr]=t;return}var p=n.indexOf(t);if(p===-1)return;f<=p&&(d=f)}if(i=n[d]||e.target,i!==t){Lo(e,"currentTarget",{configurable:!0,get(){return i||r}});var m=X,A=G;yt(null),wt(null);try{for(var k,E=[];i!==null;){var y=i.assignedSlot||i.parentNode||i.host||null;try{var D=(I=i[Tr])==null?void 0:I[a];D!=null&&(!i.disabled||e.target===i)&&D.call(i,e)}catch(ae){k?E.push(ae):k=ae}if(e.cancelBubble||y===t||y===null)break;i=y}if(k){for(let ae of E)queueMicrotask(()=>{throw ae});throw k}}finally{e[Tr]=t,delete e.currentTarget,yt(m),wt(A)}}}var il;const ia=((il=globalThis==null?void 0:globalThis.window)==null?void 0:il.trustedTypes)&&globalThis.window.trustedTypes.createPolicy("svelte-trusted-html",{createHTML:e=>e});function qc(e){return(ia==null?void 0:ia.createHTML(e))??e}function Gl(e){var t=Ac("template");return t.innerHTML=qc(e.replaceAll("<!>","<!---->")),t.content}function dr(e,t){var r=G;r.nodes===null&&(r.nodes={start:e,end:t,a:null,t:null})}function F(e,t){var r=(t&Qo)!==0,a=(t&Zo)!==0,n,i=!e.startsWith("<!>");return()=>{n===void 0&&(n=Gl(i?e:"<!>"+e),r||(n=Ys(n)));var d=a||Rl?document.importNode(n,!0):n.cloneNode(!0);if(r){var u=Ys(d),f=d.lastChild;dr(u,f)}else dr(d,d);return d}}function zc(e,t,r="svg"){var a=!e.startsWith("<!>"),n=`<${r}>${a?e:"<!>"+e}</${r}>`,i;return()=>{if(!i){var d=Gl(n),u=Ys(d);i=Ys(u)}var f=i.cloneNode(!0);return dr(f,f),f}}function Js(e,t){return zc(e,t,"svg")}function It(e=""){{var t=Jt(e+"");return dr(t,t),t}}function Ds(){var e=document.createDocumentFragment(),t=document.createComment(""),r=Jt();return e.append(t,r),dr(t,r),e}function T(e,t){e!==null&&e.before(t)}function M(e,t){var r=t==null?"":typeof t=="object"?`${t}`:t;r!==(e.__t??(e.__t=e.nodeValue))&&(e.__t=r,e.nodeValue=`${r}`)}function Yc(e,t){return Gc(e,t)}const Ar=new Map;function Gc(e,{target:t,anchor:r,props:a={},events:n,context:i,intro:d=!0,transformError:u}){Mc();var f=void 0,p=Rc(()=>{var m=r??t.appendChild(Jt());pc(m,{pending:()=>{}},E=>{bl({});var y=Ae;i&&(y.c=i),n&&(a.$$events=n),f=e(E,a)||{},ml()},u);var A=new Set,k=E=>{for(var y=0;y<E.length;y++){var D=E[y];if(!A.has(D)){A.add(D);var S=Vc(D);for(const ie of[t,document]){var I=Ar.get(ie);I===void 0&&(I=new Map,Ar.set(ie,I));var ae=I.get(D);ae===void 0?(ie.addEventListener(D,wa,{passive:S}),I.set(D,1)):I.set(D,ae+1)}}}};return k(Vr(Uc)),el.add(k),()=>{var S;for(var E of A)for(const I of[t,document]){var y=Ar.get(I),D=y.get(E);--D==0?(I.removeEventListener(E,wa),y.delete(E),y.size===0&&Ar.delete(I)):y.set(E,D)}el.delete(k),m!==r&&((S=m.parentNode)==null||S.removeChild(m))}});return Xc.set(f,p),f}let Xc=new WeakMap;var Et,$t,it,ks,_r,br,Wr;class Jc{constructor(t,r=!0){kt(this,"anchor");W(this,Et,new Map);W(this,$t,new Map);W(this,it,new Map);W(this,ks,new Set);W(this,_r,!0);W(this,br,t=>{if(v(this,Et).has(t)){var r=v(this,Et).get(t),a=v(this,$t).get(r);if(a)Da(a),v(this,ks).delete(r);else{var n=v(this,it).get(r);n&&(v(this,$t).set(r,n.effect),v(this,it).delete(r),n.fragment.lastChild.remove(),this.anchor.before(n.fragment),a=n.effect)}for(const[i,d]of v(this,Et)){if(v(this,Et).delete(i),i===t)break;const u=v(this,it).get(d);u&&(tt(u.effect),v(this,it).delete(d))}for(const[i,d]of v(this,$t)){if(i===r||v(this,ks).has(i))continue;const u=()=>{if(Array.from(v(this,Et).values()).includes(i)){var p=document.createDocumentFragment();Fa(d,p),p.append(Jt()),v(this,it).set(i,{effect:d,fragment:p})}else tt(d);v(this,ks).delete(i),v(this,$t).delete(i)};v(this,_r)||!a?(v(this,ks).add(i),Ss(d,u,!1)):u()}}});W(this,Wr,t=>{v(this,Et).delete(t);const r=Array.from(v(this,Et).values());for(const[a,n]of v(this,it))r.includes(a)||(tt(n.effect),v(this,it).delete(a))});this.anchor=t,z(this,_r,r)}ensure(t,r){var a=R,n=Dl();if(r&&!v(this,$t).has(t)&&!v(this,it).has(t))if(n){var i=document.createDocumentFragment(),d=Jt();i.append(d),v(this,it).set(t,{effect:_t(()=>r(d)),fragment:i})}else v(this,$t).set(t,_t(()=>r(this.anchor)));if(v(this,Et).set(a,t),n){for(const[u,f]of v(this,$t))u===t?a.unskip_effect(f):a.skip_effect(f);for(const[u,f]of v(this,it))u===t?a.unskip_effect(f.effect):a.skip_effect(f.effect);a.oncommit(v(this,br)),a.ondiscard(v(this,Wr))}else v(this,br).call(this,a)}}Et=new WeakMap,$t=new WeakMap,it=new WeakMap,ks=new WeakMap,_r=new WeakMap,br=new WeakMap,Wr=new WeakMap;function Y(e,t,r=!1){var a=new Jc(e),n=r?Ks:0;function i(d,u){a.ensure(d,u)}Na(()=>{var d=!1;t((u,f=0)=>{d=!0,i(f,u)}),d||i(-1,null)},n)}function as(e,t){return t}function Qc(e,t,r){for(var a=[],n=t.length,i,d=t.length,u=0;u<n;u++){let A=t[u];Ss(A,()=>{if(i){if(i.pending.delete(A),i.done.add(A),i.pending.size===0){var k=e.outrogroups;ka(e,Vr(i.done)),k.delete(i),k.size===0&&(e.outrogroups=null)}}else d-=1},!1)}if(d===0){var f=a.length===0&&r!==null;if(f){var p=r,m=p.parentNode;Tc(m),m.append(p),e.items.clear()}ka(e,t,!f)}else i={pending:new Set(t),done:new Set},(e.outrogroups??(e.outrogroups=new Set)).add(i)}function ka(e,t,r=!0){var a;if(e.pending.size>0){a=new Set;for(const d of e.pending.values())for(const u of d)a.add(e.items.get(u).e)}for(var n=0;n<t.length;n++){var i=t[n];if(a!=null&&a.has(i)){i.f|=Pt;const d=document.createDocumentFragment();Fa(i,d)}else tt(t[n],r)}}var sl;function dt(e,t,r,a,n,i=null){var d=e,u=new Map,f=(t&ul)!==0;if(f){var p=e;d=p.appendChild(Jt())}var m=null,A=$s(()=>{var ie=r();return Ea(ie)?ie:ie==null?[]:Vr(ie)}),k,E=new Map,y=!0;function D(ie){ae.effect.f&mt||(ae.pending.delete(ie),ae.fallback=m,Zc(ae,k,d,t,a),m!==null&&(k.length===0?m.f&Pt?(m.f^=Pt,ar(m,null,d)):Da(m):Ss(m,()=>{m=null})))}function S(ie){ae.pending.delete(ie)}var I=Na(()=>{k=s(A);for(var ie=k.length,be=new Set,Xe=R,b=Dl(),me=0;me<ie;me+=1){var ot=k[me],ct=a(ot,me),De=y?null:u.get(ct);De?(De.v&&zs(De.v,ot),De.i&&zs(De.i,me),b&&Xe.unskip_effect(De.e)):(De=ev(u,y?d:sl??(sl=Jt()),ot,ct,me,n,t,r),y||(De.e.f|=Pt),u.set(ct,De)),be.add(ct)}if(ie===0&&i&&!m&&(y?m=_t(()=>i(d)):(m=_t(()=>i(sl??(sl=Jt()))),m.f|=Pt)),ie>be.size&&jo(),!y)if(E.set(Xe,be),b){for(const[At,Je]of u)be.has(At)||Xe.skip_effect(Je.e);Xe.oncommit(D),Xe.ondiscard(S)}else D(Xe);s(A)}),ae={effect:I,items:u,pending:E,outrogroups:null,fallback:m};y=!1}function sr(e){for(;e!==null&&!(e.f&Mt);)e=e.next;return e}function Zc(e,t,r,a,n){var De,At,Je,he,Fe,qe,Re,Ct,Qt;var i=(a&Xo)!==0,d=t.length,u=e.items,f=sr(e.effect.first),p,m=null,A,k=[],E=[],y,D,S,I;if(i)for(I=0;I<d;I+=1)y=t[I],D=n(y,I),S=u.get(D).e,S.f&Pt||((At=(De=S.nodes)==null?void 0:De.a)==null||At.measure(),(A??(A=new Set)).add(S));for(I=0;I<d;I+=1){if(y=t[I],D=n(y,I),S=u.get(D).e,e.outrogroups!==null)for(const Be of e.outrogroups)Be.pending.delete(S),Be.done.delete(S);if(S.f&Ge&&(Da(S),i&&((he=(Je=S.nodes)==null?void 0:Je.a)==null||he.unfix(),(A??(A=new Set)).delete(S))),S.f&Pt)if(S.f^=Pt,S===f)ar(S,null,r);else{var ae=m?m.next:f;S===e.effect.last&&(e.effect.last=S.prev),S.prev&&(S.prev.next=S.next),S.next&&(S.next.prev=S.prev),ns(e,m,S),ns(e,S,ae),ar(S,ae,r),m=S,k=[],E=[],f=sr(m.next);continue}if(S!==f){if(p!==void 0&&p.has(S)){if(k.length<E.length){var ie=E[0],be;m=ie.prev;var Xe=k[0],b=k[k.length-1];for(be=0;be<k.length;be+=1)ar(k[be],ie,r);for(be=0;be<E.length;be+=1)p.delete(E[be]);ns(e,Xe.prev,b.next),ns(e,m,Xe),ns(e,b,ie),f=ie,m=b,I-=1,k=[],E=[]}else p.delete(S),ar(S,f,r),ns(e,S.prev,S.next),ns(e,S,m===null?e.effect.first:m.next),ns(e,m,S),m=S;continue}for(k=[],E=[];f!==null&&f!==S;)(p??(p=new Set)).add(f),E.push(f),f=sr(f.next);if(f===null)continue}S.f&Pt||k.push(S),m=S,f=sr(S.next)}if(e.outrogroups!==null){for(const Be of e.outrogroups)Be.pending.size===0&&(ka(e,Vr(Be.done)),(Fe=e.outrogroups)==null||Fe.delete(Be));e.outrogroups.size===0&&(e.outrogroups=null)}if(f!==null||p!==void 0){var me=[];if(p!==void 0)for(S of p)S.f&Ge||me.push(S);for(;f!==null;)!(f.f&Ge)&&f!==e.fallback&&me.push(f),f=sr(f.next);var ot=me.length;if(ot>0){var ct=a&ul&&d===0?r:null;if(i){for(I=0;I<ot;I+=1)(Re=(qe=me[I].nodes)==null?void 0:qe.a)==null||Re.measure();for(I=0;I<ot;I+=1)(Qt=(Ct=me[I].nodes)==null?void 0:Ct.a)==null||Qt.fix()}Qc(e,me,ct)}}i&&vs(()=>{var Be,Qs;if(A!==void 0)for(S of A)(Qs=(Be=S.nodes)==null?void 0:Be.a)==null||Qs.apply()})}function ev(e,t,r,a,n,i,d,u){var f=d&Yo?d&Jo?Cs(r):P(r,!1,!1):null,p=d&Go?Cs(n):null;return{v:f,i:p,e:_t(()=>(i(t,f??r,p??n,u),()=>{e.delete(a)}))}}function ar(e,t,r){if(e.nodes)for(var a=e.nodes.start,n=e.nodes.end,i=t&&!(t.f&Pt)?t.nodes.start:r;a!==null;){var d=yr(a);if(i.before(a),a===n)return;a=d}}function ns(e,t,r){t===null?e.effect.first=r:t.next=r,r===null?e.effect.last=t:r.prev=t}const rl=[...`
|
|
2
|
-
\r\f \v\uFEFF`];function tv(e,t,r){var a=e==null?"":""+e;if(t&&(a=a?a+" "+t:t),r){for(var n of Object.keys(r))if(r[n])a=a?a+" "+n:n;else if(a.length)for(var i=n.length,d=0;(d=a.indexOf(n,d))>=0;){var u=d+i;(d===0||rl.includes(a[d-1]))&&(u===a.length||rl.includes(a[u]))?a=(d===0?"":a.substring(0,d))+a.substring(u+1):d=u}}return a===""?null:a}function sv(e,t){return e==null?null:String(e)}function ce(e,t,r,a,n,i){var d=e.__className;if(d!==r||d===void 0){var u=tv(r,a,i);u==null?e.removeAttribute("class"):t?e.className=u:e.setAttribute("class",u),e.__className=r}else if(i&&n!==i)for(var f in i){var p=!!i[f];(n==null||p!==!!n[f])&&e.classList.toggle(f,p)}return i}function rv(e,t,r,a){var n=e.__style;if(n!==t){var i=sv(t);i==null?e.removeAttribute("style"):e.style.cssText=i,e.__style=t}return a}function Xl(e,t,r=!1){if(e.multiple){if(t==null)return;if(!Ea(t))return tc();for(var a of e.options)a.selected=t.includes(or(a));return}for(a of e.options){var n=or(a);if(Sc(n,t)){a.selected=!0;return}}(!r||t!==void 0)&&(e.selectedIndex=-1)}function av(e){var t=new MutationObserver(()=>{Xl(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["value"]}),Ra(()=>{t.disconnect()})}function Cr(e,t,r=t){var a=new WeakSet,n=!0;Fl(e,"change",i=>{var d=i?"[selected]":":checked",u;if(e.multiple)u=[].map.call(e.querySelectorAll(d),or);else{var f=e.querySelector(d)??e.querySelector("option:not([disabled])");u=f&&or(f)}r(u),e.__value=u,R!==null&&a.add(R)}),Nc(()=>{var i=t();if(e===document.activeElement){var d=R;if(a.has(d))return}if(Xl(e,i,n),n&&i===void 0){var u=e.querySelector(":checked");u!==null&&(i=or(u),r(i))}e.__value=i,n=!1}),av(e)}function or(e){return"__value"in e?e.__value:e.value}const nv=Symbol("is custom element"),lv=Symbol("is html");function pe(e,t,r,a){var n=iv(e);n[t]!==(n[t]=r)&&(t==="loading"&&(e[$o]=r),r==null?e.removeAttribute(t):typeof r!="string"&&ov(e).includes(t)?e[t]=r:e.setAttribute(t,r))}function iv(e){return e.__attributes??(e.__attributes={[nv]:e.nodeName.includes("-"),[lv]:e.namespaceURI===pl})}var al=new Map;function ov(e){var t=e.getAttribute("is")||e.nodeName,r=al.get(t);if(r)return r;al.set(t,r=[]);for(var a,n=e,i=Element.prototype;i!==n;){a=cl(n);for(var d in a)a[d].set&&r.push(d);n=Sa(n)}return r}function Kt(e,t,r=t){var a=new WeakSet;Fl(e,"input",async n=>{var i=n?e.defaultValue:e.value;if(i=oa(e)?ca(i):i,r(i),R!==null&&a.add(R),await Bc(),i!==(i=t())){var d=e.selectionStart,u=e.selectionEnd,f=e.value.length;if(e.value=i??"",u!==null){var p=e.value.length;d===u&&u===f&&p>f?(e.selectionStart=p,e.selectionEnd=p):(e.selectionStart=d,e.selectionEnd=Math.min(u,p))}}}),h(t)==null&&e.value&&(r(oa(e)?ca(e.value):e.value),R!==null&&a.add(R)),qr(()=>{var n=t();if(e===document.activeElement){var i=R;if(a.has(i))return}oa(e)&&n===ca(e.value)||e.type==="date"&&!n&&!e.value||n!==e.value&&(e.value=n??"")})}function oa(e){var t=e.type;return t==="number"||t==="range"}function ca(e){return e===""?null:+e}function nl(e){return function(...t){var r=t[0];r.target===this&&(e==null||e.apply(this,t))}}function cv(e){return function(...t){var r=t[0];return r.stopPropagation(),e==null?void 0:e.apply(this,t)}}function vv(e){return function(...t){var r=t[0];return r.preventDefault(),e==null?void 0:e.apply(this,t)}}function dv(e=!1){const t=Ae,r=t.l.u;if(!r)return;let a=()=>$r(t.s);if(e){let n=0,i={};const d=Ca(()=>{let u=!1;const f=t.s;for(const p in f)f[p]!==i[p]&&(i[p]=f[p],u=!0);return u&&n++,n});a=()=>s(d)}r.b.length&&Lc(()=>{ll(t,a),va(r.b)}),Jn(()=>{const n=h(()=>r.m.map(Do));return()=>{for(const i of n)typeof i=="function"&&i()}}),r.a.length&&Jn(()=>{ll(t,a),va(r.a)})}function ll(e,t){if(e.l.s)for(const r of e.l.s)s(r);t()}const fv="5";var ol;typeof window<"u"&&((ol=window.__svelte??(window.__svelte={})).v??(ol.v=new Set)).add(fv);nc();var uv=F('<span class="tab-badge svelte-d3ct2b"> </span>'),pv=Js('<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><circle cx="12" cy="12" r="5" class="svelte-d3ct2b"></circle><line x1="12" y1="1" x2="12" y2="3" class="svelte-d3ct2b"></line><line x1="12" y1="21" x2="12" y2="23" class="svelte-d3ct2b"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64" class="svelte-d3ct2b"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78" class="svelte-d3ct2b"></line><line x1="1" y1="12" x2="3" y2="12" class="svelte-d3ct2b"></line><line x1="21" y1="12" x2="23" y2="12" class="svelte-d3ct2b"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36" class="svelte-d3ct2b"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22" class="svelte-d3ct2b"></line></svg>'),hv=Js('<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" class="svelte-d3ct2b"></path></svg>'),_v=F('<div class="health-badge health-warn svelte-d3ct2b"><i class="dot dot-warn svelte-d3ct2b"></i> <span class="svelte-d3ct2b"> </span></div>'),bv=F('<div><i></i> <span class="svelte-d3ct2b"> </span></div>'),mv=F('<span class="health-error svelte-d3ct2b"> </span>'),gv=F('<span class="health-error svelte-d3ct2b"> </span>'),yv=F('<span class="dropdown-badge svelte-d3ct2b"> </span>'),wv=F('<div class="dropdown svelte-d3ct2b"><button><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-d3ct2b"><circle cx="12" cy="12" r="3" class="svelte-d3ct2b"></circle><path d="M12 1v4M12 19v4M4.22 4.22l2.83 2.83M16.95 16.95l2.83 2.83M1 12h4M19 12h4" class="svelte-d3ct2b"></path></svg> Core Engine</button> <button><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-d3ct2b"><circle cx="12" cy="12" r="4" class="svelte-d3ct2b"></circle><path d="M4 12H2M22 12h-2M12 4V2M12 22v-2" class="svelte-d3ct2b"></path><path d="m6.34 6.34-1.41-1.42M19.07 19.07l-1.41-1.41" class="svelte-d3ct2b"></path></svg> Commit Hook <!></button></div>'),kv=Js('<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" class="svelte-d3ct2b"><polygon points="5 3 19 12 5 21 5 3" class="svelte-d3ct2b"></polygon></svg>'),xv=Js('<svg width="16" height="16" viewBox="0 0 24 24" fill="currentColor" class="svelte-d3ct2b"><rect x="6" y="4" width="4" height="16" class="svelte-d3ct2b"></rect><rect x="14" y="4" width="4" height="16" class="svelte-d3ct2b"></rect></svg>'),Ev=F('<div class="log-row log-row-warn svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-warn svelte-d3ct2b">ARCH</span> <span class="log-msg svelte-d3ct2b">Custom architecture — no profile rules loaded. Add rules: memory-core remember "..." --type rule</span></div> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-sys svelte-d3ct2b">SYS</span> <span class="log-msg svelte-d3ct2b">Or load a profile when ready: memory-core seed --arch clean-architecture</span></div>',1),Sv=F('<div class="log-row log-row-warn svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-warn svelte-d3ct2b">WARN</span> <span class="log-msg svelte-d3ct2b">No architecture rules configured in .memory-core.json — nothing to watch.</span></div> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-sys svelte-d3ct2b">SYS</span> <span class="log-msg svelte-d3ct2b">Awaiting manual rule configuration...</span></div>',1),Mv=F('<div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-sys svelte-d3ct2b">SYS</span> <span class="log-msg svelte-d3ct2b">Initialization sequence started for memory-core...</span></div> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-ok svelte-d3ct2b">DB</span> <span class="log-msg svelte-d3ct2b">Waiting for PostgreSQL connection...</span></div> <!> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b"></span> <span class="log-label svelte-d3ct2b"></span> <span class="log-msg cursor-blink svelte-d3ct2b">_</span></div>',1),Tv=F('· <em class="svelte-d3ct2b"> </em>',1),Av=F('<br class="svelte-d3ct2b"/><span class="detail-fix svelte-d3ct2b"> </span>',1),Cv=F('<div class="log-detail svelte-d3ct2b"><span class="detail-index svelte-d3ct2b"> </span> <span class="detail-body svelte-d3ct2b"><strong class="svelte-d3ct2b"> </strong> <!> <!> <!></span></div>'),Ov=F('<div><span class="log-time svelte-d3ct2b"> </span> <span> </span> <span class="log-msg svelte-d3ct2b"><!></span> <button class="copy-btn svelte-d3ct2b" title="Copy">⎘</button></div> <!>',1),Lv=F('<div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b">--:--:--</span> <span class="log-label label-ok svelte-d3ct2b">[OK]</span> <span class="log-msg svelte-d3ct2b">No commit hook violations in the last 24 hours.</span></div> <div class="log-row svelte-d3ct2b"><span class="log-time svelte-d3ct2b"></span> <span class="log-label svelte-d3ct2b"></span> <span class="log-msg cursor-blink svelte-d3ct2b">_</span></div>',1),Rv=F('<br class="svelte-d3ct2b"/><span class="detail-fix svelte-d3ct2b"> </span>',1),Nv=F('<div class="log-detail svelte-d3ct2b"><span class="detail-index svelte-d3ct2b"></span> <span class="detail-body svelte-d3ct2b"><!> <!></span></div>'),Iv=F('<div class="log-row log-row-fail svelte-d3ct2b"><span class="log-time svelte-d3ct2b"> </span> <span class="log-label label-hook svelte-d3ct2b"> </span> <span class="log-msg svelte-d3ct2b"><strong class="svelte-d3ct2b"> </strong> <!></span></div> <!>',1),Dv=F('<div class="section-header svelte-d3ct2b"><span class="section-title svelte-d3ct2b">Commit Hook</span> <span class="section-meta svelte-d3ct2b"> </span></div> <!>',1),Fv=F('<span class="rule-reason svelte-d3ct2b"> </span>'),$v=F('<div class="rule-row svelte-d3ct2b"><span class="rule-badge svelte-d3ct2b"> </span> <span class="rule-scope svelte-d3ct2b"> </span> <span class="rule-content svelte-d3ct2b"> </span> <!> <button class="del-btn svelte-d3ct2b">✕</button></div>'),Pv=F('Custom architecture — no profile rules loaded. Add rules from the terminal: <code class="svelte-d3ct2b">memory-core remember "..." --type rule</code>',1),jv=F('<div class="log-row svelte-d3ct2b"><span class="log-msg svelte-d3ct2b" style="color: var(--outline)"><!></span></div>'),Hv=F('<div class="section-header svelte-d3ct2b"><span class="section-title svelte-d3ct2b">Rule Engine</span> <span class="section-meta svelte-d3ct2b"> </span></div> <div class="rules-toolbar svelte-d3ct2b"><select class="rules-select svelte-d3ct2b"><option class="svelte-d3ct2b">All types</option><option class="svelte-d3ct2b">Rules</option><option class="svelte-d3ct2b">Decisions</option><option class="svelte-d3ct2b">Patterns</option><option class="svelte-d3ct2b">Ignores</option></select> <input class="rules-search svelte-d3ct2b" placeholder="Search rules..."/></div> <div class="rule-form-wrap svelte-d3ct2b"><form class="rule-form svelte-d3ct2b"><div class="rule-form-row svelte-d3ct2b"><select class="rules-select svelte-d3ct2b"><option class="svelte-d3ct2b">Rule</option><option class="svelte-d3ct2b">Decision</option><option class="svelte-d3ct2b">Pattern</option><option class="svelte-d3ct2b">Ignore</option></select> <select class="rules-select svelte-d3ct2b"><option class="svelte-d3ct2b">Project</option><option class="svelte-d3ct2b">Global</option></select> <input class="rules-input svelte-d3ct2b" placeholder="Reason"/> <input class="rules-input svelte-d3ct2b" placeholder="Tags"/></div> <div class="rule-form-row svelte-d3ct2b"><textarea rows="2" class="rules-textarea svelte-d3ct2b" placeholder="Rule or decision content..."></textarea> <button class="add-btn svelte-d3ct2b"> </button></div></form></div> <div class="rule-list svelte-d3ct2b"></div>',1),Bv=F('<div class="log-row svelte-d3ct2b"><span class="log-label label-warn svelte-d3ct2b">[WARN]</span> <span class="log-msg svelte-d3ct2b">No .archmind/layers.json found. Run <code class="svelte-d3ct2b">memory-core init</code> or create the file manually.</span></div>'),Wv=Js('<line stroke-width="1.5" opacity="0.75" class="svelte-d3ct2b"></line>'),Vv=Js('<g role="button" tabindex="0"><rect rx="6"></rect><text text-anchor="middle" class="arch-node-label svelte-d3ct2b"> </text><text text-anchor="middle" class="arch-node-desc svelte-d3ct2b"> </text></g>'),Uv=F('<div class="arch-node-panel-path svelte-d3ct2b"> </div>'),Kv=F('<div class="arch-node-panel-paths svelte-d3ct2b"><div class="arch-node-panel-section svelte-d3ct2b">Glob patterns</div> <!></div>'),qv=F('<div class="arch-node-panel-rule svelte-d3ct2b"><span> </span> <span style="font-size:12px" class="svelte-d3ct2b"> </span></div>'),zv=F('<div class="arch-node-panel-paths svelte-d3ct2b"><div class="arch-node-panel-section svelte-d3ct2b">Rules involving this layer</div> <!></div>'),Yv=F('<div class="arch-node-panel svelte-d3ct2b"><div class="arch-node-panel-header svelte-d3ct2b"><span class="arch-node-panel-name svelte-d3ct2b"> </span> <span class="arch-node-panel-meta svelte-d3ct2b"> </span> <button class="arch-node-panel-close svelte-d3ct2b" aria-label="Close">✕</button></div> <!> <!></div>'),Gv=F('<div class="arch-rule-row svelte-d3ct2b"><span> </span> <span class="arch-rule-layers svelte-d3ct2b"> </span> <span class="arch-rule-name svelte-d3ct2b"> </span></div>'),Xv=F('<div class="arch-graph-wrap svelte-d3ct2b"><svg class="arch-svg svelte-d3ct2b"><defs class="svelte-d3ct2b"><marker id="arrow-block" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto" class="svelte-d3ct2b"><path d="M0,0 L0,6 L8,3 z" fill="var(--error)" class="svelte-d3ct2b"></path></marker><marker id="arrow-warn" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto" class="svelte-d3ct2b"><path d="M0,0 L0,6 L8,3 z" fill="#f59e0b" class="svelte-d3ct2b"></path></marker><marker id="arrow-allow" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto" class="svelte-d3ct2b"><path d="M0,0 L0,6 L8,3 z" fill="var(--green)" class="svelte-d3ct2b"></path></marker></defs><!><!></svg> <div class="arch-legend svelte-d3ct2b"><div class="legend-item svelte-d3ct2b"><svg width="24" height="8" class="svelte-d3ct2b"><line x1="0" y1="4" x2="20" y2="4" stroke="var(--error)" stroke-width="1.5" marker-end="url(#arrow-block)" class="svelte-d3ct2b"></line></svg> Block</div> <div class="legend-item svelte-d3ct2b"><svg width="24" height="8" class="svelte-d3ct2b"><line x1="0" y1="4" x2="20" y2="4" stroke="#f59e0b" stroke-width="1.5" stroke-dasharray="4,3" class="svelte-d3ct2b"></line></svg> Warn</div> <div class="legend-item svelte-d3ct2b"><svg width="24" height="8" class="svelte-d3ct2b"><line x1="0" y1="4" x2="20" y2="4" stroke="var(--green)" stroke-width="1.5" stroke-dasharray="6,3" class="svelte-d3ct2b"></line></svg> Allow</div></div> <!> <div class="arch-rule-list svelte-d3ct2b"></div></div>'),Jv=F('<div class="section-header svelte-d3ct2b"><span class="section-title svelte-d3ct2b">Layer Graph</span> <span class="section-meta svelte-d3ct2b"> </span></div> <!>',1),Qv=F('<div class="log-row svelte-d3ct2b"><span class="log-label label-ok svelte-d3ct2b">[OK]</span> <span class="log-msg svelte-d3ct2b">No violations recorded yet. Violations from watch mode are logged here.</span></div>'),Zv=F('<span class="history-issue svelte-d3ct2b"> </span>'),ed=F('<div class="history-violation svelte-d3ct2b"><span class="log-label label-error svelte-d3ct2b">[VIOLATION]</span> <span class="history-rule svelte-d3ct2b"> </span> <!></div>'),td=F('<div class="history-entry svelte-d3ct2b"><div class="history-header svelte-d3ct2b"><span class="history-file svelte-d3ct2b"> </span> <span class="history-time svelte-d3ct2b"> </span></div> <!></div>'),sd=F('<div class="history-list svelte-d3ct2b"></div>'),rd=F('<div class="section-header svelte-d3ct2b"><span class="section-title svelte-d3ct2b">Violation History</span> <span class="section-meta svelte-d3ct2b"> </span></div> <!>',1),ad=F('<div class="modal-row svelte-d3ct2b"><label class="modal-label svelte-d3ct2b" for="model-apikey">API Key</label> <input id="model-apikey" class="modal-input svelte-d3ct2b" type="password"/></div>'),nd=F("<div> </div>"),ld=F('<div class="modal-backdrop svelte-d3ct2b" role="presentation"><div class="modal svelte-d3ct2b"><div class="modal-header svelte-d3ct2b"><span class="modal-title svelte-d3ct2b">Settings</span> <button class="modal-close svelte-d3ct2b">✕</button></div> <section class="modal-section svelte-d3ct2b"><div class="modal-section-title svelte-d3ct2b">AI Model</div> <div class="modal-row svelte-d3ct2b"><label class="modal-label svelte-d3ct2b" for="model-provider">Provider</label> <select id="model-provider" class="modal-input svelte-d3ct2b"><option class="svelte-d3ct2b">Ollama (local)</option><option class="svelte-d3ct2b">OpenAI</option><option class="svelte-d3ct2b">Anthropic</option><option class="svelte-d3ct2b">MiniMax</option><option class="svelte-d3ct2b">OpenAI-compatible</option></select></div> <div class="modal-row svelte-d3ct2b"><label class="modal-label svelte-d3ct2b" for="model-name">Model</label> <input id="model-name" class="modal-input svelte-d3ct2b" placeholder="e.g. llama3.2, gpt-4o, claude-sonnet-4-6"/></div> <!> <div class="modal-row svelte-d3ct2b"><div class="svelte-d3ct2b"></div> <div class="modal-row-actions svelte-d3ct2b"><button class="modal-btn modal-btn-primary svelte-d3ct2b"> </button> <button class="modal-btn svelte-d3ct2b">Refresh Config</button></div></div> <!></section> <section class="modal-section svelte-d3ct2b"><div class="modal-section-title svelte-d3ct2b">Timeouts</div> <div class="modal-row svelte-d3ct2b"><label class="modal-label svelte-d3ct2b" for="chat-timeout">CHAT_TIMEOUT_MS</label> <input id="chat-timeout" class="modal-input svelte-d3ct2b" placeholder="60000" type="text" inputmode="numeric"/></div> <div class="modal-row svelte-d3ct2b"><label class="modal-label svelte-d3ct2b" for="check-timeout">CHECK_TIMEOUT_MS</label> <input id="check-timeout" class="modal-input svelte-d3ct2b" placeholder="20000" type="text" inputmode="numeric"/></div></section> <section class="modal-section svelte-d3ct2b"><div class="modal-section-title svelte-d3ct2b">Current Status</div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Provider</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Model</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">API Key</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Embedding</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Chat timeout</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Check timeout</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">AI calls this session</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Total tokens</span><span class="modal-status-val svelte-d3ct2b"> </span></div> <div class="modal-status-row svelte-d3ct2b"><span class="modal-status-label svelte-d3ct2b">Input / Output</span><span class="modal-status-val svelte-d3ct2b"> </span></div></section></div></div>'),id=F('<div class="shell svelte-d3ct2b"><header class="topbar svelte-d3ct2b"><div class="topbar-brand svelte-d3ct2b"><span class="brand-name svelte-d3ct2b">memory-core</span> <nav class="topbar-nav svelte-d3ct2b"><button>Dashboard</button> <button>Live Feed</button> <button>Metrics</button> <button>Arch Graph</button> <button>History <!></button></nav></div> <div class="topbar-search svelte-d3ct2b"><span class="search-icon svelte-d3ct2b">⌕</span> <input class="search-input svelte-d3ct2b" placeholder="Search system logs, traces, and metrics..." type="text"/></div> <div class="topbar-actions svelte-d3ct2b"><button class="icon-btn svelte-d3ct2b" title="Notifications"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><path d="M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9" class="svelte-d3ct2b"></path><path d="M13.73 21a2 2 0 0 1-3.46 0" class="svelte-d3ct2b"></path></svg></button> <button><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><rect x="2" y="3" width="20" height="14" rx="2" class="svelte-d3ct2b"></rect><path d="m7 21 5-5 5 5" class="svelte-d3ct2b"></path><path d="m7 8 3 3-3 3" class="svelte-d3ct2b"></path><path d="M13 14h4" class="svelte-d3ct2b"></path></svg></button> <button class="icon-btn svelte-d3ct2b" title="Settings"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><circle cx="12" cy="12" r="3" class="svelte-d3ct2b"></circle><path d="M19.07 4.93a10 10 0 0 1 0 14.14M4.93 4.93a10 10 0 0 0 0 14.14" class="svelte-d3ct2b"></path><path d="M12 2v2M12 20v2M2 12h2M20 12h2" class="svelte-d3ct2b"></path></svg></button> <button class="icon-btn svelte-d3ct2b"><!></button> <div class="avatar svelte-d3ct2b" title="System Administrator">S</div></div></header> <div class="body svelte-d3ct2b"><aside class="sidebar svelte-d3ct2b"><div class="sidebar-logo svelte-d3ct2b"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-d3ct2b"><circle cx="12" cy="12" r="3" class="svelte-d3ct2b"></circle><path d="M12 1v4M12 19v4M4.22 4.22l2.83 2.83M16.95 16.95l2.83 2.83M1 12h4M19 12h4M4.22 19.78l2.83-2.83M16.95 7.05l2.83-2.83" class="svelte-d3ct2b"></path></svg></div> <nav class="sidebar-nav svelte-d3ct2b"><button class="side-btn side-btn-active svelte-d3ct2b" title="Live Feed"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" class="svelte-d3ct2b"><rect x="2" y="3" width="20" height="14" rx="2" class="svelte-d3ct2b"></rect><path d="m7 21 5-5 5 5" class="svelte-d3ct2b"></path><path d="m7 8 3 3-3 3" class="svelte-d3ct2b"></path><path d="M13 14h4" class="svelte-d3ct2b"></path></svg></button></nav> <div></div></aside> <main class="content svelte-d3ct2b"><div class="health-bar svelte-d3ct2b"><span class="health-label svelte-d3ct2b">System Health:</span> <div class="health-badge health-green svelte-d3ct2b"><i class="dot dot-green svelte-d3ct2b"></i> <span class="svelte-d3ct2b"> </span></div> <div><i></i> <span class="svelte-d3ct2b"> </span></div> <div><i></i> <span class="svelte-d3ct2b"> </span></div> <!> <!> <!> <!></div> <div class="filter-bar svelte-d3ct2b"><div class="filter-left svelte-d3ct2b"><div class="chip chip-primary svelte-d3ct2b"><span class="svelte-d3ct2b">LEVEL: ALL</span> <button class="chip-close svelte-d3ct2b" title="Clear cache">✕</button></div> <div class="service-dropdown-wrap svelte-d3ct2b"><button class="chip chip-outline svelte-d3ct2b"><span class="svelte-d3ct2b"> </span> <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"><polyline points="6 9 12 15 18 9" class="svelte-d3ct2b"></polyline></svg></button> <!></div> <div class="divider-v svelte-d3ct2b"></div> <div class="metrics-strip svelte-d3ct2b"><div class="metric-item svelte-d3ct2b"><span class="metric-label svelte-d3ct2b">VIOLATIONS</span> <span> </span></div> <div class="metric-item svelte-d3ct2b"><span class="metric-label svelte-d3ct2b">FILES</span> <span class="metric-value svelte-d3ct2b"> </span></div> <div class="metric-item svelte-d3ct2b"><span class="metric-label svelte-d3ct2b">RULES</span> <span class="metric-value svelte-d3ct2b"> </span></div></div></div> <div class="filter-right svelte-d3ct2b"><div class="live-badge svelte-d3ct2b"><i></i> <span class="svelte-d3ct2b"> </span></div> <button><!></button> <button class="icon-btn svelte-d3ct2b" title="Download snapshot"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="svelte-d3ct2b"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" class="svelte-d3ct2b"></path><polyline points="7 10 12 15 17 10" class="svelte-d3ct2b"></polyline><line x1="12" y1="15" x2="12" y2="3" class="svelte-d3ct2b"></line></svg></button></div></div> <div class="feed-area svelte-d3ct2b"><!> <!> <!></div> <footer class="metrics-footer svelte-d3ct2b"><div class="footer-left svelte-d3ct2b"><div class="footer-metric svelte-d3ct2b"><span class="footer-label svelte-d3ct2b">Checks</span> <span class="footer-val svelte-d3ct2b"> </span> <span class="footer-unit svelte-d3ct2b">AI CALLS</span></div> <div class="footer-metric svelte-d3ct2b"><span class="footer-label svelte-d3ct2b">Tokens</span> <span class="footer-val svelte-d3ct2b"> </span> <span class="footer-unit svelte-d3ct2b"> </span></div> <div class="footer-metric svelte-d3ct2b"><span class="footer-label svelte-d3ct2b">Error Rate</span> <span class="footer-val footer-val-error svelte-d3ct2b"> </span></div> <div class="footer-metric svelte-d3ct2b"><span class="footer-label svelte-d3ct2b">Bypasses</span> <span> </span></div></div> <div class="footer-right svelte-d3ct2b"><div class="footer-actions svelte-d3ct2b"><button class="action-btn svelte-d3ct2b" title="Sync rules to all AI agent files"> </button> <button class="action-btn svelte-d3ct2b" title="Run full scan on all tracked files"> </button> <button class="action-btn action-btn-warn svelte-d3ct2b" title="Tune noisy rules"> </button></div> <div class="storage-bar-wrap svelte-d3ct2b"><div class="storage-bar svelte-d3ct2b"><div class="storage-fill svelte-d3ct2b"></div></div> <span class="footer-label svelte-d3ct2b"> </span></div></div></footer></main></div> <!></div>');function od(e,t){bl(t,!1);const r=P(),a=P(),n=P(),i=P(),d=P(),u=P(),f=P(),p=P(),m=P(),A=P(),k=P(),E=P(),y=P(),D=P(),S=P(),I=P(),ae=P(),ie=P(),be=P(),Xe=P();let b=P({config:null,stats:{rules:{},files:{},topRules:[],topFiles:[]},files:[],memories:[]}),me=P([]),ot=P(!1),ct=P("all"),De=P(""),At=P(!1),Je=P(""),he=P({type:"rule",scope:"project",content:"",reason:"",tags:"dashboard"}),Fe=P("live-feed"),qe=P("live-feed"),Re=P(null),Ct=P(!1),Qt=P("core-engine"),Be=P(!1),Qs=P(""),Rs=P(!1),Ee=P({provider:"",model:"",apiKey:"",chatTimeoutMs:"",checkTimeoutMs:""}),wr=P(!1),Zt=P(""),es=P("");const Jl=24*60*60*1e3,$a=640,Pa=380,Bt=110,Wt=38;function kr(l){s(Be)||w(me,[{...l,id:crypto.randomUUID()},...s(me)].slice(0,80))}function ja(l){return l.type==="saved"?{type:"saved",timestamp:l.timestamp,file:l.file}:l.type==="clean"?{type:"clean",timestamp:l.timestamp,file:l.file}:l.type==="skipped"?{type:"skipped",timestamp:l.timestamp,file:l.file,reason:l.reason}:l.type==="violations"?{type:"violations",timestamp:l.timestamp,file:l.file,violations:l.violations}:l.type==="log"?{type:"log",timestamp:l.timestamp,file:l.file,message:l.message}:l.type==="error"?{type:"error",timestamp:l.timestamp,message:l.message}:l.type==="ready"?{type:"system",timestamp:l.timestamp,message:`Watching ${l.path} | ${l.rules} rules | ${l.model}`}:{type:"system",timestamp:l.timestamp,message:"Watch stopped"}}function xr(l){const _=s(b).files??[],C=_.findIndex(j=>j.file===l.file),O=_.slice();return C===-1?O.push(l):O[C]=l,O.sort((j,q)=>q.lastSeen.localeCompare(j.lastSeen))}function Ql(l){const _=s(b).watcher??{enabled:!0,running:!1,path:void 0,model:void 0,rules:void 0,lastEventAt:void 0,error:void 0};let C=s(b).files,O={..._,lastEventAt:l.timestamp,enabled:!0};l.type==="ready"&&(O={...O,running:!0,error:void 0,path:l.path,model:l.model,rules:l.rules}),l.type==="saved"&&(C=xr({file:l.file,status:"checking",lastSeen:l.timestamp,violations:[]})),l.type==="clean"&&(C=xr({file:l.file,status:"clean",lastSeen:l.timestamp,violations:[]})),l.type==="skipped"&&(C=xr({file:l.file,status:"skipped",lastSeen:l.timestamp,violations:[],message:l.reason})),l.type==="violations"&&(C=xr({file:l.file,status:"violations",lastSeen:l.timestamp,violations:l.violations})),l.type==="error"&&(O={...O,running:!1,error:l.message}),l.type==="stopped"&&(O={...O,running:!1});const j=[l,...s(b).events??[]].slice(0,100);w(b,{...s(b),files:C,events:j,watcher:O})}function zr(l=[]){w(me,l.map(ja).map(_=>({..._,id:crypto.randomUUID()})).reverse().slice(0,80))}function Ha(l){return new Intl.DateTimeFormat(void 0,{hour:"2-digit",minute:"2-digit",second:"2-digit"}).format(new Date(l))}function Ba(l,_){const C=l.file||_;return l.line?`${C}:${l.line}`:C}function Zl(l){return l.type==="saved"?"SAVE":l.type==="clean"?"OK":l.type==="skipped"?"SKIP":l.type==="violations"?"FAIL":l.type==="log"?"CHCK":l.type==="error"?"WARN":"SYS"}function ei(l){return l.type==="clean"?"label-ok":l.type==="violations"||l.type==="error"?"label-warn":l.type==="log"?"label-chck":l.type==="system"?"label-sys":"label-info"}async function Zs(){const l=await fetch(`/api/snapshot?t=${Date.now()}`,{cache:"no-store"});w(b,await l.json()),zr(s(b).events)}async function ti(){w(Je,"");try{const l=await fetch("/api/refresh",{method:"POST",headers:{"content-type":"application/json"},cache:"no-store"});if(!l.ok)throw new Error((await l.json()).error??"Refresh failed");const _=await l.json();_.snapshot?(w(b,_.snapshot),zr(s(b).events)):await Zs()}catch(l){w(Je,l.message)}}function si(){try{localStorage.clear(),sessionStorage.clear()}finally{location.reload()}}async function ri(){w(wr,!0),w(Zt,"");try{const l=await fetch("/api/config/model",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(s(Ee))}),_=await l.json().catch(()=>({}));if(!l.ok)throw new Error(_.error??"Save failed");const C=Array.isArray(_.warnings)&&_.warnings.length>0?" — "+_.warnings.join("; "):"";w(Zt,`✓ ${_.message??"Settings updated"}${C}`),await Zs()}catch(l){w(Zt,`✗ ${l.message}`)}finally{w(wr,!1)}}async function Yr(l){w(es,l);try{await fetch(`/api/actions/${l}`,{method:"POST"}),kr({type:"system",timestamp:new Date().toISOString(),message:`Action started: memory-core ${l==="check-all"?"check --all":l}`})}catch{}finally{w(es,"")}}function Wa(){const l=location.protocol==="https:"?"wss:":"ws:",_=new WebSocket(`${l}//${location.host}/ws`);_.addEventListener("open",()=>{w(ot,!0),kr({type:"system",timestamp:new Date().toISOString(),message:"Dashboard connected"})}),_.addEventListener("close",()=>{w(ot,!1),kr({type:"error",timestamp:new Date().toISOString(),message:"Dashboard disconnected"}),setTimeout(Wa,1500)}),_.addEventListener("message",C=>{const O=JSON.parse(C.data);if(O.type==="snapshot"){w(b,O.snapshot),s(me).length===0&&zr(s(b).events);return}if(O.type==="stats"){w(b,{...s(b),stats:O.stats});return}O.type==="watch"&&(Ql(O.event),kr(ja(O.event)))})}async function ai(){if(s(he).content.trim()){w(At,!0),w(Je,"");try{const l=await fetch("/api/memories",{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify(s(he))});if(!l.ok)throw new Error((await l.json()).error??"Save failed");w(he,{type:"rule",scope:"project",content:"",reason:"",tags:"dashboard"}),await Zs()}catch(l){w(Je,l.message)}finally{w(At,!1)}}}async function ni(l){w(Je,"");const _=await fetch(`/api/memories/${l}`,{method:"DELETE"});if(!_.ok){w(Je,(await _.json()).error??"Delete failed");return}await Zs()}function Va(l){w(Qt,l),w(Ct,!1),l==="commit-hook"?w(Fe,"commit-hook"):w(Fe,"live-feed")}function li(){w(Fe,s(Fe)==="commit-hook"?"live-feed":"commit-hook"),w(Qt,s(Fe)==="commit-hook"?"commit-hook":"core-engine")}function ii(l){s(Ct)&&(l.target.closest(".service-dropdown-wrap")||w(Ct,!1))}let ts=P(localStorage.getItem("mc-theme")==="dark"||!localStorage.getItem("mc-theme")&&window.matchMedia("(prefers-color-scheme: dark)").matches);function oi(){w(ts,!s(ts)),localStorage.setItem("mc-theme",s(ts)?"dark":"light")}document.documentElement.setAttribute("data-theme",s(ts)?"dark":"light"),Zs().catch(l=>{w(Je,l.message)}),Wa(),xe(()=>(s(b),s(ct),s(De)),()=>{w(r,s(b).memories.filter(l=>{const _=s(ct)==="all"||l.type===s(ct),C=`${l.type} ${l.scope} ${l.content} ${l.reason??""} ${l.tags.join(" ")}`.toLowerCase();return _&&C.includes(s(De).toLowerCase())}))}),xe(()=>s(b),()=>{w(a,s(b).files.reduce((l,_)=>l+_.violations.length,0))}),xe(()=>s(b),()=>{w(n,s(b).files.filter(l=>l.status==="clean").length)}),xe(()=>s(b),()=>{w(i,Object.values(s(b).stats.rules).reduce((l,_)=>l+_,0))}),xe(()=>s(b),()=>{w(d,s(b).stats.recentViolations??[])}),xe(()=>s(d),()=>{w(u,s(d).filter(l=>{if(!(l.source==="hook"||l.source==="ci"))return!1;const _=Date.parse(l.timestamp);return Number.isNaN(_)?!1:Date.now()-_<=Jl}))}),xe(()=>s(a),()=>{w(f,s(a))}),xe(()=>s(b),()=>{w(p,s(b).files.filter(l=>l.status!=="checking").length)}),xe(()=>s(b),()=>{w(m,s(b).memories.filter(l=>["rule","pattern","decision"].includes(l.type)).length)}),xe(()=>s(b),()=>{var l;w(A,((l=s(b).memoryCount)==null?void 0:l.total)??s(b).memories.length)}),xe(()=>(s(ot),s(b)),()=>{var l,_;w(k,s(ot)?((l=s(b).watcher)==null?void 0:l.enabled)===!1?{live:!1,label:"Watch off"}:(_=s(b).watcher)!=null&&_.running?{live:!0,label:"Watcher live"}:{live:!1,label:"Watcher idle"}:{live:!1,label:"Disconnected"})}),xe(()=>s(b),()=>{var l;w(E,((l=s(b).arch)==null?void 0:l.layers)??[])}),xe(()=>s(b),()=>{var l;w(y,((l=s(b).arch)==null?void 0:l.rules)??[])}),xe(()=>s(E),()=>{w(D,(()=>{const l=s(E);if(l.length===0)return[];const _=["api","application","domain","infrastructure","shared"],C=[...l].sort((J,L)=>{const g=_.indexOf(J.name)===-1?99:_.indexOf(J.name),B=_.indexOf(L.name)===-1?99:_.indexOf(L.name);return g-B}),O=Math.min(C.length,3),j=Math.ceil(C.length/O),q=($a-O*Bt)/(O+1),ee=(Pa-j*Wt)/(j+1);return C.map((J,L)=>{const g=L%O,B=Math.floor(L/O);return{name:J.name,description:J.description,x:q+g*(Bt+q),y:ee+B*(Wt+ee)}})})())}),xe(()=>(s(D),s(y)),()=>{w(S,(()=>{const l=new Map(s(D).map(_=>[_.name,_]));return s(y).filter(_=>_.fromLayer!=="*"&&_.toLayer!=="*").map(_=>{const C=l.get(_.fromLayer),O=l.get(_.toLayer);if(!C||!O)return null;const j=C.x+Bt/2,q=C.y+Wt/2,ee=O.x+Bt/2,J=O.y+Wt/2,L=ee-j,g=J-q,B=Math.sqrt(L*L+g*g)||1,V=j+L/B*(Bt/2+4),U=q+g/B*(Wt/2+4),Oe=ee-L/B*(Bt/2+4),We=J-g/B*(Wt/2+4);return{r:_,sx:V,sy:U,ex:Oe,ey:We}}).filter(Boolean)})())}),xe(()=>s(b),()=>{var l;w(I,((l=s(b).runtime)==null?void 0:l.postgres.connected)??!1)}),xe(()=>s(b),()=>{var l;w(ae,((l=s(b).runtime)==null?void 0:l.model.ollamaReachable)??!1)}),xe(()=>s(b),()=>{var l,_;w(ie,(((l=s(b).runtime)==null?void 0:l.model.checkModelResolved)??((_=s(b).runtime)==null?void 0:_.model.chatModel)??"unknown").toUpperCase())}),xe(()=>s(b),()=>{var l,_;w(be,((l=s(b).runtime)==null?void 0:l.project.backendArchitecture)==="custom"||((_=s(b).runtime)==null?void 0:_.project.frontendFramework)==="custom")}),xe(()=>s(b),()=>{w(Xe,(()=>{var O,j;const l=(O=s(b).runtime)==null?void 0:O.project.backendArchitecture,_=(j=s(b).runtime)==null?void 0:j.project.frontendFramework,C=[l?l==="custom"?"Custom":l:null,_?_==="custom"?"Custom":_:null].filter(Boolean);return C.length>0?C.join(" / "):null})())}),xe(()=>s(ts),()=>{document.documentElement.setAttribute("data-theme",s(ts)?"dark":"light")}),Ic(),dv();var Ua=id();re("click",ga,ii);var Ka=o(Ua),qa=o(Ka),ci=c(o(qa),2),Gr=o(ci);let za;var Xr=c(Gr,2);let Ya;var Jr=c(Xr,2);let Ga;var Qr=c(Jr,2);let Xa;var Zr=c(Qr,2);let Ja;var vi=c(o(Zr));{var di=l=>{var _=uv(),C=o(_);H(()=>M(C,(s(b),h(()=>{var O;return(O=s(b).violationHistory)==null?void 0:O.length})))),T(l,_)};Y(vi,l=>{s(b),h(()=>{var _;return(((_=s(b).violationHistory)==null?void 0:_.length)??0)>0})&&l(di)})}var Qa=c(qa,2),fi=c(o(Qa),2),ui=c(Qa,2),Er=c(o(ui),2);let Za;var en=c(Er,2),ea=c(en,2),pi=o(ea);{var hi=l=>{var _=pv();T(l,_)},_i=l=>{var _=hv();T(l,_)};Y(pi,l=>{s(ts)?l(hi):l(_i,-1)})}var tn=c(Ka,2),sn=o(tn),rn=c(o(sn),4);let an;var bi=c(sn,2),nn=o(bi),ln=c(o(nn),2),mi=c(o(ln),2),gi=o(mi),ta=c(ln,2);let on;var cn=o(ta);let vn;var yi=c(cn,2),wi=o(yi),sa=c(ta,2);let dn;var fn=o(sa);let un;var ki=c(fn,2),xi=o(ki),pn=c(sa,2);{var Ei=l=>{var _=_v(),C=c(o(_),2),O=o(C);H(()=>M(O,`${s(b),h(()=>{var j;return(j=s(b).arch)==null?void 0:j.pendingRules})??""} PENDING RULES`)),T(l,_)};Y(pn,l=>{s(b),h(()=>{var _;return(((_=s(b).arch)==null?void 0:_.pendingRules)??0)>0})&&l(Ei)})}var hn=c(pn,2);{var Si=l=>{var _=bv();let C;var O=o(_);let j;var q=c(O,2),ee=o(q);H(J=>{C=ce(_,1,"health-badge svelte-d3ct2b",null,C,{"health-warn":s(be),"health-green":!s(be)}),j=ce(O,1,"dot svelte-d3ct2b",null,j,{"dot-warn":s(be),"dot-green":!s(be)}),M(ee,`ARCH: ${J??""}${s(be)?" — ADD RULES":""}`)},[()=>(s(Xe),h(()=>s(Xe).toUpperCase()))]),T(l,_)};Y(hn,l=>{s(Xe)&&l(Si)})}var _n=c(hn,2);{var Mi=l=>{var _=mv(),C=o(_);H(()=>M(C,(s(b),h(()=>s(b).dbError)))),T(l,_)};Y(_n,l=>{s(b),h(()=>s(b).dbError)&&l(Mi)})}var Ti=c(_n,2);{var Ai=l=>{var _=gv(),C=o(_);H(()=>M(C,s(Je))),T(l,_)};Y(Ti,l=>{s(Je)&&l(Ai)})}var bn=c(nn,2),mn=o(bn),gn=o(mn),Ci=c(o(gn),2),yn=c(gn,2),ra=o(yn),wn=o(ra),Oi=o(wn),Li=c(wn,2);let kn;var Ri=c(ra,2);{var Ni=l=>{var _=wv(),C=o(_);let O;var j=c(C,2);let q;var ee=c(o(j),2);{var J=L=>{var g=yv(),B=o(g);H(()=>M(B,(s(u),h(()=>s(u).length)))),T(L,g)};Y(ee,L=>{s(u),h(()=>s(u).length>0)&&L(J)})}H(()=>{O=ce(C,1,"dropdown-item svelte-d3ct2b",null,O,{"dropdown-item-active":s(Qt)==="core-engine"}),q=ce(j,1,"dropdown-item svelte-d3ct2b",null,q,{"dropdown-item-active":s(Qt)==="commit-hook"})}),re("click",C,()=>Va("core-engine")),re("click",j,()=>Va("commit-hook")),T(l,_)};Y(Ri,l=>{s(Ct)&&l(Ni)})}var Ii=c(yn,4),xn=o(Ii),En=c(o(xn),2);let Sn;var Di=o(En),Mn=c(xn,2),Fi=c(o(Mn),2),$i=o(Fi),Pi=c(Mn,2),ji=c(o(Pi),2),Hi=o(ji),Bi=c(mn,2),Tn=o(Bi),An=o(Tn);let Cn;var Wi=c(An,2),Vi=o(Wi),er=c(Tn,2);let On;var Ui=o(er);{var Ki=l=>{var _=kv();T(l,_)},qi=l=>{var _=xv();T(l,_)};Y(Ui,l=>{s(Be)?l(Ki):l(qi,-1)})}var zi=c(er,2),Ln=c(bn,2),Rn=o(Ln);{var Yi=l=>{var _=Ds(),C=Ue(_);{var O=q=>{var ee=Mv(),J=c(Ue(ee),4);{var L=B=>{var V=Ev();T(B,V)},g=B=>{var V=Sv();T(B,V)};Y(J,B=>{s(be)?B(L):B(g,-1)})}T(q,ee)},j=q=>{var ee=Ds(),J=Ue(ee);dt(J,1,()=>(s(me),h(()=>[...s(me)].reverse())),L=>L.id,(L,g)=>{var B=Ov(),V=Ue(B);let U;var Oe=o(V),We=o(Oe),Ve=c(Oe,2),ke=o(Ve),x=c(Ve,2),oe=o(x);{var ne=N=>{var $=It();H(()=>M($,(s(g),h(()=>s(g).message)))),T(N,$)},Q=N=>{var $=It();H(()=>M($,`saved: ${s(g),h(()=>s(g).file)??""}`)),T(N,$)},de=N=>{var $=It();H(()=>M($,`${s(g),h(()=>s(g).file)??""} — no violations`)),T(N,$)},ge=N=>{var $=It();H(()=>M($,`${s(g),h(()=>s(g).file)??""} — skipped: ${s(g),h(()=>s(g).reason)??""}`)),T(N,$)},Se=N=>{var $=It();H(()=>M($,`${s(g),h(()=>s(g).file)??""} — ${s(g),h(()=>s(g).message)??""}`)),T(N,$)},Le=N=>{var $=It();H(()=>M($,`${s(g),h(()=>s(g).violations.length)??""} violation${s(g),h(()=>s(g).violations.length===1?"":"s")??""} in ${s(g),h(()=>s(g).file)??""}`)),T(N,$)};Y(oe,N=>{s(g),h(()=>s(g).type==="system"||s(g).type==="error")?N(ne):(s(g),h(()=>s(g).type==="saved")?N(Q,1):(s(g),h(()=>s(g).type==="clean")?N(de,2):(s(g),h(()=>s(g).type==="skipped")?N(ge,3):(s(g),h(()=>s(g).type==="log")?N(Se,4):N(Le,-1)))))})}var se=c(x,2),_e=c(V,2);{var $e=N=>{var $=Ds(),Ne=Ue($);dt(Ne,3,()=>(s(g),h(()=>s(g).violations)),(Z,K)=>`${s(g).id}-${K}`,(Z,K,ue)=>{var Me=Cv(),vt=o(Me),st=o(vt),ve=c(vt,2),Qe=o(ve),Ot=o(Qe),Lt=c(Qe,2);{var us=ze=>{var Rt=Tv(),Is=c(Ue(Rt)),tr=o(Is);H(()=>M(tr,(s(K),h(()=>s(K).rule)))),T(ze,Rt)};Y(Lt,ze=>{s(K),h(()=>s(K).rule)&&ze(us)})}var Vt=c(Lt,2);{var Ut=ze=>{var Rt=It();H(()=>M(Rt,`— ${s(K),h(()=>s(K).issue)??""}`)),T(ze,Rt)};Y(Vt,ze=>{s(K),h(()=>s(K).issue)&&ze(Ut)})}var ss=c(Vt,2);{var Ns=ze=>{var Rt=Av(),Is=c(Ue(Rt)),tr=o(Is);H(()=>M(tr,`→ ${s(K),h(()=>s(K).suggestion)??""}`)),T(ze,Rt)};Y(ss,ze=>{s(K),h(()=>s(K).suggestion)&&ze(Ns)})}H(ze=>{M(st,`[${s(ue)+1}]`),M(Ot,ze)},[()=>(s(K),s(g),h(()=>Ba(s(K),s(g).file)))]),T(Z,Me)}),T(N,$)};Y(_e,N=>{s(g),h(()=>s(g).type==="violations")&&N($e)})}H((N,$,Ne)=>{U=ce(V,1,"log-row svelte-d3ct2b",null,U,{"log-row-warn":s(g).type==="error","log-row-ok":s(g).type==="clean","log-row-fail":s(g).type==="violations"}),M(We,N),ce(Ve,1,`log-label ${$??""}`,"svelte-d3ct2b"),M(ke,`[${Ne??""}]`)},[()=>(s(g),h(()=>Ha(s(g).timestamp))),()=>(s(g),h(()=>ei(s(g)))),()=>(s(g),h(()=>Zl(s(g))))]),re("click",se,()=>{var $;const N=s(g).type==="system"||s(g).type==="error"?s(g).message:s(g).type==="saved"?`saved: ${s(g).file}`:s(g).file;($=navigator.clipboard)==null||$.writeText(N)}),T(L,B)}),T(q,ee)};Y(C,q=>{s(me),h(()=>s(me).length===0)?q(O):q(j,-1)})}T(l,_)},Gi=l=>{var _=Dv(),C=Ue(_),O=c(o(C),2),j=o(O),q=c(C,2);{var ee=L=>{var g=Lv();T(L,g)},J=L=>{var g=Ds(),B=Ue(g);dt(B,3,()=>(s(u),h(()=>s(u).slice(0,20))),(V,U)=>`${V.timestamp}-${U}`,(V,U)=>{var Oe=Iv(),We=Ue(Oe),Ve=o(We),ke=o(Ve),x=c(Ve,2),oe=o(x),ne=c(x,2),Q=o(ne),de=o(Q),ge=c(Q,2);{var Se=_e=>{var $e=It();H(N=>M($e,`— ${N??""}`),[()=>(s(U),h(()=>Ba(s(U),s(U).file)))]),T(_e,$e)};Y(ge,_e=>{s(U),h(()=>s(U).file)&&_e(Se)})}var Le=c(We,2);{var se=_e=>{var $e=Nv(),N=c(o($e),2),$=o(N);{var Ne=ue=>{var Me=It();H(()=>M(Me,(s(U),h(()=>s(U).issue)))),T(ue,Me)};Y($,ue=>{s(U),h(()=>s(U).issue)&&ue(Ne)})}var Z=c($,2);{var K=ue=>{var Me=Rv(),vt=c(Ue(Me)),st=o(vt);H(()=>M(st,`→ ${s(U),h(()=>s(U).suggestion)??""}`)),T(ue,Me)};Y(Z,ue=>{s(U),h(()=>s(U).suggestion)&&ue(K)})}T(_e,$e)};Y(Le,_e=>{s(U),h(()=>s(U).issue||s(U).suggestion)&&_e(se)})}H(_e=>{M(ke,_e),M(oe,`[${s(U),h(()=>s(U).source==="ci"?"CI":"HOOK")??""}]`),M(de,(s(U),h(()=>s(U).rule)))},[()=>(s(U),h(()=>Ha(s(U).timestamp)))]),T(V,Oe)}),T(L,g)};Y(q,L=>{s(u),h(()=>s(u).length===0)?L(ee):L(J,-1)})}H(()=>M(j,`${s(u),h(()=>s(u).length)??""} violation${s(u),h(()=>s(u).length===1?"":"s")??""} in last 24h`)),T(l,_)},Xi=l=>{var _=Hv(),C=Ue(_),O=c(o(C),2),j=o(O),q=c(C,2),ee=o(q),J=o(ee);J.value=J.__value="all";var L=c(J);L.value=L.__value="rule";var g=c(L);g.value=g.__value="decision";var B=c(g);B.value=B.__value="pattern";var V=c(B);V.value=V.__value="ignore";var U=c(ee,2),Oe=c(q,2),We=o(Oe),Ve=o(We),ke=o(Ve),x=o(ke);x.value=x.__value="rule";var oe=c(x);oe.value=oe.__value="decision";var ne=c(oe);ne.value=ne.__value="pattern";var Q=c(ne);Q.value=Q.__value="ignore";var de=c(ke,2),ge=o(de);ge.value=ge.__value="project";var Se=c(ge);Se.value=Se.__value="global";var Le=c(de,2),se=c(Le,2),_e=c(Ve,2),$e=o(_e),N=c($e,2),$=o(N),Ne=c(Oe,2);dt(Ne,5,()=>s(r),Z=>Z.id,(Z,K)=>{var ue=$v(),Me=o(ue),vt=o(Me),st=c(Me,2),ve=o(st),Qe=c(st,2),Ot=o(Qe),Lt=c(Qe,2);{var us=Ut=>{var ss=Fv(),Ns=o(ss);H(()=>M(Ns,(s(K),h(()=>s(K).reason)))),T(Ut,ss)};Y(Lt,Ut=>{s(K),h(()=>s(K).reason)&&Ut(us)})}var Vt=c(Lt,2);H(()=>{M(vt,(s(K),h(()=>s(K).type))),M(ve,(s(K),h(()=>s(K).scope))),M(Ot,(s(K),h(()=>s(K).content)))}),re("click",Vt,()=>ni(s(K).id)),T(Z,ue)},Z=>{var K=jv(),ue=o(K),Me=o(ue);{var vt=ve=>{var Qe=Pv();T(ve,Qe)},st=ve=>{var Qe=It("No rules match the current filters.");T(ve,Qe)};Y(Me,ve=>{s(be)&&s(m)===0?ve(vt):ve(st,-1)})}T(Z,K)}),H(Z=>{M(j,`${s(m)??""} rules active`),N.disabled=Z,M($,s(At)?"Saving…":"+ Add Rule")},[()=>(s(At),s(he),h(()=>s(At)||!s(he).content.trim()))]),Cr(ee,()=>s(ct),Z=>w(ct,Z)),Kt(U,()=>s(De),Z=>w(De,Z)),Cr(ke,()=>s(he).type,Z=>Nt(he,s(he).type=Z)),Cr(de,()=>s(he).scope,Z=>Nt(he,s(he).scope=Z)),Kt(Le,()=>s(he).reason,Z=>Nt(he,s(he).reason=Z)),Kt(se,()=>s(he).tags,Z=>Nt(he,s(he).tags=Z)),Kt($e,()=>s(he).content,Z=>Nt(he,s(he).content=Z)),re("submit",We,vv(ai)),T(l,_)};Y(Rn,l=>{s(Fe)==="live-feed"?l(Yi):s(Fe)==="commit-hook"?l(Gi,1):s(Fe)==="rules"&&l(Xi,2)})}var Nn=c(Rn,2);{var Ji=l=>{var _=Jv(),C=Ue(_),O=c(o(C),2),j=o(O),q=c(C,2);{var ee=L=>{var g=Bv();T(L,g)},J=L=>{var g=Xv(),B=o(g);pe(B,"width",$a),pe(B,"height",Pa);var V=c(o(B));dt(V,1,()=>s(S),as,(ke,x)=>{var oe=Ds(),ne=Ue(oe);{var Q=de=>{const ge=$s(()=>(s(x),h(()=>s(x).r.allowed?"var(--green)":s(x).r.enforcement==="warn"?"#f59e0b":"var(--error)"))),Se=$s(()=>(s(x),h(()=>s(x).r.allowed?"arrow-allow":s(x).r.enforcement==="warn"?"arrow-warn":"arrow-block"))),Le=$s(()=>(s(x),h(()=>s(x).r.allowed?"6,3":s(x).r.enforcement==="warn"?"4,3":"none")));var se=Wv();H(()=>{pe(se,"x1",(s(x),h(()=>s(x).sx))),pe(se,"y1",(s(x),h(()=>s(x).sy))),pe(se,"x2",(s(x),h(()=>s(x).ex))),pe(se,"y2",(s(x),h(()=>s(x).ey))),pe(se,"stroke",s(ge)),pe(se,"stroke-dasharray",s(Le)),pe(se,"marker-end",`url(#${s(Se)??""})`)}),T(de,se)};Y(ne,de=>{s(x)&&de(Q)})}T(ke,oe)});var U=c(V);dt(U,1,()=>s(D),as,(ke,x)=>{var oe=Vv();let ne;var Q=o(oe);pe(Q,"width",Bt),pe(Q,"height",Wt);var de=c(Q),ge=o(de),Se=c(de),Le=o(Se);H(se=>{ne=ce(oe,0,"arch-node arch-node-clickable svelte-d3ct2b",null,ne,{"arch-node-selected":s(Re)===s(x).name}),pe(oe,"aria-label",`Show files in ${s(x),h(()=>s(x).name)??""} layer`),pe(Q,"x",(s(x),h(()=>s(x).x))),pe(Q,"y",(s(x),h(()=>s(x).y))),ce(Q,0,`arch-node-rect arch-node-${s(x),h(()=>s(x).name)??""}`,"svelte-d3ct2b"),pe(Q,"stroke-width",(s(Re),s(x),h(()=>s(Re)===s(x).name?2.5:1.5))),pe(de,"x",(s(x),h(()=>s(x).x+Bt/2))),pe(de,"y",(s(x),h(()=>s(x).y+Wt/2-5))),M(ge,(s(x),h(()=>s(x).name))),pe(Se,"x",(s(x),h(()=>s(x).x+Bt/2))),pe(Se,"y",(s(x),h(()=>s(x).y+Wt/2+9))),M(Le,se)},[()=>(s(x),h(()=>s(x).description.length>18?s(x).description.slice(0,16)+"…":s(x).description))]),re("click",oe,()=>{w(Re,s(Re)===s(x).name?null:s(x).name)}),re("keydown",oe,se=>{(se.key==="Enter"||se.key===" ")&&w(Re,s(Re)===s(x).name?null:s(x).name)}),T(ke,oe)});var Oe=c(B,4);{var We=ke=>{const x=$s(()=>(s(E),s(Re),h(()=>s(E).find(N=>N.name===s(Re)))));var oe=Yv(),ne=o(oe),Q=o(ne),de=o(Q),ge=c(Q,2),Se=o(ge),Le=c(ge,2),se=c(ne,2);{var _e=N=>{var $=Kv(),Ne=c(o($),2);dt(Ne,1,()=>($r(s(x)),h(()=>s(x).paths)),as,(Z,K)=>{var ue=Uv(),Me=o(ue);H(()=>M(Me,s(K))),T(Z,ue)}),T(N,$)};Y(se,N=>{$r(s(x)),h(()=>{var $,Ne;return(Ne=($=s(x))==null?void 0:$.paths)==null?void 0:Ne.length})&&N(_e)})}var $e=c(se,2);dt($e,1,()=>(s(y),s(Re),h(()=>[s(y).filter(N=>N.fromLayer===s(Re)||N.toLayer===s(Re))])),as,(N,$)=>{var Ne=Ds(),Z=Ue(Ne);{var K=ue=>{var Me=zv(),vt=c(o(Me),2);dt(vt,1,()=>s($),as,(st,ve)=>{var Qe=qv(),Ot=o(Qe);let Lt;var us=o(Ot),Vt=c(Ot,2),Ut=o(Vt);H(ss=>{Lt=ce(Ot,1,"arch-rule-badge svelte-d3ct2b",null,Lt,{"badge-block":!s(ve).allowed&&s(ve).enforcement==="block","badge-warn":!s(ve).allowed&&s(ve).enforcement==="warn","badge-allow":s(ve).allowed}),M(us,ss),M(Ut,`${s(ve),h(()=>s(ve).fromLayer)??""} → ${s(ve),h(()=>s(ve).toLayer)??""} — ${s(ve),h(()=>s(ve).name)??""}`)},[()=>(s(ve),h(()=>s(ve).enforcement.toUpperCase()))]),T(st,Qe)}),T(ue,Me)};Y(Z,ue=>{s($),h(()=>s($).length)&&ue(K)})}T(N,Ne)}),H(()=>{M(de,s(Re)),M(Se,($r(s(x)),h(()=>{var N;return((N=s(x))==null?void 0:N.description)??""})))}),re("click",Le,()=>w(Re,null)),T(ke,oe)};Y(Oe,ke=>{s(Re)&&ke(We)})}var Ve=c(Oe,2);dt(Ve,5,()=>s(y),as,(ke,x)=>{var oe=Gv(),ne=o(oe);let Q;var de=o(ne),ge=c(ne,2),Se=o(ge),Le=c(ge,2),se=o(Le);H(_e=>{Q=ce(ne,1,"arch-rule-badge svelte-d3ct2b",null,Q,{"badge-block":!s(x).allowed&&s(x).enforcement==="block","badge-warn":!s(x).allowed&&s(x).enforcement==="warn","badge-allow":s(x).allowed}),M(de,_e),M(Se,`${s(x),h(()=>s(x).fromLayer)??""} → ${s(x),h(()=>s(x).toLayer)??""}`),M(se,(s(x),h(()=>s(x).name)))},[()=>(s(x),h(()=>s(x).enforcement.toUpperCase()))]),T(ke,oe)}),T(L,g)};Y(q,L=>{s(E),h(()=>s(E).length===0)?L(ee):L(J,-1)})}H(()=>M(j,`${s(E),h(()=>s(E).length)??""} layers · ${s(y),h(()=>s(y).length)??""} rules`)),T(l,_)};Y(Nn,l=>{s(qe)==="arch-graph"&&l(Ji)})}var Qi=c(Nn,2);{var Zi=l=>{var _=rd(),C=Ue(_),O=c(o(C),2),j=o(O),q=c(C,2);{var ee=L=>{var g=Qv();T(L,g)},J=L=>{var g=sd();dt(g,5,()=>(s(b),h(()=>s(b).violationHistory??[])),as,(B,V)=>{var U=td(),Oe=o(U),We=o(Oe),Ve=o(We),ke=c(We,2),x=o(ke),oe=c(Oe,2);dt(oe,1,()=>(s(V),h(()=>s(V).violations)),as,(ne,Q)=>{var de=ed(),ge=c(o(de),2),Se=o(ge),Le=c(ge,2);{var se=_e=>{var $e=Zv(),N=o($e);H(()=>M(N,`— ${s(Q),h(()=>s(Q).issue)??""}`)),T(_e,$e)};Y(Le,_e=>{s(Q),h(()=>s(Q).issue)&&_e(se)})}H(()=>M(Se,(s(Q),h(()=>s(Q).rule)))),T(ne,de)}),H(ne=>{M(Ve,(s(V),h(()=>s(V).file))),M(x,ne)},[()=>(s(V),h(()=>new Date(s(V).timestamp).toLocaleString()))]),T(B,U)}),T(L,g)};Y(q,L=>{s(b),h(()=>{var g;return!((g=s(b).violationHistory)!=null&&g.length)})?L(ee):L(J,-1)})}H(()=>M(j,`${s(b),h(()=>{var L;return((L=s(b).violationHistory)==null?void 0:L.length)??0})??""} entries (last 200)`)),T(l,_)};Y(Qi,l=>{s(qe)==="history"&&l(Zi)})}var eo=c(Ln,2),In=o(eo),Dn=o(In),to=c(o(Dn),2),so=o(to),Fn=c(Dn,2),$n=c(o(Fn),2),ro=o($n),ao=c($n,2),no=o(ao),Pn=c(Fn,2),lo=c(o(Pn),2),io=o(lo),oo=c(Pn,2),jn=c(o(oo),2);let Hn;var co=o(jn),vo=c(In,2),Bn=o(vo),Sr=o(Bn),fo=o(Sr),Mr=c(Sr,2),uo=o(Mr),aa=c(Mr,2),po=o(aa),ho=c(Bn,2),Wn=o(ho),_o=o(Wn),bo=c(Wn,2),mo=o(bo),go=c(tn,2);{var yo=l=>{var _=ld(),C=o(_),O=o(C),j=c(o(O),2),q=c(O,2),ee=c(o(q),2),J=c(o(ee),2),L=o(J);L.value=L.__value="ollama";var g=c(L);g.value=g.__value="openai";var B=c(g);B.value=B.__value="anthropic";var V=c(B);V.value=V.__value="minimax";var U=c(V);U.value=U.__value="openai-compatible";var Oe=c(ee,2),We=c(o(Oe),2),Ve=c(Oe,2);{var ke=le=>{var Pe=ad(),ps=c(o(Pe),2);H(()=>pe(ps,"placeholder",(s(b),h(()=>{var te;return(te=s(b).runtime)!=null&&te.model.apiKeyConfigured?"(already set — leave blank to keep)":"sk-..."})))),Kt(ps,()=>s(Ee).apiKey,te=>Nt(Ee,s(Ee).apiKey=te)),T(le,Pe)};Y(Ve,le=>{s(Ee),h(()=>s(Ee).provider&&s(Ee).provider!=="ollama")&&le(ke)})}var x=c(Ve,2),oe=c(o(x),2),ne=o(oe),Q=o(ne),de=c(ne,2),ge=c(x,2);{var Se=le=>{var Pe=nd();let ps;var te=o(Pe);H(rt=>{ps=ce(Pe,1,"modal-msg svelte-d3ct2b",null,ps,rt),M(te,s(Zt))},[()=>({"modal-msg-ok":s(Zt).startsWith("✓"),"modal-msg-err":s(Zt).startsWith("✗")})]),T(le,Pe)};Y(ge,le=>{s(Zt)&&le(Se)})}var Le=c(q,2),se=c(o(Le),2),_e=c(o(se),2),$e=c(se,2),N=c(o($e),2),$=c(Le,2),Ne=c(o($),2),Z=c(o(Ne)),K=o(Z),ue=c(Ne,2),Me=c(o(ue)),vt=o(Me),st=c(ue,2),ve=c(o(st)),Qe=o(ve),Ot=c(st,2),Lt=c(o(Ot)),us=o(Lt),Vt=c(Ot,2),Ut=c(o(Vt)),ss=o(Ut),Ns=c(Vt,2),ze=c(o(Ns)),Rt=o(ze),Is=c(Ns,2),tr=c(o(Is)),wo=o(tr),Vn=c(Is,2),ko=c(o(Vn)),xo=o(ko),Eo=c(Vn,2),So=c(o(Eo)),Mo=o(So);H((le,Pe,ps)=>{ne.disabled=s(wr),M(Q,s(wr)?"Saving…":"Apply"),M(K,(s(b),h(()=>{var te;return((te=s(b).runtime)==null?void 0:te.model.provider)??"—"}))),M(vt,(s(b),h(()=>{var te,rt;return((te=s(b).runtime)==null?void 0:te.model.checkModelResolved)??((rt=s(b).runtime)==null?void 0:rt.model.chatModel)??"—"}))),M(Qe,(s(b),h(()=>{var te;return(te=s(b).runtime)!=null&&te.model.apiKeyConfigured?"Configured":"Not set"}))),M(us,(s(b),h(()=>{var te,rt;return((te=s(b).runtime)==null?void 0:te.model.embeddingModelResolved)??((rt=s(b).runtime)==null?void 0:rt.model.embeddingModel)??"—"}))),M(ss,`${s(b),h(()=>{var te,rt;return((rt=(te=s(b).runtime)==null?void 0:te.timeouts)==null?void 0:rt.chatTimeoutMs)??"60000"})??""} ms`),M(Rt,`${s(b),h(()=>{var te,rt;return((rt=(te=s(b).runtime)==null?void 0:te.timeouts)==null?void 0:rt.checkTimeoutMs)??"20000"})??""} ms`),M(wo,(s(b),h(()=>{var te;return((te=s(b).stats.tokens)==null?void 0:te.calls)??0}))),M(xo,`${le??""} ${s(b),h(()=>{var te;return((te=s(b).runtime)==null?void 0:te.model.provider)==="ollama"?"(local — free)":""})??""}`),M(Mo,`${Pe??""} in / ${ps??""} out`)},[()=>(s(b),h(()=>{var le,Pe;return((Pe=(le=s(b).stats.tokens)==null?void 0:le.totalTokens)==null?void 0:Pe.toLocaleString())??"0"})),()=>(s(b),h(()=>{var le,Pe;return((Pe=(le=s(b).stats.tokens)==null?void 0:le.inputTokens)==null?void 0:Pe.toLocaleString())??"0"})),()=>(s(b),h(()=>{var le,Pe;return((Pe=(le=s(b).stats.tokens)==null?void 0:le.outputTokens)==null?void 0:Pe.toLocaleString())??"0"}))]),re("click",j,()=>w(Rs,!1)),Cr(J,()=>s(Ee).provider,le=>Nt(Ee,s(Ee).provider=le)),Kt(We,()=>s(Ee).model,le=>Nt(Ee,s(Ee).model=le)),re("click",ne,ri),re("click",de,ti),Kt(_e,()=>s(Ee).chatTimeoutMs,le=>Nt(Ee,s(Ee).chatTimeoutMs=le)),Kt(N,()=>s(Ee).checkTimeoutMs,le=>Nt(Ee,s(Ee).checkTimeoutMs=le)),re("click",_,nl(()=>w(Rs,!1))),re("keydown",_,nl(le=>{le.key==="Escape"&&w(Rs,!1)})),T(l,_)};Y(go,l=>{s(Rs)&&l(yo)})}H((l,_,C,O,j,q)=>{var ee,J,L,g,B;za=ce(Gr,1,"tab-btn svelte-d3ct2b",null,za,{"tab-active":s(qe)==="dashboard"}),Ya=ce(Xr,1,"tab-btn svelte-d3ct2b",null,Ya,{"tab-active":s(qe)==="live-feed"}),Ga=ce(Jr,1,"tab-btn svelte-d3ct2b",null,Ga,{"tab-active":s(qe)==="metrics"}),Xa=ce(Qr,1,"tab-btn svelte-d3ct2b",null,Xa,{"tab-active":s(qe)==="arch-graph"}),Ja=ce(Zr,1,"tab-btn svelte-d3ct2b",null,Ja,{"tab-active":s(qe)==="history"}),Za=ce(Er,1,"icon-btn svelte-d3ct2b",null,Za,{"icon-btn-active":s(Fe)==="commit-hook"}),pe(Er,"title",s(Fe)==="commit-hook"?"Switch to Live Feed":"Switch to Commit Hook"),pe(ea,"title",s(ts)?"Switch to light mode":"Switch to dark mode"),an=ce(rn,1,"sidebar-footer-dot svelte-d3ct2b",null,an,{"dot-live":s(k).live}),pe(rn,"title",(s(k),h(()=>s(k).label))),M(gi,`CORE ${s(k),h(()=>s(k).live?"LIVE":"IDLE")??""}`),on=ce(ta,1,"health-badge svelte-d3ct2b",null,on,{"health-green":s(I),"health-warn":!s(I)}),vn=ce(cn,1,"dot svelte-d3ct2b",null,vn,{"dot-green":s(I),"dot-warn":!s(I)}),M(wi,`DB ${s(I)?"CONNECTED":"DISCONNECTED"}`),dn=ce(sa,1,"health-badge svelte-d3ct2b",null,dn,{"health-blue":s(ae)||((ee=s(b).runtime)==null?void 0:ee.model.provider)!=="ollama","health-warn":!s(ae)&&((J=s(b).runtime)==null?void 0:J.model.provider)==="ollama"}),un=ce(fn,1,"dot svelte-d3ct2b",null,un,{"dot-blue":s(ae)||((L=s(b).runtime)==null?void 0:L.model.provider)!=="ollama","dot-warn":!s(ae)&&((g=s(b).runtime)==null?void 0:g.model.provider)==="ollama"}),M(xi,`MODEL: ${s(ie)??""}`),M(Oi,`SERVICE: ${s(Qt)==="commit-hook"?"COMMIT HOOK":"CORE-ENGINE"}`),kn=ce(Li,0,"chevron svelte-d3ct2b",null,kn,{"chevron-open":s(Ct)}),Sn=ce(En,1,"metric-value svelte-d3ct2b",null,Sn,{"metric-value-warn":s(f)>0}),M(Di,s(f)),M($i,l),M(Hi,_),Cn=ce(An,1,"dot dot-green svelte-d3ct2b",null,Cn,{"dot-pulse":s(k).live}),M(Vi,C),On=ce(er,1,"icon-btn svelte-d3ct2b",null,On,{"icon-btn-active":s(Be)}),pe(er,"title",s(Be)?"Resume":"Pause"),M(so,(s(b),h(()=>{var V;return((V=s(b).stats.tokens)==null?void 0:V.calls)??0}))),M(ro,O),M(no,(s(b),h(()=>{var V;return((V=s(b).runtime)==null?void 0:V.model.provider)==="ollama"?"LOCAL (FREE)":"USED"}))),M(io,j),Hn=ce(jn,1,"footer-val svelte-d3ct2b",null,Hn,{"footer-val-error":(((B=s(b).stats.bypasses)==null?void 0:B.withoutReason)??0)>0}),M(co,`${s(b),h(()=>{var V;return((V=s(b).stats.bypasses)==null?void 0:V.withoutReason)??0})??""} unrecorded`),Sr.disabled=s(es)==="sync",M(fo,`${s(es)==="sync"?"…":"⟳"} Sync Agents`),Mr.disabled=s(es)==="check-all",M(uo,`${s(es)==="check-all"?"…":"⊛"} Check All`),aa.disabled=s(es)==="tune",M(po,`${s(es)==="tune"?"…":"⚙"} Tune Rules`),rv(_o,`width: ${q??""}%`),M(mo,`Storage: ${s(A)??""} memories`)},[()=>(s(p),h(()=>s(p).toLocaleString())),()=>(s(m),h(()=>s(m).toLocaleString())),()=>(s(k),h(()=>s(k).live?"LIVE STREAMING":s(k).label.toUpperCase())),()=>(s(b),h(()=>{var l;return(l=s(b).stats.tokens)!=null&&l.totalTokens?(s(b).stats.tokens.totalTokens/1e3).toFixed(1)+"K":"—"})),()=>(s(f),s(p),h(()=>s(f)===0?"0.00%":(s(f)/Math.max(1,s(p))*100).toFixed(2)+"%")),()=>(s(A),h(()=>Math.min(100,s(A)/Math.max(1,s(A)+100)*100+20)))]),re("click",Gr,()=>{w(qe,"dashboard"),w(Fe,"live-feed")}),re("click",Xr,()=>{w(qe,"live-feed"),w(Fe,"live-feed")}),re("click",Jr,()=>{w(qe,"metrics"),w(Fe,"rules")}),re("click",Qr,()=>{w(qe,"arch-graph"),w(Fe,"live-feed")}),re("click",Zr,()=>{w(qe,"history")}),Kt(fi,()=>s(Qs),l=>w(Qs,l)),re("click",Er,li),re("click",en,()=>{var l,_,C,O,j,q;w(Rs,!s(Rs)),w(Ee,{provider:((l=s(b).runtime)==null?void 0:l.model.provider)??"",model:((_=s(b).runtime)==null?void 0:_.model.chatModel)??"",apiKey:"",chatTimeoutMs:((O=(C=s(b).runtime)==null?void 0:C.timeouts)==null?void 0:O.chatTimeoutMs)??"",checkTimeoutMs:((q=(j=s(b).runtime)==null?void 0:j.timeouts)==null?void 0:q.checkTimeoutMs)??""}),w(Zt,"")}),re("click",ea,oi),re("click",Ci,si),re("click",ra,cv(()=>w(Ct,!s(Ct)))),re("click",er,()=>w(Be,!s(Be))),re("click",zi,()=>{const l=new Blob([JSON.stringify(s(b),null,2)],{type:"application/json"}),_=document.createElement("a");_.href=URL.createObjectURL(l),_.download="memory-core-snapshot.json",_.click()}),re("click",Sr,()=>Yr("sync")),re("click",Mr,()=>Yr("check-all")),re("click",aa,()=>Yr("tune")),T(e,Ua),ml()}Yc(od,{target:document.getElementById("app")});
|