docrev 0.9.6 → 0.9.11

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 (80) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/dev_notes/bug_repro_comment_parser.md +71 -0
  3. package/dev_notes/stress2/adversarial.docx +0 -0
  4. package/dev_notes/stress2/build_adversarial.ts +186 -0
  5. package/dev_notes/stress2/drift_matcher.ts +62 -0
  6. package/dev_notes/stress2/probe_anchors.ts +35 -0
  7. package/dev_notes/stress2/project/adversarial.docx +0 -0
  8. package/dev_notes/stress2/project/discussion.before.md +3 -0
  9. package/dev_notes/stress2/project/discussion.md +3 -0
  10. package/dev_notes/stress2/project/methods.before.md +20 -0
  11. package/dev_notes/stress2/project/methods.md +20 -0
  12. package/dev_notes/stress2/project/rev.yaml +5 -0
  13. package/dev_notes/stress2/project/sections.yaml +4 -0
  14. package/dev_notes/stress2/sections.yaml +5 -0
  15. package/dev_notes/stress2/trace_placement.ts +50 -0
  16. package/dev_notes/stresstest_boundaries.ts +27 -0
  17. package/dev_notes/stresstest_drift_apply.ts +43 -0
  18. package/dev_notes/stresstest_drift_compare.ts +43 -0
  19. package/dev_notes/stresstest_drift_v2.ts +54 -0
  20. package/dev_notes/stresstest_inspect.ts +54 -0
  21. package/dev_notes/stresstest_pstyle.ts +55 -0
  22. package/dev_notes/stresstest_section_debug.ts +23 -0
  23. package/dev_notes/stresstest_split.ts +70 -0
  24. package/dev_notes/stresstest_trace.ts +19 -0
  25. package/dev_notes/stresstest_verify_no_overwrite.ts +40 -0
  26. package/dist/lib/anchor-match.d.ts +51 -0
  27. package/dist/lib/anchor-match.d.ts.map +1 -0
  28. package/dist/lib/anchor-match.js +227 -0
  29. package/dist/lib/anchor-match.js.map +1 -0
  30. package/dist/lib/annotations.d.ts.map +1 -1
  31. package/dist/lib/annotations.js +24 -11
  32. package/dist/lib/annotations.js.map +1 -1
  33. package/dist/lib/commands/index.d.ts +2 -1
  34. package/dist/lib/commands/index.d.ts.map +1 -1
  35. package/dist/lib/commands/index.js +3 -1
  36. package/dist/lib/commands/index.js.map +1 -1
  37. package/dist/lib/commands/quality.js +1 -1
  38. package/dist/lib/commands/quality.js.map +1 -1
  39. package/dist/lib/commands/section-boundaries.d.ts +22 -0
  40. package/dist/lib/commands/section-boundaries.d.ts.map +1 -0
  41. package/dist/lib/commands/section-boundaries.js +63 -0
  42. package/dist/lib/commands/section-boundaries.js.map +1 -0
  43. package/dist/lib/commands/sync.d.ts.map +1 -1
  44. package/dist/lib/commands/sync.js +141 -0
  45. package/dist/lib/commands/sync.js.map +1 -1
  46. package/dist/lib/commands/verify-anchors.d.ts +17 -0
  47. package/dist/lib/commands/verify-anchors.d.ts.map +1 -0
  48. package/dist/lib/commands/verify-anchors.js +226 -0
  49. package/dist/lib/commands/verify-anchors.js.map +1 -0
  50. package/dist/lib/comment-realign.js +2 -2
  51. package/dist/lib/comment-realign.js.map +1 -1
  52. package/dist/lib/import.d.ts +26 -8
  53. package/dist/lib/import.d.ts.map +1 -1
  54. package/dist/lib/import.js +166 -187
  55. package/dist/lib/import.js.map +1 -1
  56. package/dist/lib/response.js +1 -1
  57. package/dist/lib/response.js.map +1 -1
  58. package/dist/lib/word-extraction.d.ts +23 -0
  59. package/dist/lib/word-extraction.d.ts.map +1 -1
  60. package/dist/lib/word-extraction.js +79 -0
  61. package/dist/lib/word-extraction.js.map +1 -1
  62. package/dist/lib/wordcomments.d.ts.map +1 -1
  63. package/dist/lib/wordcomments.js +165 -73
  64. package/dist/lib/wordcomments.js.map +1 -1
  65. package/lib/anchor-match.ts +276 -0
  66. package/lib/annotations.ts +25 -11
  67. package/lib/commands/index.ts +3 -0
  68. package/lib/commands/quality.ts +1 -1
  69. package/lib/commands/section-boundaries.ts +82 -0
  70. package/lib/commands/sync.ts +170 -0
  71. package/lib/commands/verify-anchors.ts +272 -0
  72. package/lib/comment-realign.ts +2 -2
  73. package/lib/import.ts +197 -209
  74. package/lib/response.ts +1 -1
  75. package/lib/word-extraction.ts +93 -0
  76. package/lib/wordcomments.ts +180 -82
  77. package/package.json +1 -1
  78. package/skill/REFERENCE.md +29 -2
  79. package/skill/SKILL.md +12 -2
  80. package/dist/package.json +0 -137
@@ -13,160 +13,108 @@ import { promisify } from 'util';
13
13
  import { extractFromWord, } from './word-extraction.js';
14
14
  import { generateSmartDiff, cleanupAnnotations, fixCitationAnnotations, } from './diff-engine.js';
15
15
  import { restoreCrossrefFromWord, restoreImagesFromRegistry, convertVisibleComments, } from './restore-references.js';
16
+ import { findAnchorInText, findAllOccurrences } from './anchor-match.js';
17
+ /**
18
+ * Pick the best position from candidate `occurrences` given the
19
+ * surrounding `before` / `after` context from the docx, while
20
+ * respecting `usedPositions` to avoid stacking distinct comments at
21
+ * the same anchor instance.
22
+ *
23
+ * Returns the chosen position, or -1 if every candidate is already used.
24
+ */
25
+ function pickBestOccurrence(occurrences, result, before, after, anchorLen, usedPositions) {
26
+ if (occurrences.length === 0)
27
+ return -1;
28
+ if (occurrences.length === 1) {
29
+ return usedPositions.has(occurrences[0]) ? -1 : occurrences[0];
30
+ }
31
+ let bestIdx = occurrences.find(p => !usedPositions.has(p)) ?? -1;
32
+ if (bestIdx < 0)
33
+ return -1;
34
+ let bestScore = -1;
35
+ for (const pos of occurrences) {
36
+ if (usedPositions.has(pos))
37
+ continue;
38
+ let score = 0;
39
+ if (before) {
40
+ const contextBefore = result.slice(Math.max(0, pos - before.length - 20), pos).toLowerCase();
41
+ const beforeLower = before.toLowerCase();
42
+ const beforeWords = beforeLower.split(/\s+/).filter(w => w.length > 3);
43
+ for (const word of beforeWords) {
44
+ if (contextBefore.includes(word))
45
+ score += 2;
46
+ }
47
+ if (contextBefore.includes(beforeLower.slice(-30)))
48
+ score += 5;
49
+ }
50
+ if (after) {
51
+ const contextAfter = result.slice(pos + anchorLen, pos + anchorLen + after.length + 20).toLowerCase();
52
+ const afterLower = after.toLowerCase();
53
+ const afterWords = afterLower.split(/\s+/).filter(w => w.length > 3);
54
+ for (const word of afterWords) {
55
+ if (contextAfter.includes(word))
56
+ score += 2;
57
+ }
58
+ if (contextAfter.includes(afterLower.slice(0, 30)))
59
+ score += 5;
60
+ }
61
+ if (score > bestScore || (score === bestScore && pos < bestIdx)) {
62
+ bestScore = score;
63
+ bestIdx = pos;
64
+ }
65
+ }
66
+ return bestIdx;
67
+ }
16
68
  // Re-export everything so existing imports from './import.js' still work
17
- export { extractFromWord, extractWordComments, extractCommentAnchors, extractWordTables, } from './word-extraction.js';
69
+ export { extractFromWord, extractWordComments, extractCommentAnchors, extractHeadings, extractWordTables, } from './word-extraction.js';
18
70
  export { generateSmartDiff, generateAnnotatedDiff, cleanupAnnotations, fixCitationAnnotations, } from './diff-engine.js';
19
71
  export { restoreCrossrefFromWord, restoreImagesFromRegistry, parseVisibleComments, convertVisibleComments, } from './restore-references.js';
20
72
  const execAsync = promisify(exec);
21
73
  // ============================================
22
74
  // Functions
23
75
  // ============================================
76
+ /**
77
+ * If `pos` lands inside a section file's leading `# Heading` line (or the
78
+ * blank line right after it), advance past the first paragraph break so
79
+ * the comment stays inside the section. A comment authored at the very
80
+ * start of a Word section maps to `pos === 0`, but inserting at column 0
81
+ * of a markdown file that begins with `# Heading` puts the `{>>...<<}`
82
+ * before the heading marker — Pandoc then treats the line as ordinary
83
+ * paragraph text and the comment renders in the previous section.
84
+ */
85
+ function pushPastSectionHeading(text, pos) {
86
+ if (pos > 0) {
87
+ const headingMatch = text.match(/^#{1,6}\s.+$/m);
88
+ if (!headingMatch || headingMatch.index === undefined)
89
+ return pos;
90
+ const headingEnd = headingMatch.index + headingMatch[0].length;
91
+ if (pos >= headingEnd)
92
+ return pos;
93
+ }
94
+ // pos is at-or-before the first heading line. Advance to the first
95
+ // non-blank position after the heading paragraph.
96
+ const headingLine = text.match(/^#{1,6}\s.+(?:\n|$)/m);
97
+ if (!headingLine || headingLine.index === undefined)
98
+ return pos;
99
+ let after = headingLine.index + headingLine[0].length;
100
+ // Skip blank lines so we land at the start of the first body paragraph.
101
+ while (after < text.length && (text[after] === '\n' || text[after] === '\r')) {
102
+ after++;
103
+ }
104
+ return after;
105
+ }
24
106
  /**
25
107
  * Insert comments into markdown text based on anchor texts with context
26
108
  */
27
109
  export function insertCommentsIntoMarkdown(markdown, comments, anchors, options = {}) {
28
- const { quiet = false, sectionBoundary = null } = options;
110
+ const { quiet = false, sectionBoundary = null, wrapAnchor = true, outStats } = options;
29
111
  let result = markdown;
30
112
  let unmatchedCount = 0;
113
+ let placedCount = 0;
31
114
  const duplicateWarnings = [];
32
115
  const usedPositions = new Set(); // For tie-breaking: track used positions
33
- // Helper: Strip CriticMarkup from text to get "clean" version for matching
34
- function stripCriticMarkup(text) {
35
- return text
36
- .replace(/\{\+\+([^+]*)\+\+\}/g, '$1') // insertions: keep inserted text
37
- .replace(/\{--([^-]*)--\}/g, '') // deletions: remove deleted text
38
- .replace(/\{~~([^~]*)~>([^~]*)~~\}/g, '$2') // substitutions: keep new text
39
- .replace(/\{>>[^<]*<<\}/g, '') // comments: remove
40
- .replace(/\[([^\]]*)\]\{\.mark\}/g, '$1'); // marked text: keep text
41
- }
42
- // Helper: Find anchor in text with multiple fallback strategies
43
- function findAnchorInText(anchor, text, before = '', after = '') {
44
- // If anchor is empty, skip directly to context-based matching
45
- if (!anchor || anchor.trim().length === 0) {
46
- // Jump to context-based strategies (Strategy 5)
47
- if (before || after) {
48
- const beforeLower = (before || '').toLowerCase();
49
- const afterLower = (after || '').toLowerCase();
50
- const textLower = text.toLowerCase();
51
- if (before && after) {
52
- const beforeIdx = textLower.indexOf(beforeLower.slice(-50));
53
- if (beforeIdx !== -1) {
54
- const searchStart = beforeIdx + beforeLower.slice(-50).length;
55
- const afterIdx = textLower.indexOf(afterLower.slice(0, 50), searchStart);
56
- if (afterIdx !== -1 && afterIdx - searchStart < 500) {
57
- return { occurrences: [searchStart], matchedAnchor: null, strategy: 'context-both' };
58
- }
59
- }
60
- }
61
- if (before) {
62
- const beforeIdx = textLower.lastIndexOf(beforeLower.slice(-30));
63
- if (beforeIdx !== -1) {
64
- return { occurrences: [beforeIdx + beforeLower.slice(-30).length], matchedAnchor: null, strategy: 'context-before' };
65
- }
66
- }
67
- if (after) {
68
- const afterIdx = textLower.indexOf(afterLower.slice(0, 30));
69
- if (afterIdx !== -1) {
70
- return { occurrences: [afterIdx], matchedAnchor: null, strategy: 'context-after' };
71
- }
72
- }
73
- }
74
- return { occurrences: [], matchedAnchor: null, strategy: 'empty-anchor' };
75
- }
76
- const anchorLower = anchor.toLowerCase();
77
- const textLower = text.toLowerCase();
78
- // Strategy 1: Direct match
79
- let occurrences = findAllOccurrences(textLower, anchorLower);
80
- if (occurrences.length > 0) {
81
- return { occurrences, matchedAnchor: anchor, strategy: 'direct' };
82
- }
83
- // Strategy 2: Normalized whitespace
84
- const normalizedAnchor = anchor.replace(/\s+/g, ' ').toLowerCase();
85
- const normalizedText = text.replace(/\s+/g, ' ').toLowerCase();
86
- let idx = normalizedText.indexOf(normalizedAnchor);
87
- if (idx !== -1) {
88
- return { occurrences: [idx], matchedAnchor: anchor, strategy: 'normalized' };
89
- }
90
- // Strategy 3: Try matching in stripped CriticMarkup version
91
- const strippedText = stripCriticMarkup(text);
92
- const strippedLower = strippedText.toLowerCase();
93
- occurrences = findAllOccurrences(strippedLower, anchorLower);
94
- if (occurrences.length > 0) {
95
- return { occurrences, matchedAnchor: anchor, strategy: 'stripped', stripped: true };
96
- }
97
- // Strategy 4: First N words of anchor (for long anchors)
98
- const words = anchor.split(/\s+/);
99
- if (words.length > 3) {
100
- for (let n = Math.min(6, words.length); n >= 3; n--) {
101
- const partialAnchor = words.slice(0, n).join(' ').toLowerCase();
102
- if (partialAnchor.length >= 15) {
103
- occurrences = findAllOccurrences(textLower, partialAnchor);
104
- if (occurrences.length > 0) {
105
- return { occurrences, matchedAnchor: words.slice(0, n).join(' '), strategy: 'partial-start' };
106
- }
107
- occurrences = findAllOccurrences(strippedLower, partialAnchor);
108
- if (occurrences.length > 0) {
109
- return { occurrences, matchedAnchor: words.slice(0, n).join(' '), strategy: 'partial-start-stripped', stripped: true };
110
- }
111
- }
112
- }
113
- }
114
- // Strategy 5: Use context (before/after) to find approximate position
115
- if (before || after) {
116
- const beforeLower = before.toLowerCase();
117
- const afterLower = after.toLowerCase();
118
- if (before && after) {
119
- const beforeIdx = textLower.indexOf(beforeLower.slice(-50));
120
- if (beforeIdx !== -1) {
121
- const searchStart = beforeIdx + beforeLower.slice(-50).length;
122
- const afterIdx = textLower.indexOf(afterLower.slice(0, 50), searchStart);
123
- if (afterIdx !== -1 && afterIdx - searchStart < 500) {
124
- return { occurrences: [searchStart], matchedAnchor: null, strategy: 'context-both' };
125
- }
126
- }
127
- }
128
- if (before) {
129
- const beforeIdx = textLower.lastIndexOf(beforeLower.slice(-30));
130
- if (beforeIdx !== -1) {
131
- return { occurrences: [beforeIdx + beforeLower.slice(-30).length], matchedAnchor: null, strategy: 'context-before' };
132
- }
133
- }
134
- if (after) {
135
- const afterIdx = textLower.indexOf(afterLower.slice(0, 30));
136
- if (afterIdx !== -1) {
137
- return { occurrences: [afterIdx], matchedAnchor: null, strategy: 'context-after' };
138
- }
139
- }
140
- }
141
- // Strategy 6: Try splitting anchor on common transition words
142
- const splitPatterns = [' ', ', ', '. ', ' - ', ' – '];
143
- for (const sep of splitPatterns) {
144
- if (anchor.includes(sep)) {
145
- const parts = anchor.split(sep).filter(p => p.length >= 4);
146
- for (const part of parts) {
147
- const partLower = part.toLowerCase();
148
- occurrences = findAllOccurrences(textLower, partLower);
149
- if (occurrences.length > 0 && occurrences.length < 5) {
150
- return { occurrences, matchedAnchor: part, strategy: 'split-match' };
151
- }
152
- }
153
- }
154
- }
155
- return { occurrences: [], matchedAnchor: null, strategy: 'failed' };
156
- }
157
- // Helper: Find all occurrences of needle in haystack
158
- function findAllOccurrences(haystack, needle) {
159
- if (!needle || needle.length === 0) {
160
- return [];
161
- }
162
- const occurrences = [];
163
- let idx = 0;
164
- while ((idx = haystack.indexOf(needle, idx)) !== -1) {
165
- occurrences.push(idx);
166
- idx += 1;
167
- }
168
- return occurrences;
169
- }
116
+ // Anchor matching primitives live in lib/anchor-match.ts so that
117
+ // `rev verify-anchors` can use the same strategies for drift reporting.
170
118
  // Get all positions in order (for sequential tie-breaking)
171
119
  const commentsWithPositions = comments.map((c) => {
172
120
  const anchorData = anchors.get(c.id);
@@ -193,6 +141,17 @@ export function insertCommentsIntoMarkdown(markdown, comments, anchors, options
193
141
  }
194
142
  const proportion = Math.min(relativePos / sectionLength, 1.0);
195
143
  const markdownPos = Math.floor(proportion * result.length);
144
+ // For empty anchors, before/after context is the only signal that
145
+ // pinpoints the original split — without it, proportional placement
146
+ // can land mid-word or split unrelated phrases. Try context match
147
+ // first; only fall through to proportional when context is gone.
148
+ if ((!anchor || isEmpty) && (before || after)) {
149
+ const ctx = findAnchorInText('', result, before, after);
150
+ if (ctx.occurrences.length > 0) {
151
+ const pos = pushPastSectionHeading(result, ctx.occurrences[0]);
152
+ return { ...c, pos, anchorText: null, isEmpty: true, strategy: `ctx:${ctx.strategy}` };
153
+ }
154
+ }
196
155
  let insertPos = markdownPos;
197
156
  // Look for nearby word boundary
198
157
  const searchWindow = result.slice(Math.max(0, markdownPos - 25), Math.min(result.length, markdownPos + 25));
@@ -200,25 +159,48 @@ export function insertCommentsIntoMarkdown(markdown, comments, anchors, options
200
159
  if (spaceIdx !== -1 && spaceIdx < 50) {
201
160
  insertPos = Math.max(0, markdownPos - 25) + spaceIdx;
202
161
  }
203
- // If we have anchor text, try to find it near this position
162
+ // If we have anchor text, try to find it near this position.
163
+ // Collect ALL occurrences in the local window, then disambiguate
164
+ // via before/after context + usedPositions — otherwise two
165
+ // comments sharing the same anchor word would both collide at
166
+ // the leftmost match. The context-scoring helper handles the
167
+ // "repeated formulaic prose" case using docx-side context, which
168
+ // is a stronger signal than raw distance to the proportional
169
+ // insertPos (insertPos is itself an approximation).
204
170
  if (anchor && !isEmpty) {
205
171
  const searchStart = Math.max(0, insertPos - 200);
206
172
  const searchEnd = Math.min(result.length, insertPos + 200);
207
173
  const localSearch = result.slice(searchStart, searchEnd).toLowerCase();
208
174
  const anchorLower = anchor.toLowerCase();
209
- const localIdx = localSearch.indexOf(anchorLower);
210
- if (localIdx !== -1) {
211
- return { ...c, pos: searchStart + localIdx, anchorText: anchor, anchorEnd: searchStart + localIdx + anchor.length, strategy: 'position+text' };
175
+ const localHits = findAllOccurrences(localSearch, anchorLower).map(i => searchStart + i);
176
+ if (localHits.length > 0) {
177
+ const chosen = pickBestOccurrence(localHits, result, before, after, anchor.length, usedPositions);
178
+ if (chosen >= 0) {
179
+ if (localHits.length > 1) {
180
+ duplicateWarnings.push(`"${anchor.slice(0, 40)}${anchor.length > 40 ? '...' : ''}" appears ${localHits.length} times in section window`);
181
+ }
182
+ usedPositions.add(chosen);
183
+ return { ...c, pos: chosen, anchorText: anchor, anchorEnd: chosen + anchor.length, strategy: 'position+text' };
184
+ }
212
185
  }
213
186
  // Try first few words
214
187
  const words = anchor.split(/\s+/).slice(0, 4).join(' ').toLowerCase();
215
188
  if (words.length >= 10) {
216
- const partialIdx = localSearch.indexOf(words);
217
- if (partialIdx !== -1) {
218
- return { ...c, pos: searchStart + partialIdx, anchorText: words, anchorEnd: searchStart + partialIdx + words.length, strategy: 'position+partial' };
189
+ const partialHits = findAllOccurrences(localSearch, words).map(i => searchStart + i);
190
+ if (partialHits.length > 0) {
191
+ const chosen = pickBestOccurrence(partialHits, result, before, after, words.length, usedPositions);
192
+ if (chosen >= 0) {
193
+ usedPositions.add(chosen);
194
+ return { ...c, pos: chosen, anchorText: words, anchorEnd: chosen + words.length, strategy: 'position+partial' };
195
+ }
219
196
  }
220
197
  }
221
198
  }
199
+ // A docPosition at the very start of a section maps to markdownPos=0,
200
+ // which sits before the file's `# Heading` line and gets rendered in
201
+ // the previous section. Push past the heading line so the comment
202
+ // stays inside the section it was authored in.
203
+ insertPos = pushPastSectionHeading(result, insertPos);
222
204
  return { ...c, pos: insertPos, anchorText: null, strategy: 'position-only' };
223
205
  }
224
206
  }
@@ -252,45 +234,14 @@ export function insertCommentsIntoMarkdown(markdown, comments, anchors, options
252
234
  if (matchedAnchor) {
253
235
  duplicateWarnings.push(`"${matchedAnchor.slice(0, 40)}${matchedAnchor.length > 40 ? '...' : ''}" appears ${occurrences.length} times`);
254
236
  }
255
- let bestIdx = occurrences.find(p => !usedPositions.has(p)) ?? occurrences[0];
256
- let bestScore = -1;
257
- for (const pos of occurrences) {
258
- if (usedPositions.has(pos))
259
- continue;
260
- let score = 0;
261
- if (before) {
262
- const contextBefore = result.slice(Math.max(0, pos - before.length - 20), pos).toLowerCase();
263
- const beforeLower = before.toLowerCase();
264
- const beforeWords = beforeLower.split(/\s+/).filter(w => w.length > 3);
265
- for (const word of beforeWords) {
266
- if (contextBefore.includes(word))
267
- score += 2;
268
- }
269
- if (contextBefore.includes(beforeLower.slice(-30)))
270
- score += 5;
271
- }
272
- if (after) {
273
- const contextAfter = result.slice(pos + anchorLen, pos + anchorLen + after.length + 20).toLowerCase();
274
- const afterLower = after.toLowerCase();
275
- const afterWords = afterLower.split(/\s+/).filter(w => w.length > 3);
276
- for (const word of afterWords) {
277
- if (contextAfter.includes(word))
278
- score += 2;
279
- }
280
- if (contextAfter.includes(afterLower.slice(0, 30)))
281
- score += 5;
282
- }
283
- if (score > bestScore || (score === bestScore && pos < bestIdx)) {
284
- bestScore = score;
285
- bestIdx = pos;
286
- }
287
- }
288
- usedPositions.add(bestIdx);
237
+ const bestIdx = pickBestOccurrence(occurrences, result, before, after, anchorLen, usedPositions);
238
+ const finalIdx = bestIdx >= 0 ? bestIdx : occurrences[0];
239
+ usedPositions.add(finalIdx);
289
240
  if (matchedAnchor) {
290
- return { ...c, pos: bestIdx, anchorText: matchedAnchor, anchorEnd: bestIdx + anchorLen };
241
+ return { ...c, pos: finalIdx, anchorText: matchedAnchor, anchorEnd: finalIdx + anchorLen };
291
242
  }
292
243
  else {
293
- return { ...c, pos: bestIdx, anchorText: null };
244
+ return { ...c, pos: finalIdx, anchorText: null };
294
245
  }
295
246
  });
296
247
  // Log any unmatched comments for debugging
@@ -304,26 +255,54 @@ export function insertCommentsIntoMarkdown(markdown, comments, anchors, options
304
255
  const matched = commentsWithPositions.filter((c) => c.pos >= 0);
305
256
  // Sort by position descending (insert from end to avoid offset issues)
306
257
  matched.sort((a, b) => b.pos - a.pos);
307
- // Insert each comment with anchor marking
258
+ // Insert each comment. With `wrapAnchor` (the default), the anchor text
259
+ // gets wrapped in `[anchor]{.mark}` so the rebuilt docx restores the
260
+ // original Word comment range. Without it, the comment block is inserted
261
+ // adjacent to the anchor and prose stays untouched — required for
262
+ // comments-only sync where multiple comments may share one anchor.
263
+ // Skip insertion when an identical comment already lives near the target.
264
+ // Re-running sync against the same docx would otherwise stack duplicate
265
+ // CriticMarkup blocks (`{>>R1: ...<<}{>>R1: ...<<}...`) on each invocation.
266
+ // A 200-char window catches both wrapped (`{>>...<<}[anchor]{.mark}`) and
267
+ // bare (`{>>...<<}anchor`) forms while ignoring incidental matches farther
268
+ // away.
269
+ let dedupedCount = 0;
308
270
  for (const c of matched) {
309
271
  const comment = `{>>${c.author}: ${c.text}<<}`;
310
- if (c.anchorText && c.anchorEnd) {
311
- // Replace anchor text with: {>>comment<<}[anchor]{.mark}
272
+ const windowStart = Math.max(0, c.pos - 200);
273
+ const windowEnd = Math.min(result.length, c.pos + 200);
274
+ if (result.slice(windowStart, windowEnd).includes(comment)) {
275
+ dedupedCount++;
276
+ continue;
277
+ }
278
+ if (wrapAnchor && c.anchorText && c.anchorEnd) {
312
279
  const before = result.slice(0, c.pos);
313
280
  const anchor = result.slice(c.pos, c.anchorEnd);
314
281
  const after = result.slice(c.anchorEnd);
315
282
  result = before + comment + `[${anchor}]{.mark}` + after;
316
283
  }
317
284
  else {
318
- // No anchor - just insert comment at position
319
- result = result.slice(0, c.pos) + ` ${comment}` + result.slice(c.pos);
285
+ // Insert comment at the anchor position with no surrounding whitespace
286
+ // tweaks; CriticMarkup blocks are invisible to readers, and adding a
287
+ // leading space would shift prose byte-for-byte (relevant when callers
288
+ // verify that --comments-only didn't touch the original).
289
+ result = result.slice(0, c.pos) + comment + result.slice(c.pos);
320
290
  }
291
+ placedCount++;
292
+ }
293
+ if (outStats) {
294
+ outStats.placed = placedCount;
295
+ outStats.deduped = dedupedCount;
296
+ outStats.unmatched = unmatchedCount;
321
297
  }
322
298
  // Log warnings unless quiet mode
323
299
  if (!quiet) {
324
300
  if (unmatchedCount > 0) {
325
301
  console.warn(`Warning: ${unmatchedCount} comment(s) could not be matched to anchor text`);
326
302
  }
303
+ if (dedupedCount > 0) {
304
+ console.warn(`Note: ${dedupedCount} comment(s) already present at anchor — skipped to avoid duplication`);
305
+ }
327
306
  if (duplicateWarnings.length > 0) {
328
307
  console.warn(`Warning: Duplicate anchor text found (using context & tie-breaks for placement):`);
329
308
  for (const w of duplicateWarnings) {
@@ -1 +1 @@
1
- {"version":3,"file":"import.js","sourceRoot":"","sources":["../../lib/import.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../lib/import.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEjC,4BAA4B;AAC5B,OAAO,EACL,eAAe,GAIhB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EACL,iBAAiB,EAEjB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EAEzB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEzE;;;;;;;GAOG;AACH,SAAS,kBAAkB,CACzB,WAAqB,EACrB,MAAc,EACd,MAAc,EACd,KAAa,EACb,SAAiB,EACjB,aAA0B;IAE1B,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IACxC,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC,CAAC;IAC3B,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;IAEnB,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACrC,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;YAC7F,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACzC,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACvE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,KAAK,IAAI,CAAC,CAAC;YAC/C,CAAC;YACD,IAAI,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,EAAE,GAAG,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;YACtG,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACrE,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,KAAK,IAAI,CAAC,CAAC;YAC9C,CAAC;YACD,IAAI,YAAY,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAAE,KAAK,IAAI,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,KAAK,GAAG,SAAS,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,GAAG,GAAG,OAAO,CAAC,EAAE,CAAC;YAChE,SAAS,GAAG,KAAK,CAAC;YAClB,OAAO,GAAG,GAAG,CAAC;QAChB,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,yEAAyE;AACzE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAc9B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,kBAAkB,CAAC;AAK1B,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAMjC,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAmGlC,+CAA+C;AAC/C,YAAY;AACZ,+CAA+C;AAE/C;;;;;;;;GAQG;AACH,SAAS,sBAAsB,CAAC,IAAY,EAAE,GAAW;IACvD,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACZ,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,GAAG,CAAC;QAClE,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,IAAI,GAAG,IAAI,UAAU;YAAE,OAAO,GAAG,CAAC;IACpC,CAAC;IACD,mEAAmE;IACnE,kDAAkD;IAClD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACvD,IAAI,CAAC,WAAW,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IAChE,IAAI,KAAK,GAAG,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACtD,wEAAwE;IACxE,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7E,KAAK,EAAE,CAAC;IACV,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAAgB,EAChB,QAAuB,EACvB,OAAgD,EAChD,UAAiC,EAAE;IAEnC,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,eAAe,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACvF,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC,CAAC,yCAAyC;IAElF,iEAAiE;IACjE,wEAAwE;IAExE,2DAA2D;IAC3D,MAAM,qBAAqB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAkB,EAAE;QAC/D,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,cAAc,EAAE,CAAC;YACjB,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC7C,CAAC;QAED,4EAA4E;QAC5E,MAAM,MAAM,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;QAC/E,MAAM,MAAM,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,KAAK,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,MAAM,OAAO,GAAG,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,CAAC,OAAO,CAAC;QACrE,MAAM,WAAW,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAExF,2CAA2C;QAC3C,IAAI,eAAe,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YACjD,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC;YAClE,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,IAAI,WAAW,CAAC;gBAChB,IAAI,WAAW,GAAG,eAAe,CAAC,KAAK,EAAE,CAAC;oBACxC,WAAW,GAAG,CAAC,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACN,WAAW,GAAG,WAAW,GAAG,eAAe,CAAC,KAAK,CAAC;gBACpD,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC;gBAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;gBAE3D,kEAAkE;gBAClE,oEAAoE;gBACpE,kEAAkE;gBAClE,iEAAiE;gBACjE,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC;oBAC9C,MAAM,GAAG,GAAG,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;oBACxD,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC/B,MAAM,GAAG,GAAG,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC/D,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACzF,CAAC;gBACH,CAAC;gBAED,IAAI,SAAS,GAAG,WAAW,CAAC;gBAE5B,gCAAgC;gBAChC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,EAAE,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC5G,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC/C,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,GAAG,EAAE,EAAE,CAAC;oBACrC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC;gBACvD,CAAC;gBAED,6DAA6D;gBAC7D,iEAAiE;gBACjE,2DAA2D;gBAC3D,8DAA8D;gBAC9D,6DAA6D;gBAC7D,iEAAiE;gBACjE,6DAA6D;gBAC7D,oDAAoD;gBACpD,IAAI,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;oBACvB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;oBACjD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;oBAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;oBACvE,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;oBAEzC,MAAM,SAAS,GAAG,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;oBACzF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACzB,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;wBAClG,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;4BAChB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gCACzB,iBAAiB,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,SAAS,CAAC,MAAM,0BAA0B,CAAC,CAAC;4BAC3I,CAAC;4BACD,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;4BAC1B,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;wBACjH,CAAC;oBACH,CAAC;oBAED,sBAAsB;oBACtB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;oBACtE,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;wBACvB,MAAM,WAAW,GAAG,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;wBACrF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;4BAC3B,MAAM,MAAM,GAAG,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;4BACnG,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;gCAChB,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gCAC1B,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;4BAClH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,sEAAsE;gBACtE,qEAAqE;gBACrE,kEAAkE;gBAClE,+CAA+C;gBAC/C,SAAS,GAAG,sBAAsB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAEtD,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;YAC/E,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,CAAC;YACvB,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;gBACpB,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;gBACpE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC3B,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBACxE,CAAC;YACH,CAAC;YACD,cAAc,EAAE,CAAC;YACjB,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC5D,CAAC;QAED,iCAAiC;QACjC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAE3G,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,cAAc,EAAE,CAAC;YACjB,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC7C,CAAC;QAED,MAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,IAAI,aAAa,EAAE,CAAC;gBAClB,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC;YACzG,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YACzD,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,IAAI,aAAa,EAAE,CAAC;YAClB,iBAAiB,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,aAAa,WAAW,CAAC,MAAM,QAAQ,CAAC,CAAC;QACzI,CAAC;QAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QACjG,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACzD,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE5B,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,GAAG,SAAS,EAAE,CAAC;QAC7F,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACnD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,2CAA2C;IAC3C,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACjE,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,2BAA2B,QAAQ,CAAC,MAAM,WAAW,qBAAqB,CAAC,MAAM,eAAe,SAAS,CAAC,MAAM,YAAY,CAAC,CAAC;QAC1I,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1H,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAEhE,uEAAuE;IACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAEtC,wEAAwE;IACxE,qEAAqE;IACrE,yEAAyE;IACzE,kEAAkE;IAClE,mEAAmE;IACnE,0EAA0E;IAC1E,wEAAwE;IACxE,4EAA4E;IAC5E,0EAA0E;IAC1E,2EAA2E;IAC3E,QAAQ;IACR,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC;QAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACvD,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3D,YAAY,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QACD,IAAI,UAAU,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,uEAAuE;YACvE,qEAAqE;YACrE,uEAAuE;YACvE,0DAA0D;YAC1D,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClE,CAAC;QACD,WAAW,EAAE,CAAC;IAChB,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,MAAM,GAAG,WAAW,CAAC;QAC9B,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC;QAChC,QAAQ,CAAC,SAAS,GAAG,cAAc,CAAC;IACtC,CAAC;IAED,iCAAiC;IACjC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,YAAY,cAAc,iDAAiD,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,SAAS,YAAY,sEAAsE,CAAC,CAAC;QAC5G,CAAC;QACD,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;YACjG,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,QAAgB,EAChB,UAA6C,EAAE;IAE/C,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,cAAc,GAAG,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/D,MAAM,gBAAgB,GAAG,UAAU,IAAI,OAAO,CAAC;IAE/C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAEhF,2BAA2B;IAC3B,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CACzC,WAAW,QAAQ,+CAA+C,EAClE,EAAE,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,CAChC,CAAC;IAEF,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACpF,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,oBAAoB,GAAG,cAAc,GAAG,aAAa,CAAC;IAE5D,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,gBAAgB,aAAa,0BAA0B,cAAc,SAAS,CAAC,CAAC;QAC5F,IAAI,oBAAoB,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,qBAAqB,cAAc,GAAG,aAAa,yBAAyB,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,oBAAoB;IACpB,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE;QAChD,QAAQ,EAAE,cAAc;QACxB,mBAAmB,EAAE,CAAC,oBAAoB;KAC3C,CAAC,CAAC;IAEH,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;IAC1B,MAAM,cAAc,GAAG,SAAS,CAAC,cAAc,IAAI,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,IAAI,GAAG,EAAE,CAAC;IAE/C,eAAe;IACf,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;QAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,mBAAmB;IACnB,MAAM,cAAc,GAAG,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IACvE,IAAI,GAAG,cAAc,CAAC,IAAI,CAAC;IAC3B,IAAI,cAAc,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,YAAY,cAAc,CAAC,QAAQ,wBAAwB,CAAC,CAAC;IAC3E,CAAC;IAED,iBAAiB;IACjB,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,IAAI,EAAE,gBAAgB,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;IAC5G,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC;IAC/B,IAAI,kBAAkB,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,YAAY,kBAAkB,CAAC,QAAQ,yBAAyB,CAAC,CAAC;IAChF,CAAC;IAED,kBAAkB;IAClB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,GAAG,0BAA0B,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC;IACxD,CAAC;IAED,WAAW;IACX,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEhC,sBAAsB;IACtB,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACxD,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACrD,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAExD,OAAO;QACL,IAAI;QACJ,KAAK,EAAE;YACL,UAAU;YACV,SAAS;YACT,aAAa;YACb,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,YAAY;YAC5D,eAAe,EAAE,SAAS,CAAC,eAAe;YAC1C,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;SAC7C;QACD,cAAc;QACd,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,cAAsB,EACtB,UAAiC,EAAE;IAEnC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACpE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAEhD,IAAI,QAAgB,CAAC;IACrB,IAAI,cAAc,GAAa,EAAE,CAAC;IAClC,IAAI,UAAU,GAAgB,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;IACvD,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,SAAS,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAEnD,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC7D,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC1D,MAAM,aAAa,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC9D,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAE7D,OAAO;YACL,SAAS;YACT,KAAK,EAAE;gBACL,UAAU;gBACV,SAAS;gBACT,aAAa;gBACb,QAAQ,EAAE,YAAY;gBACtB,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,YAAY;aAC7D;YACD,cAAc,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,UAAU,IAAI,OAAO,CAAC;QAEvC,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChE,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC;QAC1B,cAAc,GAAG,SAAS,CAAC,cAAc,IAAI,EAAE,CAAC;QAChD,UAAU,GAAG,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;QACpC,eAAe,GAAG,SAAS,CAAC,eAAe,IAAI,KAAK,CAAC;QAErD,KAAK,MAAM,GAAG,IAAI,SAAS,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;gBACxB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC3B,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,cAAc,GAAG,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACrE,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC;YAC/B,IAAI,cAAc,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,GAAG,CAAC,YAAY,cAAc,CAAC,QAAQ,wBAAwB,CAAC,CAAC;YAC3E,CAAC;YAED,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;YAC1G,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC;YACnC,IAAI,kBAAkB,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,YAAY,kBAAkB,CAAC,QAAQ,yBAAyB,CAAC,CAAC;YAChF,CAAC;YAED,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,IAAI,GAAG,EAAE,CAAC;YAC/C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACxB,QAAQ,GAAG,0BAA0B,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,MAAM,aAAa,CAAC,CAAC;YACxD,CAAC;YAED,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAExC,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAC5D,MAAM,SAAS,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACzD,MAAM,aAAa,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAC7D,MAAM,YAAY,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAE5D,OAAO;gBACL,SAAS,EAAE,QAAQ;gBACnB,KAAK,EAAE;oBACL,UAAU;oBACV,SAAS;oBACT,aAAa;oBACb,QAAQ,EAAE,YAAY;oBACtB,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,YAAY;iBAC7D;gBACD,cAAc;aACf,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAC;QACrF,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QAE9E,MAAM,cAAc,GAAG,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACrE,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC;QAC/B,IAAI,cAAc,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,YAAY,cAAc,CAAC,QAAQ,wBAAwB,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC,cAAc,CAAC,CAAC;QAC1G,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC;QACnC,IAAI,kBAAkB,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,YAAY,kBAAkB,CAAC,QAAQ,yBAAyB,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAE1D,6BAA6B;IAC7B,UAAU,GAAG,gBAAgB,CAAC,UAAU,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;IAEnE,sBAAsB;IACtB,MAAM,aAAa,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEpD,gBAAgB;IAChB,IAAI,SAAS,GAAG,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;IAE/F,WAAW;IACX,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;IAE1C,2BAA2B;IAC3B,SAAS,GAAG,sBAAsB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAE1D,2BAA2B;IAC3B,SAAS,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;IAE9C,gBAAgB;IAChB,MAAM,UAAU,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC7D,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC1D,MAAM,aAAa,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC9D,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAEzD,OAAO;QACL,SAAS;QACT,KAAK,EAAE;YACL,UAAU;YACV,SAAS;YACT,aAAa;YACb,QAAQ;YACR,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,QAAQ;SACzD;QACD,cAAc;KACf,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,UAAoB,EACpB,UAAkB,EAClB,SAAiB,QAAQ;IAEzB,MAAM,KAAK,GAAgB,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,kBAAkB,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAC3B,CAAC"}
@@ -21,7 +21,7 @@ export function parseCommentsWithReplies(text, file = '') {
21
21
  if (matches.length === 0)
22
22
  continue;
23
23
  // Get context (surrounding text without comments)
24
- const contextLine = line.replace(/\{>>[^<]+<<\}/g, '').trim();
24
+ const contextLine = line.replace(/\{>>[\s\S]+?<<\}/g, '').trim();
25
25
  const context = contextLine.slice(0, 100) + (contextLine.length > 100 ? '...' : '');
26
26
  // First match is the original comment, rest are replies
27
27
  const [first, ...rest] = matches;
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../lib/response.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../lib/response.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,16 @@ export interface CommentAnchorsResult {
26
26
  anchors: Map<string, CommentAnchorData>;
27
27
  fullDocText: string;
28
28
  }
29
+ export interface DocxHeading {
30
+ /** Heading style name from `<w:pStyle>`, e.g. "Heading1" */
31
+ style: string;
32
+ /** Heading depth: 1, 2, 3, ... (parsed from style name; 0 if unknown) */
33
+ level: number;
34
+ /** Concatenated text content of the heading paragraph */
35
+ text: string;
36
+ /** Position in fullDocText (same coordinate system as CommentAnchorData.docPosition) */
37
+ docPosition: number;
38
+ }
29
39
  export interface WordTable {
30
40
  markdown: string;
31
41
  rowCount: number;
@@ -66,6 +76,19 @@ export declare function extractWordComments(docxPath: string): Promise<WordComme
66
76
  * Also returns fullDocText for section boundary matching
67
77
  */
68
78
  export declare function extractCommentAnchors(docxPath: string): Promise<CommentAnchorsResult>;
79
+ /**
80
+ * Extract heading paragraphs from a docx, with their text positions in the
81
+ * same coordinate system as `extractCommentAnchors`'s `fullDocText` and
82
+ * `CommentAnchorData.docPosition`.
83
+ *
84
+ * Headings are paragraphs whose `<w:pStyle>` is a Heading style. Reading
85
+ * styles directly is more reliable than keyword-matching the concatenated
86
+ * body text — there, paragraph boundaries are gone, so the literal string
87
+ * "Methods" can appear inside prose ("results across countries") and the
88
+ * structured-abstract label "Methods:" loses its colon when text runs are
89
+ * concatenated.
90
+ */
91
+ export declare function extractHeadings(docxPath: string): Promise<DocxHeading[]>;
69
92
  /**
70
93
  * Extract tables directly from Word document XML and convert to markdown pipe tables
71
94
  */
@@ -1 +1 @@
1
- {"version":3,"file":"word-extraction.d.ts","sourceRoot":"","sources":["../../lib/word-extraction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACxC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAMD;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAoFlF;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA6J3F;AA2GD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA2C9E;AAqCD;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CA0IhC"}
1
+ {"version":3,"file":"word-extraction.d.ts","sourceRoot":"","sources":["../../lib/word-extraction.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACxC,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7D;AAMD;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAoFlF;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA6J3F;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAoE9E;AA2GD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CA2C9E;AAqCD;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CA0IhC"}