@usejunior/docx-mcp 0.1.2 → 0.3.0

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 (84) hide show
  1. package/README.md +4 -4
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/cli/commands/edit.d.ts +24 -0
  4. package/dist/cli/commands/edit.d.ts.map +1 -0
  5. package/dist/cli/commands/edit.js +145 -0
  6. package/dist/cli/commands/edit.js.map +1 -0
  7. package/dist/cli/flag_parser.d.ts +7 -0
  8. package/dist/cli/flag_parser.d.ts.map +1 -0
  9. package/dist/cli/flag_parser.js +235 -0
  10. package/dist/cli/flag_parser.js.map +1 -0
  11. package/dist/cli/help.d.ts +3 -0
  12. package/dist/cli/help.d.ts.map +1 -0
  13. package/dist/cli/help.js +62 -0
  14. package/dist/cli/help.js.map +1 -0
  15. package/dist/cli/index.d.ts +2 -2
  16. package/dist/cli/index.d.ts.map +1 -1
  17. package/dist/cli/index.js +29 -32
  18. package/dist/cli/index.js.map +1 -1
  19. package/dist/cli/parse_utils.d.ts +7 -0
  20. package/dist/cli/parse_utils.d.ts.map +1 -0
  21. package/dist/cli/parse_utils.js +18 -0
  22. package/dist/cli/parse_utils.js.map +1 -0
  23. package/dist/cli/tool_runner.d.ts +6 -0
  24. package/dist/cli/tool_runner.d.ts.map +1 -0
  25. package/dist/cli/tool_runner.js +17 -0
  26. package/dist/cli/tool_runner.js.map +1 -0
  27. package/dist/conformance/harness.js +7 -7
  28. package/dist/conformance/harness.js.map +1 -1
  29. package/dist/server.d.ts +5 -5
  30. package/dist/server.js +8 -8
  31. package/dist/server.js.map +1 -1
  32. package/dist/session/manager.d.ts +20 -6
  33. package/dist/session/manager.d.ts.map +1 -1
  34. package/dist/session/manager.js +28 -6
  35. package/dist/session/manager.js.map +1 -1
  36. package/dist/tool_catalog.d.ts +29 -22
  37. package/dist/tool_catalog.d.ts.map +1 -1
  38. package/dist/tool_catalog.js +23 -17
  39. package/dist/tool_catalog.js.map +1 -1
  40. package/dist/tools/clear_formatting.d.ts +14 -0
  41. package/dist/tools/clear_formatting.d.ts.map +1 -0
  42. package/dist/tools/clear_formatting.js +94 -0
  43. package/dist/tools/clear_formatting.js.map +1 -0
  44. package/dist/tools/get_session_status.js +3 -3
  45. package/dist/tools/get_session_status.js.map +1 -1
  46. package/dist/tools/grep.d.ts.map +1 -1
  47. package/dist/tools/grep.js +8 -1
  48. package/dist/tools/grep.js.map +1 -1
  49. package/dist/tools/insert_paragraph.d.ts +1 -0
  50. package/dist/tools/insert_paragraph.d.ts.map +1 -1
  51. package/dist/tools/insert_paragraph.js +61 -397
  52. package/dist/tools/insert_paragraph.js.map +1 -1
  53. package/dist/tools/open_document.d.ts.map +1 -1
  54. package/dist/tools/open_document.js +9 -22
  55. package/dist/tools/open_document.js.map +1 -1
  56. package/dist/tools/pagination.d.ts +9 -0
  57. package/dist/tools/pagination.d.ts.map +1 -0
  58. package/dist/tools/pagination.js +16 -0
  59. package/dist/tools/pagination.js.map +1 -0
  60. package/dist/tools/read_file.d.ts.map +1 -1
  61. package/dist/tools/read_file.js +96 -17
  62. package/dist/tools/read_file.js.map +1 -1
  63. package/dist/tools/replace_text.d.ts +18 -0
  64. package/dist/tools/replace_text.d.ts.map +1 -1
  65. package/dist/tools/replace_text.js +129 -517
  66. package/dist/tools/replace_text.js.map +1 -1
  67. package/dist/tools/{download.d.ts → save.d.ts} +4 -4
  68. package/dist/tools/save.d.ts.map +1 -0
  69. package/dist/tools/{download.js → save.js} +21 -20
  70. package/dist/tools/save.js.map +1 -0
  71. package/dist/tools/session_resolution.d.ts.map +1 -1
  72. package/dist/tools/session_resolution.js +68 -18
  73. package/dist/tools/session_resolution.js.map +1 -1
  74. package/dist/tools/tag_parser.d.ts +28 -0
  75. package/dist/tools/tag_parser.d.ts.map +1 -0
  76. package/dist/tools/tag_parser.js +327 -0
  77. package/dist/tools/tag_parser.js.map +1 -0
  78. package/package.json +2 -2
  79. package/dist/tools/download.d.ts.map +0 -1
  80. package/dist/tools/download.js.map +0 -1
  81. package/dist/tools/duplicate_document.d.ts +0 -8
  82. package/dist/tools/duplicate_document.d.ts.map +0 -1
  83. package/dist/tools/duplicate_document.js +0 -90
  84. package/dist/tools/duplicate_document.js.map +0 -1
@@ -1,240 +1,27 @@
1
- import { OOXML, W, findInlineDefinitionSpan, getParagraphRuns, hasDefinitionTags, hasHyperlinkTags, stripDefinitionTags, stripHyperlinkTags, } from '@usejunior/docx-core';
1
+ import { getParagraphRuns, hasHyperlinkTags, stripHyperlinkTags, stripAllInlineTags, } from '@usejunior/docx-core';
2
2
  import { errorMessage } from "../error_utils.js";
3
3
  import { err, ok } from './types.js';
4
4
  import { RESULT_PREVIEW_CHARS, previewText } from './preview.js';
5
5
  import { mergeSessionResolutionMetadata, resolveSessionForTool } from './session_resolution.js';
6
- const OPEN_DEF = '<definition>';
7
- const CLOSE_DEF = '</definition>';
8
- const OPEN_HEADER = '<header>';
9
- const CLOSE_HEADER = '</header>';
10
- const OPEN_RUN_IN_HEADER = '<RunInHeader>';
11
- const CLOSE_RUN_IN_HEADER = '</RunInHeader>';
12
- const OPEN_HL = '<highlighting>';
13
- const CLOSE_HL = '</highlighting>';
14
- const OPEN_B = '<b>';
15
- const CLOSE_B = '</b>';
16
- const OPEN_I = '<i>';
17
- const CLOSE_I = '</i>';
18
- const OPEN_U = '<u>';
19
- const CLOSE_U = '</u>';
20
- function isTruthyEnv(value) {
21
- if (!value)
22
- return false;
23
- const v = value.trim().toLowerCase();
24
- return v === '1' || v === 'true' || v === 'yes' || v === 'on';
25
- }
26
- function useLegacyDefinitionTags() {
27
- return isTruthyEnv(process.env.SAFE_DOCX_ENABLE_LEGACY_DEFINITION_TAGS);
28
- }
29
- function statesEqual(a, b) {
30
- return (a.definition === b.definition
31
- && a.header === b.header
32
- && a.highlighting === b.highlighting
33
- && a.bold === b.bold
34
- && a.italic === b.italic
35
- && a.underline === b.underline);
36
- }
37
- function pushSegment(out, text, state) {
38
- if (!text)
39
- return;
40
- const prev = out[out.length - 1];
41
- if (prev && statesEqual(prev, state)) {
42
- prev.text += text;
43
- return;
44
- }
45
- out.push({ text, ...state });
46
- }
47
- function splitTaggedText(text, opts) {
48
- const counters = {
49
- definition: 0,
50
- header: 0,
51
- highlighting: 0,
52
- bold: 0,
53
- italic: 0,
54
- underline: 0,
55
- };
56
- const out = [];
57
- let i = 0;
58
- let buf = '';
59
- const state = () => ({
60
- definition: counters.definition > 0,
61
- header: counters.header > 0,
62
- highlighting: counters.highlighting > 0,
63
- bold: counters.bold > 0,
64
- italic: counters.italic > 0,
65
- underline: counters.underline > 0,
66
- });
67
- const flush = () => {
68
- pushSegment(out, buf, state());
69
- buf = '';
70
- };
71
- const open = (key) => {
72
- flush();
73
- counters[key] += 1;
74
- };
75
- const close = (key, errCode) => {
76
- flush();
77
- if (counters[key] === 0)
78
- throw new Error(errCode);
79
- counters[key] -= 1;
80
- };
81
- while (i < text.length) {
82
- if (opts.allowDefinitionTags && text.startsWith(OPEN_DEF, i)) {
83
- open('definition');
84
- i += OPEN_DEF.length;
85
- continue;
86
- }
87
- if (opts.allowDefinitionTags && text.startsWith(CLOSE_DEF, i)) {
88
- close('definition', 'UNBALANCED_DEFINITION_TAGS');
89
- i += CLOSE_DEF.length;
90
- continue;
91
- }
92
- if (text.startsWith(OPEN_HEADER, i)) {
93
- open('header');
94
- i += OPEN_HEADER.length;
95
- continue;
96
- }
97
- if (text.startsWith(CLOSE_HEADER, i)) {
98
- close('header', 'UNBALANCED_HEADER_TAGS');
99
- i += CLOSE_HEADER.length;
100
- continue;
101
- }
102
- if (text.startsWith(OPEN_RUN_IN_HEADER, i)) {
103
- open('header');
104
- i += OPEN_RUN_IN_HEADER.length;
105
- continue;
106
- }
107
- if (text.startsWith(CLOSE_RUN_IN_HEADER, i)) {
108
- close('header', 'UNBALANCED_HEADER_TAGS');
109
- i += CLOSE_RUN_IN_HEADER.length;
110
- continue;
111
- }
112
- if (text.startsWith(OPEN_HL, i)) {
113
- open('highlighting');
114
- i += OPEN_HL.length;
115
- continue;
116
- }
117
- if (text.startsWith(CLOSE_HL, i)) {
118
- close('highlighting', 'UNBALANCED_HIGHLIGHT_TAGS');
119
- i += CLOSE_HL.length;
120
- continue;
121
- }
122
- if (text.startsWith(OPEN_B, i)) {
123
- open('bold');
124
- i += OPEN_B.length;
125
- continue;
126
- }
127
- if (text.startsWith(CLOSE_B, i)) {
128
- close('bold', 'UNBALANCED_BOLD_TAGS');
129
- i += CLOSE_B.length;
130
- continue;
131
- }
132
- if (text.startsWith(OPEN_I, i)) {
133
- open('italic');
134
- i += OPEN_I.length;
135
- continue;
136
- }
137
- if (text.startsWith(CLOSE_I, i)) {
138
- close('italic', 'UNBALANCED_ITALIC_TAGS');
139
- i += CLOSE_I.length;
140
- continue;
141
- }
142
- if (text.startsWith(OPEN_U, i)) {
143
- open('underline');
144
- i += OPEN_U.length;
145
- continue;
146
- }
147
- if (text.startsWith(CLOSE_U, i)) {
148
- close('underline', 'UNBALANCED_UNDERLINE_TAGS');
149
- i += CLOSE_U.length;
150
- continue;
151
- }
152
- buf += text[i];
153
- i += 1;
154
- }
155
- flush();
156
- if (counters.definition > 0)
157
- throw new Error('UNBALANCED_DEFINITION_TAGS');
158
- if (counters.header > 0)
159
- throw new Error('UNBALANCED_HEADER_TAGS');
160
- if (counters.highlighting > 0)
161
- throw new Error('UNBALANCED_HIGHLIGHT_TAGS');
162
- if (counters.bold > 0)
163
- throw new Error('UNBALANCED_BOLD_TAGS');
164
- if (counters.italic > 0)
165
- throw new Error('UNBALANCED_ITALIC_TAGS');
166
- if (counters.underline > 0)
167
- throw new Error('UNBALANCED_UNDERLINE_TAGS');
168
- return out.length > 0 ? out : [{ text: '', ...state() }];
169
- }
170
- const QUOTE_CHARS = new Set([
171
- '"',
172
- "'",
173
- '\u201c',
174
- '\u201d',
175
- '\u2018',
176
- '\u2019',
177
- '\u00ab',
178
- '\u00bb',
179
- '\u2039',
180
- '\u203a',
181
- ]);
182
- function isQuoteChar(ch) {
183
- return QUOTE_CHARS.has(ch);
184
- }
185
- function stripOuterQuotes(term) {
186
- let t = term;
187
- while (t && isQuoteChar(t[0]))
188
- t = t.slice(1);
189
- while (t && isQuoteChar(t[t.length - 1]))
190
- t = t.slice(0, -1);
191
- return t;
192
- }
193
- function absorbSurroundingQuotes(segs) {
194
- for (let i = 0; i < segs.length; i++) {
195
- const seg = segs[i];
196
- if (!seg.definition)
197
- continue;
198
- const prev = i > 0 ? segs[i - 1] : null;
199
- if (prev && !prev.definition && prev.text && isQuoteChar(prev.text[prev.text.length - 1])) {
200
- prev.text = prev.text.slice(0, -1);
201
- }
202
- const next = i + 1 < segs.length ? segs[i + 1] : null;
203
- if (next && !next.definition && next.text && isQuoteChar(next.text[0])) {
204
- next.text = next.text.slice(1);
205
- }
206
- }
207
- }
208
- function segmentAddRunProps(seg) {
209
- const add = {};
210
- if (seg.bold)
211
- add.bold = true;
212
- if (seg.italic)
213
- add.italic = true;
214
- if (seg.underline)
215
- add.underline = true;
216
- if (seg.highlighting)
217
- add.highlight = true;
218
- return Object.keys(add).length > 0 ? add : undefined;
219
- }
6
+ import { splitTaggedText, segmentAddRunProps, } from './tag_parser.js';
220
7
  function mergeAddRunProps(a, b) {
221
- const out = {};
222
- if (a?.bold)
223
- out.bold = true;
224
- if (a?.italic)
225
- out.italic = true;
226
- if (a?.underline)
227
- out.underline = a.underline;
228
- if (a?.highlight)
229
- out.highlight = a.highlight;
230
- if (b?.bold)
231
- out.bold = true;
232
- if (b?.italic)
233
- out.italic = true;
234
- if (b?.underline)
235
- out.underline = b.underline;
236
- if (b?.highlight)
237
- out.highlight = b.highlight;
8
+ const out = { ...a };
9
+ if (b) {
10
+ if (b.bold !== undefined)
11
+ out.bold = b.bold;
12
+ if (b.italic !== undefined)
13
+ out.italic = b.italic;
14
+ if (b.underline !== undefined)
15
+ out.underline = b.underline;
16
+ if (b.highlight !== undefined)
17
+ out.highlight = b.highlight;
18
+ if (b.fontSize !== undefined)
19
+ out.fontSize = b.fontSize;
20
+ if (b.fontName !== undefined)
21
+ out.fontName = b.fontName;
22
+ if (b.color !== undefined)
23
+ out.color = b.color;
24
+ }
238
25
  return Object.keys(out).length > 0 ? out : undefined;
239
26
  }
240
27
  function chooseRunByOverlap(runs, start, end) {
@@ -253,36 +40,6 @@ function chooseRunByOverlap(runs, start, end) {
253
40
  }
254
41
  return bestRun;
255
42
  }
256
- function getWAttr(el, localName) {
257
- return el.getAttributeNS(OOXML.W_NS, localName) ?? el.getAttribute(`w:${localName}`) ?? el.getAttribute(localName);
258
- }
259
- function extractDefinitionAddRunProps(run) {
260
- if (!run)
261
- return null;
262
- const rPr = run.getElementsByTagNameNS(OOXML.W_NS, W.rPr).item(0);
263
- if (!rPr)
264
- return null;
265
- const add = {};
266
- const bEl = rPr.getElementsByTagNameNS(OOXML.W_NS, W.b).item(0);
267
- if (bEl) {
268
- const v = getWAttr(bEl, 'val');
269
- if (v !== '0' && v !== 'false')
270
- add.bold = true;
271
- }
272
- const iEl = rPr.getElementsByTagNameNS(OOXML.W_NS, W.i).item(0);
273
- if (iEl) {
274
- const v = getWAttr(iEl, 'val');
275
- if (v !== '0' && v !== 'false')
276
- add.italic = true;
277
- }
278
- const uEl = rPr.getElementsByTagNameNS(OOXML.W_NS, W.u).item(0);
279
- if (uEl) {
280
- const v = getWAttr(uEl, 'val');
281
- if (!v || v !== 'none')
282
- add.underline = v ?? true;
283
- }
284
- return Object.keys(add).length > 0 ? add : null;
285
- }
286
43
  function headerFormattingToAddRunProps(formatting) {
287
44
  if (!formatting || typeof formatting !== 'object')
288
45
  return null;
@@ -296,33 +53,6 @@ function headerFormattingToAddRunProps(formatting) {
296
53
  add.underline = true;
297
54
  return Object.keys(add).length > 0 ? add : null;
298
55
  }
299
- function findDefinitionRoleModelAddRunProps(session, anchorParagraphId) {
300
- const { nodes } = session.doc.buildDocumentView({ includeSemanticTags: false });
301
- const anchorIdx = nodes.findIndex((n) => n.id === anchorParagraphId);
302
- if (anchorIdx < 0)
303
- return null;
304
- for (let delta = 0; delta < nodes.length; delta++) {
305
- const candidates = [anchorIdx - delta, anchorIdx + delta];
306
- for (const idx of candidates) {
307
- if (idx < 0 || idx >= nodes.length)
308
- continue;
309
- const nid = nodes[idx].id;
310
- const pEl = session.doc.getParagraphElementById(nid);
311
- if (!pEl)
312
- continue;
313
- const text = session.doc.getParagraphTextById(nid) ?? '';
314
- const span = findInlineDefinitionSpan(text);
315
- if (!span)
316
- continue;
317
- const runs = getParagraphRuns(pEl);
318
- const r = chooseRunByOverlap(runs, span.term_start, span.term_end);
319
- const add = extractDefinitionAddRunProps(r);
320
- if (add)
321
- return add;
322
- }
323
- }
324
- return null;
325
- }
326
56
  function findHeaderRoleModelAddRunProps(session, anchorParagraphId) {
327
57
  const { nodes } = session.doc.buildDocumentView({ includeSemanticTags: false });
328
58
  const anchorIdx = nodes.findIndex((n) => n.id === anchorParagraphId);
@@ -341,90 +71,17 @@ function findHeaderRoleModelAddRunProps(session, anchorParagraphId) {
341
71
  }
342
72
  return null;
343
73
  }
344
- function buildPlainTextFromSegments(segments, legacyDefinitionTags) {
345
- const chunks = [];
346
- for (const seg of segments) {
347
- if (!seg.text)
348
- continue;
349
- if (legacyDefinitionTags && seg.definition) {
350
- const term = stripOuterQuotes(seg.text);
351
- chunks.push(`"${term}"`);
352
- }
353
- else {
354
- chunks.push(seg.text);
355
- }
356
- }
357
- return chunks.join('');
358
- }
359
- function buildReplacementPartsForInsert(segments, plainText, templateRun, legacyDefinitionTags, defAddProps, headerAddProps) {
74
+ function buildReplacementPartsForInsert(segments, templateRun, headerAddProps) {
360
75
  const parts = [];
361
- const hasTaggedDefinition = legacyDefinitionTags && segments.some((s) => s.definition);
362
- const autoDefSpan = (!hasTaggedDefinition && defAddProps)
363
- ? findInlineDefinitionSpan(plainText)
364
- : null;
365
- let textOffset = 0;
366
76
  for (const seg of segments) {
367
77
  if (!seg.text)
368
78
  continue;
369
79
  const segAdd = mergeAddRunProps(segmentAddRunProps(seg), seg.header ? headerAddProps : null);
370
- if (legacyDefinitionTags && seg.definition) {
371
- const term = stripOuterQuotes(seg.text);
372
- if (!term)
373
- continue;
374
- parts.push({ text: '"', templateRun: templateRun ?? undefined, addRunProps: segAdd });
375
- parts.push({
376
- text: term,
377
- templateRun: templateRun ?? undefined,
378
- addRunProps: mergeAddRunProps(defAddProps, segAdd),
379
- });
380
- parts.push({ text: '"', templateRun: templateRun ?? undefined, addRunProps: segAdd });
381
- textOffset += (`"${term}"`).length;
382
- }
383
- else {
384
- const segText = seg.text;
385
- const segStart = textOffset;
386
- const segEnd = segStart + segText.length;
387
- textOffset = segEnd;
388
- if (autoDefSpan
389
- && autoDefSpan.term_end > autoDefSpan.term_start
390
- && Math.min(segEnd, autoDefSpan.term_end) > Math.max(segStart, autoDefSpan.term_start)) {
391
- const overlapStart = Math.max(segStart, autoDefSpan.term_start);
392
- const overlapEnd = Math.min(segEnd, autoDefSpan.term_end);
393
- const relStart = overlapStart - segStart;
394
- const relEnd = overlapEnd - segStart;
395
- const before = segText.slice(0, relStart);
396
- const term = segText.slice(relStart, relEnd);
397
- const after = segText.slice(relEnd);
398
- if (before) {
399
- parts.push({
400
- text: before,
401
- templateRun: templateRun ?? undefined,
402
- addRunProps: segAdd,
403
- });
404
- }
405
- if (term) {
406
- parts.push({
407
- text: term,
408
- templateRun: templateRun ?? undefined,
409
- addRunProps: mergeAddRunProps(segAdd, defAddProps),
410
- });
411
- }
412
- if (after) {
413
- parts.push({
414
- text: after,
415
- templateRun: templateRun ?? undefined,
416
- addRunProps: segAdd,
417
- });
418
- }
419
- }
420
- else {
421
- parts.push({
422
- text: segText,
423
- templateRun: templateRun ?? undefined,
424
- addRunProps: segAdd,
425
- });
426
- }
427
- }
80
+ parts.push({
81
+ text: seg.text,
82
+ templateRun: templateRun ?? undefined,
83
+ addRunProps: segAdd,
84
+ });
428
85
  }
429
86
  return parts.some((p) => !!p.addRunProps) ? parts : null;
430
87
  }
@@ -436,36 +93,50 @@ export async function insertParagraph(manager, params) {
436
93
  const { session, metadata } = resolved;
437
94
  const positionUpper = (params.position ?? 'AFTER').toUpperCase();
438
95
  if (positionUpper !== 'BEFORE' && positionUpper !== 'AFTER') {
439
- return err('INVALID_POSITION', `Invalid position: ${params.position}. Must be 'BEFORE' or 'AFTER'.`, "Use 'BEFORE' to insert above the anchor, 'AFTER' to insert below.");
96
+ return err('INVALID_POSITION', `Invalid position: ${params.position}. Must be 'BEFORE' or 'AFTER'.`);
440
97
  }
441
- // Ensure anchor exists.
442
98
  const anchorText = session.doc.getParagraphTextById(params.positional_anchor_node_id);
443
99
  if (anchorText === null) {
444
- return err('ANCHOR_NOT_FOUND', `Paragraph ID ${params.positional_anchor_node_id} not found in document`, 'Use grep or read_file to find valid paragraph IDs');
100
+ return err('ANCHOR_NOT_FOUND', `Paragraph ID ${params.positional_anchor_node_id} not found in document`);
101
+ }
102
+ let styleSourceId = params.style_source_id;
103
+ if (!styleSourceId && params.target_style) {
104
+ const { nodes } = session.doc.buildDocumentView({ includeSemanticTags: false });
105
+ const anchorIdx = nodes.findIndex((n) => n.id === params.positional_anchor_node_id);
106
+ if (anchorIdx >= 0) {
107
+ let bestDist = Infinity;
108
+ let bestId = null;
109
+ for (let i = 0; i < nodes.length; i++) {
110
+ if (nodes[i].style === params.target_style) {
111
+ const dist = Math.abs(i - anchorIdx);
112
+ if (dist < bestDist) {
113
+ bestDist = dist;
114
+ bestId = nodes[i].id;
115
+ }
116
+ }
117
+ }
118
+ if (bestId)
119
+ styleSourceId = bestId;
120
+ }
445
121
  }
446
- const legacyDefinitionTags = useLegacyDefinitionTags();
447
122
  let inputText = params.new_string;
448
- if (!legacyDefinitionTags && hasDefinitionTags(inputText))
449
- inputText = stripDefinitionTags(inputText);
450
- // Strip <a> tags — hyperlinks are read-only and cannot be created via insert_paragraph.
451
123
  if (hasHyperlinkTags(inputText))
452
124
  inputText = stripHyperlinkTags(inputText);
453
- const normalizedInput = inputText;
454
- const paragraphInputs = normalizedInput.replace(/\r\n/g, '\n').split(/\n{2,}/);
455
- const parsedParagraphs = paragraphInputs.map((p) => {
456
- const segs = splitTaggedText(p, { allowDefinitionTags: legacyDefinitionTags });
457
- if (legacyDefinitionTags)
458
- absorbSurroundingQuotes(segs);
459
- return segs;
460
- });
461
- const plainParagraphs = parsedParagraphs.map((segs) => buildPlainTextFromSegments(segs, legacyDefinitionTags));
125
+ const paragraphInputs = inputText.replace(/\r\n/g, '\n').split(/\n{2,}/);
126
+ let parsedParagraphs;
127
+ try {
128
+ parsedParagraphs = paragraphInputs.map((p) => splitTaggedText(p));
129
+ }
130
+ catch (e) {
131
+ return err(errorMessage(e), `Tag parse error in new_string: ${errorMessage(e)}`);
132
+ }
133
+ const plainParagraphs = paragraphInputs.map((p) => stripAllInlineTags(p));
462
134
  const res = session.doc.insertParagraph({
463
135
  positionalAnchorNodeId: params.positional_anchor_node_id,
464
136
  relativePosition: positionUpper,
465
137
  newText: plainParagraphs.join('\n\n'),
466
- styleSourceId: params.style_source_id,
138
+ styleSourceId: styleSourceId,
467
139
  });
468
- const defAddProps = findDefinitionRoleModelAddRunProps(session, params.positional_anchor_node_id);
469
140
  const needsHeaderRoleModel = parsedParagraphs.some((segs) => segs.some((s) => s.header));
470
141
  const headerAddProps = needsHeaderRoleModel
471
142
  ? findHeaderRoleModelAddRunProps(session, params.positional_anchor_node_id)
@@ -478,17 +149,11 @@ export async function insertParagraph(manager, params) {
478
149
  if (!pEl)
479
150
  continue;
480
151
  const runs = getParagraphRuns(pEl);
481
- const templateRun = chooseRunByOverlap(runs, 0, Math.max(plainText.length, 1))
482
- ?? runs[0]?.r
483
- ?? null;
484
- const replacementParts = buildReplacementPartsForInsert(segs, plainText, templateRun, legacyDefinitionTags, defAddProps, headerAddProps);
152
+ const templateRun = chooseRunByOverlap(runs, 0, Math.max(plainText.length, 1)) ?? runs[0]?.r ?? null;
153
+ const replacementParts = buildReplacementPartsForInsert(segs, templateRun, headerAddProps);
485
154
  if (!replacementParts || replacementParts.length === 0)
486
155
  continue;
487
- session.doc.replaceText({
488
- targetParagraphId: newPid,
489
- findText: plainText,
490
- replaceText: replacementParts,
491
- });
156
+ session.doc.replaceText({ targetParagraphId: newPid, findText: plainText, replaceText: replacementParts });
492
157
  }
493
158
  manager.markEdited(session);
494
159
  const responseData = {
@@ -507,8 +172,7 @@ export async function insertParagraph(manager, params) {
507
172
  return ok(mergeSessionResolutionMetadata(responseData, metadata));
508
173
  }
509
174
  catch (e) {
510
- const msg = errorMessage(e);
511
- return err('INSERT_ERROR', `Failed to insert paragraph: ${msg}`, 'Use grep or read_file to find valid anchor paragraph IDs.');
175
+ return err('INSERT_ERROR', `Failed to insert paragraph: ${errorMessage(e)}`);
512
176
  }
513
177
  }
514
178
  //# sourceMappingURL=insert_paragraph.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"insert_paragraph.js","sourceRoot":"","sources":["../../src/tools/insert_paragraph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"insert_paragraph.js","sourceRoot":"","sources":["../../src/tools/insert_paragraph.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"open_document.d.ts","sourceRoot":"","sources":["../../src/tools/open_document.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAqCxD,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1D,OAAO,CAAC,YAAY,CAAC,CA6EvB"}
1
+ {"version":3,"file":"open_document.d.ts","sourceRoot":"","sources":["../../src/tools/open_document.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAqCxD,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAAE,GAC1D,OAAO,CAAC,YAAY,CAAC,CA8DvB"}
@@ -8,8 +8,8 @@ import { SAFE_DOCX_MCP_TOOLS } from '../tool_catalog.js';
8
8
  function getAvailableToolsSchema() {
9
9
  const toolDefaultsByName = {
10
10
  grep: { dedupe_by_paragraph: true },
11
- download: {
12
- download_format: 'both',
11
+ save: {
12
+ save_format: 'both',
13
13
  clean_bookmarks: true,
14
14
  returned_variants: ['clean', 'tracked'],
15
15
  },
@@ -53,28 +53,15 @@ export async function openDocument(manager, params) {
53
53
  return archiveGuard.response;
54
54
  const filename = path.basename(safePath);
55
55
  const session = await manager.createSession(content, filename, safePath);
56
- // Normalize: merge runs + simplify redlines BEFORE bookmark allocation.
57
- if (!params.skip_normalization) {
58
- session.normalizationStats = session.doc.normalize();
59
- }
60
- // Insert paragraph bookmarks for stable paragraph ids.
61
- const info = session.doc.insertParagraphBookmarks(`mcp_${session.sessionId}`);
62
- // Compute comparison baselines AFTER normalization + bookmark insertion.
63
- // These baselines are used for tracked-changes comparison instead of originalBuffer,
64
- // preventing normalization artifacts from appearing as false tracked changes.
65
- const [cleanBaseline, bookmarkedBaseline] = await Promise.all([
66
- session.doc.toBuffer({ cleanBookmarks: true }),
67
- session.doc.toBuffer({ cleanBookmarks: false }),
68
- ]);
69
- session.comparisonBaseline = cleanBaseline.buffer;
70
- session.comparisonBaselineWithBookmarks = bookmarkedBaseline.buffer;
71
- manager.touch(session);
56
+ const { paragraphCount } = await manager.finalizeNewSession(session, {
57
+ skipNormalization: params.skip_normalization,
58
+ });
72
59
  return ok({
73
60
  session_id: session.sessionId,
74
61
  expires_at: session.expiresAt.toISOString(),
75
62
  document: {
76
63
  filename,
77
- paragraphs: info.paragraphCount,
64
+ paragraphs: paragraphCount,
78
65
  size_bytes: content.length,
79
66
  },
80
67
  normalization: session.normalizationStats
@@ -86,11 +73,11 @@ export async function openDocument(manager, params) {
86
73
  normalization_skipped: false,
87
74
  }
88
75
  : { runs_merged: 0, redlines_simplified: 0, double_elevations_fixed: 0, normalization_skipped: true },
89
- download_defaults: {
76
+ save_defaults: {
90
77
  default_variants: ['clean', 'redline'],
91
- default_download_format: 'both',
78
+ default_save_format: 'both',
92
79
  supports_variant_override: true,
93
- redownload_by_session_id: true,
80
+ resave_by_session_id: true,
94
81
  },
95
82
  tools: getAvailableToolsSchema(),
96
83
  });