open-agreements 0.7.4 → 0.7.5

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 (98) hide show
  1. package/README.md +7 -0
  2. package/dist/commands/list.js +1 -1
  3. package/dist/commands/list.js.map +1 -1
  4. package/dist/core/checklist/docx-import.d.ts.map +1 -1
  5. package/dist/core/metadata.d.ts +1 -0
  6. package/dist/core/metadata.d.ts.map +1 -1
  7. package/dist/core/metadata.js +1 -0
  8. package/dist/core/metadata.js.map +1 -1
  9. package/dist/core/recipe/patcher.js +0 -24
  10. package/dist/core/recipe/patcher.js.map +1 -1
  11. package/dist/core/recipe/verifier.js.map +1 -1
  12. package/dist/core/selector.js +0 -1
  13. package/dist/core/selector.js.map +1 -1
  14. package/dist/core/template-search.d.ts +36 -0
  15. package/dist/core/template-search.d.ts.map +1 -0
  16. package/dist/core/template-search.js +84 -0
  17. package/dist/core/template-search.js.map +1 -0
  18. package/gemini-extension.json +1 -1
  19. package/node_modules/@usejunior/docx-core/dist/.tsbuildinfo +1 -1
  20. package/node_modules/@usejunior/docx-core/dist/atomizer.d.ts.map +1 -1
  21. package/node_modules/@usejunior/docx-core/dist/atomizer.js +12 -4
  22. package/node_modules/@usejunior/docx-core/dist/atomizer.js.map +1 -1
  23. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/atomLcs.d.ts +0 -14
  24. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/atomLcs.d.ts.map +1 -1
  25. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/atomLcs.js +31 -2
  26. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/atomLcs.js.map +1 -1
  27. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.d.ts +11 -0
  28. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.d.ts.map +1 -1
  29. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.js +180 -6
  30. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/documentReconstructor.js.map +1 -1
  31. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/hierarchicalLcs.d.ts +14 -4
  32. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/hierarchicalLcs.d.ts.map +1 -1
  33. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/hierarchicalLcs.js +344 -60
  34. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/hierarchicalLcs.js.map +1 -1
  35. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.d.ts +35 -1
  36. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.d.ts.map +1 -1
  37. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.js +186 -12
  38. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/inPlaceModifier.js.map +1 -1
  39. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/pipeline.d.ts.map +1 -1
  40. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/pipeline.js +31 -13
  41. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/pipeline.js.map +1 -1
  42. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/xmlToWmlElement.d.ts.map +1 -1
  43. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/xmlToWmlElement.js +3 -2
  44. package/node_modules/@usejunior/docx-core/dist/baselines/atomizer/xmlToWmlElement.js.map +1 -1
  45. package/node_modules/@usejunior/docx-core/dist/format-detection.d.ts.map +1 -1
  46. package/node_modules/@usejunior/docx-core/dist/format-detection.js +2 -1
  47. package/node_modules/@usejunior/docx-core/dist/format-detection.js.map +1 -1
  48. package/node_modules/@usejunior/docx-core/dist/move-detection.d.ts.map +1 -1
  49. package/node_modules/@usejunior/docx-core/dist/move-detection.js +3 -4
  50. package/node_modules/@usejunior/docx-core/dist/move-detection.js.map +1 -1
  51. package/node_modules/@usejunior/docx-core/dist/primitives/comments.d.ts +2 -2
  52. package/node_modules/@usejunior/docx-core/dist/primitives/comments.d.ts.map +1 -1
  53. package/node_modules/@usejunior/docx-core/dist/primitives/comments.js +7 -2
  54. package/node_modules/@usejunior/docx-core/dist/primitives/comments.js.map +1 -1
  55. package/node_modules/@usejunior/docx-core/dist/primitives/document.d.ts +2 -2
  56. package/node_modules/@usejunior/docx-core/dist/primitives/document.d.ts.map +1 -1
  57. package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.d.ts +1 -5
  58. package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.d.ts.map +1 -1
  59. package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.js +12 -25
  60. package/node_modules/@usejunior/docx-core/dist/primitives/dom-helpers.js.map +1 -1
  61. package/node_modules/@usejunior/docx-core/dist/primitives/layout.d.ts.map +1 -1
  62. package/node_modules/@usejunior/docx-core/dist/primitives/layout.js +4 -6
  63. package/node_modules/@usejunior/docx-core/dist/primitives/layout.js.map +1 -1
  64. package/node_modules/@usejunior/docx-core/dist/primitives/xml.d.ts.map +1 -1
  65. package/node_modules/@usejunior/docx-core/dist/primitives/xml.js +2 -0
  66. package/node_modules/@usejunior/docx-core/dist/primitives/xml.js.map +1 -1
  67. package/node_modules/@usejunior/docx-core/package.json +3 -3
  68. package/node_modules/@xmldom/xmldom/CHANGELOG.md +939 -0
  69. package/node_modules/{@usejunior/docx-core/node_modules/@xmldom → @xmldom}/xmldom/SECURITY.md +8 -8
  70. package/node_modules/@xmldom/xmldom/index.d.ts +1664 -0
  71. package/node_modules/{@usejunior/docx-core/node_modules/@xmldom → @xmldom}/xmldom/lib/.eslintrc.yml +1 -0
  72. package/node_modules/@xmldom/xmldom/lib/conventions.js +429 -0
  73. package/node_modules/@xmldom/xmldom/lib/dom-parser.js +586 -0
  74. package/node_modules/@xmldom/xmldom/lib/dom.js +3192 -0
  75. package/node_modules/{@usejunior/docx-core/node_modules/@xmldom → @xmldom}/xmldom/lib/entities.js +14 -9
  76. package/node_modules/@xmldom/xmldom/lib/errors.js +202 -0
  77. package/node_modules/@xmldom/xmldom/lib/grammar.js +533 -0
  78. package/node_modules/@xmldom/xmldom/lib/index.js +41 -0
  79. package/node_modules/@xmldom/xmldom/lib/sax.js +929 -0
  80. package/node_modules/{@usejunior/docx-core/node_modules/@xmldom → @xmldom}/xmldom/package.json +24 -21
  81. package/node_modules/{@usejunior/docx-core/node_modules/@xmldom → @xmldom}/xmldom/readme.md +56 -48
  82. package/package.json +4 -4
  83. package/skills/cloud-service-agreement/SKILL.md +1 -1
  84. package/skills/cloud-service-agreement/template-filling-execution.md +92 -0
  85. package/skills/nda/SKILL.md +1 -1
  86. package/skills/nda/template-filling-execution.md +92 -0
  87. package/skills/open-agreements/SKILL.md +1 -1
  88. package/skills/open-agreements/template-filling-execution.md +92 -0
  89. package/skills/safe/SKILL.md +1 -1
  90. package/skills/safe/template-filling-execution.md +92 -0
  91. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/CHANGELOG.md +0 -468
  92. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/index.d.ts +0 -43
  93. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/conventions.js +0 -203
  94. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/dom-parser.js +0 -322
  95. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/dom.js +0 -1879
  96. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/index.js +0 -4
  97. package/node_modules/@usejunior/docx-core/node_modules/@xmldom/xmldom/lib/sax.js +0 -662
  98. /package/node_modules/{@usejunior/docx-core/node_modules/@xmldom → @xmldom}/xmldom/LICENSE +0 -0
@@ -168,6 +168,10 @@ function extractGroupTextContent(atoms) {
168
168
  * - Trim whitespace
169
169
  * - Collapse multiple spaces
170
170
  * - Lowercase for case-insensitive comparison
171
+ *
172
+ * NOTE: Do NOT strip punctuation here — this function feeds normalizedTextHash
173
+ * which is used for Pass 1 anchoring. Changing it would alter which paragraphs
174
+ * are considered coarsely equal. Punctuation stripping is in tokenize() only.
171
175
  */
172
176
  function normalizeText(text) {
173
177
  return text
@@ -175,6 +179,92 @@ function normalizeText(text) {
175
179
  .replace(/\s+/g, ' ')
176
180
  .toLowerCase();
177
181
  }
182
+ /**
183
+ * Build an IDF (inverse document frequency) map from all paragraph groups.
184
+ *
185
+ * IDF(word) = log(totalGroups / groupsContainingWord)
186
+ *
187
+ * Words appearing in many paragraphs (legal boilerplate like "holders",
188
+ * "Corporation", "Preferred Stock") get low weight. Distinctive words
189
+ * ("Liquidation", "Dividends") get high weight.
190
+ */
191
+ function buildIdfMap(groups) {
192
+ const docFreq = new Map();
193
+ const totalGroups = groups.length;
194
+ for (const group of groups) {
195
+ if (isEmptyParagraphGroup(group))
196
+ continue;
197
+ const words = new Set(tokenize(group.textContent));
198
+ for (const word of words) {
199
+ docFreq.set(word, (docFreq.get(word) ?? 0) + 1);
200
+ }
201
+ }
202
+ const idf = new Map();
203
+ for (const [word, freq] of docFreq) {
204
+ idf.set(word, Math.log(totalGroups / freq));
205
+ }
206
+ return idf;
207
+ }
208
+ /**
209
+ * Build a precomputed TF-IDF vector for a paragraph group.
210
+ *
211
+ * TF(word) = count(word in paragraph) / totalWords
212
+ * TF-IDF(word) = TF(word) * IDF(word)
213
+ */
214
+ function buildTfidfVector(group, idf) {
215
+ const words = tokenize(group.textContent);
216
+ if (words.length === 0) {
217
+ return { vector: new Map(), magnitude: 0 };
218
+ }
219
+ // Count term frequencies
220
+ const tf = new Map();
221
+ for (const word of words) {
222
+ tf.set(word, (tf.get(word) ?? 0) + 1);
223
+ }
224
+ // Build TF-IDF vector
225
+ const vector = new Map();
226
+ let sumSquares = 0;
227
+ for (const [word, count] of tf) {
228
+ const tfidf = (count / words.length) * (idf.get(word) ?? 0);
229
+ if (tfidf > 0) {
230
+ vector.set(word, tfidf);
231
+ sumSquares += tfidf * tfidf;
232
+ }
233
+ }
234
+ return { vector, magnitude: Math.sqrt(sumSquares) };
235
+ }
236
+ /**
237
+ * Compute cosine similarity between two precomputed TF-IDF vectors.
238
+ */
239
+ function computeTfidfCosineSimilarity(a, b) {
240
+ if (a.magnitude === 0 || b.magnitude === 0)
241
+ return 0;
242
+ // Iterate over the smaller vector for efficiency
243
+ const [smaller, larger] = a.vector.size <= b.vector.size ? [a, b] : [b, a];
244
+ let dot = 0;
245
+ for (const [word, weight] of smaller.vector) {
246
+ const otherWeight = larger.vector.get(word);
247
+ if (otherWeight !== undefined) {
248
+ dot += weight * otherWeight;
249
+ }
250
+ }
251
+ return dot / (a.magnitude * b.magnitude);
252
+ }
253
+ /**
254
+ * Tokenize text into words for TF-IDF.
255
+ * Strips punctuation (unlike normalizeText) so that "Corporation," and
256
+ * "Corporation" produce the same token.
257
+ */
258
+ function tokenize(text) {
259
+ return text
260
+ .trim()
261
+ .replace(/[^\w\s]/g, ' ')
262
+ .replace(/\s+/g, ' ')
263
+ .toLowerCase()
264
+ .trim()
265
+ .split(' ')
266
+ .filter(w => w.length > 0);
267
+ }
178
268
  /**
179
269
  * Check if a group contains only empty paragraph atoms.
180
270
  */
@@ -231,17 +321,123 @@ function computeGroupSimilarity(a, b) {
231
321
  return intersection.size / union.size;
232
322
  }
233
323
  /**
234
- * Compute LCS on paragraph groups with similarity fallback.
324
+ * Build ordered gaps between consecutive Pass 1 anchors.
325
+ *
326
+ * Anchors divide both documents into regions. Similarity matching is scoped
327
+ * to each gap — a source paragraph can only match a revised paragraph if both
328
+ * fall within the same gap.
329
+ */
330
+ function buildGaps(anchors, unmatchedOriginal, unmatchedRevised, n, m) {
331
+ const gaps = [];
332
+ // Sentinel boundaries: before first anchor and after last anchor
333
+ const boundaries = [
334
+ { origBound: -1, revBound: -1 },
335
+ ...anchors.map(a => ({ origBound: a.originalIndex, revBound: a.revisedIndex })),
336
+ { origBound: n, revBound: m },
337
+ ];
338
+ for (let i = 0; i < boundaries.length - 1; i++) {
339
+ const lo = boundaries[i];
340
+ const hi = boundaries[i + 1];
341
+ const origInGap = unmatchedOriginal.filter(idx => idx > lo.origBound && idx < hi.origBound);
342
+ const revInGap = unmatchedRevised.filter(idx => idx > lo.revBound && idx < hi.revBound);
343
+ if (origInGap.length > 0 || revInGap.length > 0) {
344
+ gaps.push({ origIndices: origInGap, revIndices: revInGap });
345
+ }
346
+ }
347
+ return gaps;
348
+ }
349
+ /**
350
+ * Run LCS within a gap using TF-IDF cosine similarity as the equality criterion.
351
+ *
352
+ * Two groups are "equal" (matchable) if their TF-IDF cosine similarity
353
+ * exceeds the threshold. Standard DP LCS with backtracking.
354
+ */
355
+ function similarityLcs(origIndices, revIndices, originalGroups, revisedGroups, tfidfVectors, threshold) {
356
+ const ni = origIndices.length;
357
+ const nj = revIndices.length;
358
+ // Similarity predicate for LCS equality check
359
+ const similar = (oi, ri) => {
360
+ const origGroup = originalGroups[origIndices[oi]];
361
+ const revGroup = revisedGroups[revIndices[ri]];
362
+ const vecA = tfidfVectors.get(origGroup);
363
+ const vecB = tfidfVectors.get(revGroup);
364
+ if (!vecA || !vecB)
365
+ return false;
366
+ return computeTfidfCosineSimilarity(vecA, vecB) >= threshold;
367
+ };
368
+ // Standard DP LCS
369
+ const dp = Array(ni + 1)
370
+ .fill(null)
371
+ .map(() => Array(nj + 1).fill(0));
372
+ for (let i = 1; i <= ni; i++) {
373
+ for (let j = 1; j <= nj; j++) {
374
+ if (similar(i - 1, j - 1)) {
375
+ dp[i][j] = dp[i - 1][j - 1] + 1;
376
+ }
377
+ else {
378
+ dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1]);
379
+ }
380
+ }
381
+ }
382
+ // Backtrack
383
+ const matches = [];
384
+ let ci = ni;
385
+ let cj = nj;
386
+ while (ci > 0 && cj > 0) {
387
+ if (similar(ci - 1, cj - 1)) {
388
+ matches.unshift({
389
+ originalIndex: origIndices[ci - 1],
390
+ revisedIndex: revIndices[cj - 1],
391
+ });
392
+ ci--;
393
+ cj--;
394
+ }
395
+ else if (dp[ci - 1][cj] > dp[ci][cj - 1]) {
396
+ ci--;
397
+ }
398
+ else {
399
+ cj--;
400
+ }
401
+ }
402
+ return matches;
403
+ }
404
+ /**
405
+ * Compute a container key for a paragraph group based on its first atom's ancestor chain.
406
+ * Returns "" for body-level paragraphs, or a path like "w:tbl:0/w:tr:2/w:tc:1" for table cells.
407
+ */
408
+ function getGroupContainerKey(group) {
409
+ const atom = group.atoms[0];
410
+ if (!atom)
411
+ return '';
412
+ const parts = [];
413
+ for (const el of atom.ancestorElements) {
414
+ if (el.tagName === 'w:tc' || el.tagName === 'w:tr' || el.tagName === 'w:tbl') {
415
+ let index = 0;
416
+ let sibling = el.previousSibling;
417
+ while (sibling) {
418
+ if (sibling.nodeType === 1 && sibling.tagName === el.tagName) {
419
+ index++;
420
+ }
421
+ sibling = sibling.previousSibling;
422
+ }
423
+ parts.push(`${el.tagName}:${index}`);
424
+ }
425
+ }
426
+ return parts.join('/');
427
+ }
428
+ /**
429
+ * Compute LCS on paragraph groups with order-constrained similarity fallback.
235
430
  *
236
431
  * Two passes:
237
432
  * 1. LCS with exact text hash matching (fast path)
238
- * 2. Similarity matching for unmatched groups (fallback)
433
+ * 2. Order-constrained similarity matching: gap-scoped mini-LCS with TF-IDF
239
434
  *
240
435
  * @param originalGroups - Groups from original document
241
436
  * @param revisedGroups - Groups from revised document
242
- * @param similarityThreshold - Minimum similarity to consider a match (default: 0.25)
437
+ * @param similarityThreshold - Minimum TF-IDF cosine similarity for a match (default: 0.25)
438
+ * @param tfidfVectors - Precomputed TF-IDF vectors for all groups
243
439
  */
244
- export function computeGroupLcs(originalGroups, revisedGroups, similarityThreshold = DEFAULT_PARAGRAPH_SIMILARITY_THRESHOLD) {
440
+ export function computeGroupLcs(originalGroups, revisedGroups, similarityThreshold = DEFAULT_PARAGRAPH_SIMILARITY_THRESHOLD, tfidfVectors) {
245
441
  const n = originalGroups.length;
246
442
  const m = revisedGroups.length;
247
443
  // === Pass 1: LCS with exact hash and normalized-hash matching ===
@@ -290,25 +486,68 @@ export function computeGroupLcs(originalGroups, revisedGroups, similarityThresho
290
486
  unmatchedRevised.push(idx);
291
487
  }
292
488
  }
293
- // === Pass 2: Similarity matching for unmatched groups ===
294
- // Try to find near-matches for paragraphs that were modified significantly
489
+ // === Pass 2: Order-constrained similarity matching via gap-scoped LCS ===
490
+ //
491
+ // Pass 1 anchors divide both documents into "gaps" — regions between consecutive
492
+ // exact matches. Similarity matching is scoped to each gap: a source paragraph can
493
+ // only match a revised paragraph within the same gap. Within each gap, a mini-LCS
494
+ // using TF-IDF cosine similarity preserves document order.
495
+ //
496
+ // This prevents two classes of bugs:
497
+ // 1. Cross-anchor matches: Source[45] stealing Revised[20] across an anchor boundary
498
+ // 2. Non-monotonic matches within a gap: greedy best-match could reorder paragraphs
499
+ //
500
+ // TF-IDF (instead of Jaccard) down-weights legal boilerplate words ("holders",
501
+ // "Preferred Stock", "Corporation") that appear in many paragraphs, preventing
502
+ // false matches on shared vocabulary.
295
503
  const similarityMatches = [];
296
- for (const origIdx of unmatchedOriginal) {
297
- const origGroup = originalGroups[origIdx];
298
- let bestMatch = null;
299
- for (const revIdx of unmatchedRevised) {
300
- const revGroup = revisedGroups[revIdx];
301
- const similarity = computeGroupSimilarity(origGroup, revGroup);
302
- if (similarity >= similarityThreshold) {
303
- if (!bestMatch || similarity > bestMatch.similarity) {
304
- bestMatch = { revisedIndex: revIdx, similarity };
504
+ // Build gaps between consecutive Pass 1 anchors
505
+ const gaps = buildGaps(matchedGroups, unmatchedOriginal, unmatchedRevised, n, m);
506
+ // Run mini-LCS within each gap using TF-IDF similarity (if vectors available),
507
+ // then fall back to Jaccard for any groups TF-IDF left unmatched.
508
+ // TF-IDF degenerates when document frequency is very low (e.g. 1-2 paragraphs):
509
+ // common words get IDF=0, making cosine similarity ≈ 0 even for paragraphs that
510
+ // share most of their content. Jaccard word overlap handles this correctly. (#78)
511
+ const tfidfMatchedOrig = new Set();
512
+ const tfidfMatchedRev = new Set();
513
+ if (tfidfVectors) {
514
+ for (const gap of gaps) {
515
+ if (gap.origIndices.length === 0 || gap.revIndices.length === 0)
516
+ continue;
517
+ const gapMatches = similarityLcs(gap.origIndices, gap.revIndices, originalGroups, revisedGroups, tfidfVectors, similarityThreshold);
518
+ for (const m of gapMatches) {
519
+ tfidfMatchedOrig.add(m.originalIndex);
520
+ tfidfMatchedRev.add(m.revisedIndex);
521
+ }
522
+ similarityMatches.push(...gapMatches);
523
+ }
524
+ }
525
+ // Jaccard fallback: match any groups that TF-IDF left unmatched (gap-scoped)
526
+ for (const gap of gaps) {
527
+ if (gap.origIndices.length === 0 || gap.revIndices.length === 0)
528
+ continue;
529
+ const candidates = [];
530
+ for (const origIdx of gap.origIndices) {
531
+ if (matchedOriginal.has(origIdx) || tfidfMatchedOrig.has(origIdx))
532
+ continue;
533
+ for (const revIdx of gap.revIndices) {
534
+ if (matchedRevised.has(revIdx) || tfidfMatchedRev.has(revIdx))
535
+ continue;
536
+ const similarity = computeGroupSimilarity(originalGroups[origIdx], revisedGroups[revIdx]);
537
+ if (similarity >= similarityThreshold) {
538
+ candidates.push({ originalIndex: origIdx, revisedIndex: revIdx, similarity });
305
539
  }
306
540
  }
307
541
  }
308
- if (bestMatch) {
309
- similarityMatches.push({ originalIndex: origIdx, revisedIndex: bestMatch.revisedIndex });
310
- // Remove from unmatched revised
311
- unmatchedRevised = unmatchedRevised.filter(idx => idx !== bestMatch.revisedIndex);
542
+ candidates.sort((a, b) => b.similarity - a.similarity);
543
+ const assigned = new Set();
544
+ const assignedRev = new Set();
545
+ for (const c of candidates) {
546
+ if (assigned.has(c.originalIndex) || assignedRev.has(c.revisedIndex))
547
+ continue;
548
+ similarityMatches.push({ originalIndex: c.originalIndex, revisedIndex: c.revisedIndex });
549
+ assigned.add(c.originalIndex);
550
+ assignedRev.add(c.revisedIndex);
312
551
  }
313
552
  }
314
553
  // Combine exact matches and similarity matches
@@ -318,6 +557,62 @@ export function computeGroupLcs(originalGroups, revisedGroups, similarityThresho
318
557
  matchedOriginal.add(match.originalIndex);
319
558
  matchedRevised.add(match.revisedIndex);
320
559
  }
560
+ // === Pass 3 (issue #65): Container-position fallback ===
561
+ //
562
+ // After TF-IDF gap matching, some paragraphs remain unmatched because their
563
+ // cosine similarity is below the threshold. This happens when the only differing
564
+ // content is high-IDF words (e.g., company names in template fills).
565
+ //
566
+ // For unmatched paragraphs that are in the same structural container position
567
+ // (same table cell by table/row/cell index), force a match. This preserves
568
+ // paragraph alignment within table cells when the content is a template fill.
569
+ unmatchedOriginal = [];
570
+ for (let idx = 0; idx < n; idx++) {
571
+ if (!matchedOriginal.has(idx))
572
+ unmatchedOriginal.push(idx);
573
+ }
574
+ unmatchedRevised = [];
575
+ for (let idx = 0; idx < m; idx++) {
576
+ if (!matchedRevised.has(idx))
577
+ unmatchedRevised.push(idx);
578
+ }
579
+ if (unmatchedOriginal.length > 0 && unmatchedRevised.length > 0) {
580
+ // Build container keys for unmatched groups
581
+ const origContainerKeys = new Map();
582
+ for (const idx of unmatchedOriginal) {
583
+ const group = originalGroups[idx];
584
+ if (group.atoms.length > 0) {
585
+ origContainerKeys.set(idx, getGroupContainerKey(group));
586
+ }
587
+ }
588
+ const revContainerKeys = new Map();
589
+ for (const idx of unmatchedRevised) {
590
+ const group = revisedGroups[idx];
591
+ if (group.atoms.length > 0) {
592
+ revContainerKeys.set(idx, getGroupContainerKey(group));
593
+ }
594
+ }
595
+ // For each unmatched original in a table cell, find an unmatched revised
596
+ // in the same cell. Match greedily in document order.
597
+ const usedRevised = new Set();
598
+ for (const origIdx of unmatchedOriginal) {
599
+ const origKey = origContainerKeys.get(origIdx);
600
+ if (!origKey)
601
+ continue; // Not in a table cell
602
+ for (const revIdx of unmatchedRevised) {
603
+ if (usedRevised.has(revIdx))
604
+ continue;
605
+ const revKey = revContainerKeys.get(revIdx);
606
+ if (revKey === origKey) {
607
+ allMatches.push({ originalIndex: origIdx, revisedIndex: revIdx, containerMatch: true });
608
+ matchedOriginal.add(origIdx);
609
+ matchedRevised.add(revIdx);
610
+ usedRevised.add(revIdx);
611
+ break;
612
+ }
613
+ }
614
+ }
615
+ }
321
616
  // Final deleted and inserted indices
322
617
  const deletedGroupIndices = [];
323
618
  for (let idx = 0; idx < n; idx++) {
@@ -356,8 +651,15 @@ export function hierarchicalCompare(originalAtoms, revisedAtoms, options = {}) {
356
651
  const origEmptyGroups = originalGroups.filter(g => isEmptyParagraphGroup(g));
357
652
  const revEmptyGroups = revisedGroups.filter(g => isEmptyParagraphGroup(g));
358
653
  debug('hierarchicalLcs', `${originalGroups.length} original groups (${origEmptyGroups.length} empty), ${revisedGroups.length} revised groups (${revEmptyGroups.length} empty)`);
359
- // Step 2: LCS on paragraph groups with similarity fallback
360
- const groupLcs = computeGroupLcs(originalGroups, revisedGroups, similarityThreshold);
654
+ // Step 1b: Build TF-IDF vectors for all groups (computed once, used by Pass 2 + inline check)
655
+ const allGroups = [...originalGroups, ...revisedGroups];
656
+ const idfMap = buildIdfMap(allGroups);
657
+ const tfidfVectors = new Map();
658
+ for (const group of allGroups) {
659
+ tfidfVectors.set(group, buildTfidfVector(group, idfMap));
660
+ }
661
+ // Step 2: LCS on paragraph groups with order-constrained similarity fallback
662
+ const groupLcs = computeGroupLcs(originalGroups, revisedGroups, similarityThreshold, tfidfVectors);
361
663
  // Count empty paragraphs in each category
362
664
  const matchedEmptyCount = groupLcs.matchedGroups.filter(m => isEmptyParagraphGroup(originalGroups[m.originalIndex])).length;
363
665
  const deletedEmptyCount = groupLcs.deletedGroupIndices.filter(i => isEmptyParagraphGroup(originalGroups[i])).length;
@@ -376,49 +678,31 @@ export function hierarchicalCompare(originalAtoms, revisedAtoms, options = {}) {
376
678
  for (let i = 0; i < revisedAtoms.length; i++) {
377
679
  revAtomToIndex.set(revisedAtoms[i], i);
378
680
  }
379
- // For matched groups: do atom-level LCS within them
681
+ // For matched groups: always run atom-level LCS within them.
682
+ // Group matching already determined these paragraphs correspond; the atom
683
+ // LCS determines which words within them changed. Skipping it based on a
684
+ // redundant TF-IDF similarity recheck was overly conservative and caused
685
+ // entire paragraphs to show as deleted+inserted instead of inline changes
686
+ // (see issue #78).
380
687
  for (const match of groupLcs.matchedGroups) {
381
688
  const origGroup = originalGroups[match.originalIndex];
382
689
  const revGroup = revisedGroups[match.revisedIndex];
383
- // Check if this was an exact match (hash) or similarity match
384
- const isExactMatch = origGroup.textHash === revGroup.textHash;
385
- // For LOW similarity matches (< threshold), skip atom LCS to avoid spurious
386
- // matches on common fragments. Use the same threshold as paragraph matching.
387
- const similarity = isExactMatch ? 1.0 : computeGroupSimilarity(origGroup, revGroup);
388
- const useAtomLcs = similarity >= similarityThreshold;
389
- if (!isExactMatch && !useAtomLcs) {
390
- debug('hierarchicalLcs', `Low similarity match (${similarity.toFixed(2)}): origGroup[${match.originalIndex}] "${origGroup.textContent.slice(0, 50)}..." vs revGroup[${match.revisedIndex}] "${revGroup.textContent.slice(0, 50)}..."`);
391
- }
392
- if (isExactMatch || useAtomLcs) {
393
- // High-similarity match: do atom-level LCS for fine-grained changes
394
- const withinLcs = computeAtomLcs(origGroup.atoms, revGroup.atoms);
395
- // Translate local indices to global indices
396
- for (const atomMatch of withinLcs.matches) {
397
- const origAtom = origGroup.atoms[atomMatch.originalIndex];
398
- const revAtom = revGroup.atoms[atomMatch.revisedIndex];
399
- allMatches.push({
400
- originalIndex: origAtomToIndex.get(origAtom),
401
- revisedIndex: revAtomToIndex.get(revAtom),
402
- });
403
- }
404
- for (const localIdx of withinLcs.deletedIndices) {
405
- const origAtom = origGroup.atoms[localIdx];
406
- deletedIndices.push(origAtomToIndex.get(origAtom));
407
- }
408
- for (const localIdx of withinLcs.insertedIndices) {
409
- const revAtom = revGroup.atoms[localIdx];
410
- insertedIndices.push(revAtomToIndex.get(revAtom));
411
- }
690
+ const withinLcs = computeAtomLcs(origGroup.atoms, revGroup.atoms);
691
+ for (const atomMatch of withinLcs.matches) {
692
+ const origAtom = origGroup.atoms[atomMatch.originalIndex];
693
+ const revAtom = revGroup.atoms[atomMatch.revisedIndex];
694
+ allMatches.push({
695
+ originalIndex: origAtomToIndex.get(origAtom),
696
+ revisedIndex: revAtomToIndex.get(revAtom),
697
+ });
412
698
  }
413
- else {
414
- // Low similarity match: treat entire paragraph as replaced
415
- // This prevents spurious atom matches on common fragments
416
- for (const atom of origGroup.atoms) {
417
- deletedIndices.push(origAtomToIndex.get(atom));
418
- }
419
- for (const atom of revGroup.atoms) {
420
- insertedIndices.push(revAtomToIndex.get(atom));
421
- }
699
+ for (const localIdx of withinLcs.deletedIndices) {
700
+ const origAtom = origGroup.atoms[localIdx];
701
+ deletedIndices.push(origAtomToIndex.get(origAtom));
702
+ }
703
+ for (const localIdx of withinLcs.insertedIndices) {
704
+ const revAtom = revGroup.atoms[localIdx];
705
+ insertedIndices.push(revAtomToIndex.get(revAtom));
422
706
  }
423
707
  }
424
708
  // For deleted groups: mark all atoms as deleted
@@ -1 +1 @@
1
- {"version":3,"file":"hierarchicalLcs.js","sourceRoot":"","sources":["../../../src/baselines/atomizer/hierarchicalLcs.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAkB,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;GAGG;AACH,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sCAAsC,GAAG,IAAI,CAAC;AAuC3D;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAA2B;IAE3B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgC,CAAC;IAEvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACtB,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,6CAA6C;IAC7C,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,MAAM,aAAa,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAE/D,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAEnD,0EAA0E;QAC1E,0EAA0E;QAC1E,8CAA8C;QAC9C,MAAM,qBAAqB,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC;YAC9C,KAAK,CAAC,CAAC,CAAE,CAAC,cAAc,CAAC,OAAO,KAAK,mBAAmB,CAAC;QAE3D,MAAM,QAAQ,GAAG,qBAAqB;YACpC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAE,8BAA8B;YACpD,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtB,MAAM,kBAAkB,GAAG,qBAAqB;YAC9C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;QAErC,MAAM,CAAC,IAAI,CAAC;YACV,cAAc,EAAE,GAAG;YACnB,KAAK;YACL,QAAQ;YACR,kBAAkB;YAClB,WAAW;SACZ,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAClB,KAA2B,EAC3B,UAAkB;IAElB,MAAM,WAAW,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAC;IAEnD,0EAA0E;IAC1E,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC;QACrC,KAAK,CAAC,CAAC,CAAE,CAAC,cAAc,CAAC,OAAO,KAAK,mBAAmB,CAAC;IAE3D,MAAM,QAAQ,GAAG,YAAY;QAC3B,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,QAAQ;QACpB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtB,MAAM,kBAAkB,GAAG,YAAY;QACrC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;IAErC,OAAO;QACL,cAAc,EAAE,UAAU;QAC1B,KAAK;QACL,QAAQ;QACR,kBAAkB;QAClB,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,8BAA8B,CAC5C,KAA2B;IAE3B,kCAAkC;IAClC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAgC,CAAC;IAE7D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC5B,CAAC;QACD,YAAY,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,6CAA6C;IAC7C,MAAM,aAAa,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAErE,2DAA2D;IAC3D,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC;QAE7C,+BAA+B;QAC/B,IAAI,SAAS,CAAC,MAAM,IAAI,sBAAsB,EAAE,CAAC;YAC/C,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;YAClD,SAAS;QACX,CAAC;QAED,6CAA6C;QAC7C,IAAI,YAAY,GAAyB,EAAE,CAAC;QAE5C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAExB,+DAA+D;YAC/D,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;gBAC3C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC5B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;oBACrD,YAAY,GAAG,EAAE,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAED,+CAA+C;QAC/C,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,uBAAuB,CAAC,KAA2B;IAC1D,MAAM,SAAS,GAAa,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,4EAA4E;QAC5E,IACE,IAAI,CAAC,cAAc,CAAC,OAAO,KAAK,MAAM;YACtC,IAAI,CAAC,cAAc,CAAC,OAAO,KAAK,MAAM;YACtC,IAAI,CAAC,cAAc,CAAC,OAAO,KAAK,OAAO,EACvC,CAAC;YACD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,SAAS;QACX,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;QAC7C,IAAI,IAAI,EAAE,CAAC;YACT,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,IAAI;SACR,IAAI,EAAE;SACN,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,KAA0B;IACvD,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAC7B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,cAAc,CAAC,OAAO,KAAK,mBAAmB,CAAC;AACnE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,CAAsB,EAAE,CAAsB;IACzE,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,qBAAqB,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,CAAC,kBAAkB,KAAK,CAAC,CAAC,kBAAkB,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACH,SAAS,sBAAsB,CAAC,CAAsB,EAAE,CAAsB;IAC5E,kEAAkE;IAClE,kEAAkE;IAClE,8CAA8C;IAC9C,IAAI,qBAAqB,CAAC,CAAC,CAAC,IAAI,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,2DAA2D;QAC3D,IAAI,qBAAqB,CAAC,CAAC,CAAC,KAAK,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,CAAC;QACX,CAAC;QACD,uEAAuE;QACvE,8DAA8D;QAC9D,OAAO,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAE3C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAEnE,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,CAAC,CAAC,aAAa;IACzB,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,CAAC,CAAC,YAAY;IACxB,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IAE9C,OAAO,YAAY,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;AACxC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAC7B,cAAqC,EACrC,aAAoC,EACpC,mBAAmB,GAAG,sCAAsC;IAE5D,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC;IAChC,MAAM,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC;IAE/B,mEAAmE;IACnE,MAAM,EAAE,GAAe,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;SAChC,IAAI,CAAC,IAAI,CAAC;SACV,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,IAAI,mBAAmB,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC;gBACvE,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,MAAM,aAAa,GAA2D,EAAE,CAAC;IACjF,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,mBAAmB,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,aAAa,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,EAAE,CAAC;YACvE,aAAa,CAAC,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrE,CAAC,EAAE,CAAC;YACJ,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CAAC,CAAE,GAAG,EAAE,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAE,EAAE,CAAC;YAC3C,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,CAAC;YACN,CAAC,EAAE,CAAC;QACN,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;IAEzE,IAAI,iBAAiB,GAAa,EAAE,CAAC;IACrC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,IAAI,gBAAgB,GAAa,EAAE,CAAC;IACpC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,2EAA2E;IAC3E,MAAM,iBAAiB,GAA2D,EAAE,CAAC;IAErF,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAE,CAAC;QAC3C,IAAI,SAAS,GAAwD,IAAI,CAAC;QAE1E,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAE,CAAC;YACxC,MAAM,UAAU,GAAG,sBAAsB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAE/D,IAAI,UAAU,IAAI,mBAAmB,EAAE,CAAC;gBACtC,IAAI,CAAC,SAAS,IAAI,UAAU,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC;oBACpD,SAAS,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,SAAS,EAAE,CAAC;YACd,iBAAiB,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;YACzF,gCAAgC;YAChC,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,SAAU,CAAC,YAAY,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,MAAM,UAAU,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,iBAAiB,CAAC,CAAC;IAE5D,sBAAsB;IACtB,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;QACtC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACzC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,qCAAqC;IACrC,MAAM,mBAAmB,GAAa,EAAE,CAAC;IACzC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,MAAM,oBAAoB,GAAa,EAAE,CAAC;IAC1C,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;QACjC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,CAAC;AAClF,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CACjC,aAAmC,EACnC,YAAkC,EAClC,UAAsC,EAAE;IAExC,MAAM,EAAE,mBAAmB,GAAG,sCAAsC,EAAE,GAAG,OAAO,CAAC;IAEjF,uEAAuE;IACvE,MAAM,cAAc,GAAG,8BAA8B,CAAC,aAAa,CAAC,CAAC;IACrE,MAAM,aAAa,GAAG,8BAA8B,CAAC,YAAY,CAAC,CAAC;IAEnE,+BAA+B;IAC/B,MAAM,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3E,KAAK,CACH,iBAAiB,EACjB,GAAG,cAAc,CAAC,MAAM,qBAAqB,eAAe,CAAC,MAAM,YAAY,aAAa,CAAC,MAAM,oBAAoB,cAAc,CAAC,MAAM,SAAS,CACtJ,CAAC;IAEF,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC;IAErF,0CAA0C;IAC1C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAC1D,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAE,CAAC,CACxD,CAAC,MAAM,CAAC;IACT,MAAM,iBAAiB,GAAG,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAChE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAE,CAAC,CAC1C,CAAC,MAAM,CAAC;IACT,MAAM,kBAAkB,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAClE,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAE,CAAC,CACzC,CAAC,MAAM,CAAC;IAET,KAAK,CACH,iBAAiB,EACjB,cAAc,QAAQ,CAAC,aAAa,CAAC,MAAM,aAAa,iBAAiB,YAAY,QAAQ,CAAC,mBAAmB,CAAC,MAAM,aAAa,iBAAiB,YAAY,QAAQ,CAAC,oBAAoB,CAAC,MAAM,cAAc,kBAAkB,SAAS,CAChP,CAAC;IAEF,2CAA2C;IAC3C,MAAM,UAAU,GAA2D,EAAE,CAAC;IAC9E,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,yCAAyC;IACzC,MAAM,eAAe,GAAG,IAAI,GAAG,EAA8B,CAAC;IAC9D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAA8B,CAAC;IAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,oDAAoD;IACpD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,aAAa,CAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,YAAY,CAAE,CAAC;QAEpD,8DAA8D;QAC9D,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAAC;QAE9D,4EAA4E;QAC5E,6EAA6E;QAC7E,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACpF,MAAM,UAAU,GAAG,UAAU,IAAI,mBAAmB,CAAC;QAErD,IAAI,CAAC,YAAY,IAAI,CAAC,UAAU,EAAE,CAAC;YACjC,KAAK,CAAC,iBAAiB,EAAE,yBAAyB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,KAAK,CAAC,aAAa,MAAM,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,oBAAoB,KAAK,CAAC,YAAY,MAAM,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QACzO,CAAC;QAED,IAAI,YAAY,IAAI,UAAU,EAAE,CAAC;YAC/B,oEAAoE;YACpE,MAAM,SAAS,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YAElE,4CAA4C;YAC5C,KAAK,MAAM,SAAS,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAE,CAAC;gBAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAE,CAAC;gBACxD,UAAU,CAAC,IAAI,CAAC;oBACd,aAAa,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAE;oBAC7C,YAAY,EAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAAE;iBAC3C,CAAC,CAAC;YACL,CAAC;YAED,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;gBAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC;gBAC5C,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,CAAC;YACtD,CAAC;YAED,KAAK,MAAM,QAAQ,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;gBACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAE,CAAC;gBAC1C,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,2DAA2D;YAC3D,0DAA0D;YAC1D,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;gBACnC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;YAClD,CAAC;YACD,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAClC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,cAAc,CAAC,QAAQ,CAAE,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,KAAK,MAAM,QAAQ,IAAI,QAAQ,CAAC,oBAAoB,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAE,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,KAAK,CACH,iBAAiB,EACjB,wBAAwB,UAAU,CAAC,MAAM,aAAa,cAAc,CAAC,MAAM,aAAa,eAAe,CAAC,MAAM,WAAW,CAC1H,CAAC;IAEF,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,cAAc;QACd,eAAe;KAChB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iCAAiC,CAC/C,QAA8B,EAC9B,OAA6B,EAC7B,SAAoB;IAEpB,4CAA4C;IAC5C,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAE,CAAC;QAChD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAE,CAAC;QAE7C,QAAQ,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC;QACrD,OAAO,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,KAAK,CAAC;QAEpD,4DAA4D;QAC5D,OAAO,CAAC,wBAAwB,GAAG,QAAQ,CAAC;IAC9C,CAAC;IAED,qBAAqB;IACrB,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,cAAc,EAAE,CAAC;QAC3C,QAAQ,CAAC,GAAG,CAAE,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,OAAO,CAAC;IAC/D,CAAC;IAED,sBAAsB;IACtB,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,eAAe,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAE,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,QAAQ,CAAC;IAC/D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"hierarchicalLcs.js","sourceRoot":"","sources":["../../../src/baselines/atomizer/hierarchicalLcs.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,40 @@
11
11
  * - addFormatChange: Add <w:rPrChange> for formatting differences
12
12
  */
13
13
  import type { ComparisonUnitAtom } from '../../core-types.js';
14
+ /**
15
+ * Error thrown when the original and revised documents have different table/container
16
+ * topology, making container-aware inplace insertion impossible.
17
+ * Caught by the adaptive pass loop to trigger rebuild fallback.
18
+ */
19
+ export declare class ContainerResolutionError extends Error {
20
+ constructor(message: string);
21
+ }
22
+ /** A single step in a structural path from a paragraph up to w:body. */
23
+ interface ContainerPathStep {
24
+ tag: string;
25
+ index: number;
26
+ }
27
+ /**
28
+ * Compute the structural path from a paragraph to the document body.
29
+ * Walks `parentNode` from the paragraph, recording {tag, index} for each
30
+ * structural container (w:tc, w:tr, w:tbl). Stops at w:body.
31
+ * Returns innermost-first order.
32
+ *
33
+ * Uses original-tree nodes — safe because only the revised tree is mutated.
34
+ */
35
+ export declare function getContainerPath(paragraph: Element): ContainerPathStep[];
36
+ /**
37
+ * Resolve a container path in the revised tree.
38
+ * Walks the path in reverse (outermost → innermost) from `body`.
39
+ * Returns the deepest container (typically w:tc), or null on mismatch.
40
+ */
41
+ export declare function resolveContainerInRevised(path: ContainerPathStep[], body: Element): Element | null;
42
+ /**
43
+ * Validate that the revised tree has compatible topology at the given path.
44
+ * Checks row count and cell count match at the target position.
45
+ * Returns false if there's a structural mismatch (row/cell additions, gridSpan divergence).
46
+ */
47
+ export declare function validateContainerTopology(path: ContainerPathStep[], body: Element): boolean;
14
48
  /**
15
49
  * Options for in-place modification.
16
50
  */
@@ -106,7 +140,7 @@ export declare function insertMoveFromRun(atom: ComparisonUnitAtom, moveName: st
106
140
  * @param state - Revision ID state
107
141
  * @returns The inserted paragraph, or null if insertion failed
108
142
  */
109
- export declare function insertDeletedParagraph(deletedAtom: ComparisonUnitAtom, insertAfterParagraph: Element | null, targetBody: Element, author: string, dateStr: string, state: RevisionIdState): Element | null;
143
+ export declare function insertDeletedParagraph(deletedAtom: ComparisonUnitAtom, insertAfterParagraph: Element | null, targetContainer: Element, author: string, dateStr: string, state: RevisionIdState): Element | null;
110
144
  /**
111
145
  * Wrap a run element with <w:moveFrom> for moved-from content.
112
146
  *
@@ -1 +1 @@
1
- {"version":3,"file":"inPlaceModifier.d.ts","sourceRoot":"","sources":["../../../src/baselines/atomizer/inPlaceModifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inPlaceModifier.d.ts","sourceRoot":"","sources":["../../../src/baselines/atomizer/inPlaceModifier.ts"],"names":[],"mappings":"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"}