docrev 0.9.7 → 0.9.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/dev_notes/stress2/adversarial.docx +0 -0
- package/dev_notes/stress2/build_adversarial.ts +186 -0
- package/dev_notes/stress2/drift_matcher.ts +62 -0
- package/dev_notes/stress2/probe_anchors.ts +35 -0
- package/dev_notes/stress2/project/adversarial.docx +0 -0
- package/dev_notes/stress2/project/discussion.before.md +3 -0
- package/dev_notes/stress2/project/discussion.md +3 -0
- package/dev_notes/stress2/project/methods.before.md +20 -0
- package/dev_notes/stress2/project/methods.md +20 -0
- package/dev_notes/stress2/project/rev.yaml +5 -0
- package/dev_notes/stress2/project/sections.yaml +4 -0
- package/dev_notes/stress2/sections.yaml +5 -0
- package/dev_notes/stress2/trace_placement.ts +50 -0
- package/dev_notes/stresstest_boundaries.ts +27 -0
- package/dev_notes/stresstest_drift_apply.ts +43 -0
- package/dev_notes/stresstest_drift_compare.ts +43 -0
- package/dev_notes/stresstest_drift_v2.ts +54 -0
- package/dev_notes/stresstest_inspect.ts +54 -0
- package/dev_notes/stresstest_pstyle.ts +55 -0
- package/dev_notes/stresstest_section_debug.ts +23 -0
- package/dev_notes/stresstest_split.ts +70 -0
- package/dev_notes/stresstest_trace.ts +19 -0
- package/dev_notes/stresstest_verify_no_overwrite.ts +40 -0
- package/dist/lib/anchor-match.d.ts +10 -0
- package/dist/lib/anchor-match.d.ts.map +1 -1
- package/dist/lib/anchor-match.js +35 -0
- package/dist/lib/anchor-match.js.map +1 -1
- package/dist/lib/annotations.d.ts.map +1 -1
- package/dist/lib/annotations.js +16 -6
- package/dist/lib/annotations.js.map +1 -1
- package/dist/lib/build.d.ts +12 -0
- package/dist/lib/build.d.ts.map +1 -1
- package/dist/lib/build.js +12 -0
- package/dist/lib/build.js.map +1 -1
- package/dist/lib/commands/quality.js +1 -1
- package/dist/lib/commands/quality.js.map +1 -1
- package/dist/lib/commands/section-boundaries.d.ts +1 -1
- package/dist/lib/commands/section-boundaries.d.ts.map +1 -1
- package/dist/lib/commands/section-boundaries.js +12 -2
- package/dist/lib/commands/section-boundaries.js.map +1 -1
- package/dist/lib/commands/sync.js +19 -13
- package/dist/lib/commands/sync.js.map +1 -1
- package/dist/lib/commands/verify-anchors.d.ts.map +1 -1
- package/dist/lib/commands/verify-anchors.js +15 -4
- package/dist/lib/commands/verify-anchors.js.map +1 -1
- package/dist/lib/comment-realign.js +2 -2
- package/dist/lib/comment-realign.js.map +1 -1
- package/dist/lib/import.d.ts +12 -0
- package/dist/lib/import.d.ts.map +1 -1
- package/dist/lib/import.js +289 -60
- package/dist/lib/import.js.map +1 -1
- package/dist/lib/response.js +1 -1
- package/dist/lib/response.js.map +1 -1
- package/dist/lib/types.d.ts +20 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/word-extraction.d.ts +6 -0
- package/dist/lib/word-extraction.d.ts.map +1 -1
- package/dist/lib/word-extraction.js +46 -3
- package/dist/lib/word-extraction.js.map +1 -1
- package/dist/lib/wordcomments.d.ts.map +1 -1
- package/dist/lib/wordcomments.js +188 -78
- package/dist/lib/wordcomments.js.map +1 -1
- package/lib/anchor-match.ts +38 -0
- package/lib/annotations.ts +16 -6
- package/lib/build.ts +24 -0
- package/lib/commands/quality.ts +1 -1
- package/lib/commands/section-boundaries.ts +11 -1
- package/lib/commands/sync.ts +21 -16
- package/lib/commands/verify-anchors.ts +15 -4
- package/lib/comment-realign.ts +2 -2
- package/lib/import.ts +304 -61
- package/lib/response.ts +1 -1
- package/lib/types.ts +20 -0
- package/lib/word-extraction.ts +50 -3
- package/lib/wordcomments.ts +205 -88
- package/package.json +1 -1
- package/dist/package.json +0 -137
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-anchors.js","sourceRoot":"","sources":["../../../lib/commands/verify-anchors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EACL,KAAK,EACL,EAAE,EACF,IAAI,EACJ,GAAG,EACH,UAAU,EACV,QAAQ,EACR,UAAU,GACX,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAA2B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"verify-anchors.js","sourceRoot":"","sources":["../../../lib/commands/verify-anchors.ts"],"names":[],"mappings":"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"}
|
|
@@ -252,7 +252,7 @@ export async function realignComments(docxPath, markdownPath, options = {}) {
|
|
|
252
252
|
console.log(`Found ${refWithComments.length} paragraphs with ${author} comments in reference`);
|
|
253
253
|
// Strip ALL comments (both authors) from markdown to start fresh
|
|
254
254
|
let markdown = originalMarkdown;
|
|
255
|
-
markdown = markdown.replace(/\s*\{>>[
|
|
255
|
+
markdown = markdown.replace(/\s*\{>>[\s\S]+?<<\}/g, '');
|
|
256
256
|
console.log(`Stripped all comments from markdown`);
|
|
257
257
|
// Parse markdown paragraphs
|
|
258
258
|
const mdParagraphs = parseMdParagraphs(markdown);
|
|
@@ -325,7 +325,7 @@ export async function realignMarkdown(docxPath, markdown, options = {}) {
|
|
|
325
325
|
const refParagraphs = await extractParagraphsWithComments(docxPath);
|
|
326
326
|
const refWithComments = refParagraphs.filter((p) => p.comments.length > 0 && p.comments.some((c) => c.author === author));
|
|
327
327
|
// Strip ALL comments from markdown
|
|
328
|
-
let result = markdown.replace(/\s*\{>>[
|
|
328
|
+
let result = markdown.replace(/\s*\{>>[\s\S]+?<<\}/g, '');
|
|
329
329
|
// Parse markdown paragraphs
|
|
330
330
|
const mdParagraphs = parseMdParagraphs(result);
|
|
331
331
|
// Track insertions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comment-realign.js","sourceRoot":"","sources":["../../lib/comment-realign.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"comment-realign.js","sourceRoot":"","sources":["../../lib/comment-realign.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/import.d.ts
CHANGED
|
@@ -27,6 +27,18 @@ export interface InsertCommentsOptions {
|
|
|
27
27
|
* comments sharing one anchor don't produce nested broken markup.
|
|
28
28
|
*/
|
|
29
29
|
wrapAnchor?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Mutable output: when provided, the function fills in counters so callers
|
|
32
|
+
* can distinguish placement outcomes in their summary. `placed` counts new
|
|
33
|
+
* insertions, `deduped` counts comments that were already present at their
|
|
34
|
+
* anchor (skipped to avoid duplication on re-sync), `unmatched` counts
|
|
35
|
+
* comments whose anchor couldn't be located.
|
|
36
|
+
*/
|
|
37
|
+
outStats?: {
|
|
38
|
+
placed: number;
|
|
39
|
+
deduped: number;
|
|
40
|
+
unmatched: number;
|
|
41
|
+
};
|
|
30
42
|
}
|
|
31
43
|
export interface CommentWithPos {
|
|
32
44
|
id: string;
|
package/dist/lib/import.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../lib/import.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,SAAS,EAEV,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../lib/import.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/import.js
CHANGED
|
@@ -13,7 +13,58 @@ 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 } from './anchor-match.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
|
+
}
|
|
17
68
|
// Re-export everything so existing imports from './import.js' still work
|
|
18
69
|
export { extractFromWord, extractWordComments, extractCommentAnchors, extractHeadings, extractWordTables, } from './word-extraction.js';
|
|
19
70
|
export { generateSmartDiff, generateAnnotatedDiff, cleanupAnnotations, fixCitationAnnotations, } from './diff-engine.js';
|
|
@@ -22,19 +73,120 @@ const execAsync = promisify(exec);
|
|
|
22
73
|
// ============================================
|
|
23
74
|
// Functions
|
|
24
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
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Snap a position to the nearest whitespace boundary within ±50 chars so a
|
|
108
|
+
* proportional fallback insertion never lands mid-word.
|
|
109
|
+
*/
|
|
110
|
+
function snapToWordBoundary(text, pos) {
|
|
111
|
+
if (pos <= 0)
|
|
112
|
+
return 0;
|
|
113
|
+
if (pos >= text.length)
|
|
114
|
+
return text.length;
|
|
115
|
+
if (/\s/.test(text[pos] ?? ''))
|
|
116
|
+
return pos;
|
|
117
|
+
for (let d = 1; d <= 50; d++) {
|
|
118
|
+
if (pos + d < text.length && /\s/.test(text[pos + d] ?? ''))
|
|
119
|
+
return pos + d;
|
|
120
|
+
if (pos - d >= 0 && /\s/.test(text[pos - d] ?? ''))
|
|
121
|
+
return pos - d;
|
|
122
|
+
}
|
|
123
|
+
return pos;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Final-resort placement when every text-matching strategy failed. The docx
|
|
127
|
+
* carries a real `<w:commentRangeStart w:id="N">` marker at a known offset
|
|
128
|
+
* inside its body text — that's a structural anchor, even if the anchored
|
|
129
|
+
* span itself is empty and the surrounding context drifted in the target.
|
|
130
|
+
*
|
|
131
|
+
* Map docPosition into the target markdown proportionally and snap to a word
|
|
132
|
+
* boundary. This is approximate when the document was heavily restructured,
|
|
133
|
+
* but it's strictly better than silently dropping a reviewer's comment: the
|
|
134
|
+
* comment lands in roughly the right neighborhood and the reviewer can
|
|
135
|
+
* relocate it during their next pass.
|
|
136
|
+
*/
|
|
137
|
+
function proportionalFallback(anchorData, target) {
|
|
138
|
+
if (anchorData.docLength <= 0)
|
|
139
|
+
return null;
|
|
140
|
+
const proportion = Math.min(anchorData.docPosition / anchorData.docLength, 1.0);
|
|
141
|
+
const rawPos = Math.floor(proportion * target.length);
|
|
142
|
+
return pushPastSectionHeading(target, snapToWordBoundary(target, rawPos));
|
|
143
|
+
}
|
|
25
144
|
/**
|
|
26
145
|
* Insert comments into markdown text based on anchor texts with context
|
|
27
146
|
*/
|
|
28
147
|
export function insertCommentsIntoMarkdown(markdown, comments, anchors, options = {}) {
|
|
29
|
-
const { quiet = false, sectionBoundary = null, wrapAnchor = true } = options;
|
|
148
|
+
const { quiet = false, sectionBoundary = null, wrapAnchor = true, outStats } = options;
|
|
30
149
|
let result = markdown;
|
|
31
150
|
let unmatchedCount = 0;
|
|
151
|
+
let placedCount = 0;
|
|
32
152
|
const duplicateWarnings = [];
|
|
33
153
|
const usedPositions = new Set(); // For tie-breaking: track used positions
|
|
154
|
+
// Resolve threading: replies share their parent's anchor in Word, so they
|
|
155
|
+
// must inherit the parent's position and ride alongside it as one cluster.
|
|
156
|
+
// Letting each reply run through anchor scoring scatters the cluster (the
|
|
157
|
+
// same docPosition forces `usedPositions` to push later replies onto a
|
|
158
|
+
// different occurrence), which on re-build looks like independent comments
|
|
159
|
+
// and loses the paraIdParent threading. See gcol33/docrev issue #2.
|
|
160
|
+
const inputById = new Map();
|
|
161
|
+
for (const c of comments)
|
|
162
|
+
inputById.set(c.id, c);
|
|
163
|
+
function rootIdOf(c) {
|
|
164
|
+
let cur = c;
|
|
165
|
+
const seen = new Set();
|
|
166
|
+
while (cur.parentId && !seen.has(cur.id)) {
|
|
167
|
+
seen.add(cur.id);
|
|
168
|
+
const parent = inputById.get(cur.parentId);
|
|
169
|
+
if (!parent || parent === cur)
|
|
170
|
+
break;
|
|
171
|
+
cur = parent;
|
|
172
|
+
}
|
|
173
|
+
return cur.id;
|
|
174
|
+
}
|
|
175
|
+
const replyRootId = new Map();
|
|
176
|
+
for (const c of comments) {
|
|
177
|
+
const root = rootIdOf(c);
|
|
178
|
+
if (root !== c.id)
|
|
179
|
+
replyRootId.set(c.id, root);
|
|
180
|
+
}
|
|
34
181
|
// Anchor matching primitives live in lib/anchor-match.ts so that
|
|
35
182
|
// `rev verify-anchors` can use the same strategies for drift reporting.
|
|
36
|
-
// Get all positions in order (for sequential tie-breaking)
|
|
183
|
+
// Get all positions in order (for sequential tie-breaking).
|
|
184
|
+
// Replies skip scoring entirely — they piggyback on their root's position
|
|
185
|
+
// in the emit pass below.
|
|
37
186
|
const commentsWithPositions = comments.map((c) => {
|
|
187
|
+
if (replyRootId.has(c.id)) {
|
|
188
|
+
return { ...c, pos: -1, anchorText: null, strategy: 'reply' };
|
|
189
|
+
}
|
|
38
190
|
const anchorData = anchors.get(c.id);
|
|
39
191
|
if (!anchorData) {
|
|
40
192
|
unmatchedCount++;
|
|
@@ -59,6 +211,17 @@ export function insertCommentsIntoMarkdown(markdown, comments, anchors, options
|
|
|
59
211
|
}
|
|
60
212
|
const proportion = Math.min(relativePos / sectionLength, 1.0);
|
|
61
213
|
const markdownPos = Math.floor(proportion * result.length);
|
|
214
|
+
// For empty anchors, before/after context is the only signal that
|
|
215
|
+
// pinpoints the original split — without it, proportional placement
|
|
216
|
+
// can land mid-word or split unrelated phrases. Try context match
|
|
217
|
+
// first; only fall through to proportional when context is gone.
|
|
218
|
+
if ((!anchor || isEmpty) && (before || after)) {
|
|
219
|
+
const ctx = findAnchorInText('', result, before, after);
|
|
220
|
+
if (ctx.occurrences.length > 0) {
|
|
221
|
+
const pos = pushPastSectionHeading(result, ctx.occurrences[0]);
|
|
222
|
+
return { ...c, pos, anchorText: null, isEmpty: true, strategy: `ctx:${ctx.strategy}` };
|
|
223
|
+
}
|
|
224
|
+
}
|
|
62
225
|
let insertPos = markdownPos;
|
|
63
226
|
// Look for nearby word boundary
|
|
64
227
|
const searchWindow = result.slice(Math.max(0, markdownPos - 25), Math.min(result.length, markdownPos + 25));
|
|
@@ -66,25 +229,48 @@ export function insertCommentsIntoMarkdown(markdown, comments, anchors, options
|
|
|
66
229
|
if (spaceIdx !== -1 && spaceIdx < 50) {
|
|
67
230
|
insertPos = Math.max(0, markdownPos - 25) + spaceIdx;
|
|
68
231
|
}
|
|
69
|
-
// If we have anchor text, try to find it near this position
|
|
232
|
+
// If we have anchor text, try to find it near this position.
|
|
233
|
+
// Collect ALL occurrences in the local window, then disambiguate
|
|
234
|
+
// via before/after context + usedPositions — otherwise two
|
|
235
|
+
// comments sharing the same anchor word would both collide at
|
|
236
|
+
// the leftmost match. The context-scoring helper handles the
|
|
237
|
+
// "repeated formulaic prose" case using docx-side context, which
|
|
238
|
+
// is a stronger signal than raw distance to the proportional
|
|
239
|
+
// insertPos (insertPos is itself an approximation).
|
|
70
240
|
if (anchor && !isEmpty) {
|
|
71
241
|
const searchStart = Math.max(0, insertPos - 200);
|
|
72
242
|
const searchEnd = Math.min(result.length, insertPos + 200);
|
|
73
243
|
const localSearch = result.slice(searchStart, searchEnd).toLowerCase();
|
|
74
244
|
const anchorLower = anchor.toLowerCase();
|
|
75
|
-
const
|
|
76
|
-
if (
|
|
77
|
-
|
|
245
|
+
const localHits = findAllOccurrences(localSearch, anchorLower).map(i => searchStart + i);
|
|
246
|
+
if (localHits.length > 0) {
|
|
247
|
+
const chosen = pickBestOccurrence(localHits, result, before, after, anchor.length, usedPositions);
|
|
248
|
+
if (chosen >= 0) {
|
|
249
|
+
if (localHits.length > 1) {
|
|
250
|
+
duplicateWarnings.push(`"${anchor.slice(0, 40)}${anchor.length > 40 ? '...' : ''}" appears ${localHits.length} times in section window`);
|
|
251
|
+
}
|
|
252
|
+
usedPositions.add(chosen);
|
|
253
|
+
return { ...c, pos: chosen, anchorText: anchor, anchorEnd: chosen + anchor.length, strategy: 'position+text' };
|
|
254
|
+
}
|
|
78
255
|
}
|
|
79
256
|
// Try first few words
|
|
80
257
|
const words = anchor.split(/\s+/).slice(0, 4).join(' ').toLowerCase();
|
|
81
258
|
if (words.length >= 10) {
|
|
82
|
-
const
|
|
83
|
-
if (
|
|
84
|
-
|
|
259
|
+
const partialHits = findAllOccurrences(localSearch, words).map(i => searchStart + i);
|
|
260
|
+
if (partialHits.length > 0) {
|
|
261
|
+
const chosen = pickBestOccurrence(partialHits, result, before, after, words.length, usedPositions);
|
|
262
|
+
if (chosen >= 0) {
|
|
263
|
+
usedPositions.add(chosen);
|
|
264
|
+
return { ...c, pos: chosen, anchorText: words, anchorEnd: chosen + words.length, strategy: 'position+partial' };
|
|
265
|
+
}
|
|
85
266
|
}
|
|
86
267
|
}
|
|
87
268
|
}
|
|
269
|
+
// A docPosition at the very start of a section maps to markdownPos=0,
|
|
270
|
+
// which sits before the file's `# Heading` line and gets rendered in
|
|
271
|
+
// the previous section. Push past the heading line so the comment
|
|
272
|
+
// stays inside the section it was authored in.
|
|
273
|
+
insertPos = pushPastSectionHeading(result, insertPos);
|
|
88
274
|
return { ...c, pos: insertPos, anchorText: null, strategy: 'position-only' };
|
|
89
275
|
}
|
|
90
276
|
}
|
|
@@ -96,12 +282,28 @@ export function insertCommentsIntoMarkdown(markdown, comments, anchors, options
|
|
|
96
282
|
return { ...c, pos: occurrences[0], anchorText: null, isEmpty: true };
|
|
97
283
|
}
|
|
98
284
|
}
|
|
285
|
+
// Last resort: docx carried a structural marker at docPosition; map
|
|
286
|
+
// it proportionally into the target so the comment isn't dropped.
|
|
287
|
+
if (typeof anchorData === 'object') {
|
|
288
|
+
const fallback = proportionalFallback(anchorData, result);
|
|
289
|
+
if (fallback !== null) {
|
|
290
|
+
return { ...c, pos: fallback, anchorText: null, isEmpty: true, strategy: 'proportional-fallback' };
|
|
291
|
+
}
|
|
292
|
+
}
|
|
99
293
|
unmatchedCount++;
|
|
100
294
|
return { ...c, pos: -1, anchorText: null, isEmpty: true };
|
|
101
295
|
}
|
|
102
296
|
// Text-based matching strategies
|
|
103
297
|
const { occurrences, matchedAnchor, strategy, stripped } = findAnchorInText(anchor, result, before, after);
|
|
104
298
|
if (occurrences.length === 0) {
|
|
299
|
+
// Same last-resort as the empty-anchor path: anchor text is gone from
|
|
300
|
+
// the target, but the marker's text-offset survived extraction.
|
|
301
|
+
if (typeof anchorData === 'object') {
|
|
302
|
+
const fallback = proportionalFallback(anchorData, result);
|
|
303
|
+
if (fallback !== null) {
|
|
304
|
+
return { ...c, pos: fallback, anchorText: null, strategy: 'proportional-fallback' };
|
|
305
|
+
}
|
|
306
|
+
}
|
|
105
307
|
unmatchedCount++;
|
|
106
308
|
return { ...c, pos: -1, anchorText: null };
|
|
107
309
|
}
|
|
@@ -118,84 +320,111 @@ export function insertCommentsIntoMarkdown(markdown, comments, anchors, options
|
|
|
118
320
|
if (matchedAnchor) {
|
|
119
321
|
duplicateWarnings.push(`"${matchedAnchor.slice(0, 40)}${matchedAnchor.length > 40 ? '...' : ''}" appears ${occurrences.length} times`);
|
|
120
322
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
if (usedPositions.has(pos))
|
|
125
|
-
continue;
|
|
126
|
-
let score = 0;
|
|
127
|
-
if (before) {
|
|
128
|
-
const contextBefore = result.slice(Math.max(0, pos - before.length - 20), pos).toLowerCase();
|
|
129
|
-
const beforeLower = before.toLowerCase();
|
|
130
|
-
const beforeWords = beforeLower.split(/\s+/).filter(w => w.length > 3);
|
|
131
|
-
for (const word of beforeWords) {
|
|
132
|
-
if (contextBefore.includes(word))
|
|
133
|
-
score += 2;
|
|
134
|
-
}
|
|
135
|
-
if (contextBefore.includes(beforeLower.slice(-30)))
|
|
136
|
-
score += 5;
|
|
137
|
-
}
|
|
138
|
-
if (after) {
|
|
139
|
-
const contextAfter = result.slice(pos + anchorLen, pos + anchorLen + after.length + 20).toLowerCase();
|
|
140
|
-
const afterLower = after.toLowerCase();
|
|
141
|
-
const afterWords = afterLower.split(/\s+/).filter(w => w.length > 3);
|
|
142
|
-
for (const word of afterWords) {
|
|
143
|
-
if (contextAfter.includes(word))
|
|
144
|
-
score += 2;
|
|
145
|
-
}
|
|
146
|
-
if (contextAfter.includes(afterLower.slice(0, 30)))
|
|
147
|
-
score += 5;
|
|
148
|
-
}
|
|
149
|
-
if (score > bestScore || (score === bestScore && pos < bestIdx)) {
|
|
150
|
-
bestScore = score;
|
|
151
|
-
bestIdx = pos;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
usedPositions.add(bestIdx);
|
|
323
|
+
const bestIdx = pickBestOccurrence(occurrences, result, before, after, anchorLen, usedPositions);
|
|
324
|
+
const finalIdx = bestIdx >= 0 ? bestIdx : occurrences[0];
|
|
325
|
+
usedPositions.add(finalIdx);
|
|
155
326
|
if (matchedAnchor) {
|
|
156
|
-
return { ...c, pos:
|
|
327
|
+
return { ...c, pos: finalIdx, anchorText: matchedAnchor, anchorEnd: finalIdx + anchorLen };
|
|
157
328
|
}
|
|
158
329
|
else {
|
|
159
|
-
return { ...c, pos:
|
|
330
|
+
return { ...c, pos: finalIdx, anchorText: null };
|
|
160
331
|
}
|
|
161
332
|
});
|
|
162
|
-
//
|
|
163
|
-
|
|
333
|
+
// Group comments into clusters (root + ordered replies). The root carries
|
|
334
|
+
// the resolved position; replies inherit it and ride along in input order
|
|
335
|
+
// so the rebuilt CriticMarkup looks like `{>>p<<}{>>r1<<}{>>r2<<}[anchor]`
|
|
336
|
+
// and adjacency-based reply detection picks the cluster up again.
|
|
337
|
+
const byId = new Map();
|
|
338
|
+
for (const cwp of commentsWithPositions)
|
|
339
|
+
byId.set(cwp.id, cwp);
|
|
340
|
+
const repliesByRoot = new Map();
|
|
341
|
+
for (const c of comments) {
|
|
342
|
+
const rootId = replyRootId.get(c.id);
|
|
343
|
+
if (!rootId)
|
|
344
|
+
continue;
|
|
345
|
+
const cwp = byId.get(c.id);
|
|
346
|
+
if (!cwp)
|
|
347
|
+
continue;
|
|
348
|
+
const list = repliesByRoot.get(rootId);
|
|
349
|
+
if (list)
|
|
350
|
+
list.push(cwp);
|
|
351
|
+
else
|
|
352
|
+
repliesByRoot.set(rootId, [cwp]);
|
|
353
|
+
}
|
|
354
|
+
// Replies whose root never resolved (parent missing from the input slice or
|
|
355
|
+
// parent unmatched) count as unmatched too — there's no position to attach
|
|
356
|
+
// them to.
|
|
357
|
+
for (const [rootId, replies] of repliesByRoot) {
|
|
358
|
+
const root = byId.get(rootId);
|
|
359
|
+
if (!root || root.pos < 0) {
|
|
360
|
+
unmatchedCount += replies.length;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
// Roots only — replies attach during emission.
|
|
364
|
+
const rootsWithPos = commentsWithPositions.filter(c => !replyRootId.has(c.id));
|
|
365
|
+
// Log any unmatched roots for debugging
|
|
366
|
+
const unmatched = rootsWithPos.filter((c) => c.pos < 0);
|
|
164
367
|
if (process.env.DEBUG) {
|
|
165
|
-
console.log(`[DEBUG] insertComments: ${comments.length} input, ${
|
|
368
|
+
console.log(`[DEBUG] insertComments: ${comments.length} input, ${rootsWithPos.length} roots, ${unmatched.length} unmatched roots, ${replyRootId.size} replies`);
|
|
166
369
|
if (unmatched.length > 0) {
|
|
167
370
|
unmatched.forEach(c => console.log(`[DEBUG] Unmatched ID=${c.id}: anchor="${(c.anchorText || 'none').slice(0, 30)}"`));
|
|
168
371
|
}
|
|
169
372
|
}
|
|
170
|
-
const
|
|
373
|
+
const matchedRoots = rootsWithPos.filter((c) => c.pos >= 0);
|
|
171
374
|
// Sort by position descending (insert from end to avoid offset issues)
|
|
172
|
-
|
|
173
|
-
// Insert each
|
|
375
|
+
matchedRoots.sort((a, b) => b.pos - a.pos);
|
|
376
|
+
// Insert each cluster. With `wrapAnchor` (the default), the anchor text
|
|
174
377
|
// gets wrapped in `[anchor]{.mark}` so the rebuilt docx restores the
|
|
175
378
|
// original Word comment range. Without it, the comment block is inserted
|
|
176
379
|
// adjacent to the anchor and prose stays untouched — required for
|
|
177
380
|
// comments-only sync where multiple comments may share one anchor.
|
|
178
|
-
|
|
179
|
-
|
|
381
|
+
// Skip insertion when the parent's CriticMarkup already lives near the
|
|
382
|
+
// target — re-running sync against the same docx would otherwise stack
|
|
383
|
+
// duplicates. A 200-char window catches both wrapped
|
|
384
|
+
// (`{>>...<<}[anchor]{.mark}`) and bare (`{>>...<<}anchor`) forms while
|
|
385
|
+
// ignoring incidental matches farther away.
|
|
386
|
+
let dedupedCount = 0;
|
|
387
|
+
for (const c of matchedRoots) {
|
|
388
|
+
const parentBlock = `{>>${c.author}: ${c.text}<<}`;
|
|
389
|
+
const replies = repliesByRoot.get(c.id) ?? [];
|
|
390
|
+
const windowStart = Math.max(0, c.pos - 200);
|
|
391
|
+
const windowEnd = Math.min(result.length, c.pos + 200);
|
|
392
|
+
if (result.slice(windowStart, windowEnd).includes(parentBlock)) {
|
|
393
|
+
// Cluster already synced; treat all members as deduped.
|
|
394
|
+
dedupedCount += 1 + replies.length;
|
|
395
|
+
continue;
|
|
396
|
+
}
|
|
397
|
+
// Replies carry an explicit `↪ ` author prefix so the round-trip does not
|
|
398
|
+
// depend on positional adjacency in the markdown. On dense reviewer docs
|
|
399
|
+
// distinct clusters frequently land at the same anchor position; without
|
|
400
|
+
// the prefix the re-parse would misthread them. The injection side strips
|
|
401
|
+
// `↪ ` back off the author so Word renders the original name.
|
|
402
|
+
const replyBlocks = replies.map(r => `{>>↪ ${r.author}: ${r.text}<<}`);
|
|
403
|
+
const combined = parentBlock + replyBlocks.join('');
|
|
180
404
|
if (wrapAnchor && c.anchorText && c.anchorEnd) {
|
|
181
405
|
const before = result.slice(0, c.pos);
|
|
182
406
|
const anchor = result.slice(c.pos, c.anchorEnd);
|
|
183
407
|
const after = result.slice(c.anchorEnd);
|
|
184
|
-
result = before +
|
|
408
|
+
result = before + combined + `[${anchor}]{.mark}` + after;
|
|
185
409
|
}
|
|
186
410
|
else {
|
|
187
|
-
|
|
188
|
-
// tweaks; CriticMarkup blocks are invisible to readers, and adding a
|
|
189
|
-
// leading space would shift prose byte-for-byte (relevant when callers
|
|
190
|
-
// verify that --comments-only didn't touch the original).
|
|
191
|
-
result = result.slice(0, c.pos) + comment + result.slice(c.pos);
|
|
411
|
+
result = result.slice(0, c.pos) + combined + result.slice(c.pos);
|
|
192
412
|
}
|
|
413
|
+
placedCount += 1 + replies.length;
|
|
414
|
+
}
|
|
415
|
+
if (outStats) {
|
|
416
|
+
outStats.placed = placedCount;
|
|
417
|
+
outStats.deduped = dedupedCount;
|
|
418
|
+
outStats.unmatched = unmatchedCount;
|
|
193
419
|
}
|
|
194
420
|
// Log warnings unless quiet mode
|
|
195
421
|
if (!quiet) {
|
|
196
422
|
if (unmatchedCount > 0) {
|
|
197
423
|
console.warn(`Warning: ${unmatchedCount} comment(s) could not be matched to anchor text`);
|
|
198
424
|
}
|
|
425
|
+
if (dedupedCount > 0) {
|
|
426
|
+
console.warn(`Note: ${dedupedCount} comment(s) already present at anchor — skipped to avoid duplication`);
|
|
427
|
+
}
|
|
199
428
|
if (duplicateWarnings.length > 0) {
|
|
200
429
|
console.warn(`Warning: Duplicate anchor text found (using context & tie-breaks for placement):`);
|
|
201
430
|
for (const w of duplicateWarnings) {
|