@devflow-tools/memory-engine 0.17.7 → 0.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +10 -2
- package/dist/consolidator.d.ts.map +1 -1
- package/dist/consolidator.js +2 -0
- package/dist/consolidator.js.map +1 -1
- package/dist/durable-memory-text.js +1 -1
- package/dist/durable-memory-text.js.map +1 -1
- package/dist/embedding-model-store.d.ts +1 -4
- package/dist/embedding-model-store.d.ts.map +1 -1
- package/dist/embedding-model-store.js +3 -74
- package/dist/embedding-model-store.js.map +1 -1
- package/dist/embedding-provider.d.ts +3 -2
- package/dist/embedding-provider.d.ts.map +1 -1
- package/dist/embedding-provider.js +151 -43
- package/dist/embedding-provider.js.map +1 -1
- package/dist/hybrid-search.d.ts +5 -1
- package/dist/hybrid-search.d.ts.map +1 -1
- package/dist/hybrid-search.js +92 -56
- package/dist/hybrid-search.js.map +1 -1
- package/dist/index.d.ts +16 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -2
- package/dist/index.js.map +1 -1
- package/dist/lease-store.d.ts.map +1 -1
- package/dist/lease-store.js +30 -0
- package/dist/lease-store.js.map +1 -1
- package/dist/memory-command-service.d.ts +73 -0
- package/dist/memory-command-service.d.ts.map +1 -0
- package/dist/memory-command-service.js +283 -0
- package/dist/memory-command-service.js.map +1 -0
- package/dist/memory-engine.d.ts +19 -15
- package/dist/memory-engine.d.ts.map +1 -1
- package/dist/memory-engine.js +207 -158
- package/dist/memory-engine.js.map +1 -1
- package/dist/memory-episode-repository.d.ts +77 -0
- package/dist/memory-episode-repository.d.ts.map +1 -0
- package/dist/memory-episode-repository.js +262 -0
- package/dist/memory-episode-repository.js.map +1 -0
- package/dist/memory-fact-provider-port.d.ts +83 -0
- package/dist/memory-fact-provider-port.d.ts.map +1 -0
- package/dist/memory-fact-provider-port.js +22 -0
- package/dist/memory-fact-provider-port.js.map +1 -0
- package/dist/memory-fact-validator.d.ts +16 -0
- package/dist/memory-fact-validator.d.ts.map +1 -0
- package/dist/memory-fact-validator.js +52 -0
- package/dist/memory-fact-validator.js.map +1 -0
- package/dist/memory-gate.d.ts +14 -17
- package/dist/memory-gate.d.ts.map +1 -1
- package/dist/memory-gate.js +377 -320
- package/dist/memory-gate.js.map +1 -1
- package/dist/memory-identity-compiler.d.ts +18 -0
- package/dist/memory-identity-compiler.d.ts.map +1 -0
- package/dist/memory-identity-compiler.js +26 -0
- package/dist/memory-identity-compiler.js.map +1 -0
- package/dist/memory-index-projector.d.ts +22 -0
- package/dist/memory-index-projector.d.ts.map +1 -0
- package/dist/memory-index-projector.js +11 -0
- package/dist/memory-index-projector.js.map +1 -0
- package/dist/memory-lifecycle-reducer.d.ts +21 -0
- package/dist/memory-lifecycle-reducer.d.ts.map +1 -0
- package/dist/memory-lifecycle-reducer.js +34 -0
- package/dist/memory-lifecycle-reducer.js.map +1 -0
- package/dist/memory-maintenance.d.ts +1 -4
- package/dist/memory-maintenance.d.ts.map +1 -1
- package/dist/memory-maintenance.js +3 -20
- package/dist/memory-maintenance.js.map +1 -1
- package/dist/memory-query-service.d.ts +24 -0
- package/dist/memory-query-service.d.ts.map +1 -0
- package/dist/memory-query-service.js +180 -0
- package/dist/memory-query-service.js.map +1 -0
- package/dist/memory-relevance.d.ts +16 -1
- package/dist/memory-relevance.d.ts.map +1 -1
- package/dist/memory-relevance.js +83 -139
- package/dist/memory-relevance.js.map +1 -1
- package/dist/memory-store.d.ts +52 -35
- package/dist/memory-store.d.ts.map +1 -1
- package/dist/memory-store.js +406 -690
- package/dist/memory-store.js.map +1 -1
- package/dist/semantic-memory-compiler.d.ts +0 -2
- package/dist/semantic-memory-compiler.d.ts.map +1 -1
- package/dist/semantic-memory-compiler.js +4 -4
- package/dist/semantic-memory-compiler.js.map +1 -1
- package/dist/session-summarizer.d.ts +3 -0
- package/dist/session-summarizer.d.ts.map +1 -1
- package/dist/session-summarizer.js.map +1 -1
- package/dist/signal-analyzer.d.ts +2 -2
- package/dist/signal-analyzer.d.ts.map +1 -1
- package/dist/signal-analyzer.js +10 -16
- package/dist/signal-analyzer.js.map +1 -1
- package/package.json +14 -5
- package/dist/lease-store.test.d.ts +0 -2
- package/dist/lease-store.test.d.ts.map +0 -1
- package/dist/lease-store.test.js +0 -182
- package/dist/lease-store.test.js.map +0 -1
- package/dist/migrations/v10-to-v11.d.ts +0 -3
- package/dist/migrations/v10-to-v11.d.ts.map +0 -1
- package/dist/migrations/v10-to-v11.js +0 -21
- package/dist/migrations/v10-to-v11.js.map +0 -1
- package/dist/migrations/v11-to-v12.d.ts +0 -66
- package/dist/migrations/v11-to-v12.d.ts.map +0 -1
- package/dist/migrations/v11-to-v12.js +0 -577
- package/dist/migrations/v11-to-v12.js.map +0 -1
- package/dist/migrations/v12-to-v13.d.ts +0 -3
- package/dist/migrations/v12-to-v13.d.ts.map +0 -1
- package/dist/migrations/v12-to-v13.js +0 -50
- package/dist/migrations/v12-to-v13.js.map +0 -1
- package/dist/migrations/v2-to-v3.d.ts +0 -3
- package/dist/migrations/v2-to-v3.d.ts.map +0 -1
- package/dist/migrations/v2-to-v3.js +0 -122
- package/dist/migrations/v2-to-v3.js.map +0 -1
- package/dist/migrations/v2-to-v3.test.d.ts +0 -2
- package/dist/migrations/v2-to-v3.test.d.ts.map +0 -1
- package/dist/migrations/v2-to-v3.test.js +0 -88
- package/dist/migrations/v2-to-v3.test.js.map +0 -1
- package/dist/migrations/v3-to-v4.d.ts +0 -3
- package/dist/migrations/v3-to-v4.d.ts.map +0 -1
- package/dist/migrations/v3-to-v4.js +0 -97
- package/dist/migrations/v3-to-v4.js.map +0 -1
- package/dist/migrations/v4-to-v5.d.ts +0 -3
- package/dist/migrations/v4-to-v5.d.ts.map +0 -1
- package/dist/migrations/v4-to-v5.js +0 -34
- package/dist/migrations/v4-to-v5.js.map +0 -1
- package/dist/migrations/v4-to-v5.test.d.ts +0 -2
- package/dist/migrations/v4-to-v5.test.d.ts.map +0 -1
- package/dist/migrations/v4-to-v5.test.js +0 -32
- package/dist/migrations/v4-to-v5.test.js.map +0 -1
- package/dist/migrations/v6-to-v7.d.ts +0 -3
- package/dist/migrations/v6-to-v7.d.ts.map +0 -1
- package/dist/migrations/v6-to-v7.js +0 -18
- package/dist/migrations/v6-to-v7.js.map +0 -1
- package/dist/migrations/v6-to-v7.test.d.ts +0 -2
- package/dist/migrations/v6-to-v7.test.d.ts.map +0 -1
- package/dist/migrations/v6-to-v7.test.js +0 -33
- package/dist/migrations/v6-to-v7.test.js.map +0 -1
- package/dist/migrations/v7-to-v8.d.ts +0 -3
- package/dist/migrations/v7-to-v8.d.ts.map +0 -1
- package/dist/migrations/v7-to-v8.js +0 -20
- package/dist/migrations/v7-to-v8.js.map +0 -1
- package/dist/migrations/v8-to-v9.d.ts +0 -3
- package/dist/migrations/v8-to-v9.d.ts.map +0 -1
- package/dist/migrations/v8-to-v9.js +0 -18
- package/dist/migrations/v8-to-v9.js.map +0 -1
- package/dist/migrations/v9-to-v10.d.ts +0 -3
- package/dist/migrations/v9-to-v10.d.ts.map +0 -1
- package/dist/migrations/v9-to-v10.js +0 -45
- package/dist/migrations/v9-to-v10.js.map +0 -1
- package/dist/migrations/v9-to-v10.test.d.ts +0 -2
- package/dist/migrations/v9-to-v10.test.d.ts.map +0 -1
- package/dist/migrations/v9-to-v10.test.js +0 -40
- package/dist/migrations/v9-to-v10.test.js.map +0 -1
- package/dist/preference-conflicts.test.d.ts +0 -2
- package/dist/preference-conflicts.test.d.ts.map +0 -1
- package/dist/preference-conflicts.test.js +0 -80
- package/dist/preference-conflicts.test.js.map +0 -1
- package/dist/semantic-memory.test.d.ts +0 -2
- package/dist/semantic-memory.test.d.ts.map +0 -1
- package/dist/semantic-memory.test.js +0 -61
- package/dist/semantic-memory.test.js.map +0 -1
|
@@ -1,577 +0,0 @@
|
|
|
1
|
-
import { createHash, randomUUID } from 'node:crypto';
|
|
2
|
-
import { enrichExplicitMemory } from '../explicit-memory-enricher.js';
|
|
3
|
-
import { isExecutionNarration, sanitizeDurableMemoryNarrative, } from '../durable-memory-text.js';
|
|
4
|
-
export function applyV11ToV12Migration(db, projectRoot) {
|
|
5
|
-
ensureRepairAuditTable(db);
|
|
6
|
-
const applied = db.prepare('SELECT 1 FROM schema_versions WHERE version = 12').get();
|
|
7
|
-
if (applied)
|
|
8
|
-
return null;
|
|
9
|
-
const report = repairHistoricalMemoryData(db, {
|
|
10
|
-
projectRoot,
|
|
11
|
-
runId: 'migration:v11-to-v12',
|
|
12
|
-
});
|
|
13
|
-
db.prepare('INSERT OR REPLACE INTO schema_versions (version, applied_at) VALUES (12, ?)')
|
|
14
|
-
.run(report.generatedAt);
|
|
15
|
-
return report;
|
|
16
|
-
}
|
|
17
|
-
export function repairHistoricalMemoryData(db, options) {
|
|
18
|
-
ensureRepairAuditTable(db);
|
|
19
|
-
const generatedAt = options.generatedAt ?? Date.now();
|
|
20
|
-
const runId = options.runId ?? `memory-repair:${generatedAt}:${randomUUID().slice(0, 8)}`;
|
|
21
|
-
const existing = db.prepare('SELECT report FROM memory_data_repair_runs WHERE id = ?').get(runId);
|
|
22
|
-
if (existing)
|
|
23
|
-
return JSON.parse(existing.report);
|
|
24
|
-
return db.transaction(() => {
|
|
25
|
-
const sourceEventsBefore = countRows(db, 'session_events');
|
|
26
|
-
const report = {
|
|
27
|
-
runId,
|
|
28
|
-
schemaVersion: 12,
|
|
29
|
-
generatedAt,
|
|
30
|
-
sourceEvents: { before: sourceEventsBefore, after: sourceEventsBefore, preserved: true },
|
|
31
|
-
ruleEngineQuarantines: [],
|
|
32
|
-
consolidatedMemoriesSanitized: [],
|
|
33
|
-
duplicateConsolidatedMemoriesMerged: [],
|
|
34
|
-
explicitSemanticsReenriched: [],
|
|
35
|
-
duplicateExplicitMemoriesMerged: [],
|
|
36
|
-
legacyAdoptionsMarked: [],
|
|
37
|
-
indexes: {
|
|
38
|
-
memoriesFtsRebuilt: false,
|
|
39
|
-
observationsFtsRebuilt: false,
|
|
40
|
-
conceptsRebuilt: 0,
|
|
41
|
-
entitiesRebuilt: 0,
|
|
42
|
-
vectorsRemoved: 0,
|
|
43
|
-
observationVectorsSynchronized: 0,
|
|
44
|
-
vectorBackfillRequired: 0,
|
|
45
|
-
},
|
|
46
|
-
};
|
|
47
|
-
quarantineHistoricalRuleMemories(db, report, generatedAt, runId);
|
|
48
|
-
repairConsolidatedMemoryProjections(db, report, options.projectRoot, generatedAt, runId);
|
|
49
|
-
repairExplicitSemanticRecords(db, report, options.projectRoot, generatedAt);
|
|
50
|
-
mergeDuplicateExplicitMemories(db, report, generatedAt);
|
|
51
|
-
mergeDuplicateExplicitTurnObservations(db, report, generatedAt);
|
|
52
|
-
markLegacyUnknownAdoptions(db, report);
|
|
53
|
-
rebuildDerivedIndexes(db, report);
|
|
54
|
-
report.sourceEvents.after = countRows(db, 'session_events');
|
|
55
|
-
report.sourceEvents.preserved = report.sourceEvents.before === report.sourceEvents.after;
|
|
56
|
-
if (!report.sourceEvents.preserved) {
|
|
57
|
-
throw new Error('Historical memory repair must not change source session events');
|
|
58
|
-
}
|
|
59
|
-
db.prepare(`
|
|
60
|
-
INSERT INTO memory_data_repair_runs (id, schema_version, report, created_at)
|
|
61
|
-
VALUES (?, 12, ?, ?)
|
|
62
|
-
`).run(runId, JSON.stringify(report), generatedAt);
|
|
63
|
-
return report;
|
|
64
|
-
})();
|
|
65
|
-
}
|
|
66
|
-
function repairConsolidatedMemoryProjections(db, report, projectRoot, now, runId) {
|
|
67
|
-
const rows = db.prepare(`
|
|
68
|
-
SELECT id, title, content, original_text, source, status, scope, strength,
|
|
69
|
-
confidence, created_at, updated_at
|
|
70
|
-
FROM memories
|
|
71
|
-
WHERE source = 'consolidation' AND status IN ('active', 'approved')
|
|
72
|
-
AND superseded_by IS NULL
|
|
73
|
-
ORDER BY updated_at DESC, id DESC
|
|
74
|
-
`).all();
|
|
75
|
-
const update = db.prepare(`
|
|
76
|
-
UPDATE memories SET content = ?, scope = ?, original_text = COALESCE(original_text, ?),
|
|
77
|
-
updated_at = ? WHERE id = ?
|
|
78
|
-
`);
|
|
79
|
-
const insertHistory = db.prepare(`
|
|
80
|
-
INSERT OR IGNORE INTO memory_history
|
|
81
|
-
(id, memory_id, event, old_content, new_content, old_strength, new_strength, reason, created_at)
|
|
82
|
-
VALUES (?, ?, 'UPDATE', ?, ?, ?, ?, 'durable_projection_cleanup', ?)
|
|
83
|
-
`);
|
|
84
|
-
const deleteVector = db.prepare('DELETE FROM memories_vec WHERE id = ?');
|
|
85
|
-
const deleteEmbedding = db.prepare("DELETE FROM embeddings WHERE source_type = 'memory' AND source_id = ?");
|
|
86
|
-
const currentRows = [];
|
|
87
|
-
for (const row of rows) {
|
|
88
|
-
const content = sanitizeDurableMemoryNarrative(row.content || row.title);
|
|
89
|
-
const scope = row.scope.trim() || projectRoot;
|
|
90
|
-
if (!content) {
|
|
91
|
-
db.prepare(`
|
|
92
|
-
UPDATE memories SET status = 'rejected', updated_at = ? WHERE id = ?
|
|
93
|
-
`).run(now, row.id);
|
|
94
|
-
deleteVector.run(row.id);
|
|
95
|
-
deleteEmbedding.run(row.id);
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
if (content !== row.content.normalize('NFKC').trim() || scope !== row.scope) {
|
|
99
|
-
report.consolidatedMemoriesSanitized.push({
|
|
100
|
-
id: row.id,
|
|
101
|
-
previousContent: row.content,
|
|
102
|
-
content,
|
|
103
|
-
previousScope: row.scope,
|
|
104
|
-
scope,
|
|
105
|
-
});
|
|
106
|
-
update.run(content, scope, row.content, now, row.id);
|
|
107
|
-
const historyId = `history:${createHash('sha256')
|
|
108
|
-
.update(`${runId}\0${row.id}\0durable_projection_cleanup`)
|
|
109
|
-
.digest('hex').slice(0, 24)}`;
|
|
110
|
-
insertHistory.run(historyId, row.id, row.content, content, row.strength, row.strength, now);
|
|
111
|
-
report.indexes.vectorsRemoved += deleteVector.run(row.id).changes;
|
|
112
|
-
report.indexes.vectorsRemoved += deleteEmbedding.run(row.id).changes;
|
|
113
|
-
}
|
|
114
|
-
currentRows.push({ ...row, content, scope });
|
|
115
|
-
}
|
|
116
|
-
const groups = new Map();
|
|
117
|
-
for (const row of currentRows) {
|
|
118
|
-
const semantic = enrichExplicitMemory({
|
|
119
|
-
projectRoot: row.scope,
|
|
120
|
-
content: row.content,
|
|
121
|
-
});
|
|
122
|
-
const key = `${row.scope}\0${semantic.facetKey}\0${semantic.semanticKey}`;
|
|
123
|
-
const group = groups.get(key) ?? [];
|
|
124
|
-
group.push({ ...row, semanticKey: semantic.semanticKey, facetKey: semantic.facetKey });
|
|
125
|
-
groups.set(key, group);
|
|
126
|
-
}
|
|
127
|
-
for (const group of groups.values()) {
|
|
128
|
-
if (group.length < 2)
|
|
129
|
-
continue;
|
|
130
|
-
group.sort((left, right) => right.confidence - left.confidence
|
|
131
|
-
|| right.updated_at - left.updated_at || right.id.localeCompare(left.id));
|
|
132
|
-
const [winner, ...duplicates] = group;
|
|
133
|
-
for (const duplicate of duplicates) {
|
|
134
|
-
db.prepare(`
|
|
135
|
-
UPDATE memories SET status = 'superseded', superseded_by = ?, updated_at = ?
|
|
136
|
-
WHERE id = ? AND status IN ('active', 'approved')
|
|
137
|
-
`).run(winner.id, now, duplicate.id);
|
|
138
|
-
deleteVector.run(duplicate.id);
|
|
139
|
-
deleteEmbedding.run(duplicate.id);
|
|
140
|
-
}
|
|
141
|
-
db.prepare(`
|
|
142
|
-
UPDATE memories SET supersedes = COALESCE(supersedes, ?), updated_at = ? WHERE id = ?
|
|
143
|
-
`).run(duplicates[0].id, now, winner.id);
|
|
144
|
-
report.duplicateConsolidatedMemoriesMerged.push({
|
|
145
|
-
winnerId: winner.id,
|
|
146
|
-
supersededIds: duplicates.map(row => row.id),
|
|
147
|
-
semanticKey: winner.semanticKey,
|
|
148
|
-
facetKey: winner.facetKey,
|
|
149
|
-
});
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
function ensureRepairAuditTable(db) {
|
|
153
|
-
db.exec(`
|
|
154
|
-
CREATE TABLE IF NOT EXISTS memory_data_repair_runs (
|
|
155
|
-
id TEXT PRIMARY KEY,
|
|
156
|
-
schema_version INTEGER NOT NULL,
|
|
157
|
-
report TEXT NOT NULL,
|
|
158
|
-
created_at INTEGER NOT NULL
|
|
159
|
-
);
|
|
160
|
-
CREATE INDEX IF NOT EXISTS idx_memory_data_repair_runs_created
|
|
161
|
-
ON memory_data_repair_runs(created_at DESC);
|
|
162
|
-
`);
|
|
163
|
-
}
|
|
164
|
-
function quarantineHistoricalRuleMemories(db, report, now, runId) {
|
|
165
|
-
const rows = db.prepare(`
|
|
166
|
-
SELECT id, status, title, content
|
|
167
|
-
FROM memories
|
|
168
|
-
WHERE source = 'rule_engine'
|
|
169
|
-
AND (status = 'approved' OR (
|
|
170
|
-
status IN ('active', 'pending')
|
|
171
|
-
AND lower(title || ' ' || content) LIKE '%grep%'
|
|
172
|
-
))
|
|
173
|
-
ORDER BY id
|
|
174
|
-
`).all();
|
|
175
|
-
const update = db.prepare(`
|
|
176
|
-
UPDATE memories SET status = 'rejected', updated_at = ? WHERE id = ?
|
|
177
|
-
`);
|
|
178
|
-
const history = db.prepare(`
|
|
179
|
-
INSERT OR IGNORE INTO memory_history
|
|
180
|
-
(id, memory_id, event, old_content, new_content, old_strength, new_strength, reason, created_at)
|
|
181
|
-
SELECT ?, id, 'UPDATE', content, content, strength, strength, ?, ?
|
|
182
|
-
FROM memories WHERE id = ?
|
|
183
|
-
`);
|
|
184
|
-
const deleteVector = db.prepare('DELETE FROM memories_vec WHERE id = ?');
|
|
185
|
-
const deleteEmbedding = db.prepare("DELETE FROM embeddings WHERE source_type = 'memory' AND source_id = ?");
|
|
186
|
-
for (const row of rows) {
|
|
187
|
-
const falseGrep = /grep/iu.test(`${row.title} ${row.content}`);
|
|
188
|
-
const reason = falseGrep ? 'false_grep_correction' : 'untrusted_rule_engine_approval';
|
|
189
|
-
report.ruleEngineQuarantines.push({ id: row.id, previousStatus: row.status, reason });
|
|
190
|
-
update.run(now, row.id);
|
|
191
|
-
const historyId = `history:${createHash('sha256').update(`${runId}\0${row.id}\0${reason}`).digest('hex').slice(0, 24)}`;
|
|
192
|
-
history.run(historyId, `memory_repair:${reason}; previous_status=${row.status}`, now, row.id);
|
|
193
|
-
report.indexes.vectorsRemoved += deleteVector.run(row.id).changes;
|
|
194
|
-
report.indexes.vectorsRemoved += deleteEmbedding.run(row.id).changes;
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
function repairExplicitSemanticRecords(db, report, defaultProjectRoot, now) {
|
|
198
|
-
const rows = db.prepare(`
|
|
199
|
-
SELECT * FROM observations
|
|
200
|
-
WHERE source = 'explicit_intent'
|
|
201
|
-
ORDER BY project, COALESCE(explicit_accepted_at, timestamp), id
|
|
202
|
-
`).all();
|
|
203
|
-
const update = db.prepare(`
|
|
204
|
-
UPDATE observations
|
|
205
|
-
SET type = ?, title = ?, narrative = ?, facts = ?, files = ?, tools = ?, concepts = ?,
|
|
206
|
-
dedup_key = NULL, evidence_status = ?, evidence_details = ?, updated_at = ?,
|
|
207
|
-
semantic_subject = ?, semantic_predicate = ?, semantic_value = ?, semantic_polarity = ?,
|
|
208
|
-
semantic_key = ?, facet_key = ?, entities = ?, temporal = ?, embedding = NULL
|
|
209
|
-
WHERE id = ?
|
|
210
|
-
`);
|
|
211
|
-
const deleteEmbedding = db.prepare("DELETE FROM embeddings WHERE source_type = 'observation' AND source_id = ?");
|
|
212
|
-
for (const row of rows) {
|
|
213
|
-
const durableNarrative = sanitizeDurableMemoryNarrative(row.narrative || row.title);
|
|
214
|
-
if (!durableNarrative)
|
|
215
|
-
continue;
|
|
216
|
-
const enrichment = enrichExplicitMemory({
|
|
217
|
-
projectRoot: row.project || defaultProjectRoot,
|
|
218
|
-
content: durableNarrative,
|
|
219
|
-
sourceEventIds: parseStringArray(row.source_event_ids),
|
|
220
|
-
});
|
|
221
|
-
const mergedFacts = uniqueStrings([...parseStringArray(row.facts), ...enrichment.facts]);
|
|
222
|
-
const mergedConcepts = uniqueStrings([...parseStringArray(row.concepts), ...enrichment.concepts]);
|
|
223
|
-
const next = {
|
|
224
|
-
type: enrichment.type,
|
|
225
|
-
title: enrichment.title,
|
|
226
|
-
narrative: enrichment.narrative,
|
|
227
|
-
facts: JSON.stringify(mergedFacts),
|
|
228
|
-
concepts: JSON.stringify(mergedConcepts),
|
|
229
|
-
entities: JSON.stringify(enrichment.entities),
|
|
230
|
-
semanticSubject: enrichment.subject,
|
|
231
|
-
semanticPredicate: enrichment.predicate,
|
|
232
|
-
semanticValue: enrichment.value,
|
|
233
|
-
semanticPolarity: enrichment.polarity,
|
|
234
|
-
semanticKey: enrichment.semanticKey,
|
|
235
|
-
facetKey: enrichment.facetKey,
|
|
236
|
-
temporal: enrichment.temporal ? JSON.stringify(enrichment.temporal) : null,
|
|
237
|
-
};
|
|
238
|
-
const malformed = row.type !== next.type
|
|
239
|
-
|| row.title !== next.title
|
|
240
|
-
|| row.narrative !== next.narrative
|
|
241
|
-
|| row.facts !== next.facts
|
|
242
|
-
|| row.concepts !== next.concepts
|
|
243
|
-
|| row.entities !== next.entities
|
|
244
|
-
|| row.semantic_subject !== next.semanticSubject
|
|
245
|
-
|| row.semantic_predicate !== next.semanticPredicate
|
|
246
|
-
|| row.semantic_value !== next.semanticValue
|
|
247
|
-
|| row.semantic_polarity !== next.semanticPolarity
|
|
248
|
-
|| row.semantic_key !== next.semanticKey
|
|
249
|
-
|| row.facet_key !== next.facetKey;
|
|
250
|
-
if (!malformed)
|
|
251
|
-
continue;
|
|
252
|
-
report.explicitSemanticsReenriched.push({
|
|
253
|
-
id: row.id,
|
|
254
|
-
previousSemanticKey: row.semantic_key,
|
|
255
|
-
semanticKey: next.semanticKey,
|
|
256
|
-
facetKey: next.facetKey,
|
|
257
|
-
});
|
|
258
|
-
update.run(next.type, next.title, next.narrative, next.facts, JSON.stringify(enrichment.files), JSON.stringify(enrichment.tools), next.concepts, enrichment.evidenceStatus, JSON.stringify(enrichment.evidence), now, next.semanticSubject, next.semanticPredicate, next.semanticValue, next.semanticPolarity, next.semanticKey, next.facetKey, next.entities, next.temporal, row.id);
|
|
259
|
-
report.indexes.vectorsRemoved += deleteEmbedding.run(row.id).changes;
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
function mergeDuplicateExplicitMemories(db, report, now) {
|
|
263
|
-
const rows = db.prepare(`
|
|
264
|
-
SELECT * FROM observations
|
|
265
|
-
WHERE source = 'explicit_intent'
|
|
266
|
-
AND quality_status = 'accepted'
|
|
267
|
-
AND resolution_state = 'current'
|
|
268
|
-
AND semantic_key IS NOT NULL
|
|
269
|
-
AND facet_key IS NOT NULL
|
|
270
|
-
ORDER BY project, facet_key, semantic_key, COALESCE(explicit_accepted_at, timestamp) DESC, id DESC
|
|
271
|
-
`).all();
|
|
272
|
-
const groups = new Map();
|
|
273
|
-
for (const row of rows) {
|
|
274
|
-
const key = `${row.project}\0${row.facet_key}\0${row.semantic_key}`;
|
|
275
|
-
const group = groups.get(key) ?? [];
|
|
276
|
-
group.push(row);
|
|
277
|
-
groups.set(key, group);
|
|
278
|
-
}
|
|
279
|
-
for (const unsortedGroup of groups.values()) {
|
|
280
|
-
const group = [...unsortedGroup].sort((left, right) => semanticWinnerScore(right) - semanticWinnerScore(left)
|
|
281
|
-
|| (right.explicit_accepted_at ?? right.timestamp) - (left.explicit_accepted_at ?? left.timestamp)
|
|
282
|
-
|| right.id.localeCompare(left.id));
|
|
283
|
-
if (group.length < 2)
|
|
284
|
-
continue;
|
|
285
|
-
const [winner, ...duplicates] = group;
|
|
286
|
-
const sourceEventIds = uniqueStrings(group.flatMap(row => parseStringArray(row.source_event_ids)));
|
|
287
|
-
const facts = uniqueStrings(group.flatMap(row => parseStringArray(row.facts)));
|
|
288
|
-
const concepts = uniqueStrings(group.flatMap(row => parseStringArray(row.concepts)));
|
|
289
|
-
const entities = uniqueStrings(group.flatMap(row => parseStringArray(row.entities)));
|
|
290
|
-
const evidence = uniqueObjects(group.flatMap(row => parseObjectArray(row.evidence_details)));
|
|
291
|
-
const reinforceCount = group.reduce((sum, row) => sum + row.reinforce_count, 0) + duplicates.length;
|
|
292
|
-
const durableNarrative = sanitizeDurableMemoryNarrative(winner.narrative || winner.title);
|
|
293
|
-
const releaseDerivedKeys = db.prepare(`UPDATE observations SET dedup_key = NULL WHERE id IN (${group.map(() => '?').join(', ')})`);
|
|
294
|
-
releaseDerivedKeys.run(...group.map(row => row.id));
|
|
295
|
-
const supersede = db.prepare(`
|
|
296
|
-
UPDATE observations
|
|
297
|
-
SET resolution_state = 'superseded', superseded_by_observation = ?, dedup_key = NULL,
|
|
298
|
-
quality_details = ?, updated_at = ?
|
|
299
|
-
WHERE id = ?
|
|
300
|
-
`);
|
|
301
|
-
for (const duplicate of duplicates) {
|
|
302
|
-
const priorDetails = parseObject(duplicate.quality_details);
|
|
303
|
-
supersede.run(winner.id, JSON.stringify({
|
|
304
|
-
...priorDetails,
|
|
305
|
-
memoryRepair: {
|
|
306
|
-
reason: 'duplicate_semantic_memory',
|
|
307
|
-
previousResolutionState: duplicate.resolution_state,
|
|
308
|
-
winnerId: winner.id,
|
|
309
|
-
},
|
|
310
|
-
}), now, duplicate.id);
|
|
311
|
-
db.prepare(`
|
|
312
|
-
INSERT OR IGNORE INTO observation_relations
|
|
313
|
-
(source_observation_id, target_observation_id, type, created_at)
|
|
314
|
-
VALUES (?, ?, 'supersedes', ?)
|
|
315
|
-
`).run(winner.id, duplicate.id, now);
|
|
316
|
-
}
|
|
317
|
-
db.prepare(`
|
|
318
|
-
UPDATE observations
|
|
319
|
-
SET narrative = ?, source_event_ids = ?, facts = ?, concepts = ?, entities = ?, evidence_details = ?,
|
|
320
|
-
reinforce_count = ?, last_reinforced_at = ?, updated_at = ?, dedup_key = semantic_key
|
|
321
|
-
WHERE id = ?
|
|
322
|
-
`).run(durableNarrative, JSON.stringify(sourceEventIds), JSON.stringify(facts), JSON.stringify(concepts), JSON.stringify(entities), JSON.stringify(evidence), reinforceCount, now, now, winner.id);
|
|
323
|
-
report.duplicateExplicitMemoriesMerged.push({
|
|
324
|
-
winnerId: winner.id,
|
|
325
|
-
supersededIds: duplicates.map(row => row.id),
|
|
326
|
-
semanticKey: winner.semantic_key,
|
|
327
|
-
facetKey: winner.facet_key,
|
|
328
|
-
reason: 'duplicate_semantic_memory',
|
|
329
|
-
});
|
|
330
|
-
}
|
|
331
|
-
db.exec(`
|
|
332
|
-
UPDATE observations AS target
|
|
333
|
-
SET dedup_key = semantic_key
|
|
334
|
-
WHERE source = 'explicit_intent'
|
|
335
|
-
AND quality_status = 'accepted'
|
|
336
|
-
AND resolution_state = 'current'
|
|
337
|
-
AND semantic_key IS NOT NULL
|
|
338
|
-
AND (
|
|
339
|
-
SELECT COUNT(*) FROM observations AS candidate
|
|
340
|
-
WHERE candidate.project = target.project
|
|
341
|
-
AND candidate.semantic_key = target.semantic_key
|
|
342
|
-
AND candidate.quality_status = 'accepted'
|
|
343
|
-
AND candidate.resolution_state = 'current'
|
|
344
|
-
) = 1
|
|
345
|
-
AND NOT EXISTS (
|
|
346
|
-
SELECT 1 FROM observations AS collision
|
|
347
|
-
WHERE collision.id <> target.id AND collision.dedup_key = target.semantic_key
|
|
348
|
-
);
|
|
349
|
-
`);
|
|
350
|
-
}
|
|
351
|
-
function mergeDuplicateExplicitTurnObservations(db, report, now) {
|
|
352
|
-
const rows = db.prepare(`
|
|
353
|
-
SELECT * FROM observations
|
|
354
|
-
WHERE source = 'explicit_intent'
|
|
355
|
-
AND quality_status = 'accepted'
|
|
356
|
-
AND resolution_state = 'current'
|
|
357
|
-
ORDER BY project, facet_key, timestamp DESC, id DESC
|
|
358
|
-
`).all();
|
|
359
|
-
const groups = new Map();
|
|
360
|
-
for (const row of rows) {
|
|
361
|
-
const sourceEvents = parseStringArray(row.source_event_ids).sort().join('\0');
|
|
362
|
-
if (!sourceEvents)
|
|
363
|
-
continue;
|
|
364
|
-
const key = `${row.project}\0${sourceEvents}`;
|
|
365
|
-
const group = groups.get(key) ?? [];
|
|
366
|
-
group.push(row);
|
|
367
|
-
groups.set(key, group);
|
|
368
|
-
}
|
|
369
|
-
for (const group of groups.values()) {
|
|
370
|
-
if (group.length < 2)
|
|
371
|
-
continue;
|
|
372
|
-
const winner = [...group].sort((left, right) => semanticWinnerScore(right) - semanticWinnerScore(left))[0];
|
|
373
|
-
const duplicates = group.filter(candidate => candidate.id !== winner.id
|
|
374
|
-
&& textSimilarity(winner.narrative, candidate.narrative) >= 0.55);
|
|
375
|
-
if (duplicates.length === 0)
|
|
376
|
-
continue;
|
|
377
|
-
for (const duplicate of duplicates) {
|
|
378
|
-
db.prepare(`
|
|
379
|
-
UPDATE observations
|
|
380
|
-
SET resolution_state = 'superseded', superseded_by_observation = ?, dedup_key = NULL,
|
|
381
|
-
quality_details = ?, updated_at = ?
|
|
382
|
-
WHERE id = ? AND resolution_state = 'current'
|
|
383
|
-
`).run(winner.id, JSON.stringify({
|
|
384
|
-
...parseObject(duplicate.quality_details),
|
|
385
|
-
memoryRepair: {
|
|
386
|
-
reason: 'duplicate_explicit_turn_observation',
|
|
387
|
-
winnerId: winner.id,
|
|
388
|
-
sourceEventIds: parseStringArray(duplicate.source_event_ids),
|
|
389
|
-
},
|
|
390
|
-
}), now, duplicate.id);
|
|
391
|
-
db.prepare(`
|
|
392
|
-
INSERT OR IGNORE INTO observation_relations
|
|
393
|
-
(source_observation_id, target_observation_id, type, created_at)
|
|
394
|
-
VALUES (?, ?, 'supersedes', ?)
|
|
395
|
-
`).run(winner.id, duplicate.id, now);
|
|
396
|
-
}
|
|
397
|
-
report.duplicateExplicitMemoriesMerged.push({
|
|
398
|
-
winnerId: winner.id,
|
|
399
|
-
supersededIds: duplicates.map(candidate => candidate.id),
|
|
400
|
-
semanticKey: winner.semantic_key ?? '',
|
|
401
|
-
facetKey: winner.facet_key ?? '',
|
|
402
|
-
reason: 'duplicate_semantic_memory',
|
|
403
|
-
});
|
|
404
|
-
}
|
|
405
|
-
}
|
|
406
|
-
function textSimilarity(left, right) {
|
|
407
|
-
const leftTerms = new Set([
|
|
408
|
-
...cjkBigrams(left),
|
|
409
|
-
...(left.match(/[a-z][a-z0-9_-]{2,}|\d+(?:\.\d+)*/giu) ?? []).map(value => value.toLocaleLowerCase('en-US')),
|
|
410
|
-
]);
|
|
411
|
-
const rightTerms = new Set([
|
|
412
|
-
...cjkBigrams(right),
|
|
413
|
-
...(right.match(/[a-z][a-z0-9_-]{2,}|\d+(?:\.\d+)*/giu) ?? []).map(value => value.toLocaleLowerCase('en-US')),
|
|
414
|
-
]);
|
|
415
|
-
if (leftTerms.size === 0 || rightTerms.size === 0)
|
|
416
|
-
return 0;
|
|
417
|
-
let overlap = 0;
|
|
418
|
-
for (const term of leftTerms)
|
|
419
|
-
if (rightTerms.has(term))
|
|
420
|
-
overlap += 1;
|
|
421
|
-
return overlap / Math.min(leftTerms.size, rightTerms.size);
|
|
422
|
-
}
|
|
423
|
-
function cjkBigrams(value) {
|
|
424
|
-
const result = [];
|
|
425
|
-
for (const run of value.normalize('NFKC').match(/[\p{Script=Han}]+/gu) ?? []) {
|
|
426
|
-
const characters = [...run];
|
|
427
|
-
for (let index = 0; index + 1 < characters.length; index += 1) {
|
|
428
|
-
result.push(`${characters[index]}${characters[index + 1]}`);
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
return result;
|
|
432
|
-
}
|
|
433
|
-
function semanticWinnerScore(row) {
|
|
434
|
-
let score = 0;
|
|
435
|
-
if (!isExecutionNarration(row.narrative))
|
|
436
|
-
score += 4;
|
|
437
|
-
if (sanitizeDurableMemoryNarrative(row.narrative) === row.narrative.normalize('NFKC').trim())
|
|
438
|
-
score += 3;
|
|
439
|
-
if (row.evidence_status === 'verified')
|
|
440
|
-
score += 2;
|
|
441
|
-
score += Math.min(2, parseStringArray(row.source_event_ids).length);
|
|
442
|
-
return score;
|
|
443
|
-
}
|
|
444
|
-
function markLegacyUnknownAdoptions(db, report) {
|
|
445
|
-
const rows = db.prepare(`
|
|
446
|
-
SELECT id, source_type, source_id, outcome_reason
|
|
447
|
-
FROM retrieval_access_log
|
|
448
|
-
WHERE access_type = 'adopted'
|
|
449
|
-
AND verification_receipt IS NULL
|
|
450
|
-
AND (tool_evidence IS NULL OR tool_evidence = '' OR tool_evidence = '[]')
|
|
451
|
-
AND (outcome_reason IS NULL OR outcome_reason = '')
|
|
452
|
-
ORDER BY id
|
|
453
|
-
`).all();
|
|
454
|
-
const update = db.prepare("UPDATE retrieval_access_log SET outcome_reason = 'legacy_unknown' WHERE id = ?");
|
|
455
|
-
for (const row of rows) {
|
|
456
|
-
report.legacyAdoptionsMarked.push({
|
|
457
|
-
id: row.id,
|
|
458
|
-
sourceType: row.source_type,
|
|
459
|
-
sourceId: row.source_id,
|
|
460
|
-
previousOutcomeReason: row.outcome_reason,
|
|
461
|
-
reason: 'legacy_unknown',
|
|
462
|
-
});
|
|
463
|
-
update.run(row.id);
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
function rebuildDerivedIndexes(db, report) {
|
|
467
|
-
db.exec("INSERT INTO memories_fts(memories_fts) VALUES('rebuild')");
|
|
468
|
-
report.indexes.memoriesFtsRebuilt = true;
|
|
469
|
-
db.exec(`
|
|
470
|
-
DELETE FROM observations_fts;
|
|
471
|
-
DELETE FROM observations_terms_fts;
|
|
472
|
-
INSERT INTO observations_fts(rowid, id, title, narrative, facts, concepts)
|
|
473
|
-
SELECT rowid, id, title, narrative, facts, concepts FROM observations
|
|
474
|
-
WHERE quality_status = 'accepted' AND resolution_state = 'current';
|
|
475
|
-
INSERT INTO observations_terms_fts(rowid, id, title, narrative, facts, concepts)
|
|
476
|
-
SELECT rowid, id, title, narrative, facts, concepts FROM observations
|
|
477
|
-
WHERE quality_status = 'accepted' AND resolution_state = 'current';
|
|
478
|
-
`);
|
|
479
|
-
report.indexes.observationsFtsRebuilt = true;
|
|
480
|
-
db.exec('DELETE FROM observation_concepts');
|
|
481
|
-
const insertConcept = db.prepare('INSERT OR IGNORE INTO observation_concepts (observation_id, concept) VALUES (?, ?)');
|
|
482
|
-
const insertEntity = db.prepare(`
|
|
483
|
-
INSERT OR IGNORE INTO observation_entities
|
|
484
|
-
(observation_id, project, normalized_entity, display_entity)
|
|
485
|
-
VALUES (?, ?, ?, ?)
|
|
486
|
-
`);
|
|
487
|
-
db.exec('DELETE FROM observation_entities');
|
|
488
|
-
const observations = db.prepare('SELECT id, project, concepts, entities FROM observations ORDER BY id').all();
|
|
489
|
-
for (const row of observations) {
|
|
490
|
-
for (const concept of uniqueStrings(parseStringArray(row.concepts))) {
|
|
491
|
-
report.indexes.conceptsRebuilt += insertConcept.run(row.id, concept).changes;
|
|
492
|
-
}
|
|
493
|
-
for (const entity of uniqueStrings(parseStringArray(row.entities))) {
|
|
494
|
-
const normalized = entity.normalize('NFKC').trim().toLocaleLowerCase('en-US').replace(/\s+/gu, ' ');
|
|
495
|
-
if (normalized)
|
|
496
|
-
report.indexes.entitiesRebuilt += insertEntity.run(row.id, row.project, normalized, entity).changes;
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
report.indexes.vectorsRemoved += db.prepare(`
|
|
500
|
-
DELETE FROM embeddings
|
|
501
|
-
WHERE source_type = 'observation' AND source_id IN (
|
|
502
|
-
SELECT id FROM observations
|
|
503
|
-
WHERE quality_status <> 'accepted' OR resolution_state <> 'current' OR embedding IS NULL
|
|
504
|
-
)
|
|
505
|
-
`).run().changes;
|
|
506
|
-
db.exec(`
|
|
507
|
-
INSERT OR REPLACE INTO embeddings(source_type, source_id, vector)
|
|
508
|
-
SELECT 'observation', id, embedding FROM observations
|
|
509
|
-
WHERE quality_status = 'accepted' AND resolution_state = 'current' AND embedding IS NOT NULL;
|
|
510
|
-
`);
|
|
511
|
-
report.indexes.observationVectorsSynchronized = db.prepare(`
|
|
512
|
-
SELECT COUNT(*) AS count FROM embeddings e
|
|
513
|
-
JOIN observations o ON o.id = e.source_id
|
|
514
|
-
WHERE e.source_type = 'observation'
|
|
515
|
-
AND o.quality_status = 'accepted' AND o.resolution_state = 'current'
|
|
516
|
-
`).get().count;
|
|
517
|
-
report.indexes.vectorBackfillRequired = db.prepare(`
|
|
518
|
-
SELECT COUNT(*) AS count FROM observations
|
|
519
|
-
WHERE quality_status = 'accepted' AND resolution_state = 'current' AND embedding IS NULL
|
|
520
|
-
`).get().count;
|
|
521
|
-
}
|
|
522
|
-
function countRows(db, table) {
|
|
523
|
-
return db.prepare(`SELECT COUNT(*) AS count FROM ${table}`).get().count;
|
|
524
|
-
}
|
|
525
|
-
function parseStringArray(value) {
|
|
526
|
-
try {
|
|
527
|
-
const parsed = JSON.parse(value ?? '[]');
|
|
528
|
-
return Array.isArray(parsed) ? parsed.filter((item) => typeof item === 'string') : [];
|
|
529
|
-
}
|
|
530
|
-
catch {
|
|
531
|
-
return [];
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
function parseObjectArray(value) {
|
|
535
|
-
try {
|
|
536
|
-
const parsed = JSON.parse(value ?? '[]');
|
|
537
|
-
return Array.isArray(parsed)
|
|
538
|
-
? parsed.filter((item) => Boolean(item) && typeof item === 'object' && !Array.isArray(item))
|
|
539
|
-
: [];
|
|
540
|
-
}
|
|
541
|
-
catch {
|
|
542
|
-
return [];
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
function parseObject(value) {
|
|
546
|
-
try {
|
|
547
|
-
const parsed = JSON.parse(value ?? '{}');
|
|
548
|
-
return parsed && typeof parsed === 'object' && !Array.isArray(parsed)
|
|
549
|
-
? parsed
|
|
550
|
-
: {};
|
|
551
|
-
}
|
|
552
|
-
catch {
|
|
553
|
-
return {};
|
|
554
|
-
}
|
|
555
|
-
}
|
|
556
|
-
function uniqueStrings(values) {
|
|
557
|
-
const seen = new Set();
|
|
558
|
-
return values.filter(value => {
|
|
559
|
-
const normalized = value.normalize('NFKC').trim();
|
|
560
|
-
const key = normalized.toLocaleLowerCase('en-US');
|
|
561
|
-
if (!normalized || seen.has(key))
|
|
562
|
-
return false;
|
|
563
|
-
seen.add(key);
|
|
564
|
-
return true;
|
|
565
|
-
});
|
|
566
|
-
}
|
|
567
|
-
function uniqueObjects(values) {
|
|
568
|
-
const seen = new Set();
|
|
569
|
-
return values.filter(value => {
|
|
570
|
-
const key = JSON.stringify(value);
|
|
571
|
-
if (seen.has(key))
|
|
572
|
-
return false;
|
|
573
|
-
seen.add(key);
|
|
574
|
-
return true;
|
|
575
|
-
});
|
|
576
|
-
}
|
|
577
|
-
//# sourceMappingURL=v11-to-v12.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"v11-to-v12.js","sourceRoot":"","sources":["../../src/migrations/v11-to-v12.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EACL,oBAAoB,EACpB,8BAA8B,GAC/B,MAAM,2BAA2B,CAAC;AAwGnC,MAAM,UAAU,sBAAsB,CACpC,EAAqB,EACrB,WAAmB;IAEnB,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC,GAAG,EAAE,CAAC;IACrF,IAAI,OAAO;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,MAAM,GAAG,0BAA0B,CAAC,EAAE,EAAE;QAC5C,WAAW;QACX,KAAK,EAAE,sBAAsB;KAC9B,CAAC,CAAC;IACH,EAAE,CAAC,OAAO,CAAC,6EAA6E,CAAC;SACtF,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,EAAqB,EACrB,OAAsC;IAEtC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC3B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACtD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,iBAAiB,WAAW,IAAI,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IAC1F,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CACzB,yDAAyD,CAC1D,CAAC,GAAG,CAAC,KAAK,CAAmC,CAAC;IAC/C,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAiC,CAAC;IAEjF,OAAO,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QACzB,MAAM,kBAAkB,GAAG,SAAS,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAiC;YAC3C,KAAK;YACL,aAAa,EAAE,EAAE;YACjB,WAAW;YACX,YAAY,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,IAAI,EAAE;YACxF,qBAAqB,EAAE,EAAE;YACzB,6BAA6B,EAAE,EAAE;YACjC,mCAAmC,EAAE,EAAE;YACvC,2BAA2B,EAAE,EAAE;YAC/B,+BAA+B,EAAE,EAAE;YACnC,qBAAqB,EAAE,EAAE;YACzB,OAAO,EAAE;gBACP,kBAAkB,EAAE,KAAK;gBACzB,sBAAsB,EAAE,KAAK;gBAC7B,eAAe,EAAE,CAAC;gBAClB,eAAe,EAAE,CAAC;gBAClB,cAAc,EAAE,CAAC;gBACjB,8BAA8B,EAAE,CAAC;gBACjC,sBAAsB,EAAE,CAAC;aAC1B;SACF,CAAC;QAEF,gCAAgC,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACjE,mCAAmC,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACzF,6BAA6B,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAC5E,8BAA8B,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACxD,sCAAsC,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAChE,0BAA0B,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACvC,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAElC,MAAM,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAC5D,MAAM,CAAC,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC;QACzF,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QACD,EAAE,CAAC,OAAO,CAAC;;;KAGV,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAED,SAAS,mCAAmC,CAC1C,EAAqB,EACrB,MAAoC,EACpC,WAAmB,EACnB,GAAW,EACX,KAAa;IAEb,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;GAOvB,CAAC,CAAC,GAAG,EAAuC,CAAC;IAC9C,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;;;GAGzB,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAAC;;;;GAIhC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;IACzE,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAChC,uEAAuE,CACxE,CAAC;IAEF,MAAM,WAAW,GAAsC,EAAE,CAAC;IAC1D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,8BAA8B,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,WAAW,CAAC;QAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,EAAE,CAAC,OAAO,CAAC;;OAEV,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACpB,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACzB,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,KAAK,GAAG,CAAC,KAAK,EAAE,CAAC;YAC5E,MAAM,CAAC,6BAA6B,CAAC,IAAI,CAAC;gBACxC,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,eAAe,EAAE,GAAG,CAAC,OAAO;gBAC5B,OAAO;gBACP,aAAa,EAAE,GAAG,CAAC,KAAK;gBACxB,KAAK;aACN,CAAC,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,WAAW,UAAU,CAAC,QAAQ,CAAC;iBAC9C,MAAM,CAAC,GAAG,KAAK,KAAK,GAAG,CAAC,EAAE,8BAA8B,CAAC;iBACzD,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAChC,aAAa,CAAC,GAAG,CACf,SAAS,EACT,GAAG,CAAC,EAAE,EACN,GAAG,CAAC,OAAO,EACX,OAAO,EACP,GAAG,CAAC,QAAQ,EACZ,GAAG,CAAC,QAAQ,EACZ,GAAG,CACJ,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;YAClE,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;QACvE,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAGjB,CAAC;IACN,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,oBAAoB,CAAC;YACpC,WAAW,EAAE,GAAG,CAAC,KAAK;YACtB,OAAO,EAAE,GAAG,CAAC,OAAO;SACrB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,QAAQ,KAAK,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC1E,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QACvF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC/B,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;eACzD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,MAAM,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC;QACtC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,EAAE,CAAC,OAAO,CAAC;;;OAGV,CAAC,CAAC,GAAG,CAAC,MAAO,CAAC,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YACtC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAC/B,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,EAAE,CAAC,OAAO,CAAC;;KAEV,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAE,CAAC,EAAE,EAAE,GAAG,EAAE,MAAO,CAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,mCAAmC,CAAC,IAAI,CAAC;YAC9C,QAAQ,EAAE,MAAO,CAAC,EAAE;YACpB,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,WAAW,EAAE,MAAO,CAAC,WAAW;YAChC,QAAQ,EAAE,MAAO,CAAC,QAAQ;SAC3B,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,EAAqB;IACnD,EAAE,CAAC,IAAI,CAAC;;;;;;;;;GASP,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gCAAgC,CACvC,EAAqB,EACrB,MAAoC,EACpC,GAAW,EACX,KAAa;IAEb,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;GASvB,CAAC,CAAC,GAAG,EAA2E,CAAC;IAClF,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;;GAEzB,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;GAK1B,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC,uCAAuC,CAAC,CAAC;IACzE,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAChC,uEAAuE,CACxE,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,gCAAgC,CAAC;QACtF,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACtF,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,SAAS,GAAG,WAAW,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACxH,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,iBAAiB,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9F,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;QAClE,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;IACvE,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CACpC,EAAqB,EACrB,MAAoC,EACpC,kBAA0B,EAC1B,GAAW;IAEX,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;GAIvB,CAAC,CAAC,GAAG,EAAgC,CAAC;IACvC,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;GAOzB,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,EAAE,CAAC,OAAO,CAChC,4EAA4E,CAC7E,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QACpF,IAAI,CAAC,gBAAgB;YAAE,SAAS;QAChC,MAAM,UAAU,GAAG,oBAAoB,CAAC;YACtC,WAAW,EAAE,GAAG,CAAC,OAAO,IAAI,kBAAkB;YAC9C,OAAO,EAAE,gBAAgB;YACzB,cAAc,EAAE,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC;SACvD,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACzF,MAAM,cAAc,GAAG,aAAa,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAClG,MAAM,IAAI,GAAG;YACX,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;YAClC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC;YACxC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC7C,eAAe,EAAE,UAAU,CAAC,OAAO;YACnC,iBAAiB,EAAE,UAAU,CAAC,SAAS;YACvC,aAAa,EAAE,UAAU,CAAC,KAAK;YAC/B,gBAAgB,EAAE,UAAU,CAAC,QAAQ;YACrC,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;SAC3E,CAAC;QACF,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;eACnC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK;eACxB,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS;eAChC,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK;eACxB,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;eAC9B,GAAG,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;eAC9B,GAAG,CAAC,gBAAgB,KAAK,IAAI,CAAC,eAAe;eAC7C,GAAG,CAAC,kBAAkB,KAAK,IAAI,CAAC,iBAAiB;eACjD,GAAG,CAAC,cAAc,KAAK,IAAI,CAAC,aAAa;eACzC,GAAG,CAAC,iBAAiB,KAAK,IAAI,CAAC,gBAAgB;eAC/C,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,WAAW;eACrC,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC;QACrC,IAAI,CAAC,SAAS;YAAE,SAAS;QAEzB,MAAM,CAAC,2BAA2B,CAAC,IAAI,CAAC;YACtC,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,mBAAmB,EAAE,GAAG,CAAC,YAAY;YACrC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CACR,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAChC,IAAI,CAAC,QAAQ,EACb,UAAU,CAAC,cAAc,EACzB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,EACnC,GAAG,EACH,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,gBAAgB,EACrB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,QAAQ,EACb,GAAG,CAAC,EAAE,CACP,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;IACvE,CAAC;AACH,CAAC;AAED,SAAS,8BAA8B,CACrC,EAAqB,EACrB,MAAoC,EACpC,GAAW;IAEX,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;GAQvB,CAAC,CAAC,GAAG,EAAgC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsC,CAAC;IAC7D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,YAAY,EAAE,CAAC;QACpE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CACpD,mBAAmB,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC;eACnD,CAAC,KAAK,CAAC,oBAAoB,IAAI,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,SAAS,CAAC;eAC/F,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,KAAK,CAAC;QACtC,MAAM,cAAc,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACnG,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC7F,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC;QACpG,MAAM,gBAAgB,GAAG,8BAA8B,CAAC,MAAO,CAAC,SAAS,IAAI,MAAO,CAAC,KAAK,CAAC,CAAC;QAC5F,MAAM,kBAAkB,GAAG,EAAE,CAAC,OAAO,CACnC,yDAAyD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC5F,CAAC;QACF,kBAAkB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;KAK5B,CAAC,CAAC;QACH,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC5D,SAAS,CAAC,GAAG,CAAC,MAAO,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC;gBACvC,GAAG,YAAY;gBACf,YAAY,EAAE;oBACZ,MAAM,EAAE,2BAA2B;oBACnC,uBAAuB,EAAE,SAAS,CAAC,gBAAgB;oBACnD,QAAQ,EAAE,MAAO,CAAC,EAAE;iBACrB;aACF,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;YACvB,EAAE,CAAC,OAAO,CAAC;;;;OAIV,CAAC,CAAC,GAAG,CAAC,MAAO,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QACD,EAAE,CAAC,OAAO,CAAC;;;;;KAKV,CAAC,CAAC,GAAG,CACJ,gBAAgB,EAChB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,EAC9B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EACrB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EACxB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EACxB,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EACxB,cAAc,EACd,GAAG,EACH,GAAG,EACH,MAAO,CAAC,EAAE,CACX,CAAC;QACF,MAAM,CAAC,+BAA+B,CAAC,IAAI,CAAC;YAC1C,QAAQ,EAAE,MAAO,CAAC,EAAE;YACpB,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,WAAW,EAAE,MAAO,CAAC,YAAa;YAClC,QAAQ,EAAE,MAAO,CAAC,SAAU;YAC5B,MAAM,EAAE,2BAA2B;SACpC,CAAC,CAAC;IACL,CAAC;IAED,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;GAkBP,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sCAAsC,CAC7C,EAAqB,EACrB,MAAoC,EACpC,GAAW;IAEX,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;GAMvB,CAAC,CAAC,GAAG,EAAgC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsC,CAAC;IAC7D,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9E,IAAI,CAAC,YAAY;YAAE,SAAS;QAC5B,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC/B,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;QAC5G,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE;eAClE,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,CAAC;QACpE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACtC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,EAAE,CAAC,OAAO,CAAC;;;;;OAKV,CAAC,CAAC,GAAG,CACJ,MAAM,CAAC,EAAE,EACT,IAAI,CAAC,SAAS,CAAC;gBACb,GAAG,WAAW,CAAC,SAAS,CAAC,eAAe,CAAC;gBACzC,YAAY,EAAE;oBACZ,MAAM,EAAE,qCAAqC;oBAC7C,QAAQ,EAAE,MAAM,CAAC,EAAE;oBACnB,cAAc,EAAE,gBAAgB,CAAC,SAAS,CAAC,gBAAgB,CAAC;iBAC7D;aACF,CAAC,EACF,GAAG,EACH,SAAS,CAAC,EAAE,CACb,CAAC;YACF,EAAE,CAAC,OAAO,CAAC;;;;OAIV,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,CAAC,+BAA+B,CAAC,IAAI,CAAC;YAC1C,QAAQ,EAAE,MAAM,CAAC,EAAE;YACnB,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC;YACxD,WAAW,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;YACtC,QAAQ,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;YAChC,MAAM,EAAE,2BAA2B;SACpC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAAa;IACjD,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC;QACxB,GAAG,UAAU,CAAC,IAAI,CAAC;QACnB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,sCAAsC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;KAC7G,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;QACzB,GAAG,UAAU,CAAC,KAAK,CAAC;QACpB,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sCAAsC,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;KAC9G,CAAC,CAAC;IACH,IAAI,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAC5D,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,SAAS;QAAE,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC;IACrE,OAAO,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7E,MAAM,UAAU,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QAC5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,GAA6B;IACxD,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,KAAK,IAAI,CAAC,CAAC;IACrD,IAAI,8BAA8B,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE;QAAE,KAAK,IAAI,CAAC,CAAC;IACzG,IAAI,GAAG,CAAC,eAAe,KAAK,UAAU;QAAE,KAAK,IAAI,CAAC,CAAC;IACnD,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;IACpE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,0BAA0B,CACjC,EAAqB,EACrB,MAAoC;IAEpC,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;GAQvB,CAAC,CAAC,GAAG,EAKJ,CAAC;IACH,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CACvB,gFAAgF,CACjF,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAChC,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,QAAQ,EAAE,GAAG,CAAC,SAAS;YACvB,qBAAqB,EAAE,GAAG,CAAC,cAAc;YACzC,MAAM,EAAE,gBAAgB;SACzB,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,EAAqB,EACrB,MAAoC;IAEpC,EAAE,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;IACpE,MAAM,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAEzC,EAAE,CAAC,IAAI,CAAC;;;;;;;;;GASP,CAAC,CAAC;IACH,MAAM,CAAC,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAE7C,EAAE,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC5C,MAAM,aAAa,GAAG,EAAE,CAAC,OAAO,CAC9B,oFAAoF,CACrF,CAAC;IACF,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAAC;;;;GAI/B,CAAC,CAAC;IACH,EAAE,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,EAAE,CAAC,OAAO,CAC7B,sEAAsE,CACvE,CAAC,GAAG,EAAgF,CAAC;IACtF,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,OAAO,CAAC,eAAe,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC;QAC/E,CAAC;QACD,KAAK,MAAM,MAAM,IAAI,aAAa,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACnE,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACpG,IAAI,UAAU;gBAAE,MAAM,CAAC,OAAO,CAAC,eAAe,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC;QACtH,CAAC;IACH,CAAC;IAED,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,OAAO,CAAC;;;;;;GAM3C,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;IACjB,EAAE,CAAC,IAAI,CAAC;;;;GAIP,CAAC,CAAC;IACH,MAAM,CAAC,OAAO,CAAC,8BAA8B,GAAI,EAAE,CAAC,OAAO,CAAC;;;;;GAK3D,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;IACrC,MAAM,CAAC,OAAO,CAAC,sBAAsB,GAAI,EAAE,CAAC,OAAO,CAAC;;;GAGnD,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;AACvC,CAAC;AAED,SAAS,SAAS,CAAC,EAAqB,EAAE,KAAa;IACrD,OAAQ,EAAE,CAAC,OAAO,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAwB,CAAC,KAAK,CAAC;AACjG,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAoB;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAoB;IAC5C,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC1B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAmC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7H,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAoB;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;QAClD,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACnE,CAAC,CAAC,MAAiC;YACnC,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,MAAgB;IACrC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,MAAsC;IAC3D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"v12-to-v13.d.ts","sourceRoot":"","sources":["../../src/migrations/v12-to-v13.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CA+ClE"}
|