causantic 0.5.2 → 0.5.4
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 +56 -56
- package/config.schema.json +15 -1
- package/dist/cli/commands/archive.d.ts.map +1 -1
- package/dist/cli/commands/archive.js +53 -7
- package/dist/cli/commands/archive.js.map +1 -1
- package/dist/config/loader.d.ts +4 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +18 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/memory-config.d.ts +5 -2
- package/dist/config/memory-config.d.ts.map +1 -1
- package/dist/config/memory-config.js +3 -1
- package/dist/config/memory-config.js.map +1 -1
- package/dist/dashboard/client/assets/index-BmZeW-Jd.css +1 -0
- package/dist/dashboard/client/assets/{index-DtSi-1L8.js → index-D_X4i2Yn.js} +31 -31
- package/dist/dashboard/client/index.html +2 -2
- package/dist/dashboard/routes/search.d.ts.map +1 -1
- package/dist/dashboard/routes/search.js +62 -15
- package/dist/dashboard/routes/search.js.map +1 -1
- package/dist/eval/collection-benchmark/history.d.ts.map +1 -1
- package/dist/eval/collection-benchmark/history.js +3 -0
- package/dist/eval/collection-benchmark/history.js.map +1 -1
- package/dist/eval/collection-benchmark/reporter.d.ts.map +1 -1
- package/dist/eval/collection-benchmark/reporter.js +3 -0
- package/dist/eval/collection-benchmark/reporter.js.map +1 -1
- package/dist/eval/collection-benchmark/retrieval.d.ts.map +1 -1
- package/dist/eval/collection-benchmark/retrieval.js +25 -0
- package/dist/eval/collection-benchmark/retrieval.js.map +1 -1
- package/dist/eval/collection-benchmark/runner.d.ts.map +1 -1
- package/dist/eval/collection-benchmark/runner.js +3 -0
- package/dist/eval/collection-benchmark/runner.js.map +1 -1
- package/dist/eval/collection-benchmark/tuning.d.ts.map +1 -1
- package/dist/eval/collection-benchmark/tuning.js +15 -0
- package/dist/eval/collection-benchmark/tuning.js.map +1 -1
- package/dist/eval/collection-benchmark/types.d.ts +6 -0
- package/dist/eval/collection-benchmark/types.d.ts.map +1 -1
- package/dist/ingest/batch-ingest.d.ts +0 -4
- package/dist/ingest/batch-ingest.d.ts.map +1 -1
- package/dist/ingest/batch-ingest.js +0 -8
- package/dist/ingest/batch-ingest.js.map +1 -1
- package/dist/ingest/index.d.ts +1 -1
- package/dist/ingest/index.d.ts.map +1 -1
- package/dist/ingest/index.js +1 -1
- package/dist/ingest/index.js.map +1 -1
- package/dist/retrieval/cluster-expander.d.ts +2 -4
- package/dist/retrieval/cluster-expander.d.ts.map +1 -1
- package/dist/retrieval/cluster-expander.js +5 -5
- package/dist/retrieval/cluster-expander.js.map +1 -1
- package/dist/retrieval/mmr.d.ts +26 -0
- package/dist/retrieval/mmr.d.ts.map +1 -0
- package/dist/retrieval/mmr.js +79 -0
- package/dist/retrieval/mmr.js.map +1 -0
- package/dist/retrieval/search-assembler.d.ts.map +1 -1
- package/dist/retrieval/search-assembler.js +5 -2
- package/dist/retrieval/search-assembler.js.map +1 -1
- package/dist/storage/archive.d.ts +59 -6
- package/dist/storage/archive.d.ts.map +1 -1
- package/dist/storage/archive.js +259 -74
- package/dist/storage/archive.js.map +1 -1
- package/package.json +5 -5
- package/dist/dashboard/client/assets/index-DdImwNQ0.css +0 -1
package/README.md
CHANGED
|
@@ -38,29 +38,29 @@ Developers using Claude Code who want their AI assistant to **remember across se
|
|
|
38
38
|
|
|
39
39
|
## Why Causantic?
|
|
40
40
|
|
|
41
|
-
Most AI memory systems use vector embeddings for similarity search. Causantic does too — but adds a **causal graph** that tracks
|
|
42
|
-
|
|
43
|
-
|
|
|
44
|
-
|
|
45
|
-
| **Finds similar content**
|
|
46
|
-
| **Finds lexically relevant content** | No
|
|
47
|
-
| **Finds related context**
|
|
48
|
-
| **Finds topically related context**
|
|
49
|
-
| **Temporal awareness**
|
|
50
|
-
| **Context augmentation**
|
|
51
|
-
| **Handles project switches**
|
|
52
|
-
| **Bidirectional queries**
|
|
41
|
+
Most AI memory systems use vector embeddings for similarity search. Causantic does too — but adds a **causal graph** that tracks _relationships_ between memory chunks, **BM25 keyword search** for exact matches, and **HDBSCAN clustering** for topic expansion. The result:
|
|
42
|
+
|
|
43
|
+
| | Vector Search Only | Causantic |
|
|
44
|
+
| ------------------------------------ | ------------------ | ------------------------------------------------- |
|
|
45
|
+
| **Finds similar content** | Yes | Yes |
|
|
46
|
+
| **Finds lexically relevant content** | No | Yes (BM25 keyword search) |
|
|
47
|
+
| **Finds related context** | No | Yes (causal edges) |
|
|
48
|
+
| **Finds topically related context** | No | Yes (cluster expansion) |
|
|
49
|
+
| **Temporal awareness** | Wall-clock decay | Episodic chain walking |
|
|
50
|
+
| **Context augmentation** | 1× | **2.46×** (chain walking adds episodic narrative) |
|
|
51
|
+
| **Handles project switches** | Breaks continuity | Preserves causality |
|
|
52
|
+
| **Bidirectional queries** | Forward only | Backward + Forward |
|
|
53
53
|
|
|
54
54
|
### How It Compares
|
|
55
55
|
|
|
56
|
-
| System
|
|
57
|
-
|
|
58
|
-
| **Causantic** |
|
|
59
|
-
| Mem0
|
|
60
|
-
| Cognee
|
|
61
|
-
| Letta/MemGPT
|
|
62
|
-
| Zep
|
|
63
|
-
| GraphRAG
|
|
56
|
+
| System | Local-First | Temporal Decay | Graph Structure | Self-Benchmarking |
|
|
57
|
+
| ------------- | :-----------: | :---------------: | :----------------: | :---------------: |
|
|
58
|
+
| **Causantic** | **Yes** | **Chain walking** | **Causal graph** | **Yes** |
|
|
59
|
+
| Mem0 | No (Cloud) | None | Paid add-on | No |
|
|
60
|
+
| Cognee | Self-hostable | None | Triplet extraction | No |
|
|
61
|
+
| Letta/MemGPT | Self-hostable | Summarization | None | No |
|
|
62
|
+
| Zep | Enterprise | Bi-temporal | Temporal KG | No |
|
|
63
|
+
| GraphRAG | Self-hostable | Static corpus | Hierarchical | No |
|
|
64
64
|
|
|
65
65
|
See [Landscape Analysis](docs/research/approach/landscape-analysis.md) for detailed per-system analysis.
|
|
66
66
|
|
|
@@ -70,7 +70,7 @@ See [Landscape Analysis](docs/research/approach/landscape-analysis.md) for detai
|
|
|
70
70
|
All data stays on your machine. Optional per-chunk encryption (ChaCha20-Poly1305) with keys stored in your system keychain. No cloud dependency.
|
|
71
71
|
|
|
72
72
|
**2. Hybrid BM25 + Vector Search**
|
|
73
|
-
Vector search finds chunks that
|
|
73
|
+
Vector search finds chunks that _look similar_. BM25 keyword search finds chunks with _exact lexical matches_ — function names, error codes, CLI flags. Both run in parallel and fuse via Reciprocal Rank Fusion (RRF).
|
|
74
74
|
|
|
75
75
|
**3. Sequential Causal Graph with Episodic Chain Walking**
|
|
76
76
|
Chunks are connected in a sequential linked list — intra-turn chunks chained sequentially, inter-turn edges linking last→first, cross-session edges bridging sessions. The `recall` tool walks this graph backward to reconstruct episodic narratives; `predict` walks forward. Chains are scored by cosine similarity per token, producing ordered narratives where each chunk adds new information.
|
|
@@ -158,17 +158,17 @@ Measure how well your memory system is working with built-in benchmarks. Health,
|
|
|
158
158
|
|
|
159
159
|
The MCP server exposes nine tools:
|
|
160
160
|
|
|
161
|
-
| Tool
|
|
162
|
-
|
|
163
|
-
| `search`
|
|
164
|
-
| `recall`
|
|
165
|
-
| `predict`
|
|
166
|
-
| `list-projects` | Discover available projects with chunk counts and date ranges.
|
|
167
|
-
| `list-sessions` | Browse sessions for a project with time filtering.
|
|
168
|
-
| `reconstruct`
|
|
169
|
-
| `hook-status`
|
|
170
|
-
| `stats`
|
|
171
|
-
| `forget`
|
|
161
|
+
| Tool | Description |
|
|
162
|
+
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
163
|
+
| `search` | Semantic discovery — "what do I know about X?" Vector + keyword + RRF + cluster expansion. |
|
|
164
|
+
| `recall` | Episodic memory — "how did we solve X?" Seeds → backward chain walk → ordered narrative. Includes chain walk diagnostics on fallback. |
|
|
165
|
+
| `predict` | Forward episodic — "what's likely next?" Seeds → forward chain walk → ordered narrative. Includes chain walk diagnostics on fallback. |
|
|
166
|
+
| `list-projects` | Discover available projects with chunk counts and date ranges. |
|
|
167
|
+
| `list-sessions` | Browse sessions for a project with time filtering. |
|
|
168
|
+
| `reconstruct` | Rebuild session context chronologically — "what did I work on yesterday?" |
|
|
169
|
+
| `hook-status` | Check when hooks last ran and whether they succeeded. |
|
|
170
|
+
| `stats` | Memory statistics — version, chunk/edge/cluster counts, per-project breakdowns. |
|
|
171
|
+
| `forget` | Delete chunks by project, time range, session, or semantic query. Defaults to dry-run preview. |
|
|
172
172
|
|
|
173
173
|
### Claude Code Integration
|
|
174
174
|
|
|
@@ -191,22 +191,22 @@ Or run `npx causantic init` to configure automatically.
|
|
|
191
191
|
|
|
192
192
|
Causantic installs 14 Claude Code slash commands (via `npx causantic init`) for natural-language interaction with memory:
|
|
193
193
|
|
|
194
|
-
| Skill
|
|
195
|
-
|
|
196
|
-
| `/causantic-recall [query]`
|
|
197
|
-
| `/causantic-search [query]`
|
|
198
|
-
| `/causantic-predict <context>`
|
|
199
|
-
| `/causantic-explain [question]` | Answer "why" questions using memory + codebase (why does X work this way?)
|
|
200
|
-
| `/causantic-debug [error]`
|
|
201
|
-
| `/causantic-resume`
|
|
202
|
-
| `/causantic-reconstruct [time]` | Replay a past session chronologically by time range
|
|
203
|
-
| `/causantic-summary [time]`
|
|
204
|
-
| `/causantic-list-projects`
|
|
205
|
-
| `/causantic-status`
|
|
206
|
-
| `/causantic-crossref [pattern]` | Search across all projects for reusable patterns
|
|
207
|
-
| `/causantic-retro [scope]`
|
|
208
|
-
| `/causantic-cleanup`
|
|
209
|
-
| `/causantic-forget [query]`
|
|
194
|
+
| Skill | Description |
|
|
195
|
+
| ------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
|
|
196
|
+
| `/causantic-recall [query]` | Reconstruct how something happened — walks backward through causal chains (how did we solve X?) |
|
|
197
|
+
| `/causantic-search [query]` | Broad discovery — find everything memory knows about a topic (what do I know about X?) |
|
|
198
|
+
| `/causantic-predict <context>` | Surface what came after similar past situations — walks forward through causal chains (what's likely relevant next?) |
|
|
199
|
+
| `/causantic-explain [question]` | Answer "why" questions using memory + codebase (why does X work this way?) |
|
|
200
|
+
| `/causantic-debug [error]` | Search for prior encounters with an error (auto-extracts from conversation if no argument) |
|
|
201
|
+
| `/causantic-resume` | Resume interrupted work — start-of-session briefing |
|
|
202
|
+
| `/causantic-reconstruct [time]` | Replay a past session chronologically by time range |
|
|
203
|
+
| `/causantic-summary [time]` | Factual recap of what was done across recent sessions |
|
|
204
|
+
| `/causantic-list-projects` | Discover available projects in memory |
|
|
205
|
+
| `/causantic-status` | Check system health and memory statistics |
|
|
206
|
+
| `/causantic-crossref [pattern]` | Search across all projects for reusable patterns |
|
|
207
|
+
| `/causantic-retro [scope]` | Surface recurring patterns, problems, and decisions across sessions |
|
|
208
|
+
| `/causantic-cleanup` | Memory-informed codebase review and cleanup plan |
|
|
209
|
+
| `/causantic-forget [query]` | Delete memory by topic, time range, or session (always previews first) |
|
|
210
210
|
|
|
211
211
|
Skills are installed to `~/.claude/skills/causantic-*/` and work as slash commands in Claude Code. They orchestrate the MCP tools above with structured prompts tailored to each use case.
|
|
212
212
|
|
|
@@ -249,7 +249,7 @@ Create `causantic.config.json` in your project root:
|
|
|
249
249
|
{
|
|
250
250
|
"$schema": "https://raw.githubusercontent.com/Entrolution/causantic/main/config.schema.json",
|
|
251
251
|
"clustering": {
|
|
252
|
-
"threshold": 0.
|
|
252
|
+
"threshold": 0.1,
|
|
253
253
|
"minClusterSize": 4
|
|
254
254
|
},
|
|
255
255
|
"vectors": {
|
|
@@ -283,13 +283,13 @@ See [Security Guide](docs/guides/security.md).
|
|
|
283
283
|
|
|
284
284
|
Built on rigorous experimentation across 75 sessions and 297+ queries:
|
|
285
285
|
|
|
286
|
-
| Experiment
|
|
287
|
-
|
|
288
|
-
| Chain Walking (v0.3)
|
|
289
|
-
| Topic Detection
|
|
290
|
-
| Clustering
|
|
291
|
-
| Thinking Block Removal | +0.063 AUC
|
|
292
|
-
| Collection Benchmark
|
|
286
|
+
| Experiment | Result | Notes |
|
|
287
|
+
| ---------------------- | ----------------- | ----------------------------------------- |
|
|
288
|
+
| Chain Walking (v0.3) | **2.46×** context | vs vector-only, 297 queries, 15 projects |
|
|
289
|
+
| Topic Detection | 0.998 AUC | near-perfect accuracy |
|
|
290
|
+
| Clustering | F1=0.940 | 100% precision |
|
|
291
|
+
| Thinking Block Removal | +0.063 AUC | embedding quality improvement |
|
|
292
|
+
| Collection Benchmark | **64/100** | health, retrieval, chain quality, latency |
|
|
293
293
|
|
|
294
294
|
> **Note**: An earlier version (v0.2) reported 4.65× augmentation using sum-product graph traversal with m×n all-pairs edges (492 queries, 25 projects). That architecture was replaced in v0.3 after collection benchmarks showed graph traversal contributing only ~2% of results. See [lessons learned](docs/research/experiments/lessons-learned.md) for the full story.
|
|
295
295
|
|
package/config.schema.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"type": "number",
|
|
14
14
|
"minimum": 0.01,
|
|
15
15
|
"maximum": 0.5,
|
|
16
|
-
"default": 0.
|
|
16
|
+
"default": 0.1,
|
|
17
17
|
"description": "Angular distance threshold for cluster assignment"
|
|
18
18
|
},
|
|
19
19
|
"minClusterSize": {
|
|
@@ -173,6 +173,20 @@
|
|
|
173
173
|
}
|
|
174
174
|
},
|
|
175
175
|
"additionalProperties": false
|
|
176
|
+
},
|
|
177
|
+
"retrieval": {
|
|
178
|
+
"type": "object",
|
|
179
|
+
"description": "Search retrieval pipeline settings",
|
|
180
|
+
"properties": {
|
|
181
|
+
"mmrLambda": {
|
|
182
|
+
"type": "number",
|
|
183
|
+
"minimum": 0,
|
|
184
|
+
"maximum": 1,
|
|
185
|
+
"default": 0.7,
|
|
186
|
+
"description": "MMR lambda: 0 = pure diversity, 1 = pure relevance"
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
"additionalProperties": false
|
|
176
190
|
}
|
|
177
191
|
},
|
|
178
192
|
"additionalProperties": false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/archive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/archive.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAa3C,eAAO,MAAM,aAAa,EAAE,OAkE3B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,OAwD3B,CAAC"}
|
|
@@ -1,13 +1,31 @@
|
|
|
1
1
|
import { promptPassword, isEncryptedArchive } from '../utils.js';
|
|
2
|
+
function formatSize(bytes) {
|
|
3
|
+
if (bytes < 1024)
|
|
4
|
+
return `${bytes} B`;
|
|
5
|
+
if (bytes < 1024 * 1024)
|
|
6
|
+
return `${(bytes / 1024).toFixed(1)} KB`;
|
|
7
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
8
|
+
}
|
|
9
|
+
function formatCount(n) {
|
|
10
|
+
return n.toLocaleString();
|
|
11
|
+
}
|
|
2
12
|
export const exportCommand = {
|
|
3
13
|
name: 'export',
|
|
4
14
|
description: 'Export memory data',
|
|
5
|
-
usage: 'causantic export --output <path> [--no-encrypt]',
|
|
15
|
+
usage: 'causantic export --output <path> [--no-encrypt] [--projects <slugs>] [--redact-paths] [--redact-code] [--no-vectors]',
|
|
6
16
|
handler: async (args) => {
|
|
7
17
|
const { exportArchive } = await import('../../storage/archive.js');
|
|
8
18
|
const outputIndex = args.indexOf('--output');
|
|
9
19
|
const outputPath = outputIndex >= 0 ? args[outputIndex + 1] : 'causantic-backup.causantic';
|
|
10
20
|
const noEncrypt = args.includes('--no-encrypt');
|
|
21
|
+
const noVectors = args.includes('--no-vectors');
|
|
22
|
+
const redactPaths = args.includes('--redact-paths');
|
|
23
|
+
const redactCode = args.includes('--redact-code');
|
|
24
|
+
// Parse --projects flag
|
|
25
|
+
const projectsIndex = args.indexOf('--projects');
|
|
26
|
+
const projects = projectsIndex >= 0 && args[projectsIndex + 1]
|
|
27
|
+
? args[projectsIndex + 1].split(',').map((s) => s.trim())
|
|
28
|
+
: undefined;
|
|
11
29
|
let password;
|
|
12
30
|
if (!noEncrypt) {
|
|
13
31
|
password = process.env.CAUSANTIC_EXPORT_PASSWORD;
|
|
@@ -30,25 +48,41 @@ export const exportCommand = {
|
|
|
30
48
|
process.exit(2);
|
|
31
49
|
}
|
|
32
50
|
}
|
|
33
|
-
await exportArchive({
|
|
51
|
+
const result = await exportArchive({
|
|
34
52
|
outputPath,
|
|
35
53
|
password,
|
|
54
|
+
projects,
|
|
55
|
+
redactPaths,
|
|
56
|
+
redactCode,
|
|
57
|
+
noVectors,
|
|
36
58
|
});
|
|
37
|
-
|
|
59
|
+
const parts = [
|
|
60
|
+
`${formatCount(result.chunkCount)} chunks`,
|
|
61
|
+
`${formatCount(result.edgeCount)} edges`,
|
|
62
|
+
`${formatCount(result.clusterCount)} clusters`,
|
|
63
|
+
`${formatCount(result.vectorCount)} vectors`,
|
|
64
|
+
];
|
|
65
|
+
const suffix = [result.compressed ? 'compressed' : null, result.encrypted ? 'encrypted' : null]
|
|
66
|
+
.filter(Boolean)
|
|
67
|
+
.join(', ');
|
|
68
|
+
console.log(`Exported: ${parts.join(', ')} (${formatSize(result.fileSize)} ${suffix})`);
|
|
69
|
+
console.log(`File: ${outputPath}`);
|
|
38
70
|
},
|
|
39
71
|
};
|
|
40
72
|
export const importCommand = {
|
|
41
73
|
name: 'import',
|
|
42
74
|
description: 'Import memory data',
|
|
43
|
-
usage: 'causantic import <file> [--merge]',
|
|
75
|
+
usage: 'causantic import <file> [--merge] [--dry-run]',
|
|
44
76
|
handler: async (args) => {
|
|
45
77
|
if (args.length === 0) {
|
|
46
78
|
console.error('Error: File path required');
|
|
47
79
|
process.exit(2);
|
|
48
80
|
}
|
|
49
81
|
const { importArchive } = await import('../../storage/archive.js');
|
|
50
|
-
|
|
82
|
+
// Find file path (first arg that isn't a flag)
|
|
83
|
+
const inputPath = args.find((a) => !a.startsWith('--'));
|
|
51
84
|
const merge = args.includes('--merge');
|
|
85
|
+
const dryRun = args.includes('--dry-run');
|
|
52
86
|
const encrypted = await isEncryptedArchive(inputPath);
|
|
53
87
|
let password;
|
|
54
88
|
if (encrypted) {
|
|
@@ -65,12 +99,24 @@ export const importCommand = {
|
|
|
65
99
|
process.exit(2);
|
|
66
100
|
}
|
|
67
101
|
}
|
|
68
|
-
await importArchive({
|
|
102
|
+
const result = await importArchive({
|
|
69
103
|
inputPath,
|
|
70
104
|
password,
|
|
71
105
|
merge,
|
|
106
|
+
dryRun,
|
|
72
107
|
});
|
|
73
|
-
|
|
108
|
+
const parts = [
|
|
109
|
+
`${formatCount(result.chunkCount)} chunks`,
|
|
110
|
+
`${formatCount(result.edgeCount)} edges`,
|
|
111
|
+
`${formatCount(result.clusterCount)} clusters`,
|
|
112
|
+
`${formatCount(result.vectorCount)} vectors`,
|
|
113
|
+
];
|
|
114
|
+
if (result.dryRun) {
|
|
115
|
+
console.log(`Dry run — would import: ${parts.join(', ')}`);
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
console.log(`Imported: ${parts.join(', ')}`);
|
|
119
|
+
}
|
|
74
120
|
},
|
|
75
121
|
};
|
|
76
122
|
//# sourceMappingURL=archive.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../src/cli/commands/archive.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEjE,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,oBAAoB;IACjC,KAAK,
|
|
1
|
+
{"version":3,"file":"archive.js","sourceRoot":"","sources":["../../../src/cli/commands/archive.ts"],"names":[],"mappings":"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"}
|
package/dist/config/loader.d.ts
CHANGED
|
@@ -50,6 +50,10 @@ export interface ExternalConfig {
|
|
|
50
50
|
/** Hour of day (0-23) to run reclustering. Default: 2. */
|
|
51
51
|
clusterHour?: number;
|
|
52
52
|
};
|
|
53
|
+
retrieval?: {
|
|
54
|
+
/** MMR lambda: 0 = pure diversity, 1 = pure relevance. Default: 0.7 */
|
|
55
|
+
mmrLambda?: number;
|
|
56
|
+
};
|
|
53
57
|
}
|
|
54
58
|
/** Default external config values */
|
|
55
59
|
declare const EXTERNAL_DEFAULTS: Required<ExternalConfig>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKpF,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE;QACX,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;QAClC,SAAS,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAC;QAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,yFAAyF;QACzF,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,wGAAwG;QACxG,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,oGAAoG;QACpG,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,0DAA0D;QAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAED,qCAAqC;AACrC,QAAA,MAAM,iBAAiB,EAAE,QAAQ,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAA+B,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAKpF,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE;QACX,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;IACF,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;QAClC,SAAS,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAC;QAC1C,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,yFAAyF;QACzF,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,wGAAwG;QACxG,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,oGAAoG;QACpG,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,0DAA0D;QAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,uEAAuE;QACvE,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,qCAAqC;AACrC,QAAA,MAAM,iBAAiB,EAAE,QAAQ,CAAC,cAAc,CAuC/C,CAAC;AAsKF;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAiDvE;AAED,MAAM,WAAW,iBAAiB;IAChC,uCAAuC;IACvC,YAAY,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IACvC,yCAAyC;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,oCAAoC;IACpC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,QAAQ,CAAC,cAAc,CAAC,CAoCpF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB,CAQA;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,YAAY,CA6BhF;AAGD,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
package/dist/config/loader.js
CHANGED
|
@@ -50,6 +50,9 @@ const EXTERNAL_DEFAULTS = {
|
|
|
50
50
|
maintenance: {
|
|
51
51
|
clusterHour: 2,
|
|
52
52
|
},
|
|
53
|
+
retrieval: {
|
|
54
|
+
mmrLambda: 0.7,
|
|
55
|
+
},
|
|
53
56
|
};
|
|
54
57
|
/**
|
|
55
58
|
* Load config from a JSON file.
|
|
@@ -155,6 +158,11 @@ function loadEnvConfig() {
|
|
|
155
158
|
config.embedding = config.embedding ?? {};
|
|
156
159
|
config.embedding.device = process.env.CAUSANTIC_EMBEDDING_DEVICE;
|
|
157
160
|
}
|
|
161
|
+
// Retrieval
|
|
162
|
+
if (process.env.CAUSANTIC_RETRIEVAL_MMR_LAMBDA) {
|
|
163
|
+
config.retrieval = config.retrieval ?? {};
|
|
164
|
+
config.retrieval.mmrLambda = parseFloat(process.env.CAUSANTIC_RETRIEVAL_MMR_LAMBDA);
|
|
165
|
+
}
|
|
158
166
|
return config;
|
|
159
167
|
}
|
|
160
168
|
/**
|
|
@@ -224,6 +232,12 @@ export function validateExternalConfig(config) {
|
|
|
224
232
|
errors.push('vectors.maxCount must be >= 0 (0 = unlimited)');
|
|
225
233
|
}
|
|
226
234
|
}
|
|
235
|
+
// Retrieval validation
|
|
236
|
+
if (config.retrieval?.mmrLambda !== undefined) {
|
|
237
|
+
if (config.retrieval.mmrLambda < 0 || config.retrieval.mmrLambda > 1) {
|
|
238
|
+
errors.push('retrieval.mmrLambda must be between 0 and 1 (inclusive)');
|
|
239
|
+
}
|
|
240
|
+
}
|
|
227
241
|
return errors;
|
|
228
242
|
}
|
|
229
243
|
/**
|
|
@@ -301,6 +315,10 @@ export function toRuntimeConfig(external) {
|
|
|
301
315
|
// LLM
|
|
302
316
|
clusterRefreshModel: external.llm.clusterRefreshModel ?? DEFAULT_CONFIG.clusterRefreshModel,
|
|
303
317
|
refreshRateLimitPerMin: external.llm.refreshRateLimitPerMin ?? DEFAULT_CONFIG.refreshRateLimitPerMin,
|
|
318
|
+
// Retrieval
|
|
319
|
+
mmrReranking: {
|
|
320
|
+
lambda: external.retrieval?.mmrLambda ?? DEFAULT_CONFIG.mmrReranking.lambda,
|
|
321
|
+
},
|
|
304
322
|
};
|
|
305
323
|
}
|
|
306
324
|
// Re-export for convenience
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAqB,MAAM,oBAAoB,CAAC;AACpF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,GAAG,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,8 +36,11 @@ export interface MemoryConfig {
|
|
|
36
36
|
maxClusters: number;
|
|
37
37
|
/** Max siblings per cluster */
|
|
38
38
|
maxSiblings: number;
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
};
|
|
40
|
+
/** MMR (Maximal Marginal Relevance) reranking configuration */
|
|
41
|
+
mmrReranking: {
|
|
42
|
+
/** 0 = pure diversity, 1 = pure relevance. Default: 0.7 */
|
|
43
|
+
lambda: number;
|
|
41
44
|
};
|
|
42
45
|
/** Path to SQLite database file */
|
|
43
46
|
dbPath: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-config.d.ts","sourceRoot":"","sources":["../../src/config/memory-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAE3B,kEAAkE;IAClE,gBAAgB,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IAGvB,kCAAkC;IAClC,aAAa,EAAE,MAAM,CAAC;IAGtB,gDAAgD;IAChD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAG7B,mDAAmD;IACnD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,sBAAsB,EAAE,MAAM,CAAC;IAG/B,oDAAoD;IACpD,YAAY,EAAE;QACZ,iCAAiC;QACjC,IAAI,EAAE,MAAM,CAAC;QACb,uCAAuC;QACvC,YAAY,EAAE,MAAM,CAAC;QACrB,wCAAwC;QACxC,aAAa,EAAE,MAAM,CAAC;QACtB,wCAAwC;QACxC,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IAEF,2DAA2D;IAC3D,gBAAgB,EAAE;QAChB,kCAAkC;QAClC,WAAW,EAAE,MAAM,CAAC;QACpB,+BAA+B;QAC/B,WAAW,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"memory-config.d.ts","sourceRoot":"","sources":["../../src/config/memory-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAE3B,kEAAkE;IAClE,gBAAgB,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,cAAc,EAAE,MAAM,CAAC;IAGvB,kCAAkC;IAClC,aAAa,EAAE,MAAM,CAAC;IAGtB,gDAAgD;IAChD,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,oBAAoB,EAAE,MAAM,CAAC;IAG7B,mDAAmD;IACnD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,sBAAsB,EAAE,MAAM,CAAC;IAG/B,oDAAoD;IACpD,YAAY,EAAE;QACZ,iCAAiC;QACjC,IAAI,EAAE,MAAM,CAAC;QACb,uCAAuC;QACvC,YAAY,EAAE,MAAM,CAAC;QACrB,wCAAwC;QACxC,aAAa,EAAE,MAAM,CAAC;QACtB,wCAAwC;QACxC,kBAAkB,EAAE,MAAM,CAAC;KAC5B,CAAC;IAEF,2DAA2D;IAC3D,gBAAgB,EAAE;QAChB,kCAAkC;QAClC,WAAW,EAAE,MAAM,CAAC;QACpB,+BAA+B;QAC/B,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,+DAA+D;IAC/D,YAAY,EAAE;QACZ,2DAA2D;QAC3D,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAGF,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,YAkC5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,GAAE,OAAO,CAAC,YAAY,CAAM,GAAG,YAAY,CAE7E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMhD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAuB7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-config.js","sourceRoot":"","sources":["../../src/config/memory-config.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"memory-config.js","sourceRoot":"","sources":["../../src/config/memory-config.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8DH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,aAAa;IACb,gBAAgB,EAAE,GAAG;IACrB,cAAc,EAAE,CAAC;IAEjB,gBAAgB;IAChB,aAAa,EAAE,EAAE,EAAE,kCAAkC;IAErD,cAAc;IACd,oBAAoB,EAAE,GAAG;IACzB,oBAAoB,EAAE,KAAK;IAE3B,cAAc;IACd,mBAAmB,EAAE,yBAAyB;IAC9C,sBAAsB,EAAE,EAAE,EAAE,qCAAqC;IAEjE,gBAAgB;IAChB,YAAY,EAAE;QACZ,IAAI,EAAE,EAAE;QACR,YAAY,EAAE,GAAG;QACjB,aAAa,EAAE,GAAG;QAClB,kBAAkB,EAAE,EAAE;KACvB;IACD,gBAAgB,EAAE;QAChB,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC;KACf;IACD,YAAY,EAAE;QACZ,MAAM,EAAE,GAAG;KACZ;IAED,sCAAsC;IACtC,MAAM,EAAE,wBAAwB;IAChC,eAAe,EAAE,sBAAsB;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,YAAmC,EAAE;IAC7D,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,SAAS,EAAE,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,MAAM,CAAC,gBAAgB,IAAI,CAAC,IAAI,MAAM,CAAC,gBAAgB,IAAI,CAAC,EAAE,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,MAAM,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,MAAM,CAAC,oBAAoB,GAAG,GAAG,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,MAAM,CAAC,oBAAoB,GAAG,GAAG,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC;IACD,IAAI,MAAM,CAAC,sBAAsB,GAAG,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}@layer theme{:root,:host{--font-sans:"Inter",ui-sans-serif,system-ui,-apple-system,sans-serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-black:#000;--spacing:.25rem;--container-xl:36rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height: 1.2 ;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wider:.05em;--leading-relaxed:1.625;--radius-md:.5rem;--radius-lg:.75rem;--animate-spin:spin 1s linear infinite;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-background:var(--bg);--color-foreground:var(--fg);--color-card:var(--card-bg);--color-card-foreground:var(--card-fg);--color-muted:var(--muted-bg);--color-muted-foreground:var(--muted-fg);--color-border:var(--border-color);--color-accent:var(--accent-color);--color-accent-foreground:var(--accent-fg);--color-ring:var(--ring-color)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.top-1\/2{top:50%}.left-0{left:calc(var(--spacing)*0)}.left-3{left:calc(var(--spacing)*3)}.z-40{z-index:40}.z-50{z-index:50}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mt-1{margin-top:calc(var(--spacing)*1)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-4{-webkit-line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-6{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-16{height:calc(var(--spacing)*16)}.h-72{height:calc(var(--spacing)*72)}.h-\[calc\(100vh-8rem\)\]{height:calc(100vh - 8rem)}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:calc(var(--spacing)*32)}.max-h-48{max-height:calc(var(--spacing)*48)}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-\[200px\]{min-height:200px}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-32{width:calc(var(--spacing)*32)}.w-60{width:calc(var(--spacing)*60)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-80{width:calc(var(--spacing)*80)}.w-full{width:100%}.max-w-\[200px\]{max-width:200px}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-full{--tw-translate-x:-100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.gap-x-6{column-gap:calc(var(--spacing)*6)}.gap-y-1{row-gap:calc(var(--spacing)*1)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-accent{border-color:var(--color-accent)}.border-border,.border-border\/80{border-color:var(--color-border)}@supports (color:color-mix(in lab,red,red)){.border-border\/80{border-color:color-mix(in oklab,var(--color-border)80%,transparent)}}.border-muted{border-color:var(--color-muted)}.border-transparent{border-color:#0000}.border-t-accent{border-top-color:var(--color-accent)}.bg-accent,.bg-accent\/5{background-color:var(--color-accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\/5{background-color:color-mix(in oklab,var(--color-accent)5%,transparent)}}.bg-accent\/10{background-color:var(--color-accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\/10{background-color:color-mix(in oklab,var(--color-accent)10%,transparent)}}.bg-accent\/20{background-color:var(--color-accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\/20{background-color:color-mix(in oklab,var(--color-accent)20%,transparent)}}.bg-background{background-color:var(--color-background)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-card,.bg-card\/50{background-color:var(--color-card)}@supports (color:color-mix(in lab,red,red)){.bg-card\/50{background-color:color-mix(in oklab,var(--color-card)50%,transparent)}}.bg-muted,.bg-muted\/30{background-color:var(--color-muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/30{background-color:color-mix(in oklab,var(--color-muted)30%,transparent)}}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0{padding-block:calc(var(--spacing)*0)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-1{padding-top:calc(var(--spacing)*1)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-3{padding-top:calc(var(--spacing)*3)}.pl-10{padding-left:calc(var(--spacing)*10)}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--color-accent)}.text-accent-foreground{color:var(--color-accent-foreground)}.text-card-foreground{color:var(--color-card-foreground)}.text-foreground{color:var(--color-foreground)}.text-muted-foreground{color:var(--color-muted-foreground)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}.last\:border-0:last-child{border-style:var(--tw-border-style);border-width:0}@media(hover:hover){.hover\:bg-muted:hover,.hover\:bg-muted\/50:hover{background-color:var(--color-muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--color-muted)50%,transparent)}}.hover\:text-foreground:hover{color:var(--color-foreground)}}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--color-ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:64rem){.lg\:static{position:static}.lg\:hidden{display:none}.lg\:translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(min-width:80rem){.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}}}:root{--bg:#0f172a;--fg:#e2e8f0;--card-bg:#1e293b;--card-fg:#e2e8f0;--muted-bg:#334155;--muted-fg:#94a3b8;--border-color:#334155;--accent-color:#10b981;--accent-fg:#fff;--ring-color:#10b981}.light{--bg:#fff;--fg:#0f172a;--card-bg:#f1f5f9;--card-fg:#0f172a;--muted-bg:#e2e8f0;--muted-fg:#64748b;--border-color:#e2e8f0;--accent-color:#059669;--accent-fg:#fff;--ring-color:#059669}body{background-color:var(--bg);color:var(--fg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif}@keyframes fadeInUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:.4s ease-out fadeInUp}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--card-bg)}::-webkit-scrollbar-thumb{background:var(--muted-bg);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--muted-fg)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
|