@devflow-tools/memory-engine 0.15.0 → 0.16.1

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.
Files changed (88) hide show
  1. package/README.md +27 -26
  2. package/dist/consolidator.d.ts.map +1 -1
  3. package/dist/consolidator.js +31 -146
  4. package/dist/consolidator.js.map +1 -1
  5. package/dist/embedding-provider.d.ts +21 -1
  6. package/dist/embedding-provider.d.ts.map +1 -1
  7. package/dist/embedding-provider.js +157 -24
  8. package/dist/embedding-provider.js.map +1 -1
  9. package/dist/event-grouper.d.ts.map +1 -1
  10. package/dist/event-grouper.js +43 -1
  11. package/dist/event-grouper.js.map +1 -1
  12. package/dist/hybrid-search.d.ts +1 -1
  13. package/dist/hybrid-search.d.ts.map +1 -1
  14. package/dist/hybrid-search.js +44 -43
  15. package/dist/hybrid-search.js.map +1 -1
  16. package/dist/index.d.ts +6 -9
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +3 -5
  19. package/dist/index.js.map +1 -1
  20. package/dist/lease-store.d.ts +33 -0
  21. package/dist/lease-store.d.ts.map +1 -0
  22. package/dist/lease-store.js +178 -0
  23. package/dist/lease-store.js.map +1 -0
  24. package/dist/lease-store.test.d.ts +2 -0
  25. package/dist/lease-store.test.d.ts.map +1 -0
  26. package/dist/lease-store.test.js +167 -0
  27. package/dist/lease-store.test.js.map +1 -0
  28. package/dist/memory-engine.d.ts +12 -18
  29. package/dist/memory-engine.d.ts.map +1 -1
  30. package/dist/memory-engine.js +220 -148
  31. package/dist/memory-engine.js.map +1 -1
  32. package/dist/memory-gate.d.ts +64 -39
  33. package/dist/memory-gate.d.ts.map +1 -1
  34. package/dist/memory-gate.js +379 -45
  35. package/dist/memory-gate.js.map +1 -1
  36. package/dist/memory-store.d.ts +36 -1
  37. package/dist/memory-store.d.ts.map +1 -1
  38. package/dist/memory-store.js +142 -21
  39. package/dist/memory-store.js.map +1 -1
  40. package/dist/migrations/v2-to-v3.d.ts +3 -0
  41. package/dist/migrations/v2-to-v3.d.ts.map +1 -0
  42. package/dist/migrations/v2-to-v3.js +122 -0
  43. package/dist/migrations/v2-to-v3.js.map +1 -0
  44. package/dist/migrations/v2-to-v3.test.d.ts +2 -0
  45. package/dist/migrations/v2-to-v3.test.d.ts.map +1 -0
  46. package/dist/migrations/v2-to-v3.test.js +88 -0
  47. package/dist/migrations/v2-to-v3.test.js.map +1 -0
  48. package/dist/observation-types.d.ts +7 -0
  49. package/dist/observation-types.d.ts.map +1 -0
  50. package/dist/observation-types.js +27 -0
  51. package/dist/observation-types.js.map +1 -0
  52. package/dist/project-validator.d.ts.map +1 -1
  53. package/dist/project-validator.js +1 -2
  54. package/dist/project-validator.js.map +1 -1
  55. package/dist/rule-extractor.d.ts +14 -0
  56. package/dist/rule-extractor.d.ts.map +1 -0
  57. package/dist/rule-extractor.js +109 -0
  58. package/dist/rule-extractor.js.map +1 -0
  59. package/dist/session-summarizer.d.ts +16 -8
  60. package/dist/session-summarizer.d.ts.map +1 -1
  61. package/dist/session-summarizer.js +171 -160
  62. package/dist/session-summarizer.js.map +1 -1
  63. package/dist/{signal-detector.d.ts → signal-analyzer.d.ts} +6 -2
  64. package/dist/signal-analyzer.d.ts.map +1 -0
  65. package/dist/{signal-detector.js → signal-analyzer.js} +34 -3
  66. package/dist/signal-analyzer.js.map +1 -0
  67. package/dist/signal-buffer.d.ts +3 -0
  68. package/dist/signal-buffer.d.ts.map +1 -1
  69. package/dist/signal-buffer.js.map +1 -1
  70. package/package.json +6 -6
  71. package/dist/extractor.d.ts +0 -39
  72. package/dist/extractor.d.ts.map +0 -1
  73. package/dist/extractor.js +0 -275
  74. package/dist/extractor.js.map +0 -1
  75. package/dist/l2-evaluator.d.ts +0 -31
  76. package/dist/l2-evaluator.d.ts.map +0 -1
  77. package/dist/l2-evaluator.js +0 -103
  78. package/dist/l2-evaluator.js.map +0 -1
  79. package/dist/llm-provider.d.ts +0 -9
  80. package/dist/llm-provider.d.ts.map +0 -1
  81. package/dist/llm-provider.js +0 -37
  82. package/dist/llm-provider.js.map +0 -1
  83. package/dist/ollama-checker.d.ts +0 -10
  84. package/dist/ollama-checker.d.ts.map +0 -1
  85. package/dist/ollama-checker.js +0 -43
  86. package/dist/ollama-checker.js.map +0 -1
  87. package/dist/signal-detector.d.ts.map +0 -1
  88. package/dist/signal-detector.js.map +0 -1
@@ -5,42 +5,31 @@ import { MemoryStore } from './memory-store.js';
5
5
  import { EmbeddingProvider } from './embedding-provider.js';
6
6
  import { HybridSearch } from './hybrid-search.js';
7
7
  import { GraphStore } from './graph-store.js';
8
- import { extractMemories, extractFromEvents } from './extractor.js';
9
- import { checkOllama } from './ollama-checker.js';
10
- import { setLLMClient } from './llm-provider.js';
11
- import { setL2LLMClient } from './l2-evaluator.js';
8
+ import { extractRuleMemories } from './rule-extractor.js';
9
+ import { observationDedupKey } from './observation-types.js';
10
+ function estimateMemoryTokens(text) {
11
+ const cjkCharacters = text.match(/[\u3400-\u9fff\uf900-\ufaff]/g)?.length ?? 0;
12
+ return Math.max(1, cjkCharacters + Math.ceil((text.length - cjkCharacters) / 4));
13
+ }
12
14
  export class MemoryEngine {
13
15
  store;
14
16
  embedder;
15
17
  searcher;
16
18
  graph;
17
19
  rootPath;
18
- constructor(rootPath, embedder, llmClient) {
20
+ constructor(rootPath, embedder) {
19
21
  this.rootPath = rootPath;
20
22
  this.store = new MemoryStore(rootPath);
21
23
  this.embedder = embedder ?? new EmbeddingProvider();
22
24
  this.searcher = new HybridSearch(this.store, this.embedder, this);
23
25
  this.graph = new GraphStore(this.store);
24
- if (llmClient) {
25
- setLLMClient(llmClient);
26
- setL2LLMClient(llmClient);
27
- console.log('[MemoryEngine] LLM client connected', { provider: llmClient.name });
28
- }
29
26
  }
30
27
  _initPromise = null;
31
28
  _embedderAvailable = true;
32
29
  async ensureInit() {
33
30
  if (!this._initPromise) {
34
31
  this._initPromise = (async () => {
35
- try {
36
- await Promise.race([
37
- this.embedder.initialize(),
38
- new Promise((_, reject) => setTimeout(() => reject(new Error('Embedding model download timeout')), 15000)),
39
- ]);
40
- }
41
- catch {
42
- this._embedderAvailable = false;
43
- }
32
+ this._embedderAvailable = await this.embedder.warmup();
44
33
  })();
45
34
  }
46
35
  return this._initPromise;
@@ -156,8 +145,8 @@ export class MemoryEngine {
156
145
  tool_count: events.length,
157
146
  error_count: events.filter(e => e.exit_code !== 0 && e.exit_code != null).length,
158
147
  });
159
- // Run summarizer to produce observations
160
- await this.summarizeSessionEvents(sessionId, this.rootPath);
148
+ // Events remain unprocessed MCP distillation is the primary LLM path.
149
+ // Consolidator still runs for cross-session aggregation (rule-based).
161
150
  // Run consolidator for cross-session aggregation
162
151
  try {
163
152
  const { consolidate } = await import('./consolidator.js');
@@ -179,7 +168,7 @@ export class MemoryEngine {
179
168
  const results = await this.searcher.search(query, { limit: 10 });
180
169
  return results.map(r => ({
181
170
  id: r.entry.id,
182
- source: r.entry.type,
171
+ source: r.entry.source === 'observation' ? 'observation' : r.entry.type,
183
172
  title: r.entry.title || r.entry.content.slice(0, 80),
184
173
  content: r.entry.content,
185
174
  embedding: [],
@@ -188,13 +177,164 @@ export class MemoryEngine {
188
177
  async upsertGlobal(_entries) {
189
178
  // Individual memories added via addMemory
190
179
  }
191
- async getAll() {
192
- const [project, user] = await Promise.all([
193
- this.getProjectContext(),
194
- this.getUserPreferences(),
195
- ]);
196
- const relevant = await this.searchGlobal('');
197
- return { project, user, relevant };
180
+ async getAll(options = {}) {
181
+ const normalized = typeof options === 'string' ? { query: options } : options;
182
+ const budgetTokens = Math.max(1, Math.floor(normalized.budgetTokens ?? 2000));
183
+ const [project, user] = await Promise.all([this.getProjectContext(), this.getUserPreferences()]);
184
+ const candidates = [];
185
+ if (normalized.query?.trim()) {
186
+ const results = await this.searcher.search(normalized.query.trim(), { limit: 100, recordAccess: false });
187
+ for (const result of results) {
188
+ const row = this.store.get(result.entry.id);
189
+ const observation = row ? null : this.store.getObservation(result.entry.id);
190
+ if (!row && !observation)
191
+ continue;
192
+ const source = row?.source ?? observation?.source ?? 'distill';
193
+ const scope = row?.scope ?? observation?.project ?? '';
194
+ if (normalized.scopes?.length && !normalized.scopes.includes(scope))
195
+ continue;
196
+ const importance = row ? Math.max(1, Math.min(10, Math.round(row.strength * 10))) : Math.max(1, Math.min(10, observation.importance));
197
+ candidates.push({
198
+ id: result.entry.id,
199
+ type: row?.type ?? observation.type,
200
+ title: row?.title ?? observation.title,
201
+ content: row?.content ?? observation.narrative,
202
+ source,
203
+ scope,
204
+ confidence: row?.confidence ?? observation.confidence,
205
+ importance,
206
+ score: result.score,
207
+ createdAt: row?.created_at ?? observation.timestamp,
208
+ memoryId: row ? row.id : undefined,
209
+ observationId: observation ? observation.id : undefined,
210
+ });
211
+ }
212
+ }
213
+ else {
214
+ for (const row of this.store.list().filter(memory => memory.status === 'active' || memory.status === 'approved')) {
215
+ if (normalized.scopes?.length && !normalized.scopes.includes(row.scope))
216
+ continue;
217
+ candidates.push({
218
+ id: row.id, type: row.type, title: row.title, content: row.content,
219
+ source: row.source, scope: row.scope, confidence: row.confidence,
220
+ importance: Math.max(1, Math.min(10, Math.round(row.strength * 10))), score: 0,
221
+ createdAt: row.created_at, memoryId: row.id,
222
+ });
223
+ }
224
+ for (const observation of this.store.listObservations()) {
225
+ if (normalized.scopes?.length && !normalized.scopes.includes(observation.project))
226
+ continue;
227
+ candidates.push({
228
+ id: observation.id, type: observation.type, title: observation.title,
229
+ content: observation.narrative, source: observation.source,
230
+ scope: observation.project, confidence: observation.confidence,
231
+ importance: Math.max(1, Math.min(10, observation.importance)), score: 0,
232
+ createdAt: observation.timestamp, observationId: observation.id,
233
+ });
234
+ }
235
+ }
236
+ const sourceWeights = {
237
+ explicit_intent: 1.5, manual: 1.2, distill: 1.0,
238
+ };
239
+ const maxHybridScore = Math.max(0, ...candidates.map(candidate => candidate.score));
240
+ const ranked = candidates.map(candidate => {
241
+ const row = candidate.memoryId ? this.store.get(candidate.memoryId) : this.store.getObservation(candidate.observationId);
242
+ const accessCount = row && 'access_count' in row ? row.access_count : 0;
243
+ const lastAccessedAt = row && 'last_accessed_at' in row ? row.last_accessed_at ?? undefined : row && 'updated_at' in row ? row.updated_at : undefined;
244
+ const effectiveConfidence = this.getEffectiveConfidence({
245
+ confidence: candidate.confidence,
246
+ createdAt: candidate.createdAt,
247
+ accessCount,
248
+ lastAccessedAt,
249
+ });
250
+ const sourceWeight = sourceWeights[candidate.source] ?? 0.8;
251
+ const hybridScore = maxHybridScore > 0 ? candidate.score / maxHybridScore : 0;
252
+ const score = normalized.purpose === 'session_bootstrap'
253
+ ? candidate.importance * sourceWeight * Math.exp(-Math.max(0, Date.now() - candidate.createdAt) / (90 * 86400000))
254
+ : 0.4 * hybridScore + 0.3 * (candidate.importance / 10) + 0.2 * effectiveConfidence + 0.1 * sourceWeight;
255
+ return { ...candidate, score };
256
+ }).sort((a, b) => b.score - a.score || b.createdAt - a.createdAt || a.id.localeCompare(b.id));
257
+ const memories = [];
258
+ const limit = Math.max(0, Math.floor(normalized.limit ?? Number.MAX_SAFE_INTEGER));
259
+ let tokenCount = 0;
260
+ for (const candidate of ranked) {
261
+ if (memories.length >= limit)
262
+ continue;
263
+ const itemTokens = estimateMemoryTokens(`${candidate.title}\n${candidate.content}`);
264
+ if (tokenCount + itemTokens > budgetTokens)
265
+ continue;
266
+ memories.push({
267
+ id: candidate.id, type: candidate.type, title: candidate.title,
268
+ content: candidate.content, source: candidate.source, scope: candidate.scope,
269
+ confidence: candidate.confidence, importance: candidate.importance,
270
+ score: Math.round(candidate.score * 10000) / 10000, createdAt: candidate.createdAt,
271
+ });
272
+ tokenCount += itemTokens;
273
+ try {
274
+ if (candidate.memoryId)
275
+ this.store.incrementAccess(candidate.memoryId);
276
+ if (candidate.observationId)
277
+ this.store.incrementObservationAccess(candidate.observationId);
278
+ }
279
+ catch { /* access reinforcement is non-critical */ }
280
+ }
281
+ return {
282
+ project,
283
+ user,
284
+ memories,
285
+ budgetTokens,
286
+ tokenCount,
287
+ truncatedCount: Math.max(0, ranked.length - memories.length),
288
+ purpose: normalized.purpose,
289
+ relevant: [],
290
+ };
291
+ }
292
+ async saveExplicitMemoryIntent(content, sessionId) {
293
+ await this.ensureInit();
294
+ const embedding = await this.embedder.embed(content);
295
+ const title = content.slice(0, 120);
296
+ const exact = this.store.findObservationByDedupKey(observationDedupKey('user_preference', title));
297
+ const duplicate = exact ?? this.store.findSemanticObservationDuplicate('user_preference', embedding, Date.now() - 90 * 86400000, 0.9);
298
+ if (duplicate) {
299
+ const promoted = this.store.promoteObservationToExplicitIntent(duplicate.id) ?? duplicate;
300
+ return {
301
+ id: promoted.id, type: promoted.type, title: promoted.title, content: promoted.narrative,
302
+ source: promoted.source, scope: promoted.project, confidence: promoted.confidence,
303
+ importance: promoted.importance, score: 1, createdAt: promoted.timestamp,
304
+ };
305
+ }
306
+ const row = this.store.addObservation({
307
+ sessionId: sessionId ?? `explicit:${Date.now()}`,
308
+ project: this.rootPath,
309
+ type: 'user_preference',
310
+ title,
311
+ narrative: content,
312
+ importance: 10,
313
+ confidence: 0.95,
314
+ source: 'explicit_intent',
315
+ });
316
+ this.store.insertObservationEmbedding(row.id, embedding);
317
+ return {
318
+ id: row.id, type: row.type, title: row.title, content: row.narrative,
319
+ source: row.source, scope: row.project, confidence: row.confidence,
320
+ importance: row.importance, score: 1, createdAt: row.timestamp,
321
+ };
322
+ }
323
+ listObservationMemories(source) {
324
+ return this.store.listObservations()
325
+ .filter(observation => !source || observation.source === source)
326
+ .map(observation => ({
327
+ id: observation.id,
328
+ type: observation.type,
329
+ title: observation.title,
330
+ content: observation.narrative,
331
+ source: observation.source,
332
+ scope: observation.project,
333
+ confidence: observation.confidence,
334
+ importance: observation.importance,
335
+ score: 0,
336
+ createdAt: observation.timestamp,
337
+ }));
198
338
  }
199
339
  async getCandidates() {
200
340
  const pending = this.store.getPending();
@@ -223,10 +363,14 @@ export class MemoryEngine {
223
363
  type: filter?.category,
224
364
  status: filter?.status,
225
365
  scope: filter?.scope,
366
+ source: filter?.source,
226
367
  });
227
368
  return rows.map(r => this._rowToRecord(r));
228
369
  }
229
370
  async addMemory(entry) {
371
+ return this.addMemoryWithStatus(entry);
372
+ }
373
+ async addMemoryWithStatus(entry, requestedStatus) {
230
374
  await this.ensureInit();
231
375
  // 1. SHA-256 content hash exact dedup
232
376
  const normalizedContent = entry.content
@@ -244,11 +388,12 @@ export class MemoryEngine {
244
388
  return h === hash;
245
389
  });
246
390
  if (dupe) {
391
+ this.reconcileRuleStatus(dupe, requestedStatus);
247
392
  this.store.incrementAccess(dupe.id);
248
393
  return this._rowToRecord(dupe);
249
394
  }
250
395
  // 2. Semantic dedup by embedding similarity + contradiction detection
251
- let insertStatus = 'approved';
396
+ let insertStatus = requestedStatus ?? 'approved';
252
397
  let newEmb = null;
253
398
  if (this._embedderAvailable) {
254
399
  try {
@@ -283,7 +428,7 @@ export class MemoryEngine {
283
428
  content: entry.content,
284
429
  originalText: entry.originalText,
285
430
  source: entry.source,
286
- status: bestMatch.status,
431
+ status: requestedStatus ?? bestMatch.status,
287
432
  confidence: entry.confidence ?? bestMatch.confidence,
288
433
  scope: entry.scope ?? bestMatch.scope,
289
434
  sessionId: entry.sessionId,
@@ -311,10 +456,11 @@ export class MemoryEngine {
311
456
  });
312
457
  return this._rowToRecord(newRow);
313
458
  }
459
+ this.reconcileRuleStatus(bestMatch, requestedStatus);
314
460
  this.store.incrementAccess(bestMatch.id);
315
461
  return this._rowToRecord(bestMatch);
316
462
  }
317
- if (bestSim > 0.7) {
463
+ if (bestSim > 0.7 && !requestedStatus) {
318
464
  insertStatus = 'pending';
319
465
  }
320
466
  }
@@ -343,6 +489,8 @@ export class MemoryEngine {
343
489
  reason: arbitration.reason,
344
490
  });
345
491
  const mergedRow = this.store.get(arbitration.conflictingId);
492
+ if (mergedRow)
493
+ this.reconcileRuleStatus(mergedRow, requestedStatus);
346
494
  return mergedRow ? this._rowToRecord(mergedRow) : null;
347
495
  }
348
496
  }
@@ -380,6 +528,12 @@ export class MemoryEngine {
380
528
  this.graph.buildEdges(row.id).catch(() => { });
381
529
  return this._rowToRecord(row);
382
530
  }
531
+ reconcileRuleStatus(row, requestedStatus) {
532
+ if (requestedStatus && row.source === 'rule_engine' && row.status !== requestedStatus) {
533
+ this.store.update(row.id, { status: requestedStatus });
534
+ row.status = requestedStatus;
535
+ }
536
+ }
383
537
  /** Map internal MemoryRow → SDK MemoryEntryRecord */
384
538
  _rowToRecord(row) {
385
539
  const sdkStatus = row.status === 'active' ? 'approved' :
@@ -440,35 +594,6 @@ export class MemoryEngine {
440
594
  async rejectMemory(id) {
441
595
  this.store.delete(id);
442
596
  }
443
- async extractMemories(events) {
444
- await this.ensureInit();
445
- const ollamaStatus = await checkOllama();
446
- const candidates = await extractMemories(events, ollamaStatus);
447
- const saved = [];
448
- for (const c of candidates) {
449
- const entry = await this.addMemory({
450
- category: c.category,
451
- content: c.content,
452
- originalText: c.originalText,
453
- source: 'auto',
454
- confidence: c.confidence,
455
- scope: '',
456
- });
457
- if (c.confidence >= 0.8) {
458
- await this.approveMemory(entry.id);
459
- entry.status = 'approved';
460
- }
461
- else {
462
- this.store.update(entry.id, { status: 'pending' });
463
- entry.status = 'pending';
464
- }
465
- saved.push(entry);
466
- }
467
- return saved;
468
- }
469
- async getOllamaStatus() {
470
- return checkOllama();
471
- }
472
597
  // --- Session Consolidation & Contradiction Detection ---
473
598
  async consolidateSession(sessionId) {
474
599
  const events = this.store.getSessionEvents(sessionId);
@@ -526,42 +651,7 @@ export class MemoryEngine {
526
651
  conflictingContent: content.slice(0, 100),
527
652
  similarity: sim,
528
653
  });
529
- // Try LLM arbitration
530
- try {
531
- const { callLLM } = await import('./llm-provider.js');
532
- const ARBITRATION_SYSTEM = `You are a knowledge arbitrator. Two memory entries appear to contradict each other.
533
- Decide what to do:
534
- - "keep": the new entry is correct, keep it as-is
535
- - "merge": merge the new information into the existing entry (provide the merged text)
536
- - "skip": the new entry is wrong or redundant, discard it
537
-
538
- Output ONLY a JSON object: {"decision":"keep|merge|skip","mergedContent":"...","confidence":0.0-1.0,"reason":"..."}`;
539
- const arbitrationPrompt = `Existing memory: "${existing.content}"
540
- New entry: "${content}"
541
- Similarity: ${sim.toFixed(3)}
542
- Has negation words: ${hasNegation}
543
-
544
- Decision:`;
545
- const response = await callLLM(ARBITRATION_SYSTEM, arbitrationPrompt);
546
- if (response.provider !== 'rules') {
547
- const result = JSON.parse(response.content);
548
- console.log('[MemoryEngine] Contradiction LLM arbitration', {
549
- decision: result.decision,
550
- confidence: result.confidence,
551
- });
552
- return {
553
- decision: result.decision,
554
- conflictingId: existing.id,
555
- mergedContent: result.mergedContent,
556
- confidence: result.confidence,
557
- reason: result.reason,
558
- };
559
- }
560
- }
561
- catch (err) {
562
- console.warn('[MemoryEngine] LLM arbitration failed, using rule fallback', { error: err.message });
563
- }
564
- // Rule fallback
654
+ // Rule-based arbitration
565
655
  if (hasNegation) {
566
656
  return {
567
657
  decision: 'merge',
@@ -580,17 +670,14 @@ Decision:`;
580
670
  }
581
671
  // --- Event Recording & Extraction Pipeline ---
582
672
  async recordEvent(event) {
583
- this.store.recordEvent({
584
- ...event,
585
- project: event.sessionId ? undefined : undefined,
586
- });
673
+ this.store.recordEvent(event);
587
674
  }
588
675
  recordSignals(signals) {
589
676
  this.store.recordSignals(signals);
590
677
  }
591
678
  getEffectiveConfidence(entry) {
592
679
  const now = Date.now();
593
- const ageDays = (now - entry.createdAt) / (1000 * 60 * 60 * 24);
680
+ const ageDays = (now - (entry.lastAccessedAt ?? entry.createdAt)) / (1000 * 60 * 60 * 24);
594
681
  const lambdaBase = 0.006;
595
682
  const accessCount = entry.accessCount ?? 0;
596
683
  const lambdaActual = lambdaBase / (1 + 0.1 * accessCount);
@@ -608,58 +695,43 @@ Decision:`;
608
695
  }
609
696
  }
610
697
  async extractFromEventsRealtime(events) {
611
- const deduped = events.filter(e => !this.store.eventWindowExists(e.tool, e.command));
612
- const extracted = extractFromEvents(deduped);
698
+ const deduped = events.filter(event => !this.store.eventWindowExists(event.tool, event.command));
699
+ return this.saveRuleMemories(extractRuleMemories(deduped));
700
+ }
701
+ async extractRecordedSessionEventsRealtime(sessionId) {
702
+ const events = this.store.getSessionEvents(sessionId).slice(-20).map(event => ({
703
+ tool: event.tool,
704
+ command: event.command ?? undefined,
705
+ exitCode: event.exit_code ?? undefined,
706
+ stderr: event.stderr ?? undefined,
707
+ }));
708
+ return this.saveRuleMemories(extractRuleMemories(events));
709
+ }
710
+ async saveRuleMemories(extracted) {
711
+ const existingByContent = new Map(this.store.list().map(memory => [memory.content, memory]));
613
712
  const saved = [];
614
- for (const c of extracted) {
615
- const entry = await this.addMemory({
616
- category: c.category,
617
- content: c.content,
618
- originalText: c.originalText,
713
+ for (const candidate of extracted) {
714
+ const desiredStatus = this.applyDecisionMatrix(candidate.category, candidate.confidence);
715
+ const existing = existingByContent.get(candidate.content);
716
+ if (existing) {
717
+ if (existing.source === 'rule_engine' && existing.status !== desiredStatus) {
718
+ this.store.update(existing.id, { status: desiredStatus });
719
+ existing.status = desiredStatus;
720
+ }
721
+ continue;
722
+ }
723
+ const entry = await this.addMemoryWithStatus({
724
+ category: candidate.category,
725
+ content: candidate.content,
726
+ originalText: candidate.originalText,
619
727
  source: 'rule_engine',
620
- confidence: c.confidence,
728
+ confidence: candidate.confidence,
621
729
  scope: '',
622
- });
623
- const desiredStatus = this.applyDecisionMatrix(c.category, c.confidence);
624
- if (entry.status !== desiredStatus) {
625
- this.store.update(entry.id, { status: desiredStatus });
626
- entry.status = desiredStatus;
627
- }
730
+ }, desiredStatus);
628
731
  saved.push(entry);
732
+ existingByContent.set(candidate.content, this.store.get(entry.id));
629
733
  }
630
734
  return saved;
631
735
  }
632
- async processSessionEvents() {
633
- await this.ensureInit();
634
- const unprocessed = this.store.getUnprocessedEvents();
635
- if (unprocessed.length === 0) {
636
- this.store.cleanupExpired();
637
- return { extracted: 0, approved: 0, pending: 0 };
638
- }
639
- // Use Session Summarizer pipeline (event grouping → triage → LLM → observations)
640
- const { summarizeSession } = await import('./session-summarizer.js');
641
- const result = await summarizeSession(this.store, `session:${Date.now().toString(36)}`, this.rootPath);
642
- // Mark events as processed
643
- this.store.markEventsProcessed(unprocessed.map(e => e.id));
644
- // Run cleanup
645
- this.store.cleanupExpired();
646
- const allMemories = this.store.list();
647
- console.log('[MemoryEngine] Session events processed', {
648
- observations: result.observationCount,
649
- provider: result.provider,
650
- latencyMs: result.latencyMs,
651
- });
652
- return {
653
- extracted: result.observationCount,
654
- approved: allMemories.filter(m => m.status === 'active' || m.status === 'approved').length,
655
- pending: allMemories.filter(m => m.status === 'pending').length,
656
- };
657
- }
658
- /** New: summarize a specific session's events into observations. */
659
- async summarizeSessionEvents(sessionId, projectRoot) {
660
- await this.ensureInit();
661
- const { summarizeSession } = await import('./session-summarizer.js');
662
- return summarizeSession(this.store, sessionId, projectRoot);
663
- }
664
736
  }
665
737
  //# sourceMappingURL=memory-engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"memory-engine.js","sourceRoot":"","sources":["../src/memory-engine.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAqB,iBAAiB,EAAyB,MAAM,gBAAgB,CAAC;AAC9G,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,OAAO,YAAY;IACd,KAAK,CAAc;IACpB,QAAQ,CAAoB;IAC5B,QAAQ,CAAe;IACvB,KAAK,CAAa;IAClB,QAAQ,CAAS;IAEzB,YAAY,QAAgB,EAAE,QAA4B,EAAE,SAAqB;QAC/E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClE,IAAI,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAExC,IAAI,SAAS,EAAE,CAAC;YACd,YAAY,CAAC,SAAS,CAAC,CAAC;YACxB,cAAc,CAAC,SAAS,CAAC,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAEO,YAAY,GAAyB,IAAI,CAAC;IAC1C,kBAAkB,GAAG,IAAI,CAAC;IAE1B,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;gBAC9B,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,IAAI,CAAC;wBACjB,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE;wBAC1B,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC9B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,EAAE,KAAK,CAAC,CAC/E;qBACF,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;gBAClC,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,2CAA2C;IAE3C,KAAK,CAAC,kBAAkB;QACtB,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAY,EAAE,MAAe;QACtD,8DAA8D;IAChE,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,MAAM,YAAY,GAAG,CAAC,mBAAmB,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAC9F,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACtD,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE;YAC7B,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC9B,GAAG,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC;gBAC3D,KAAK,EAAE,CAAC,CAAC,OAAO;gBAChB,MAAM,EAAE,CAAC,CAAC,MAA2B;gBACrC,UAAU,EAAE,CAAC,CAAC,UAAU;aACzB,CAAC,CAAC;YACH,QAAQ,EAAE,EAAE;SACb,CAAC;IACJ,CAAC;IAEO,mBAAmB,CAAC,OAAe,EAAE,QAAgB;QAC3D,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACpF,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IACrE,CAAC;IAEO,eAAe;QACrB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,CAAC;QAEpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YACvD,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7E,MAAM,QAAQ,GAAa,EAAE,CAAC;YAE9B,MAAM,KAAK,GAA2B;gBACpC,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,SAAS;gBACjB,cAAc,EAAE,QAAQ;gBACxB,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,KAAK;gBACZ,aAAa,EAAE,cAAc;gBAC7B,YAAY,EAAE,YAAY;gBAC1B,QAAQ,EAAE,QAAQ;gBAClB,aAAa,EAAE,SAAS;gBACxB,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,MAAM;gBACd,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,SAAS;gBACpB,OAAO,EAAE,OAAO;gBAChB,IAAI,EAAE,IAAI;gBACV,WAAW,EAAE,WAAW;gBACxB,SAAS,EAAE,SAAS;gBACpB,gBAAgB,EAAE,QAAQ;gBAC1B,gBAAgB,EAAE,QAAQ;gBAC1B,IAAI,EAAE,YAAY;gBAClB,QAAQ,EAAE,OAAO;gBACjB,SAAS,EAAE,SAAS;gBACpB,OAAO,EAAE,OAAO;gBAChB,WAAW,EAAE,QAAQ;gBACrB,UAAU,EAAE,UAAU;gBACtB,MAAM,EAAE,MAAM;gBACd,cAAc,EAAE,MAAM;aACvB,CAAC;YAEF,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;oBAChB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAA6B;QACnD,qDAAqD;IACvD,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3C,OAAO,GAAG,CAAC,WAAW,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,MAAM,EAAE,GAAG,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACrE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,UAAkB,EAAE,MAAoB;QAC5D,uDAAuD;IACzD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,SAAiB;QAChC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC;QAC/E,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,cAAc;QACd,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAEnC,mCAAmC;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE;YACvC,UAAU,EAAE,MAAM,CAAC,MAAM;YACzB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,MAAM;SACjF,CAAC,CAAC;QAEH,yCAAyC;QACzC,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5D,iDAAiD;QACjD,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAC1D,MAAM,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,4DAA4D;QAC5D,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,KAAa;QAC9B,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACjE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;YACd,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI;YACpB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACpD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO;YACxB,SAAS,EAAE,EAAE;SACd,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,QAA0B;QAC3C,0CAA0C;IAC5C,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACxC,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,kBAAkB,EAAE;SAC1B,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAC7C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACvB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,SAAkB;YACxB,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE;YAC3F,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,EAAU;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,EAAU;QAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,0BAA0B;IAE1B,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,OAA6B;QACvD,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,OAA+B,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAqB;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAC3B,IAAI,EAAE,MAAM,EAAE,QAAQ;YACtB,MAAM,EAAE,MAAM,EAAE,MAAM;YACtB,KAAK,EAAE,MAAM,EAAE,KAAK;SACrB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA6D;QAC3E,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,sCAAsC;QACtC,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO;aACpC,OAAO,CAAC,2BAA2B,EAAE,kBAAkB,CAAC;aACxD,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;aACnC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAChC,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO;iBAC1B,OAAO,CAAC,2BAA2B,EAAE,kBAAkB,CAAC;iBACxD,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;iBACnC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YACxC,MAAM,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjE,OAAO,CAAC,KAAK,IAAI,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,sEAAsE;QACtE,IAAI,YAAY,GAAW,UAAU,CAAC;QACtC,IAAI,MAAM,GAAwB,IAAI,CAAC;QACvC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAClD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACtD,IAAI,OAAO,GAAG,CAAC,CAAC;gBAChB,IAAI,SAAS,GAAyB,IAAI,CAAC;gBAC3C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;oBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC7C,IAAI,CAAC,MAAM;wBAAE,SAAS;oBACtB,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;oBAC3F,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;wBAAE,SAAS;oBAChD,IAAI,GAAG,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;oBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACvC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;wBAC/B,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;wBAC/B,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;oBACrC,CAAC;oBACD,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBACxD,IAAI,GAAG,GAAG,OAAO,EAAE,CAAC;wBAAC,OAAO,GAAG,GAAG,CAAC;wBAAC,SAAS,GAAG,CAAC,CAAC;oBAAC,CAAC;gBACtD,CAAC;gBACD,IAAI,OAAO,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;oBAChC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;wBACpD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;4BAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;4BACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;4BACxB,OAAO,EAAE,KAAK,CAAC,OAAO;4BACtB,YAAY,EAAE,KAAK,CAAC,YAAY;4BAChC,MAAM,EAAE,KAAK,CAAC,MAAM;4BACpB,MAAM,EAAE,SAAS,CAAC,MAAM;4BACxB,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS,CAAC,UAAU;4BACpD,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,KAAK;4BACrC,SAAS,EAAE,KAAK,CAAC,SAAS;yBAC3B,CAAC,CAAC;wBACH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;4BAC3B,OAAO,EAAE,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC;4BACrC,UAAU,EAAE,SAAS,CAAC,EAAE;yBACzB,CAAC,CAAC;wBACH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE;4BAC9B,MAAM,EAAE,YAAY;4BACpB,aAAa,EAAE,MAAM,CAAC,EAAE;yBACzB,CAAC,CAAC;wBACH,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;4BACvB,QAAQ,EAAE,SAAS,CAAC,EAAE;4BACtB,KAAK,EAAE,WAAW;4BAClB,UAAU,EAAE,SAAS,CAAC,OAAO;4BAC7B,UAAU,EAAE,KAAK,CAAC,OAAO;4BACzB,WAAW,EAAE,SAAS,CAAC,QAAQ;4BAC/B,MAAM,EAAE,iBAAiB,MAAM,CAAC,EAAE,EAAE;yBACrC,CAAC,CAAC;wBACH,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE;4BAC7C,KAAK,EAAE,SAAS,CAAC,EAAE;4BACnB,KAAK,EAAE,MAAM,CAAC,EAAE;4BAChB,OAAO,EAAE,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC;yBACtC,CAAC,CAAC;wBACH,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBACnC,CAAC;oBACD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBACzC,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBACtC,CAAC;gBACD,IAAI,OAAO,GAAG,GAAG,EAAE,CAAC;oBAClB,YAAY,GAAG,SAAS,CAAC;gBAC3B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,2BAA2B,CAAC,CAAC;QACzC,CAAC;QAED,sDAAsD;QACtD,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,+BAA+B,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBACtF,IAAI,WAAW,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;oBACpC,OAAO,CAAC,GAAG,CAAC,4DAA4D,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC1G,OAAO,IAAoC,CAAC;gBAC9C,CAAC;gBACD,IAAI,WAAW,CAAC,QAAQ,KAAK,OAAO,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;oBAClE,MAAM,aAAa,GAAG,WAAW,CAAC,aAAa,IAAI,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;oBACtE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;oBACzE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;oBACtD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;wBACvB,QAAQ,EAAE,WAAW,CAAC,aAAa;wBACnC,KAAK,EAAE,QAAQ;wBACf,UAAU,EAAE,aAAa;wBACzB,MAAM,EAAE,yBAAyB,WAAW,CAAC,MAAM,IAAI,SAAS,EAAE;qBACnE,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,4DAA4D,EAAE;wBACxE,aAAa,EAAE,WAAW,CAAC,aAAa;wBACxC,MAAM,EAAE,WAAW,CAAC,MAAM;qBAC3B,CAAC,CAAC;oBACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;oBAC5D,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAE,IAAqC,CAAC;gBAC3F,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,sEAAsE,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1H,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YACzB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,YAAY;YACpB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC;QAEH,6BAA6B;QAC7B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;YACvB,QAAQ,EAAE,GAAG,CAAC,EAAE;YAChB,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,KAAK,CAAC,OAAO;YACzB,WAAW,EAAE,KAAK,CAAC,UAAU,IAAI,GAAG;YACpC,MAAM,EAAE,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAE,KAAK,CAAC,MAAiB,KAAK,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM;SACvH,CAAC,CAAC;QAEH,2CAA2C;QAC3C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC5C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE9C,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,qDAAqD;IAC7C,YAAY,CAAC,GAAc;QACjC,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACtD,GAAG,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBACzC,GAAG,CAAC,MAAqC,CAAC;QAC5C,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,QAAQ,EAAE,GAAG,CAAC,IAAqC;YACnD,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;YAC5C,MAAM,EAAE,GAAG,CAAC,MAAqC;YACjD,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,SAAS,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;YACtC,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,UAAU,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;SAChG,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU,EAAE,OAAyE;QACtG,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/B,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;gBACvB,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,QAAQ;gBACf,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;gBACrD,UAAU,EAAE,OAAO,CAAC,OAAO;gBAC3B,WAAW,EAAE,GAAG,CAAC,UAAU;gBAC3B,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;gBACxD,MAAM,EAAE,eAAe;aACxB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;gBACvB,QAAQ,EAAE,EAAE;gBACZ,KAAK,EAAE,QAAQ;gBACf,UAAU,EAAE,GAAG,CAAC,OAAO;gBACvB,MAAM,EAAE,eAAe;aACxB,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;YACvB,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,WAAW;YAClB,MAAM,EAAE,eAAe;SACxB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,EAAU;QAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAsC;QAC1D,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,MAAM,WAAW,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,MAAa,EAAE,YAAY,CAAC,CAAC;QACtE,MAAM,KAAK,GAAwB,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;gBACjC,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,MAAM,EAAE,MAAM;gBACd,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;YACH,IAAI,CAAC,CAAC,UAAU,IAAI,GAAG,EAAE,CAAC;gBACxB,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAClC,KAAa,CAAC,MAAM,GAAG,UAAU,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;gBACnD,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;YAC3B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,WAAW,EAAE,CAAC;IACvB,CAAC;IAED,0DAA0D;IAE1D,KAAK,CAAC,kBAAkB,CAAC,SAAiB;QACxC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAErC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,MAAM,UAAU,GAAG,MAAM;aACtB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aACzE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;aACnB,MAAM,CAAC,OAAO,CAAC;aACf,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC;QAEvF,MAAM,OAAO,GAAG;YACd,oBAAoB,MAAM,CAAC,MAAM,sBAAsB,OAAO,CAAC,IAAI,iBAAiB;YACpF,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;YACxE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,qBAAqB,CAAC,CAAC,CAAC,IAAI;SAC3D,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;YACjC,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,MAAM;YACd,UAAU,EAAE,GAAG;YACf,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QAE3C,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,+BAA+B,CACnC,OAAe,EACf,SAAuB;QAEvB,MAAM,cAAc,GAAG,oEAAoE,CAAC;QAC5F,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5D,KAAK,MAAM,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACpD,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,MAAM,QAAQ,GAAG,IAAI,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC3F,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;gBAAE,SAAS;YAEnD,IAAI,GAAG,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;gBAClC,KAAK,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACrC,KAAK,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC;YACD,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACxD,IAAI,GAAG,GAAG,IAAI;gBAAE,SAAS;YAEzB,OAAO,CAAC,GAAG,CAAC,uCAAuC,EAAE;gBACnD,QAAQ,EAAE,QAAQ,CAAC,EAAE;gBACrB,kBAAkB,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBACzC,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;YAEH,sBAAsB;YACtB,IAAI,CAAC;gBACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBACtD,MAAM,kBAAkB,GAAG;;;;;;oHAMiF,CAAC;gBAE7G,MAAM,iBAAiB,GAAG,qBAAqB,QAAQ,CAAC,OAAO;cACzD,OAAO;cACP,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;sBACN,WAAW;;UAEvB,CAAC;gBAEH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;gBACtE,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;oBAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAC5C,OAAO,CAAC,GAAG,CAAC,8CAA8C,EAAE;wBAC1D,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;qBAC9B,CAAC,CAAC;oBACH,OAAO;wBACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,aAAa,EAAE,QAAQ,CAAC,EAAE;wBAC1B,aAAa,EAAE,MAAM,CAAC,aAAa;wBACnC,UAAU,EAAE,MAAM,CAAC,UAAU;wBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;qBACtB,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC,4DAA4D,EAAE,EAAE,KAAK,EAAG,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;YAChH,CAAC;YAED,gBAAgB;YAChB,IAAI,WAAW,EAAE,CAAC;gBAChB,OAAO;oBACL,QAAQ,EAAE,OAAO;oBACjB,aAAa,EAAE,QAAQ,CAAC,EAAE;oBAC1B,aAAa,EAAE,GAAG,QAAQ,CAAC,OAAO,gBAAgB,OAAO,EAAE;oBAC3D,UAAU,EAAE,GAAG;oBACf,MAAM,EAAE,wBAAwB;iBACjC,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;QACpF,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IAC9B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,gDAAgD;IAEhD,KAAK,CAAC,WAAW,CAAC,KAAkN;QAClO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;YACrB,GAAG,KAAK;YACR,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACjD,CAAC,CAAC;IACL,CAAC;IAED,aAAa,CAAC,OAAiB;QAC7B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,sBAAsB,CAAC,KAA+F;QACpH,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,KAAK,CAAC;QACzB,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC,CAAC,GAAG,GAAG,GAAG,WAAW,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED,mBAAmB,CAAC,QAAgB,EAAE,UAAkB;QACtD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,YAAY,CAAC,CAAU,OAAO,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/E,KAAK,gBAAgB,CAAC,CAAM,OAAO,SAAS,CAAC;YAC7C,KAAK,gBAAgB,CAAC,CAAM,OAAO,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9E,KAAK,mBAAmB,CAAC,CAAG,OAAO,UAAU,CAAC;YAC9C,KAAK,UAAU,CAAC,CAAY,OAAO,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/E,KAAK,UAAU,CAAC,CAAY,OAAO,SAAS,CAAC;YAC7C,OAAO,CAAC,CAAoB,OAAO,SAAS,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,MAAqF;QACnH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;QACrF,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAwB,EAAE,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC;gBACjC,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,MAAM,EAAE,aAAa;gBACrB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,KAAK,EAAE,EAAE;aACV,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;YACzE,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;gBACvD,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;YAC/B,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,oBAAoB;QACxB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QAExB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QACtD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC5B,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACnD,CAAC;QAED,iFAAiF;QACjF,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,IAAI,CAAC,KAAK,EACV,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EACpC,IAAI,CAAC,QAAQ,CACd,CAAC;QAEF,2BAA2B;QAC3B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3D,cAAc;QACd,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,yCAAyC,EAAE;YACrD,YAAY,EAAE,MAAM,CAAC,gBAAgB;YACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,gBAAgB;YAClC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,MAAM;YAC1F,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;SAChE,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,sBAAsB,CAAC,SAAiB,EAAE,WAAmB;QACjE,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACrE,OAAO,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC;CACF"}
1
+ {"version":3,"file":"memory-engine.js","sourceRoot":"","sources":["../src/memory-engine.ts"],"names":[],"mappings":"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"}