@usejunior/docx-mcp 0.15.0 → 0.16.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 (50) hide show
  1. package/README.md +1 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/cli/commands/compare.js +1 -1
  4. package/dist/cli/commands/compare.js.map +1 -1
  5. package/dist/server.d.ts +6 -70
  6. package/dist/server.d.ts.map +1 -1
  7. package/dist/server.js +9 -0
  8. package/dist/server.js.map +1 -1
  9. package/dist/session/manager.d.ts +37 -7
  10. package/dist/session/manager.d.ts.map +1 -1
  11. package/dist/session/manager.js +10 -0
  12. package/dist/session/manager.js.map +1 -1
  13. package/dist/tool_catalog.d.ts +125 -85
  14. package/dist/tool_catalog.d.ts.map +1 -1
  15. package/dist/tool_catalog.js +125 -13
  16. package/dist/tool_catalog.js.map +1 -1
  17. package/dist/tools/accept_ai_edits.d.ts +13 -0
  18. package/dist/tools/accept_ai_edits.d.ts.map +1 -0
  19. package/dist/tools/accept_ai_edits.js +41 -0
  20. package/dist/tools/accept_ai_edits.js.map +1 -0
  21. package/dist/tools/add_comment.d.ts.map +1 -1
  22. package/dist/tools/add_comment.js +40 -0
  23. package/dist/tools/add_comment.js.map +1 -1
  24. package/dist/tools/add_footnote.d.ts.map +1 -1
  25. package/dist/tools/add_footnote.js +21 -0
  26. package/dist/tools/add_footnote.js.map +1 -1
  27. package/dist/tools/compare_documents.js +1 -1
  28. package/dist/tools/compare_documents.js.map +1 -1
  29. package/dist/tools/comparison_defaults.d.ts +1 -1
  30. package/dist/tools/comparison_defaults.d.ts.map +1 -1
  31. package/dist/tools/delete_comment.d.ts.map +1 -1
  32. package/dist/tools/delete_comment.js +34 -0
  33. package/dist/tools/delete_comment.js.map +1 -1
  34. package/dist/tools/get_document_outline.d.ts +29 -0
  35. package/dist/tools/get_document_outline.d.ts.map +1 -0
  36. package/dist/tools/get_document_outline.js +67 -0
  37. package/dist/tools/get_document_outline.js.map +1 -0
  38. package/dist/tools/read_file.d.ts +1 -0
  39. package/dist/tools/read_file.d.ts.map +1 -1
  40. package/dist/tools/read_file.js +46 -2
  41. package/dist/tools/read_file.js.map +1 -1
  42. package/dist/tools/reject_ai_edits.d.ts +14 -0
  43. package/dist/tools/reject_ai_edits.d.ts.map +1 -0
  44. package/dist/tools/reject_ai_edits.js +42 -0
  45. package/dist/tools/reject_ai_edits.js.map +1 -0
  46. package/dist/tools/save.d.ts +1 -21
  47. package/dist/tools/save.d.ts.map +1 -1
  48. package/dist/tools/save.js +84 -129
  49. package/dist/tools/save.js.map +1 -1
  50. package/package.json +10 -9
@@ -5,6 +5,11 @@ const FILE_FIELD = {
5
5
  const FILE_FIELD_OPTIONAL = {
6
6
  file_path: z.string().optional().describe('Path to the DOCX or ODT file.'),
7
7
  };
8
+ // DOCX-only tools reject `.odt` paths with UNSUPPORTED_FOR_ODF, so their
9
+ // file_path description must not advertise ODT support.
10
+ const FILE_FIELD_OPTIONAL_DOCX_ONLY = {
11
+ file_path: z.string().optional().describe('Path to the DOCX file.'),
12
+ };
8
13
  const GOOGLE_DOC_ID_FIELD = {
9
14
  google_doc_id: z.string().optional().describe('Google Doc ID or URL (alternative to file_path). ' +
10
15
  'Extract from URL: docs.google.com/document/d/{ID}/edit'),
@@ -12,6 +17,7 @@ const GOOGLE_DOC_ID_FIELD = {
12
17
  export const SAFE_DOCX_TOOL_CATALOG = [
13
18
  {
14
19
  name: 'read_file',
20
+ surface: 'internal',
15
21
  description: 'Read document content (DOCX, ODT, or Google Doc). Output is token-limited (~14k tokens) by default with pagination metadata (has_more, next_offset). Use offset/limit to paginate.',
16
22
  input: z.object({
17
23
  ...FILE_FIELD_OPTIONAL,
@@ -32,6 +38,10 @@ export const SAFE_DOCX_TOOL_CATALOG = [
32
38
  .boolean()
33
39
  .optional()
34
40
  .describe('When true and format="json", include a portable content_fingerprint ("sha256:nfkc:<32hex>") on each paragraph. Read-only metadata derived from the paragraph\'s normalized visible text; NOT an edit anchor. Edit tools accept only `_bk_*` IDs. No effect on TOON/simple output. Ignored for Google Docs and ODT.'),
41
+ include_fingerprint_ordinal: z
42
+ .boolean()
43
+ .optional()
44
+ .describe('When true together with include_fingerprint and format="json", add duplicate-disambiguation metadata to each paragraph: `content_fingerprint_ordinal` (1-based document-order position among paragraphs sharing the same content_fingerprint), `content_fingerprint_count_in_document` (total paragraphs sharing it, document-wide even under pagination), and `portable_paragraph_ref` ("<content_fingerprint>#<ordinal>"). Read-only disambiguator, NOT an edit anchor; reordering duplicates may change ordinals. No effect without include_fingerprint, and no effect on TOON/simple output. Ignored for Google Docs and ODT. Default: false.'),
35
45
  include_footnotes: z
36
46
  .boolean()
37
47
  .optional()
@@ -39,8 +49,26 @@ export const SAFE_DOCX_TOOL_CATALOG = [
39
49
  }),
40
50
  annotations: { readOnlyHint: true, destructiveHint: false },
41
51
  },
52
+ {
53
+ name: 'get_document_outline',
54
+ surface: 'internal',
55
+ description: 'Get a compact structural map of a document\'s headings (DOCX only). Returns one entry per heading paragraph with its text, outline level, source, and stable `_bk_*` paragraph_id — so an agent can read the cheap outline first, then scope a targeted read_file/replace_text to the right section instead of scanning the whole body. Style-based (Word HeadingN) headings only by default; set include_heuristic_headings=true to also include heuristic titles/run-in headers. Read-only.',
56
+ input: z.object({
57
+ ...FILE_FIELD_OPTIONAL_DOCX_ONLY,
58
+ format: z
59
+ .enum(['json', 'markdown'])
60
+ .optional()
61
+ .describe("Output format: 'json' (default, structured outline array) or 'markdown' (indented ATX outline under `content`)."),
62
+ include_heuristic_headings: z
63
+ .boolean()
64
+ .optional()
65
+ .describe('When true, also include heuristically-detected headings (manual title / run-in / centered-caps) alongside Word HeadingN styles. Default: false (style-based only).'),
66
+ }),
67
+ annotations: { readOnlyHint: true, destructiveHint: false },
68
+ },
42
69
  {
43
70
  name: 'grep',
71
+ surface: 'internal',
44
72
  description: 'Search paragraphs with regex. Use file_path for session-based search, file_paths for stateless multi-file search, or google_doc_id for Google Docs. ODT supported via file_path (single-file) only.',
45
73
  input: z.object({
46
74
  ...FILE_FIELD_OPTIONAL,
@@ -60,7 +88,8 @@ export const SAFE_DOCX_TOOL_CATALOG = [
60
88
  },
61
89
  {
62
90
  name: 'batch_edit',
63
- description: 'Single-agent front door for applying multiple edit steps (replace_text, insert_paragraph) to a document in one call. Validates all steps first, rejects conflicts before applying anything, then executes valid steps sequentially. Accepts inline steps or a plan_file_path JSON array.',
91
+ surface: 'revisionable',
92
+ description: 'Single-agent front door for applying multiple edit steps (replace_text, insert_paragraph) to a document in one call. Validates all steps first, rejects conflicts before applying anything, then executes valid steps sequentially. Accepts inline steps or a plan_file_path JSON array. Surface: revisionable — every applied step emits native OOXML tracked changes.',
64
93
  input: z.object({
65
94
  ...FILE_FIELD,
66
95
  steps: z
@@ -76,7 +105,8 @@ export const SAFE_DOCX_TOOL_CATALOG = [
76
105
  },
77
106
  {
78
107
  name: 'replace_text',
79
- description: 'Replace text in a paragraph by provider paragraph id, preserving formatting where supported. Supports DOCX, ODT, and Google Docs.',
108
+ surface: 'revisionable',
109
+ description: 'Replace text in a paragraph by provider paragraph id, preserving formatting where supported. Supports DOCX, ODT, and Google Docs. Surface: revisionable — DOCX edits emit native OOXML tracked changes (w:ins/w:del/w:rPrChange).',
80
110
  input: z.object({
81
111
  ...FILE_FIELD_OPTIONAL,
82
112
  ...GOOGLE_DOC_ID_FIELD,
@@ -93,7 +123,8 @@ export const SAFE_DOCX_TOOL_CATALOG = [
93
123
  },
94
124
  {
95
125
  name: 'insert_paragraph',
96
- description: 'Insert a paragraph before/after an anchor paragraph by paragraph id. Supports DOCX, ODT, and Google Docs. (ODT paragraph ids are positional and shift after insertion — re-read before further edits.)',
126
+ surface: 'revisionable',
127
+ description: 'Insert a paragraph before/after an anchor paragraph by paragraph id. Supports DOCX, ODT, and Google Docs. (ODT paragraph ids are positional and shift after insertion — re-read before further edits.) Surface: revisionable — DOCX insertions emit native OOXML tracked changes.',
97
128
  input: z.object({
98
129
  ...FILE_FIELD_OPTIONAL,
99
130
  ...GOOGLE_DOC_ID_FIELD,
@@ -110,7 +141,8 @@ export const SAFE_DOCX_TOOL_CATALOG = [
110
141
  },
111
142
  {
112
143
  name: 'save',
113
- description: 'Save document. For DOCX: saves clean and/or tracked changes output. For ODT: saves an .odt package. For Google Docs: checkpoint (default) returns revisionId, or snapshot exports as DOCX.',
144
+ surface: 'revisionable',
145
+ description: 'Save document. For DOCX: saves clean and/or tracked changes output. For ODT: saves an .odt package. For Google Docs: checkpoint (default) returns revisionId, or snapshot exports as DOCX. Surface: revisionable — the save report lists both the AI revisions applied and a non-revision change manifest of any package-level mutations (comment/footnote side parts, relationships) that have no tracked-change wrapper.',
114
146
  input: z.object({
115
147
  ...FILE_FIELD_OPTIONAL,
116
148
  ...GOOGLE_DOC_ID_FIELD,
@@ -120,16 +152,20 @@ export const SAFE_DOCX_TOOL_CATALOG = [
120
152
  allow_overwrite: z.boolean().optional(),
121
153
  tracked_save_to_local_path: z.string().optional(),
122
154
  tracked_changes_author: z.string().optional(),
123
- tracked_changes_engine: z.enum(['auto', 'atomizer']).optional(),
155
+ tracked_changes_engine: z
156
+ .enum(['auto', 'atomizer'])
157
+ .optional()
158
+ .describe('Deprecated and ignored (#126). The redline is now the session\'s write-time tracked markup, serialized directly — there is no comparison engine to select. Use the compare_documents tool for comparison-based redlines.'),
124
159
  fail_on_rebuild_fallback: z
125
160
  .boolean()
126
161
  .optional()
127
- .describe('When true, return an error instead of a destructive output if the comparison engine falls back to rebuild mode (which destroys table structure). Default: false.'),
162
+ .describe('Deprecated and ignored (#126). The default save no longer runs the comparison reconstruction engine, so there is no rebuild fallback to guard against; accepted for backward compatibility only.'),
128
163
  }),
129
164
  annotations: { readOnlyHint: false, destructiveHint: true },
130
165
  },
131
166
  {
132
167
  name: 'export',
168
+ surface: 'internal',
133
169
  description: 'Export a document to a portable rendering (Markdown, semantic HTML, or plain text). Writes an output file (default: source path with the format extension, e.g. .md, .html, or .txt) and returns its path, byte count, and the rendered content (under `content`). Intentionally lossy (no round-trip); HTML is the semantic tier, not pixel-faithful. DOCX only — Google Docs is not supported.',
134
170
  input: z.object({
135
171
  ...FILE_FIELD_OPTIONAL,
@@ -154,6 +190,7 @@ export const SAFE_DOCX_TOOL_CATALOG = [
154
190
  },
155
191
  {
156
192
  name: 'convert_to_odt',
193
+ surface: 'internal',
157
194
  description: 'Convert a DOCX document to OpenDocument Text (.odt) using the native model-to-model converter (no LibreOffice involved). Writes the .odt (default: source path with the .odt extension), validates ODF packaging safety before writing, and returns the output path plus a `lossiness` summary itemizing every downgraded construct. Conversion is semantic and intentionally lossy: text, headings, bold/italic/underline, hyperlinks, lists, and tables are mapped; richer styling, tracked changes, comments, and headers/footers are not. DOCX in, ODT out — Google Docs and .odt inputs are not supported.',
158
195
  input: z.object({
159
196
  ...FILE_FIELD_OPTIONAL,
@@ -170,7 +207,8 @@ export const SAFE_DOCX_TOOL_CATALOG = [
170
207
  },
171
208
  {
172
209
  name: 'format_layout',
173
- description: 'Apply layout controls (paragraph spacing, table row height, cell padding). Google Docs supports paragraph spacing only.',
210
+ surface: 'revisionable',
211
+ description: 'Apply layout controls (paragraph spacing, table row height, cell padding). Google Docs supports paragraph spacing only. Surface: revisionable — DOCX geometry edits emit native property-change revisions (w:pPrChange/w:trPrChange/w:tcPrChange).',
174
212
  input: z.object({
175
213
  ...FILE_FIELD_OPTIONAL,
176
214
  ...GOOGLE_DOC_ID_FIELD,
@@ -208,14 +246,58 @@ export const SAFE_DOCX_TOOL_CATALOG = [
208
246
  },
209
247
  {
210
248
  name: 'accept_changes',
249
+ surface: 'internal',
211
250
  description: 'Accept all tracked changes in the document body, producing a clean document with no revision markup. Returns acceptance stats.',
212
251
  input: z.object({
213
252
  ...FILE_FIELD,
214
253
  }),
215
254
  annotations: { readOnlyHint: false, destructiveHint: true },
216
255
  },
256
+ {
257
+ name: 'accept_ai_edits',
258
+ surface: 'internal',
259
+ description: 'Selectively accept tracked changes by revision id or author, leaving all other (e.g. third-party reviewer) revisions byte-untouched. Provide revision_ids (array of w:id values) to target specific revisions, or author to accept every revision by one actor. Sweeps document.xml and supported side-story parts (footnotes, endnotes, comments). An ambiguous overlap — a targeted revision structurally containing, or contained by, a non-targeted revision (nested ins/del/move) — hard-errors with code AMBIGUOUS_REVISION_OVERLAP and a structured `overlaps` list unless normalize_first is set (best-effort, no byte-identical promise).',
260
+ input: z.object({
261
+ ...FILE_FIELD,
262
+ revision_ids: z
263
+ .array(z.union([z.string(), z.number()]))
264
+ .optional()
265
+ .describe('w:id values of the revisions to accept. Mutually preferred over author.'),
266
+ author: z
267
+ .string()
268
+ .optional()
269
+ .describe('Accept every revision authored by this w:author. Convenience alternative to revision_ids.'),
270
+ normalize_first: z
271
+ .boolean()
272
+ .optional()
273
+ .describe('Attempt best-effort resolution on an ambiguous (overlapping) revision graph instead of hard-erroring. No byte-identical guarantee. Default: false.'),
274
+ }),
275
+ annotations: { readOnlyHint: false, destructiveHint: true },
276
+ },
277
+ {
278
+ name: 'reject_ai_edits',
279
+ surface: 'internal',
280
+ description: 'Selectively reject tracked changes by revision id or author (restoring their pre-edit state), leaving all other revisions byte-untouched. Symmetric to accept_ai_edits: provide revision_ids or author, sweeps document.xml and supported side-story parts, and hard-errors on an ambiguous overlap (code AMBIGUOUS_REVISION_OVERLAP with a structured `overlaps` list) unless normalize_first is set.',
281
+ input: z.object({
282
+ ...FILE_FIELD,
283
+ revision_ids: z
284
+ .array(z.union([z.string(), z.number()]))
285
+ .optional()
286
+ .describe('w:id values of the revisions to reject. Mutually preferred over author.'),
287
+ author: z
288
+ .string()
289
+ .optional()
290
+ .describe('Reject every revision authored by this w:author. Convenience alternative to revision_ids.'),
291
+ normalize_first: z
292
+ .boolean()
293
+ .optional()
294
+ .describe('Attempt best-effort resolution on an ambiguous (overlapping) revision graph instead of hard-erroring. No byte-identical guarantee. Default: false.'),
295
+ }),
296
+ annotations: { readOnlyHint: false, destructiveHint: true },
297
+ },
217
298
  {
218
299
  name: 'has_tracked_changes',
300
+ surface: 'internal',
219
301
  description: 'Check whether the document body contains tracked-change markers (insertions, deletions, moves, and property-change records). Read-only.',
220
302
  input: z.object({
221
303
  ...FILE_FIELD,
@@ -224,6 +306,7 @@ export const SAFE_DOCX_TOOL_CATALOG = [
224
306
  },
225
307
  {
226
308
  name: 'get_file_status',
309
+ surface: 'internal',
227
310
  description: 'Get file/session metadata including edit count, normalization stats, and cache info. Supports DOCX, ODT, and Google Docs.',
228
311
  input: z.object({
229
312
  ...FILE_FIELD_OPTIONAL,
@@ -233,6 +316,7 @@ export const SAFE_DOCX_TOOL_CATALOG = [
233
316
  },
234
317
  {
235
318
  name: 'close_file',
319
+ surface: 'internal',
236
320
  description: 'Close an open file session, or close all sessions with explicit confirmation. Supports DOCX, ODT, and Google Docs.',
237
321
  input: z.object({
238
322
  ...FILE_FIELD_OPTIONAL,
@@ -244,7 +328,9 @@ export const SAFE_DOCX_TOOL_CATALOG = [
244
328
  },
245
329
  {
246
330
  name: 'add_comment',
247
- description: 'Add a comment or threaded reply to a document. Provide target_paragraph_id + anchor_text for root comments, or parent_comment_id for replies. Supports DOCX and ODT (ODT backs comments with office:annotation; threaded replies are DOCX-only).',
331
+ surface: 'revisionable',
332
+ emitsNonRevisionChanges: true,
333
+ description: 'Add a comment or threaded reply to a document. Provide target_paragraph_id + anchor_text for root comments, or parent_comment_id for replies. Supports DOCX and ODT (ODT backs comments with office:annotation; threaded replies are DOCX-only). Surface: revisionable + package-mutation — the body-story comment reference is tracked (w:ins), while comment text and author metadata are recorded in the save report non-revision change manifest.',
248
334
  input: z.object({
249
335
  ...FILE_FIELD,
250
336
  target_paragraph_id: z.string().optional().describe('Paragraph ID to anchor the comment to (for root comments).'),
@@ -258,6 +344,7 @@ export const SAFE_DOCX_TOOL_CATALOG = [
258
344
  },
259
345
  {
260
346
  name: 'get_comments',
347
+ surface: 'internal',
261
348
  description: 'Get all comments from the document with IDs, authors, dates, text, and anchored paragraph IDs. Range-anchored DOCX comments also expose optional end_paragraph_id, start_run_index, start_char_offset, end_run_index, and end_char_offset fields describing the covered span. Includes threaded replies (DOCX). Supports DOCX and ODT. Read-only.',
262
349
  input: z.object({
263
350
  ...FILE_FIELD,
@@ -266,7 +353,9 @@ export const SAFE_DOCX_TOOL_CATALOG = [
266
353
  },
267
354
  {
268
355
  name: 'delete_comment',
269
- description: 'Delete a comment and all its threaded replies from the document. Cascade-deletes all descendants.',
356
+ surface: 'revisionable',
357
+ emitsNonRevisionChanges: true,
358
+ description: 'Delete a comment and all its threaded replies from the document. Cascade-deletes all descendants. Surface: revisionable + package-mutation — the body-story comment reference removal is tracked (w:del), while comment/reply text cleanup is recorded in the save report non-revision change manifest.',
270
359
  input: z.object({
271
360
  ...FILE_FIELD,
272
361
  comment_id: z.number().describe('Comment ID to delete.'),
@@ -275,6 +364,7 @@ export const SAFE_DOCX_TOOL_CATALOG = [
275
364
  },
276
365
  {
277
366
  name: 'compare_documents',
367
+ surface: 'revisionable',
278
368
  description: 'Compare two documents and produce a tracked-changes output document. Provide original_file_path + revised_file_path for standalone comparison, or file_path to compare session edits against the original. DOCX and ODF (.odt) support both modes. DOCX stats count insertions/deletions as contiguous ranges, expose atom totals as insertedAtoms/deletedAtoms, and report formatChanges separately from modifiedParagraphs. ODF compares at inline granularity (a modified paragraph is marked up in place — only the changed spans are struck or inserted).',
279
369
  input: z.object({
280
370
  original_file_path: z.string().optional().describe('Path to the original DOCX or .odt file.'),
@@ -288,6 +378,7 @@ export const SAFE_DOCX_TOOL_CATALOG = [
288
378
  },
289
379
  {
290
380
  name: 'get_footnotes',
381
+ surface: 'internal',
291
382
  description: 'Get all footnotes from the document with IDs, display numbers, text, and anchored paragraph IDs. Read-only.',
292
383
  input: z.object({
293
384
  ...FILE_FIELD,
@@ -296,7 +387,9 @@ export const SAFE_DOCX_TOOL_CATALOG = [
296
387
  },
297
388
  {
298
389
  name: 'add_footnote',
299
- description: 'Add a footnote anchored to a paragraph. Optionally position the reference after specific text using after_text. Note: [^N] markers in read_file output are display-only and not part of the editable text used by replace_text.',
390
+ surface: 'revisionable',
391
+ emitsNonRevisionChanges: true,
392
+ description: 'Add a footnote anchored to a paragraph. Optionally position the reference after specific text using after_text. Note: [^N] markers in read_file output are display-only and not part of the editable text used by replace_text. Surface: revisionable + package-mutation — the footnote reference and note text are tracked (w:ins), while footnote-part creation and registration are recorded in the save report non-revision change manifest.',
300
393
  input: z.object({
301
394
  ...FILE_FIELD,
302
395
  target_paragraph_id: z.string().describe('Paragraph ID to anchor the footnote to.'),
@@ -307,7 +400,8 @@ export const SAFE_DOCX_TOOL_CATALOG = [
307
400
  },
308
401
  {
309
402
  name: 'update_footnote',
310
- description: 'Update the text content of an existing footnote.',
403
+ surface: 'revisionable',
404
+ description: 'Update the text content of an existing footnote. Surface: revisionable — note-text changes emit native OOXML tracked changes (w:ins/w:del) inside the footnote body.',
311
405
  input: z.object({
312
406
  ...FILE_FIELD,
313
407
  note_id: z.number().describe('Footnote ID to update.'),
@@ -317,7 +411,8 @@ export const SAFE_DOCX_TOOL_CATALOG = [
317
411
  },
318
412
  {
319
413
  name: 'delete_footnote',
320
- description: 'Delete a footnote and its reference from the document.',
414
+ surface: 'revisionable',
415
+ description: 'Delete a footnote and its reference from the document. Surface: revisionable — the reference and note text are removed as native OOXML tracked deletions (w:del).',
321
416
  input: z.object({
322
417
  ...FILE_FIELD,
323
418
  note_id: z.number().describe('Footnote ID to delete.'),
@@ -326,7 +421,8 @@ export const SAFE_DOCX_TOOL_CATALOG = [
326
421
  },
327
422
  {
328
423
  name: 'clear_formatting',
329
- description: 'Clear specific run-level formatting (bold, italic, underline, highlight, color, font) from paragraphs.',
424
+ surface: 'revisionable',
425
+ description: 'Clear specific run-level formatting (bold, italic, underline, highlight, color, font) from paragraphs. Surface: revisionable — clearing emits a native run-property-change revision (w:rPrChange).',
330
426
  input: z.object({
331
427
  ...FILE_FIELD,
332
428
  paragraph_ids: z.array(z.string()).optional().describe('Paragraph IDs to clear formatting from. If omitted, clears from all paragraphs.'),
@@ -341,6 +437,7 @@ export const SAFE_DOCX_TOOL_CATALOG = [
341
437
  },
342
438
  {
343
439
  name: 'extract_revisions',
440
+ surface: 'internal',
344
441
  description: 'Extract tracked changes as structured JSON with before/after text per paragraph, revision details, and comments. Supports pagination via offset and limit. Read-only - does not modify the document.',
345
442
  input: z.object({
346
443
  ...FILE_FIELD,
@@ -362,5 +459,20 @@ export const SAFE_DOCX_MCP_TOOLS = SAFE_DOCX_TOOL_CATALOG.map((tool) => ({
362
459
  description: tool.description,
363
460
  inputSchema: toJsonObjectSchema(tool.input, tool.name),
364
461
  annotations: tool.annotations,
462
+ // #122: contract-surface classification, advertised alongside the tool so
463
+ // clients can distinguish tracked (revisionable) writes from untracked
464
+ // package mutations without reading SUPPORT.md.
465
+ surface: tool.surface,
466
+ emitsNonRevisionChanges: tool.emitsNonRevisionChanges ?? false,
365
467
  }));
468
+ /**
469
+ * Programmatic index of the contract surface each tool writes to (#122),
470
+ * mirroring the ratified inventory in `packages/docx-core/SUPPORT.md`.
471
+ * Consumed by the revisionable-surface property test and by the classification
472
+ * coverage test.
473
+ */
474
+ export const TOOL_SURFACE_INDEX = Object.fromEntries(SAFE_DOCX_TOOL_CATALOG.map((tool) => [
475
+ tool.name,
476
+ { surface: tool.surface, emitsNonRevisionChanges: tool.emitsNonRevisionChanges ?? false },
477
+ ]));
366
478
  //# sourceMappingURL=tool_catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool_catalog.js","sourceRoot":"","sources":["../src/tool_catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,MAAM,UAAU,GAAG;IACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CAChE,CAAC;AAEF,MAAM,mBAAmB,GAAG;IAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;CAC3E,CAAC;AAEF,MAAM,mBAAmB,GAAG;IAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC3C,mDAAmD;QACnD,wDAAwD,CACzD;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,oLAAoL;QACjM,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,mBAAmB;YACtB,GAAG,mBAAmB;YACtB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;YAClH,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iGAAiG,CAAC;YACxI,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;YACxC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;YACrD,iBAAiB,EAAE,CAAC;iBACjB,IAAI,CAAC,CAAC,MAAM,EAAE,iBAAiB,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC;iBAC/D,QAAQ,EAAE;iBACV,QAAQ,CACP,sXAAsX,CACvX;YACH,eAAe,EAAE,CAAC;iBACf,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,2IAA2I,CAC5I;YACH,mBAAmB,EAAE,CAAC;iBACnB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,oTAAoT,CACrT;YACH,iBAAiB,EAAE,CAAC;iBACjB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,+dAA+d,CAChe;SACJ,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,qMAAqM;QAClN,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,mBAAmB;YACtB,GAAG,mBAAmB;YACtB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;YAC/H,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;YACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC9B,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACtC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAClC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACpC,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAC3C,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0EAA0E,CAAC;YACvH,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kGAAkG,CAAC;SACrJ,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,0RAA0R;QAC5R,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,UAAU;YACb,KAAK,EAAE,CAAC;iBACL,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;iBACzC,QAAQ,EAAE;iBACV,QAAQ,CAAC,8FAA8F,CAAC;YAC3G,cAAc,EAAE,CAAC;iBACd,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,wFAAwF,CAAC;SACtG,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,mIAAmI;QAChJ,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,mBAAmB;YACtB,GAAG,mBAAmB;YACtB,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE;YAC/B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;YACtB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;YACtB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;YACvB,eAAe,EAAE,CAAC;iBACf,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,oGAAoG,CAAC;SAClH,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,wMAAwM;QACrN,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,mBAAmB;YACtB,GAAG,mBAAmB;YACtB,yBAAyB,EAAE,CAAC,CAAC,MAAM,EAAE;YACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;YACtB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;YACvB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;YAChD,eAAe,EAAE,CAAC;iBACf,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,wJAAwJ,CACzJ;SACJ,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EACT,4LAA4L;QAC9L,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,mBAAmB;YACtB,GAAG,mBAAmB;YACtB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;YAC9B,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACvC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC5D,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACvC,0BAA0B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACjD,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC7C,sBAAsB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;YAC/D,wBAAwB,EAAE,CAAC;iBACxB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,kKAAkK,CACnK;SACJ,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,kYAAkY;QACpY,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,mBAAmB;YACtB,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;iBACvC,QAAQ,EAAE;iBACV,QAAQ,CAAC,uGAAuG,CAAC;YACpH,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,sFAAsF,CAAC;YACnG,eAAe,EAAE,CAAC;iBACf,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,6DAA6D,CAAC;YAC1E,gBAAgB,EAAE,CAAC;iBAChB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,+GAA+G,CAAC;SAC7H,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,ilBAAilB;QACnlB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,mBAAmB;YACtB,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,+EAA+E,CAAC;YAC5F,eAAe,EAAE,CAAC;iBACf,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,6DAA6D,CAAC;SAC3E,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE;KAC7D;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,yHAAyH;QACtI,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,mBAAmB;YACtB,GAAG,mBAAmB;YACtB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YAC9B,iBAAiB,EAAE,CAAC;iBACjB,MAAM,CAAC;gBACN,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;gBAC7C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACjC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC3D,CAAC;iBACD,QAAQ,EAAE;YACb,UAAU,EAAE,CAAC;iBACV,MAAM,CAAC;gBACN,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;gBAC7C,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;gBAC3C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAClC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;aACtD,CAAC;iBACD,QAAQ,EAAE;YACb,YAAY,EAAE,CAAC;iBACZ,MAAM,CAAC;gBACN,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;gBAC7C,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;gBAC3C,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;gBAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;gBAC/B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aACjC,CAAC;iBACD,QAAQ,EAAE;SACd,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,gIAAgI;QAC7I,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,UAAU;SACd,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EAAE,yIAAyI;QACtJ,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,UAAU;SACd,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,2HAA2H;QACxI,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,mBAAmB;YACtB,GAAG,mBAAmB;SACvB,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,oHAAoH;QACjI,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,mBAAmB;YACtB,GAAG,mBAAmB;YACtB,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACjC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAChC,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,kPAAkP;QACpP,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,UAAU;YACb,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;YACjH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8FAA8F,CAAC;YAC3I,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YAC5F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACnD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;SACvG,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,mVAAmV;QACrV,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,UAAU;SACd,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,mGAAmG;QACrG,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,UAAU;YACb,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;SACzD,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,giBAAgiB;QACliB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YAC7F,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YAC3F,GAAG,mBAAmB;YACtB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;YAClG,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gGAAgG,CAAC;YACxI,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;SAC5G,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,6GAA6G;QAC1H,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,UAAU;SACd,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,iOAAiO;QACnO,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,UAAU;YACb,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YACnF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6FAA6F,CAAC;YACzI,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;SACjD,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,kDAAkD;QAC/D,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,UAAU;YACb,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YACtD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;SACzD,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,wDAAwD;QACrE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,UAAU;YACb,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;SACvD,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,wGAAwG;QAC1G,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,UAAU;YACb,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iFAAiF,CAAC;YACzI,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YAChF,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YACtE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;YAC1E,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;YAChF,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAClE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC;SAC5E,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE;KAC5D;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,sMAAsM;QACxM,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;YACd,GAAG,UAAU;YACb,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;YACpF,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;SACpF,CAAC;QACF,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE;KAC5D;CAC6C,CAAC;AAEjD,SAAS,kBAAkB,CAAC,MAAoB,EAAE,IAAY;IAC5D,MAAM,UAAU,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACvF,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,IAAI,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,UAAqC,CAAC;AAC/C,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,sBAAsB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvE,IAAI,EAAE,IAAI,CAAC,IAAI;IACf,WAAW,EAAE,IAAI,CAAC,WAAW;IAC7B,WAAW,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC;IACtD,WAAW,EAAE,IAAI,CAAC,WAAW;CAC9B,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"tool_catalog.js","sourceRoot":"","sources":["../src/tool_catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { SessionManager } from '../session/manager.js';
2
+ import { type ToolResponse } from './types.js';
3
+ /**
4
+ * accept_ai_edits — selectively accept tracked changes by revision id or author
5
+ * (#123), leaving all other (e.g. third-party reviewer) revisions untouched.
6
+ */
7
+ export declare function acceptAiEdits(manager: SessionManager, params: {
8
+ file_path?: string;
9
+ revision_ids?: Array<string | number>;
10
+ author?: string;
11
+ normalize_first?: boolean;
12
+ }): Promise<ToolResponse>;
13
+ //# sourceMappingURL=accept_ai_edits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accept_ai_edits.d.ts","sourceRoot":"","sources":["../../src/tools/accept_ai_edits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAGvD,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE;IACN,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GACA,OAAO,CAAC,YAAY,CAAC,CAuCvB"}
@@ -0,0 +1,41 @@
1
+ import { errorMessage } from '../error_utils.js';
2
+ import { resolveSessionForTool, mergeSessionResolutionMetadata } from './session_resolution.js';
3
+ import { ok, err } from './types.js';
4
+ import { AmbiguousRevisionOverlapError } from '@usejunior/docx-core';
5
+ /**
6
+ * accept_ai_edits — selectively accept tracked changes by revision id or author
7
+ * (#123), leaving all other (e.g. third-party reviewer) revisions untouched.
8
+ */
9
+ export async function acceptAiEdits(manager, params) {
10
+ const resolved = await resolveSessionForTool(manager, params, { toolName: 'accept_ai_edits' });
11
+ if (!resolved.ok)
12
+ return resolved.response;
13
+ const { session, metadata } = resolved;
14
+ const hasIds = Array.isArray(params.revision_ids) && params.revision_ids.length > 0;
15
+ if (!hasIds && (params.author == null || params.author === '')) {
16
+ return err('MISSING_PARAMETER', 'Provide revision_ids or author.', "Target specific w:id values with revision_ids, or every revision by one actor with author.");
17
+ }
18
+ try {
19
+ const { result, selectedIds } = await session.doc.acceptAIEdits({
20
+ revisionIds: params.revision_ids,
21
+ author: params.author,
22
+ normalizeFirst: params.normalize_first,
23
+ });
24
+ manager.markEdited(session);
25
+ return ok(mergeSessionResolutionMetadata({
26
+ ...result,
27
+ selected_revision_ids: selectedIds,
28
+ file_path: manager.normalizePath(session.originalPath),
29
+ }, metadata));
30
+ }
31
+ catch (e) {
32
+ if (e instanceof AmbiguousRevisionOverlapError) {
33
+ return {
34
+ ...err('AMBIGUOUS_REVISION_OVERLAP', e.message, 'Pass normalize_first=true for best-effort resolution, or target a non-overlapping revision set.'),
35
+ overlaps: e.overlaps,
36
+ };
37
+ }
38
+ return err('ACCEPT_AI_EDITS_ERROR', errorMessage(e));
39
+ }
40
+ }
41
+ //# sourceMappingURL=accept_ai_edits.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accept_ai_edits.js","sourceRoot":"","sources":["../../src/tools/accept_ai_edits.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,EAAE,EAAE,GAAG,EAAqB,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAErE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAuB,EACvB,MAKC;IAED,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC/F,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAC3C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAEvC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IACpF,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,EAAE,CAAC,EAAE,CAAC;QAC/D,OAAO,GAAG,CACR,mBAAmB,EACnB,iCAAiC,EACjC,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;YAC9D,WAAW,EAAE,MAAM,CAAC,YAAY;YAChC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,cAAc,EAAE,MAAM,CAAC,eAAe;SACvC,CAAC,CAAC;QACH,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,EAAE,CAAC,8BAA8B,CAAC;YACvC,GAAG,MAAM;YACT,qBAAqB,EAAE,WAAW;YAClC,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;SACvD,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChB,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,6BAA6B,EAAE,CAAC;YAC/C,OAAO;gBACL,GAAG,GAAG,CACJ,4BAA4B,EAC5B,CAAC,CAAC,OAAO,EACT,iGAAiG,CAClG;gBACD,QAAQ,EAAE,CAAC,CAAC,QAAQ;aACrB,CAAC;QACJ,CAAC;QACD,OAAO,GAAG,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"add_comment.d.ts","sourceRoot":"","sources":["../../src/tools/add_comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgC,MAAM,uBAAuB,CAAC;AAGrF,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AASxD,wBAAsB,UAAU,CAC9B,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE;IACN,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,YAAY,CAAC,CAmHvB"}
1
+ {"version":3,"file":"add_comment.d.ts","sourceRoot":"","sources":["../../src/tools/add_comment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgC,MAAM,uBAAuB,CAAC;AAGrF,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAmCxD,wBAAsB,UAAU,CAC9B,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE;IACN,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,YAAY,CAAC,CAmIvB"}
@@ -8,6 +8,30 @@ const COMMENT_TOUCHED_CONTEXT = {
8
8
  relationshipParts: ['word/_rels/document.xml.rels'],
9
9
  sideParts: ['word/comments.xml', 'word/commentsExtended.xml', 'word/people.xml'],
10
10
  };
11
+ // Non-revision parts a *root* comment can mutate without a tracked-change
12
+ // wrapper. Unlike the body-story w:commentReference run (which is wrapped in
13
+ // w:ins, Table A), the w:commentRangeStart/End milestones are written to
14
+ // word/document.xml as structural markers and are NOT revision-wrapped (Word's
15
+ // own behavior; see SUPPORT.md Table A note), so document.xml belongs here. The
16
+ // content-types and relationship parts are touched only when comment
17
+ // infrastructure is bootstrapped; they are declared conservatively so the
18
+ // manifest never under-reports a package mutation.
19
+ const ROOT_COMMENT_NON_REVISION_PARTS = [
20
+ 'word/document.xml',
21
+ 'word/comments.xml',
22
+ 'word/commentsExtended.xml',
23
+ 'word/people.xml',
24
+ '[Content_Types].xml',
25
+ 'word/_rels/document.xml.rels',
26
+ ];
27
+ // A threaded reply has no body anchor at all: the entire write is side-part
28
+ // metadata (comments.xml text + commentsExtended.xml graph + people.xml), so no
29
+ // tracked-change marker is emitted and document.xml is untouched.
30
+ const REPLY_COMMENT_NON_REVISION_PARTS = [
31
+ 'word/comments.xml',
32
+ 'word/commentsExtended.xml',
33
+ 'word/people.xml',
34
+ ];
11
35
  export async function addComment(manager, params) {
12
36
  const resolved = await resolveSessionForTool(manager, params, { toolName: 'add_comment' });
13
37
  if (!resolved.ok)
@@ -29,6 +53,13 @@ export async function addComment(manager, params) {
29
53
  return revisionPreflight;
30
54
  const result = await mutate(session.doc, ctx);
31
55
  manager.markEdited(session);
56
+ // Replies have no body anchor, so the whole write is package-mutation
57
+ // side-part metadata (#122): record it in the non-revision manifest.
58
+ manager.recordNonRevisionChange(session, {
59
+ tool: 'add_comment',
60
+ parts: REPLY_COMMENT_NON_REVISION_PARTS,
61
+ description: `Threaded reply to comment ${parentCommentId} written to comment side-story parts (comments.xml, commentsExtended.xml, people.xml). Reply mode is package-mutation only: it has no body anchor, so no tracked-change marker is emitted and word/document.xml is untouched.`,
62
+ });
32
63
  return ok(mergeSessionResolutionMetadata({
33
64
  comment_id: result.commentId,
34
65
  parent_comment_id: result.parentCommentId,
@@ -78,6 +109,15 @@ export async function addComment(manager, params) {
78
109
  return revisionPreflight;
79
110
  const result = await mutate(session.doc, ctx);
80
111
  manager.markEdited(session);
112
+ // The body-story w:commentReference run is wrapped in w:ins (Table A), but
113
+ // the comment body text, author metadata, and any comment-infrastructure
114
+ // bootstrap are package-mutation side-part writes with no revision wrapper
115
+ // (#122): record them in the non-revision manifest.
116
+ manager.recordNonRevisionChange(session, {
117
+ tool: 'add_comment',
118
+ parts: ROOT_COMMENT_NON_REVISION_PARTS,
119
+ description: `Comment ${result.commentId}: body text and author metadata written to comment side parts (comments.xml, people.xml), and w:commentRangeStart/End milestones written to word/document.xml as structural markers (not revision-wrapped). Comment infrastructure and its content-type/relationship registration are created when the package lacked them. The body-story w:commentReference run is tracked separately as a w:ins revision.`,
120
+ });
81
121
  return ok(mergeSessionResolutionMetadata({
82
122
  comment_id: result.commentId,
83
123
  anchor_paragraph_id: pid,
@@ -1 +1 @@
1
- {"version":3,"file":"add_comment.js","sourceRoot":"","sources":["../../src/tools/add_comment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"add_comment.js","sourceRoot":"","sources":["../../src/tools/add_comment.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"add_footnote.d.ts","sourceRoot":"","sources":["../../src/tools/add_footnote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgC,MAAM,uBAAuB,CAAC;AAGrF,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AASxD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE;IACN,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,YAAY,CAAC,CAsDvB"}
1
+ {"version":3,"file":"add_footnote.d.ts","sourceRoot":"","sources":["../../src/tools/add_footnote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAgC,MAAM,uBAAuB,CAAC;AAGrF,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAsBxD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE;IACN,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,YAAY,CAAC,CA+DvB"}
@@ -7,6 +7,18 @@ const FOOTNOTE_TOUCHED_CONTEXT = {
7
7
  relationshipParts: ['word/_rels/document.xml.rels'],
8
8
  sideParts: ['word/footnotes.xml'],
9
9
  };
10
+ // Non-revision parts add_footnote can mutate without a tracked-change wrapper.
11
+ // The note text runs and the body-story w:footnoteReference are wrapped in w:ins
12
+ // (Table A), but the <w:footnote> container element appended to footnotes.xml is
13
+ // a structural addition with no revision wrapper, and the content-type /
14
+ // relationship registration is created when footnote infrastructure is
15
+ // bootstrapped. [Content_Types].xml is declared so bootstrap registration is
16
+ // never under-reported.
17
+ const FOOTNOTE_NON_REVISION_PARTS = [
18
+ 'word/footnotes.xml',
19
+ '[Content_Types].xml',
20
+ 'word/_rels/document.xml.rels',
21
+ ];
10
22
  export async function addFootnote(manager, params) {
11
23
  const resolved = await resolveSessionForTool(manager, params, { toolName: 'add_footnote' });
12
24
  if (!resolved.ok)
@@ -36,6 +48,15 @@ export async function addFootnote(manager, params) {
36
48
  return revisionPreflight;
37
49
  const result = await mutate(session.doc, ctx);
38
50
  manager.markEdited(session);
51
+ // The body-story w:footnoteReference and note text are tracked as w:ins
52
+ // (Table A), but creating word/footnotes.xml and registering the part in
53
+ // relationships/content-types is a package mutation with no revision
54
+ // wrapper (#122): record it in the non-revision manifest.
55
+ manager.recordNonRevisionChange(session, {
56
+ tool: 'add_footnote',
57
+ parts: FOOTNOTE_NON_REVISION_PARTS,
58
+ description: `Footnote ${result.noteId}: the <w:footnote> container element is appended to word/footnotes.xml as a structural addition (the note text runs are tracked separately as w:ins). When the document lacked footnote infrastructure, the part and its content-type/relationship registration were bootstrapped. The body-story footnote reference is also tracked as a w:ins revision.`,
59
+ });
39
60
  return ok(mergeSessionResolutionMetadata({
40
61
  note_id: result.noteId,
41
62
  target_paragraph_id: pid,
@@ -1 +1 @@
1
- {"version":3,"file":"add_footnote.js","sourceRoot":"","sources":["../../src/tools/add_footnote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrF,OAAO,EAAa,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,EAAE,EAAE,GAAG,EAAqB,MAAM,YAAY,CAAC;AAExD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AAErE,MAAM,wBAAwB,GAAG;IAC/B,iBAAiB,EAAE,CAAC,8BAA8B,CAAC;IACnD,SAAS,EAAE,CAAC,oBAAoB,CAAC;CAClC,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAuB,EACvB,MAKC;IAED,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC;IAC5F,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC;IAC3C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IACvC,MAAM,GAAG,GAAG,MAAM,4BAA4B,CAAC,OAAO,CAAC,CAAC;IAExD,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC,mBAAmB,EAAE,kCAAkC,EAAE,kEAAkE,CAAC,CAAC;IAC1I,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,GAAG,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,iCAAiC,CAAC,CAAC;IAC1F,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,mBAAmB,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,GAAG,CAAC,kBAAkB,EAAE,gBAAgB,GAAG,wBAAwB,EAAE,oDAAoD,CAAC,CAAC;IACpI,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,GAAiB,EAAE,SAAsC,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC;YAC5F,WAAW,EAAE,GAAG;YAChB,SAAS,EAAE,MAAM,CAAC,UAAU;YAC5B,IAAI;SACL,EAAE,SAAS,CAAC,CAAC;QAEd,MAAM,iBAAiB,GAAG,MAAM,2BAA2B,CACzD,OAAO,EACP,GAAG,EACH,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,EAC3D,wBAAwB,CACzB,CAAC;QACF,IAAI,iBAAiB;YAAE,OAAO,iBAAiB,CAAC;QAEhD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAE9C,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,EAAE,CAAC,8BAA8B,CAAC;YACvC,OAAO,EAAE,MAAM,CAAC,MAAM;YACtB,mBAAmB,EAAE,GAAG;YACxB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,IAAI;YACrC,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;SACvD,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChB,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC3C,OAAO,GAAG,CAAC,gBAAgB,EAAE,GAAG,EAAE,uDAAuD,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,OAAO,GAAG,CAAC,kBAAkB,EAAE,GAAG,EAAE,sDAAsD,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"add_footnote.js","sourceRoot":"","sources":["../../src/tools/add_footnote.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import path from 'node:path';
2
2
  import { errorCode, errorMessage } from "../error_utils.js";
3
3
  import fs from 'node:fs/promises';
4
4
  import { err, ok } from './types.js';
5
- import { compareDocuments } from '@usejunior/docx-core';
5
+ import { compareDocuments } from '@usejunior/docx-compare';
6
6
  import { mergeSessionResolutionMetadata, resolveSessionForTool, validateAndLoadDocxFromPath, } from './session_resolution.js';
7
7
  import { enforceWritePathPolicy, resolvesToSamePath } from './path_policy.js';
8
8
  import { DEFAULT_RECONSTRUCTION_MODE } from './comparison_defaults.js';