@noyrax/5d-database-plugin 0.1.14-beta.10 → 0.1.14-beta.12

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.
@@ -111,6 +111,11 @@ class EmbeddingPipeline {
111
111
  const toGenerate = [];
112
112
  for (const entity of entities) {
113
113
  const content = await this.extractContentForEmbedding(dimension, entity);
114
+ // Überspringe leere Content (z.B. extrem große Dateien, die nicht embeddet werden können)
115
+ if (!content || content.trim().length === 0) {
116
+ console.warn(`[EmbeddingPipeline] Skipping embedding for entity ${entity.id} in dimension ${dimension} (empty content)`);
117
+ continue;
118
+ }
114
119
  const contentHash = this.computeContentHash(content);
115
120
  const existing = existingMap.get(entity.id);
116
121
  if (!existing || existing.content_hash !== contentHash) {
@@ -231,18 +236,29 @@ class EmbeddingPipeline {
231
236
  const module = entity;
232
237
  let content = module.content_markdown;
233
238
  // TOKEN-LIMIT-CHECK: OpenAI text-embedding-3-small hat 8192 Token Context Length
234
- // Rough estimate: 1 token ≈ 4 characters (konservativ)
235
- const tokenEstimate = Math.ceil(content.length / 4);
239
+ const tokenEstimate = this.estimateTokens(content);
236
240
  const maxTokens = 8000; // Sicher unter 8192 Token-Limit
237
241
  if (tokenEstimate > maxTokens) {
238
242
  console.warn(`[EmbeddingPipeline] Large module documentation: ${module.file_path} (~${tokenEstimate} tokens, max ${maxTokens})`);
243
+ // Für extrem große Dateien (>15000 Tokens): Verwende hierarchical Strategie automatisch
244
+ if (tokenEstimate > 15000) {
245
+ console.warn(`[EmbeddingPipeline] Extremely large module (>15000 tokens), using hierarchical strategy`);
246
+ content = this.extractModuleStructure(content);
247
+ const newTokenEstimate = this.estimateTokens(content);
248
+ if (newTokenEstimate > maxTokens) {
249
+ console.error(`[EmbeddingPipeline] Module still too large after hierarchical extraction (~${newTokenEstimate} tokens). Skipping embedding.`);
250
+ // Überspringe Embedding für diese Datei - gib leeren String zurück
251
+ return '';
252
+ }
253
+ return content;
254
+ }
239
255
  // STRATEGIE-AUSWAHL: Intelligente Kürzung, Hierarchische Embeddings, oder Summarization
240
256
  const strategy = process.env.EMBEDDING_STRATEGY || 'optimize';
241
257
  if (strategy === 'summarize' && this.moduleSummarizer.isConfigured()) {
242
258
  console.warn(`[EmbeddingPipeline] Using LLM-based summarization strategy...`);
243
259
  try {
244
260
  content = await this.moduleSummarizer.summarizeModuleContent(content, module.file_path);
245
- const newTokenEstimate = Math.ceil(content.length / 4);
261
+ const newTokenEstimate = this.estimateTokens(content);
246
262
  console.log(`[EmbeddingPipeline] Summarized to ~${newTokenEstimate} tokens`);
247
263
  }
248
264
  catch (error) {
@@ -279,9 +295,15 @@ class EmbeddingPipeline {
279
295
  case 'W': {
280
296
  // W (ADRs): {title} {content} {linked_files}
281
297
  const adr = entity;
282
- // Extract linked files from content (simple pattern matching)
283
- const fileMatches = adr.content_markdown.match(/src\/[^\s\)]+/g) || [];
284
- const filesStr = fileMatches.length > 0 ? `\nLinked files: ${fileMatches.join(', ')}` : '';
298
+ // Get file mappings from database (instead of regex pattern matching)
299
+ const adrDb = await this.dbManager.getDatabase('W');
300
+ const { AdrRepository } = await Promise.resolve().then(() => __importStar(require('../repositories/adr-repository')));
301
+ const adrRepo = new AdrRepository(adrDb);
302
+ const fileMappings = await adrRepo.getAdrFileMappings(adr.id);
303
+ // Structured file list
304
+ const filesStr = fileMappings.length > 0
305
+ ? `\n\nLinked files: ${fileMappings.map(m => m.file_path).join(', ')}`
306
+ : '';
285
307
  return `${adr.title}\n${adr.content_markdown}${filesStr}`;
286
308
  }
287
309
  case 'T': {
@@ -317,9 +339,32 @@ class EmbeddingPipeline {
317
339
  computeContentHash(content) {
318
340
  return crypto.createHash('sha256').update(content).digest('hex');
319
341
  }
342
+ /**
343
+ * Estimates token count from content length (Markdown-optimized).
344
+ * Markdown has different token densities:
345
+ * - Code blocks: ~3 chars/token (more tokens per char due to formatting)
346
+ * - Normal text: ~4 chars/token (standard estimate)
347
+ * - Tables: ~2.5 chars/token (many separators increase token count)
348
+ */
349
+ estimateTokens(content) {
350
+ // Match code blocks (```...```)
351
+ const codeBlockMatches = content.match(/```[\s\S]*?```/g) || [];
352
+ const codeBlockLength = codeBlockMatches.reduce((sum, block) => sum + block.length, 0);
353
+ // Match table rows (|...|)
354
+ const tableMatches = content.match(/\|.*\|/g) || [];
355
+ const tableLength = tableMatches.reduce((sum, line) => sum + line.length, 0);
356
+ // Normal text (everything else)
357
+ const normalLength = content.length - codeBlockLength - tableLength;
358
+ // Calculate tokens for each type
359
+ const codeTokens = Math.ceil(codeBlockLength / 3); // Code blocks: ~3 chars/token
360
+ const tableTokens = Math.ceil(tableLength / 2.5); // Tables: ~2.5 chars/token
361
+ const normalTokens = Math.ceil(normalLength / 4); // Normal text: ~4 chars/token
362
+ return codeTokens + tableTokens + normalTokens;
363
+ }
320
364
  /**
321
365
  * Optimizes module documentation for embedding while preserving semantic meaning.
322
366
  * Strategy: Keep structure and important information, remove detailed tables.
367
+ * Aggressively truncates code blocks to signatures only, limits table rows.
323
368
  *
324
369
  * @param content Full markdown content
325
370
  * @param maxTokens Maximum tokens allowed
@@ -328,95 +373,142 @@ class EmbeddingPipeline {
328
373
  optimizeModuleContentForEmbedding(content, maxTokens) {
329
374
  const lines = content.split('\n');
330
375
  const optimized = [];
331
- let currentTokenCount = 0;
332
- const maxChars = maxTokens * 4; // Rough estimate
333
- let inTable = false;
376
+ let currentTokens = 0;
377
+ const maxTokensWithMargin = maxTokens * 0.95; // 5% Margin für Sicherheit
378
+ let inCodeBlock = false;
379
+ let codeBlockStartLine = -1;
380
+ let codeBlockOpener = '';
334
381
  let interfaceCount = 0;
335
382
  let methodCount = 0;
383
+ let tableRowCount = 0;
336
384
  let tableHeaderSkipped = false;
337
- for (const line of lines) {
338
- const lineTokens = Math.ceil(line.length / 4);
385
+ for (let i = 0; i < lines.length; i++) {
386
+ const line = lines[i];
387
+ const lineTokens = this.estimateTokens(line);
388
+ // Prüfe Token-Anzahl während Iteration (frühe Kürzung)
389
+ if (currentTokens + lineTokens > maxTokensWithMargin) {
390
+ // Versuche bei logischem Punkt zu kürzen
391
+ if (inCodeBlock) {
392
+ // Kürze Code-Block: Behalte nur erste Zeile (Signatur)
393
+ if (codeBlockStartLine >= 0 && i > codeBlockStartLine) {
394
+ const codeBlockLines = lines.slice(codeBlockStartLine + 1, i);
395
+ const firstLine = codeBlockLines.find(l => l.trim() && !l.startsWith('```'));
396
+ if (firstLine) {
397
+ optimized.push(codeBlockOpener);
398
+ optimized.push(firstLine);
399
+ optimized.push('```');
400
+ currentTokens += this.estimateTokens(codeBlockOpener + '\n' + firstLine + '\n```');
401
+ }
402
+ }
403
+ inCodeBlock = false;
404
+ codeBlockStartLine = -1;
405
+ }
406
+ // Füge Truncation-Marker hinzu
407
+ optimized.push('\n[... content optimized for embedding - truncated to fit token limit ...]');
408
+ break;
409
+ }
339
410
  // Behalte Header (wichtig für Struktur)
340
411
  if (line.startsWith('#') || line.startsWith('##')) {
341
412
  optimized.push(line);
342
- currentTokenCount += lineTokens;
413
+ currentTokens += lineTokens;
343
414
  continue;
344
415
  }
345
416
  // Behalte Interface/Method-Namen (wichtig für Semantic Search)
346
417
  if (line.startsWith('### interface:') || line.startsWith('### method:') || line.startsWith('### class:') || line.startsWith('### variable:')) {
347
418
  optimized.push(line);
348
- currentTokenCount += lineTokens;
419
+ currentTokens += lineTokens;
349
420
  if (line.includes('interface:'))
350
421
  interfaceCount++;
351
422
  if (line.includes('method:'))
352
423
  methodCount++;
424
+ tableRowCount = 0;
353
425
  tableHeaderSkipped = false;
354
426
  continue;
355
427
  }
356
- // Behalte Code-Blöcke (Signaturen sind wichtig)
428
+ // Code-Blöcke: Behalte nur erste Zeile (Signatur)
357
429
  if (line.startsWith('```')) {
358
- optimized.push(line);
359
- currentTokenCount += lineTokens;
360
- inTable = !inTable;
430
+ if (!inCodeBlock) {
431
+ // Code-Block startet
432
+ inCodeBlock = true;
433
+ codeBlockStartLine = i;
434
+ codeBlockOpener = line;
435
+ optimized.push(line); // Behalte ``` opener
436
+ currentTokens += lineTokens;
437
+ }
438
+ else {
439
+ // Code-Block endet
440
+ inCodeBlock = false;
441
+ optimized.push(line); // Behalte ``` closer
442
+ currentTokens += lineTokens;
443
+ codeBlockStartLine = -1;
444
+ }
445
+ continue;
446
+ }
447
+ if (inCodeBlock) {
448
+ // In Code-Block: Behalte nur erste Zeile (Signatur)
449
+ if (codeBlockStartLine === i - 1) {
450
+ // Erste Zeile nach ``` opener
451
+ optimized.push(line);
452
+ currentTokens += lineTokens;
453
+ }
454
+ // Überspringe weitere Zeilen im Code-Block
361
455
  continue;
362
456
  }
363
- // OPTIMIERUNG: Überspringe detaillierte Tabellen für große Dokumentationen
364
- // (Eigenschaften-Tabellen, Parameter-Tabellen sind weniger wichtig für Semantic Search)
457
+ // Tabellen: Aggressiver kürzen (max. 3 Zeilen pro Tabelle)
365
458
  if (line.startsWith('|')) {
366
- // Behalte Tabellen-Header, überspringe Daten-Zeilen für große Dokumentationen
367
- if (interfaceCount > 10 || methodCount > 20) {
368
- // Überspringe Daten-Zeilen (nicht Header)
369
- if (line.includes('---')) {
370
- optimized.push(line); // Behalte Separator
371
- currentTokenCount += lineTokens;
372
- tableHeaderSkipped = true;
373
- }
374
- else if (!tableHeaderSkipped) {
375
- // Erste Zeile nach Header: Behalte (wichtig für Kontext)
376
- optimized.push(line);
377
- currentTokenCount += lineTokens;
378
- tableHeaderSkipped = true;
379
- }
380
- // Überspringe weitere Daten-Zeilen
381
- continue;
459
+ if (line.includes('---')) {
460
+ // Tabellen-Separator: Behalte
461
+ optimized.push(line);
462
+ currentTokens += lineTokens;
463
+ tableRowCount = 0;
464
+ tableHeaderSkipped = false;
382
465
  }
383
466
  else {
384
- // Für kleinere Dokumentationen: Behalte alles
385
- optimized.push(line);
386
- currentTokenCount += lineTokens;
467
+ // Tabellen-Zeile: Überspringe nach 3 Zeilen
468
+ if (tableRowCount < 3) {
469
+ optimized.push(line);
470
+ currentTokens += lineTokens;
471
+ tableRowCount++;
472
+ }
473
+ // Überspringe weitere Zeilen
387
474
  }
388
475
  continue;
389
476
  }
390
- // Reset table header flag bei neuen Abschnitten
391
- if (line.trim() === '' && tableHeaderSkipped) {
392
- tableHeaderSkipped = false;
477
+ // Behalte wichtige Kommentare (change markers)
478
+ if (line.trim().startsWith('<!--') && line.includes('change:')) {
479
+ optimized.push(line);
480
+ currentTokens += lineTokens;
481
+ continue;
393
482
  }
394
- // Behalte alle anderen Zeilen (Kommentare, Beschreibungen)
395
- optimized.push(line);
396
- currentTokenCount += lineTokens;
397
- // Falls immer noch zu groß: Kürze bei logischem Punkt
398
- if (currentTokenCount > maxChars * 0.9) {
399
- // Versuche bei Interface/Method-Ende zu kürzen
400
- const currentContent = optimized.join('\n');
401
- const lastInterfaceEnd = currentContent.lastIndexOf('```');
402
- if (lastInterfaceEnd > maxChars * 0.7) {
403
- const truncated = currentContent.substring(0, lastInterfaceEnd + 3);
404
- return truncated + '\n\n[... content optimized for embedding - details removed ...]';
405
- }
483
+ // Behalte leere Zeilen (Struktur)
484
+ if (line.trim() === '') {
485
+ optimized.push(line);
486
+ continue;
406
487
  }
488
+ // Für sehr große Dokumentationen: Überspringe normale Text-Zeilen
489
+ if (interfaceCount > 20 || methodCount > 50) {
490
+ // Überspringe normale Text-Zeilen (nicht Header, nicht Code, nicht Tabellen)
491
+ continue;
492
+ }
493
+ // Behalte alle anderen Zeilen
494
+ optimized.push(line);
495
+ currentTokens += lineTokens;
407
496
  }
408
497
  const optimizedContent = optimized.join('\n');
409
- const finalTokenCount = Math.ceil(optimizedContent.length / 4);
410
- // Falls immer noch zu groß: Kürze am Ende
411
- if (finalTokenCount > maxTokens) {
498
+ const finalTokens = this.estimateTokens(optimizedContent);
499
+ // Finale Prüfung: Falls immer noch zu groß, kürze aggressiv
500
+ if (finalTokens > maxTokens) {
501
+ const maxChars = maxTokens * 3; // Konservativ: 3 chars/token
412
502
  const truncated = optimizedContent.substring(0, maxChars);
413
- return truncated + '\n\n[... content optimized for embedding ...]';
503
+ return truncated + '\n\n[... content optimized for embedding - final truncation ...]';
414
504
  }
415
505
  return optimizedContent;
416
506
  }
417
507
  /**
418
508
  * Extracts only the structure of a module (header, interface/method names, signatures).
419
509
  * Used for hierarchical embeddings where details are in Y-Dimension (Symbols).
510
+ * Only keeps: Headers, interface/method/class/variable names, first line of code blocks (signatures).
511
+ * Removes: All tables, code block bodies, normal text.
420
512
  *
421
513
  * @param content Full markdown content
422
514
  * @returns Module structure (header + names + signatures, no details)
@@ -425,35 +517,40 @@ class EmbeddingPipeline {
425
517
  const lines = content.split('\n');
426
518
  const structure = [];
427
519
  let inCodeBlock = false;
428
- let codeBlockContent = [];
429
- let lastHeader = '';
520
+ let codeBlockOpener = '';
521
+ let codeBlockFirstLine = null;
430
522
  for (let i = 0; i < lines.length; i++) {
431
523
  const line = lines[i];
432
524
  // Behalte alle Header
433
525
  if (line.startsWith('#') || line.startsWith('##') || line.startsWith('###')) {
434
526
  structure.push(line);
435
- lastHeader = line;
436
527
  continue;
437
528
  }
438
- // Behalte Code-Blöcke (Signaturen sind wichtig)
529
+ // Code-Blöcke: Behalte nur erste Zeile (Signatur)
439
530
  if (line.startsWith('```')) {
440
531
  if (inCodeBlock) {
441
532
  // Ende des Code-Blocks: Behalte nur erste Zeile (Signatur)
442
- if (codeBlockContent.length > 0) {
443
- structure.push('```');
444
- structure.push(codeBlockContent[0]); // Nur erste Zeile (Signatur)
533
+ if (codeBlockFirstLine !== null) {
534
+ structure.push(codeBlockOpener);
535
+ structure.push(codeBlockFirstLine);
445
536
  structure.push('```');
446
537
  }
447
- codeBlockContent = [];
538
+ codeBlockFirstLine = null;
448
539
  inCodeBlock = false;
449
540
  }
450
541
  else {
542
+ // Code-Block startet
451
543
  inCodeBlock = true;
544
+ codeBlockOpener = line;
452
545
  }
453
546
  continue;
454
547
  }
455
548
  if (inCodeBlock) {
456
- codeBlockContent.push(line);
549
+ // In Code-Block: Behalte nur erste Zeile (Signatur)
550
+ if (codeBlockFirstLine === null && line.trim() && !line.startsWith('```')) {
551
+ codeBlockFirstLine = line;
552
+ }
553
+ // Überspringe weitere Zeilen im Code-Block
457
554
  continue;
458
555
  }
459
556
  // Überspringe Tabellen komplett (Details sind in Y-Dimension)
@@ -465,12 +562,17 @@ class EmbeddingPipeline {
465
562
  structure.push(line);
466
563
  continue;
467
564
  }
468
- // Behalte leere Zeilen für Struktur
565
+ // Behalte leere Zeilen für Struktur (max. 2 aufeinanderfolgende)
469
566
  if (line.trim() === '') {
567
+ const lastLine = structure[structure.length - 1];
568
+ if (lastLine && lastLine.trim() === '') {
569
+ // Bereits eine leere Zeile, überspringe weitere
570
+ continue;
571
+ }
470
572
  structure.push(line);
471
573
  continue;
472
574
  }
473
- // Überspringe alle anderen Details
575
+ // Überspringe alle anderen Details (normaler Text, Beschreibungen, etc.)
474
576
  }
475
577
  return structure.join('\n');
476
578
  }
@@ -1 +1 @@
1
- {"version":3,"file":"embedding-pipeline.js","sourceRoot":"","sources":["../../src/embedding/embedding-pipeline.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,+EAAsF;AACtF,kDAA8C;AAC9C,kDAA8C;AAC9C,0DAAsD;AACtD,4CAAwC;AACxC,kDAA8C;AAM9C,2DAAuD;AACvD,+BAAoC;AACpC,+CAAiC;AAEjC;;;GAGG;AACH,MAAa,iBAAiB;IAU1B,YAAY,SAAyB,EAAE,kBAAsC;QACzE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,IAAI,8BAAa,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,gBAAgB,GAAG,IAAI,oCAAgB,EAAE,CAAC;IACnD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB;QACjC,OAAO,CAAC,GAAG,CAAC,0DAA0D,QAAQ,EAAE,CAAC,CAAC;QAElF,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,EAAE,CAAC;YAC1C,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;YACvF,OAAO;QACX,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QAEjD,sBAAsB;QACtB,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/C,MAAM,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAE/C,OAAO,CAAC,GAAG,CAAC,2DAA2D,QAAQ,EAAE,CAAC,CAAC;IACvF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACf,SAAsC,EACtC,QAAgB,EAChB,KAAa;QAEb,OAAO,CAAC,GAAG,CAAC,yCAAyC,SAAS,eAAe,QAAQ,EAAE,CAAC,CAAC;QAEzF,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,aAAa,GAAG,IAAI,0CAAmB,CAAC,EAAE,CAAC,CAAC;QAElD,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;QACpD,MAAM,iBAAiB,GAAG,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QAE7D,IAAI,QAAQ,EAAE,CAAC;YACX,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,kDAAkD,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/F,CAAC;iBAAM,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,yGAAyG,CAAC,CAAC;YAC5H,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,IAAI,CAAC,gIAAgI,CAAC,CAAC;QACnJ,CAAC;QAED,sCAAsC;QACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,6BAA6B,QAAQ,CAAC,MAAM,0BAA0B,SAAS,EAAE,CAAC,CAAC;QAE/F,0BAA0B;QAC1B,MAAM,kBAAkB,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7F,MAAM,WAAW,GAAG,IAAI,GAAG,EAAqB,CAAC;QACjD,KAAK,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;YACnC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,+CAA+C;QAC/C,MAAM,UAAU,GAAiE,EAAE,CAAC;QAEpF,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACzE,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAErD,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,YAAY,KAAK,WAAW,EAAE,CAAC;gBACrD,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC;YACtD,CAAC;QACL,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,wCAAwC,UAAU,CAAC,MAAM,6BAA6B,SAAS,EAAE,CAAC,CAAC;QAE/G,wDAAwD;QACxD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvC,SAAS;gBACT,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;gBACxB,OAAO,EAAE,IAAI,CAAC,OAAO;aACxB,CAAC,CAAC,CAAC;YAEJ,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;YAE3E,kBAAkB;YAClB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC5B,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACvD,IAAI,CAAC,eAAe,EAAE,CAAC;oBACnB,OAAO,CAAC,IAAI,CAAC,yDAAyD,IAAI,CAAC,MAAM,CAAC,EAAE,iBAAiB,SAAS,EAAE,CAAC,CAAC;oBAClH,SAAS;gBACb,CAAC;gBAED,sEAAsE;gBACtE,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;gBAE3E,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACjD,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAE9D,IAAI,WAAmB,CAAC;gBACxB,IAAI,QAAQ,EAAE,CAAC;oBACX,4BAA4B;oBAC5B,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;oBACzC,QAAQ,CAAC,gBAAgB,GAAG,YAAY,CAAC;oBACzC,QAAQ,CAAC,UAAU,GAAG,GAAG,CAAC;oBAC1B,MAAM,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBACrC,WAAW,GAAG,QAAQ,CAAC,EAAE,CAAC;gBAC9B,CAAC;qBAAM,CAAC;oBACJ,uBAAuB;oBACvB,MAAM,SAAS,GAAc;wBACzB,EAAE,EAAE,IAAA,SAAM,GAAE;wBACZ,SAAS,EAAE,QAAQ;wBACnB,SAAS;wBACT,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE;wBACzB,WAAW,EAAE,UAAU;wBACvB,YAAY,EAAE,IAAI,CAAC,WAAW;wBAC9B,eAAe,EAAE,KAAK;wBACtB,gBAAgB,EAAE,YAAY;wBAC9B,UAAU,EAAE,GAAG;wBACf,UAAU,EAAE,GAAG;qBAClB,CAAC;oBACF,MAAM,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBACtC,WAAW,GAAG,SAAS,CAAC,EAAE,CAAC;gBAC/B,CAAC;gBAED,+CAA+C;gBAC/C,IAAI,iBAAiB,EAAE,CAAC;oBACpB,IAAI,CAAC;wBACD,qDAAqD;wBACrD,MAAM,WAAW,GAAG,IAAI,YAAY,CAChC,YAAY,CAAC,MAAM,EACnB,YAAY,CAAC,UAAU,EACvB,YAAY,CAAC,MAAM,GAAG,CAAC,CAC1B,CAAC;wBACF,MAAM,QAAS,CAAC,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;oBAC9D,CAAC;oBAAC,OAAO,aAAa,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,CAAC,gDAAgD,WAAW,wBAAwB,aAAa,EAAE,CAAC,CAAC;wBACjH,wDAAwD;oBAC5D,CAAC;gBACL,CAAC;YACL,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,4CAA4C,UAAU,CAAC,MAAM,yCAAyC,SAAS,EAAE,CAAC,CAAC;QACnI,CAAC;QAED,8EAA8E;QAC9E,mFAAmF;QACnF,wDAAwD;QACxD,IAAI,iBAAiB,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,OAAO,CAAC,GAAG,CAAC,+BAA+B,kBAAkB,CAAC,MAAM,yDAAyD,SAAS,EAAE,CAAC,CAAC;YAC1I,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,WAAW,GAAG,CAAC,CAAC;YAEpB,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;gBACzC,IAAI,CAAC;oBACD,iCAAiC;oBACjC,MAAM,YAAY,GAAG,SAAS,CAAC,gBAAgB,CAAC;oBAChD,MAAM,WAAW,GAAG,IAAI,YAAY,CAChC,YAAY,CAAC,MAAM,EACnB,YAAY,CAAC,UAAU,EACvB,YAAY,CAAC,MAAM,GAAG,CAAC,CAC1B,CAAC;oBACF,MAAM,QAAS,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;oBAC3D,WAAW,EAAE,CAAC;gBAClB,CAAC;gBAAC,OAAO,aAAa,EAAE,CAAC;oBACrB,OAAO,CAAC,IAAI,CAAC,yDAAyD,SAAS,CAAC,EAAE,wBAAwB,aAAa,EAAE,CAAC,CAAC;oBAC3H,WAAW,EAAE,CAAC;gBAClB,CAAC;YACL,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,8BAA8B,WAAW,yDAAyD,SAAS,KAAK,WAAW,UAAU,CAAC,CAAC;QACvJ,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,uBAAuB,CACjC,SAAsC,EACtC,QAAgB;QAEhB,QAAQ,SAAS,EAAE,CAAC;YAChB,KAAK,GAAG;gBACJ,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxD,KAAK,GAAG;gBACJ,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxD,KAAK,GAAG;gBACJ,OAAO,MAAM,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACjE,KAAK,GAAG;gBACJ,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAClD,KAAK,GAAG;gBACJ,mDAAmD;gBACnD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;gBAC1E,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,0BAA0B,CAAC,SAAsC,EAAE,MAAW;QACxF,QAAQ,SAAS,EAAE,CAAC;YAChB,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,qCAAqC;gBACrC,MAAM,MAAM,GAAG,MAAgB,CAAC;gBAChC,IAAI,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC;gBAEtC,iFAAiF;gBACjF,uDAAuD;gBACvD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACpD,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,gCAAgC;gBAExD,IAAI,aAAa,GAAG,SAAS,EAAE,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,mDAAmD,MAAM,CAAC,SAAS,MAAM,aAAa,gBAAgB,SAAS,GAAG,CAAC,CAAC;oBAEjI,wFAAwF;oBACxF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,UAAU,CAAC;oBAE9D,IAAI,QAAQ,KAAK,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,CAAC;wBACnE,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;wBAC9E,IAAI,CAAC;4BACD,OAAO,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;4BACxF,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;4BACvD,OAAO,CAAC,GAAG,CAAC,sCAAsC,gBAAgB,SAAS,CAAC,CAAC;wBACjF,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACb,OAAO,CAAC,KAAK,CAAC,2EAA2E,KAAK,EAAE,CAAC,CAAC;4BAClG,OAAO,GAAG,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;wBACzE,CAAC;oBACL,CAAC;yBAAM,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;wBACrC,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;wBAC7E,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;oBACnD,CAAC;yBAAM,CAAC;wBACJ,OAAO,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;wBACxE,OAAO,GAAG,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;oBACzE,CAAC;gBACL,CAAC;gBAED,OAAO,OAAO,CAAC;YACnB,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,yDAAyD;gBACzD,MAAM,MAAM,GAAG,MAAgB,CAAC;gBAChC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;gBAC5D,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;gBACxD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;gBACrC,OAAO,GAAG,MAAM,CAAC,IAAI,KAAK,YAAY,KAAK,OAAO,EAAE,CAAC;YACzD,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,oFAAoF;gBACpF,MAAM,GAAG,GAAG,MAAoB,CAAC;gBACjC,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxE,OAAO,GAAG,GAAG,CAAC,WAAW,MAAM,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC,eAAe,IAAI,UAAU,EAAE,CAAC;YACzF,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,6CAA6C;gBAC7C,MAAM,GAAG,GAAG,MAAa,CAAC;gBAC1B,8DAA8D;gBAC9D,MAAM,WAAW,GAAG,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;gBACvE,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3F,OAAO,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,gBAAgB,GAAG,QAAQ,EAAE,CAAC;YAC9D,CAAC;YACD,KAAK,GAAG,CAAC,CAAC,CAAC;gBACP,gEAAgE;gBAChE,MAAM,MAAM,GAAG,MAAsB,CAAC;gBACtC,oEAAoE;gBACpE,+BAA+B;gBAC/B,OAAO,kBAAkB,MAAM,CAAC,QAAQ,aAAa,MAAM,CAAC,YAAY,yBAAyB,MAAM,CAAC,kBAAkB,EAAE,CAAC;YACjI,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,SAAsC,EAAE,MAAW;QACrE,QAAQ,SAAS,EAAE,CAAC;YAChB,KAAK,GAAG;gBACJ,OAAQ,MAAiB,CAAC,SAAS,CAAC;YACxC,KAAK,GAAG;gBACJ,OAAQ,MAAiB,CAAC,SAAS,CAAC;YACxC,KAAK,GAAG;gBACJ,MAAM,GAAG,GAAG,MAAoB,CAAC;gBACjC,OAAO,GAAG,GAAG,CAAC,WAAW,MAAM,GAAG,CAAC,SAAS,EAAE,CAAC;YACnD,KAAK,GAAG;gBACJ,OAAQ,MAAc,CAAC,UAAU,CAAC;YACtC,KAAK,GAAG;gBACJ,OAAQ,MAAuB,CAAC,EAAE,CAAC;QAC3C,CAAC;IACL,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,OAAe;QACtC,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrE,CAAC;IAED;;;;;;;OAOG;IACK,iCAAiC,CAAC,OAAe,EAAE,SAAiB;QACxE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,iBAAiB,GAAG,CAAC,CAAC;QAC1B,MAAM,QAAQ,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,iBAAiB;QAEjD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,kBAAkB,GAAG,KAAK,CAAC;QAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAE9C,wCAAwC;YACxC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,iBAAiB,IAAI,UAAU,CAAC;gBAChC,SAAS;YACb,CAAC;YAED,+DAA+D;YAC/D,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC3I,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,iBAAiB,IAAI,UAAU,CAAC;gBAChC,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;oBAAE,cAAc,EAAE,CAAC;gBAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;oBAAE,WAAW,EAAE,CAAC;gBAC5C,kBAAkB,GAAG,KAAK,CAAC;gBAC3B,SAAS;YACb,CAAC;YAED,gDAAgD;YAChD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,iBAAiB,IAAI,UAAU,CAAC;gBAChC,OAAO,GAAG,CAAC,OAAO,CAAC;gBACnB,SAAS;YACb,CAAC;YAED,2EAA2E;YAC3E,wFAAwF;YACxF,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,8EAA8E;gBAC9E,IAAI,cAAc,GAAG,EAAE,IAAI,WAAW,GAAG,EAAE,EAAE,CAAC;oBAC1C,0CAA0C;oBAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBACvB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB;wBAC1C,iBAAiB,IAAI,UAAU,CAAC;wBAChC,kBAAkB,GAAG,IAAI,CAAC;oBAC9B,CAAC;yBAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;wBAC7B,yDAAyD;wBACzD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBACrB,iBAAiB,IAAI,UAAU,CAAC;wBAChC,kBAAkB,GAAG,IAAI,CAAC;oBAC9B,CAAC;oBACD,mCAAmC;oBACnC,SAAS;gBACb,CAAC;qBAAM,CAAC;oBACJ,8CAA8C;oBAC9C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACrB,iBAAiB,IAAI,UAAU,CAAC;gBACpC,CAAC;gBACD,SAAS;YACb,CAAC;YAED,gDAAgD;YAChD,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,kBAAkB,EAAE,CAAC;gBAC3C,kBAAkB,GAAG,KAAK,CAAC;YAC/B,CAAC;YAED,2DAA2D;YAC3D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,iBAAiB,IAAI,UAAU,CAAC;YAEhC,sDAAsD;YACtD,IAAI,iBAAiB,GAAG,QAAQ,GAAG,GAAG,EAAE,CAAC;gBACrC,+CAA+C;gBAC/C,MAAM,cAAc,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,gBAAgB,GAAG,cAAc,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC3D,IAAI,gBAAgB,GAAG,QAAQ,GAAG,GAAG,EAAE,CAAC;oBACpC,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,GAAG,CAAC,CAAC,CAAC;oBACpE,OAAO,SAAS,GAAG,iEAAiE,CAAC;gBACzF,CAAC;YACL,CAAC;QACL,CAAC;QAED,MAAM,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE/D,0CAA0C;QAC1C,IAAI,eAAe,GAAG,SAAS,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;YAC1D,OAAO,SAAS,GAAG,+CAA+C,CAAC;QACvE,CAAC;QAED,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACK,sBAAsB,CAAC,OAAe;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,gBAAgB,GAAa,EAAE,CAAC;QACpC,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAEtB,sBAAsB;YACtB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1E,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,UAAU,GAAG,IAAI,CAAC;gBAClB,SAAS;YACb,CAAC;YAED,gDAAgD;YAChD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,IAAI,WAAW,EAAE,CAAC;oBACd,2DAA2D;oBAC3D,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC9B,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACtB,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B;wBAClE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBAC1B,CAAC;oBACD,gBAAgB,GAAG,EAAE,CAAC;oBACtB,WAAW,GAAG,KAAK,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACJ,WAAW,GAAG,IAAI,CAAC;gBACvB,CAAC;gBACD,SAAS;YACb,CAAC;YAED,IAAI,WAAW,EAAE,CAAC;gBACd,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5B,SAAS;YACb,CAAC;YAED,8DAA8D;YAC9D,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvB,SAAS;YACb,CAAC;YAED,qDAAqD;YACrD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7D,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,SAAS;YACb,CAAC;YAED,oCAAoC;YACpC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACrB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,SAAS;YACb,CAAC;YAED,mCAAmC;QACvC,CAAC;QAED,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACJ;AAjfD,8CAifC"}
1
+ {"version":3,"file":"embedding-pipeline.js","sourceRoot":"","sources":["../../src/embedding/embedding-pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Query Rewriter Service
3
+ *
4
+ * Provides centralized query rewriting logic for semantic search and discovery.
5
+ * Handles ADR number recognition, query expansion, and synonym recognition.
6
+ */
7
+ /**
8
+ * Rewrites a query to improve semantic search results.
9
+ *
10
+ * Features:
11
+ * - ADR number recognition and expansion (e.g., "ADR-0016" → "ADR 0016" + "0016")
12
+ * - Synonym recognition (e.g., "migration" → "migrate", "migrated", "migrating")
13
+ * - Query expansion for better embedding matches
14
+ */
15
+ export declare class QueryRewriter {
16
+ /**
17
+ * Rewrites a query to improve semantic search results.
18
+ *
19
+ * @param query The original query string
20
+ * @returns The rewritten query with expanded terms
21
+ */
22
+ rewriteQuery(query: string): string;
23
+ /**
24
+ * Extracts ADR numbers from a query string.
25
+ *
26
+ * Recognizes patterns like:
27
+ * - "ADR-0016"
28
+ * - "ADR 0016"
29
+ * - "0016"
30
+ * - "16" (with context suggesting ADR)
31
+ *
32
+ * @param query The query string
33
+ * @returns Array of extracted ADR numbers (without leading zeros)
34
+ */
35
+ extractAdrNumbers(query: string): string[];
36
+ /**
37
+ * Expands a query with ADR number variants.
38
+ *
39
+ * Adds variants like:
40
+ * - "ADR 0016"
41
+ * - "0016"
42
+ * - "016" (with leading zero)
43
+ *
44
+ * @param query The original query
45
+ * @param adrNumbers Array of ADR numbers to expand
46
+ * @returns Expanded query string
47
+ */
48
+ expandAdrQuery(query: string, adrNumbers: string[]): string;
49
+ /**
50
+ * Expands synonyms in a query.
51
+ *
52
+ * Currently handles common patterns:
53
+ * - "migration" → "migrate", "migrated", "migrating"
54
+ * - Can be extended with more synonym mappings
55
+ *
56
+ * @param query The query string
57
+ * @returns Query with expanded synonyms
58
+ */
59
+ private expandSynonyms;
60
+ }
61
+ //# sourceMappingURL=query-rewriter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-rewriter.d.ts","sourceRoot":"","sources":["../../src/services/query-rewriter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,qBAAa,aAAa;IACtB;;;;;OAKG;IACI,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAmB1C;;;;;;;;;;;OAWG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAsCjD;;;;;;;;;;;OAWG;IACI,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM;IA+BlE;;;;;;;;;OASG;IACH,OAAO,CAAC,cAAc;CA0BzB"}
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ /**
3
+ * Query Rewriter Service
4
+ *
5
+ * Provides centralized query rewriting logic for semantic search and discovery.
6
+ * Handles ADR number recognition, query expansion, and synonym recognition.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.QueryRewriter = void 0;
10
+ /**
11
+ * Rewrites a query to improve semantic search results.
12
+ *
13
+ * Features:
14
+ * - ADR number recognition and expansion (e.g., "ADR-0016" → "ADR 0016" + "0016")
15
+ * - Synonym recognition (e.g., "migration" → "migrate", "migrated", "migrating")
16
+ * - Query expansion for better embedding matches
17
+ */
18
+ class QueryRewriter {
19
+ /**
20
+ * Rewrites a query to improve semantic search results.
21
+ *
22
+ * @param query The original query string
23
+ * @returns The rewritten query with expanded terms
24
+ */
25
+ rewriteQuery(query) {
26
+ if (!query || query.trim().length === 0) {
27
+ return query;
28
+ }
29
+ let rewritten = query;
30
+ // 1. ADR number recognition and expansion
31
+ const adrNumbers = this.extractAdrNumbers(query);
32
+ if (adrNumbers.length > 0) {
33
+ rewritten = this.expandAdrQuery(rewritten, adrNumbers);
34
+ }
35
+ // 2. Synonym recognition and expansion (optional, can be extended)
36
+ rewritten = this.expandSynonyms(rewritten);
37
+ return rewritten.trim();
38
+ }
39
+ /**
40
+ * Extracts ADR numbers from a query string.
41
+ *
42
+ * Recognizes patterns like:
43
+ * - "ADR-0016"
44
+ * - "ADR 0016"
45
+ * - "0016"
46
+ * - "16" (with context suggesting ADR)
47
+ *
48
+ * @param query The query string
49
+ * @returns Array of extracted ADR numbers (without leading zeros)
50
+ */
51
+ extractAdrNumbers(query) {
52
+ const adrNumbers = [];
53
+ // Pattern 1: "ADR-0016", "ADR-16", "adr-0016"
54
+ const adrPrefixPattern = /ADR[- ]0*(\d+)/gi;
55
+ let match;
56
+ while ((match = adrPrefixPattern.exec(query)) !== null) {
57
+ const number = match[1];
58
+ if (!adrNumbers.includes(number)) {
59
+ adrNumbers.push(number);
60
+ }
61
+ }
62
+ // Pattern 2: Standalone numbers (3-4 digits) - likely ADR numbers
63
+ // This is less reliable, so we only match if there's context (e.g., "ADR 0016" already found)
64
+ const standalonePattern = /\b0*(\d{1,4})\b/g;
65
+ while ((match = standalonePattern.exec(query)) !== null) {
66
+ const number = match[1];
67
+ // Only add if it looks like an ADR number (reasonable range: 1-9999)
68
+ const numValue = parseInt(number, 10);
69
+ if (numValue >= 1 && numValue <= 9999 && !adrNumbers.includes(number)) {
70
+ // Check if there's context suggesting ADR (e.g., "ADR", "decision", "architecture")
71
+ const context = query.toLowerCase();
72
+ const hasAdrContext = context.includes('adr') ||
73
+ context.includes('decision') ||
74
+ context.includes('architecture') ||
75
+ context.includes('record');
76
+ if (hasAdrContext || adrNumbers.length > 0) {
77
+ adrNumbers.push(number);
78
+ }
79
+ }
80
+ }
81
+ return adrNumbers;
82
+ }
83
+ /**
84
+ * Expands a query with ADR number variants.
85
+ *
86
+ * Adds variants like:
87
+ * - "ADR 0016"
88
+ * - "0016"
89
+ * - "016" (with leading zero)
90
+ *
91
+ * @param query The original query
92
+ * @param adrNumbers Array of ADR numbers to expand
93
+ * @returns Expanded query string
94
+ */
95
+ expandAdrQuery(query, adrNumbers) {
96
+ if (adrNumbers.length === 0) {
97
+ return query;
98
+ }
99
+ const expansions = [];
100
+ for (const adrNumber of adrNumbers) {
101
+ const numValue = parseInt(adrNumber, 10);
102
+ // Add "ADR {number}"
103
+ expansions.push(`ADR ${adrNumber}`);
104
+ // Add padded version (e.g., "0016" if input was "16")
105
+ const padded = numValue.toString().padStart(3, '0');
106
+ if (padded !== adrNumber) {
107
+ expansions.push(padded);
108
+ }
109
+ // Add unpadded version (e.g., "16" if input was "0016")
110
+ const unpadded = numValue.toString();
111
+ if (unpadded !== adrNumber && unpadded !== padded) {
112
+ expansions.push(unpadded);
113
+ }
114
+ }
115
+ // Combine original query with expansions
116
+ const uniqueExpansions = Array.from(new Set(expansions));
117
+ return `${query} ${uniqueExpansions.join(' ')}`;
118
+ }
119
+ /**
120
+ * Expands synonyms in a query.
121
+ *
122
+ * Currently handles common patterns:
123
+ * - "migration" → "migrate", "migrated", "migrating"
124
+ * - Can be extended with more synonym mappings
125
+ *
126
+ * @param query The query string
127
+ * @returns Query with expanded synonyms
128
+ */
129
+ expandSynonyms(query) {
130
+ // Common synonym mappings
131
+ const synonymMap = {
132
+ 'migration': ['migrate', 'migrated', 'migrating'],
133
+ 'migrate': ['migration', 'migrated', 'migrating'],
134
+ 'refactor': ['refactoring', 'refactored'],
135
+ 'refactoring': ['refactor', 'refactored'],
136
+ 'implement': ['implementation', 'implemented', 'implementing'],
137
+ 'implementation': ['implement', 'implemented', 'implementing'],
138
+ };
139
+ const words = query.split(/\s+/);
140
+ const expandedWords = [];
141
+ for (const word of words) {
142
+ expandedWords.push(word);
143
+ // Check for synonyms (case-insensitive)
144
+ const lowerWord = word.toLowerCase().replace(/[.,;:!?]/g, '');
145
+ if (synonymMap[lowerWord]) {
146
+ expandedWords.push(...synonymMap[lowerWord]);
147
+ }
148
+ }
149
+ return expandedWords.join(' ');
150
+ }
151
+ }
152
+ exports.QueryRewriter = QueryRewriter;
153
+ //# sourceMappingURL=query-rewriter.js.map