@usejunior/docx-mcp 0.14.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.
- package/README.md +1 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/cli/commands/compare.js +1 -1
- package/dist/cli/commands/compare.js.map +1 -1
- package/dist/server.d.ts +6 -70
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +9 -0
- package/dist/server.js.map +1 -1
- package/dist/session/manager.d.ts +37 -7
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +10 -0
- package/dist/session/manager.js.map +1 -1
- package/dist/tool_catalog.d.ts +125 -85
- package/dist/tool_catalog.d.ts.map +1 -1
- package/dist/tool_catalog.js +125 -13
- package/dist/tool_catalog.js.map +1 -1
- package/dist/tools/accept_ai_edits.d.ts +13 -0
- package/dist/tools/accept_ai_edits.d.ts.map +1 -0
- package/dist/tools/accept_ai_edits.js +41 -0
- package/dist/tools/accept_ai_edits.js.map +1 -0
- package/dist/tools/add_comment.d.ts.map +1 -1
- package/dist/tools/add_comment.js +40 -0
- package/dist/tools/add_comment.js.map +1 -1
- package/dist/tools/add_footnote.d.ts.map +1 -1
- package/dist/tools/add_footnote.js +21 -0
- package/dist/tools/add_footnote.js.map +1 -1
- package/dist/tools/compare_documents.js +1 -1
- package/dist/tools/compare_documents.js.map +1 -1
- package/dist/tools/comparison_defaults.d.ts +1 -1
- package/dist/tools/comparison_defaults.d.ts.map +1 -1
- package/dist/tools/delete_comment.d.ts.map +1 -1
- package/dist/tools/delete_comment.js +34 -0
- package/dist/tools/delete_comment.js.map +1 -1
- package/dist/tools/get_document_outline.d.ts +29 -0
- package/dist/tools/get_document_outline.d.ts.map +1 -0
- package/dist/tools/get_document_outline.js +67 -0
- package/dist/tools/get_document_outline.js.map +1 -0
- package/dist/tools/read_file.d.ts +1 -0
- package/dist/tools/read_file.d.ts.map +1 -1
- package/dist/tools/read_file.js +46 -2
- package/dist/tools/read_file.js.map +1 -1
- package/dist/tools/reject_ai_edits.d.ts +14 -0
- package/dist/tools/reject_ai_edits.d.ts.map +1 -0
- package/dist/tools/reject_ai_edits.js +42 -0
- package/dist/tools/reject_ai_edits.js.map +1 -0
- package/dist/tools/save.d.ts +1 -21
- package/dist/tools/save.d.ts.map +1 -1
- package/dist/tools/save.js +84 -129
- package/dist/tools/save.js.map +1 -1
- package/package.json +10 -9
package/dist/tools/save.js
CHANGED
|
@@ -2,11 +2,10 @@ 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 { DocxZip, TRACKED_CHANGE_ELEMENT_NAME_SET,
|
|
5
|
+
import { DocxZip, TRACKED_CHANGE_ELEMENT_NAME_SET, parseXml, } from '@usejunior/docx-core';
|
|
6
6
|
import { mergeSessionResolutionMetadata, resolveSessionForTool } from './session_resolution.js';
|
|
7
7
|
import { getAiRevisionBaseline, splitIntroducedDiagnostics } from './ai_revision_guard.js';
|
|
8
8
|
import { enforceWritePathPolicy, resolvesToSamePath } from './path_policy.js';
|
|
9
|
-
import { DEFAULT_RECONSTRUCTION_MODE } from './comparison_defaults.js';
|
|
10
9
|
const WORDPROCESSING_ML_NS = 'http://schemas.openxmlformats.org/wordprocessingml/2006/main';
|
|
11
10
|
function expandPath(inputPath) {
|
|
12
11
|
return inputPath.startsWith('~') ? path.join(process.env.HOME || '', inputPath.slice(1)) : inputPath;
|
|
@@ -29,18 +28,6 @@ function defaultTrackedPath(cleanPath, timestamp) {
|
|
|
29
28
|
const ext = parsed.ext || '.docx';
|
|
30
29
|
return path.join(parsed.dir, `${parsed.name}.redline.${timestamp}${ext}`);
|
|
31
30
|
}
|
|
32
|
-
async function runWithoutConsoleLog(fn) {
|
|
33
|
-
if (process.env.SAFE_DOCX_ALLOW_COMPARISON_STDOUT === '1')
|
|
34
|
-
return fn();
|
|
35
|
-
const originalLog = console.log;
|
|
36
|
-
console.log = () => { };
|
|
37
|
-
try {
|
|
38
|
-
return await fn();
|
|
39
|
-
}
|
|
40
|
-
finally {
|
|
41
|
-
console.log = originalLog;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
31
|
function getWordAttr(element, localName) {
|
|
45
32
|
return (element.getAttributeNS(WORDPROCESSING_ML_NS, localName)
|
|
46
33
|
?? element.getAttribute(`w:${localName}`)
|
|
@@ -84,40 +71,35 @@ async function collectAiRevisionSummary(buffer, author) {
|
|
|
84
71
|
};
|
|
85
72
|
}
|
|
86
73
|
/**
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
* save still succeeds, but callers must surface it: a swallowed error is
|
|
91
|
-
* indistinguishable from "document fully edited, nothing to restore"
|
|
92
|
-
* (`blocksRestored: 0` reads as benign), so a restore-path regression would
|
|
93
|
-
* otherwise go dark.
|
|
94
|
-
*
|
|
95
|
-
* Exported for direct testing of the failure path; production callers go
|
|
96
|
-
* through `save`.
|
|
97
|
-
*
|
|
98
|
-
* @see https://github.com/UseJunior/safe-docx/issues/436
|
|
74
|
+
* Count tracked-change stats directly from the write-time markup carried by the
|
|
75
|
+
* session document (#126) — no comparison. Insertions/deletions are w:ins/w:del;
|
|
76
|
+
* modifications are the property-change records (w:rPrChange/pPrChange/…).
|
|
99
77
|
*/
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
const
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
const
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
78
|
+
async function collectTrackedStats(buffer, author) {
|
|
79
|
+
const zip = await DocxZip.load(buffer);
|
|
80
|
+
const stats = { insertions: 0, deletions: 0, modifications: 0 };
|
|
81
|
+
for (const fileName of zip.listFiles()) {
|
|
82
|
+
if (!fileName.startsWith('word/') || !fileName.endsWith('.xml'))
|
|
83
|
+
continue;
|
|
84
|
+
const xml = await zip.readTextOrNull(fileName);
|
|
85
|
+
if (!xml)
|
|
86
|
+
continue;
|
|
87
|
+
const doc = parseXml(xml);
|
|
88
|
+
for (const node of Array.from(doc.getElementsByTagName('*'))) {
|
|
89
|
+
if (node.namespaceURI !== WORDPROCESSING_ML_NS || !TRACKED_CHANGE_ELEMENT_NAME_SET.has(node.localName))
|
|
90
|
+
continue;
|
|
91
|
+
// When an author is set, count only that actor's write-time revisions.
|
|
92
|
+
if (author && getWordAttr(node, 'author') !== author)
|
|
93
|
+
continue;
|
|
94
|
+
if (node.localName === 'ins')
|
|
95
|
+
stats.insertions += 1;
|
|
96
|
+
else if (node.localName === 'del')
|
|
97
|
+
stats.deletions += 1;
|
|
98
|
+
else if (node.localName.endsWith('Change'))
|
|
99
|
+
stats.modifications += 1;
|
|
114
100
|
}
|
|
115
|
-
trackedZip.writeText('word/document.xml', serializeXml(trackedDoc));
|
|
116
|
-
return { buffer: await trackedZip.toBuffer(), blocksRestored };
|
|
117
|
-
}
|
|
118
|
-
catch (e) {
|
|
119
|
-
return { buffer: trackedBuffer, blocksRestored: 0, restoreError: errorMessage(e) };
|
|
120
101
|
}
|
|
102
|
+
return stats;
|
|
121
103
|
}
|
|
122
104
|
export async function save(manager, params) {
|
|
123
105
|
try {
|
|
@@ -158,22 +140,16 @@ export async function save(manager, params) {
|
|
|
158
140
|
return err('INVALID_SAVE_FORMAT', `Invalid save_format: ${String(formatRaw)}`, "Use one of: 'clean', 'tracked', or 'both'.");
|
|
159
141
|
}
|
|
160
142
|
const format = formatRaw;
|
|
161
|
-
const engine = params.tracked_changes_engine ?? 'atomizer';
|
|
162
|
-
if (engine !== 'auto' && engine !== 'atomizer' && engine !== 'wmlcomparer') {
|
|
163
|
-
return err('INVALID_TRACKED_ENGINE', `Invalid tracked_changes_engine: ${String(engine)}`, "Use one of: 'auto' or 'atomizer'.");
|
|
164
|
-
}
|
|
165
|
-
if (engine === 'wmlcomparer') {
|
|
166
|
-
return err('INVALID_TRACKED_ENGINE', "tracked_changes_engine 'wmlcomparer' is not supported here", "Use 'auto' or 'atomizer'.");
|
|
167
|
-
}
|
|
168
|
-
const trackedEngine = engine;
|
|
169
143
|
const clean = params.clean_bookmarks ?? true;
|
|
170
|
-
|
|
144
|
+
// Display author for the tracked-changes report. The actual markup author is
|
|
145
|
+
// whatever the write-time emitter recorded on session.doc (#120/#126); no
|
|
146
|
+
// comparison re-authoring happens here.
|
|
147
|
+
const author = params.tracked_changes_author ?? params.author ?? session.aiAuthor ?? 'SafeDocX';
|
|
171
148
|
const allowOverwrite = params.allow_overwrite ?? false;
|
|
172
149
|
const cacheKey = JSON.stringify({
|
|
173
150
|
revision: session.editRevision,
|
|
174
151
|
format,
|
|
175
152
|
clean_bookmarks: clean,
|
|
176
|
-
tracked_engine: trackedEngine,
|
|
177
153
|
tracked_author: author,
|
|
178
154
|
});
|
|
179
155
|
const cached = manager.getSaveCache(session, cacheKey);
|
|
@@ -181,13 +157,8 @@ export async function save(manager, params) {
|
|
|
181
157
|
let revisedBuffer;
|
|
182
158
|
let trackedBuffer;
|
|
183
159
|
let trackedStats;
|
|
184
|
-
let trackedReconstructionMode;
|
|
185
|
-
let trackedFallbackReason;
|
|
186
|
-
let trackedFallbackDiagnostics;
|
|
187
160
|
let bookmarksRemoved;
|
|
188
161
|
let blocksRestored;
|
|
189
|
-
let trackedBlocksRestored;
|
|
190
|
-
let trackedRestoreError;
|
|
191
162
|
let exportTimestamp;
|
|
192
163
|
// Run implicit validation before producing save artifacts.
|
|
193
164
|
const validation = session.doc.validate();
|
|
@@ -227,77 +198,58 @@ export async function save(manager, params) {
|
|
|
227
198
|
revisedBuffer = cached.revisedBuffer;
|
|
228
199
|
trackedBuffer = cached.trackedBuffer;
|
|
229
200
|
trackedStats = cached.trackedStats;
|
|
230
|
-
trackedReconstructionMode = cached.trackedReconstructionMode;
|
|
231
|
-
trackedFallbackReason = cached.trackedFallbackReason;
|
|
232
|
-
trackedFallbackDiagnostics = cached.trackedFallbackDiagnostics;
|
|
233
201
|
bookmarksRemoved = cached.bookmarksRemoved;
|
|
234
202
|
blocksRestored = cached.blocksRestored;
|
|
235
|
-
trackedBlocksRestored = cached.trackedBlocksRestored;
|
|
236
|
-
trackedRestoreError = cached.trackedRestoreError;
|
|
237
203
|
exportTimestamp = cached.exportedAtUtc;
|
|
238
204
|
}
|
|
239
205
|
else {
|
|
240
|
-
|
|
241
|
-
// restored element-for-element from the original document.xml so the
|
|
242
|
-
// on-disk diff matches the edit's actual blast radius.
|
|
243
|
-
const revised = await session.doc.toBuffer({ cleanBookmarks: clean, minimalReserialization: clean });
|
|
244
|
-
revisedBuffer = revised.buffer;
|
|
245
|
-
bookmarksRemoved = revised.bookmarksRemoved;
|
|
246
|
-
blocksRestored = revised.blocksRestored;
|
|
206
|
+
exportTimestamp = formatUtcTimestamp(new Date());
|
|
247
207
|
trackedBuffer = null;
|
|
248
208
|
trackedStats = null;
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
//
|
|
260
|
-
//
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
const restoredTracked = await restoreTrackedUntouchedBlocks(trackedRes.document, session.originalBuffer);
|
|
272
|
-
trackedBuffer = restoredTracked.buffer;
|
|
273
|
-
trackedBlocksRestored = restoredTracked.blocksRestored;
|
|
274
|
-
trackedRestoreError = restoredTracked.restoreError;
|
|
275
|
-
trackedStats = trackedRes.stats;
|
|
276
|
-
trackedReconstructionMode = trackedRes.reconstructionModeUsed;
|
|
277
|
-
trackedFallbackReason = trackedRes.fallbackReason;
|
|
278
|
-
trackedFallbackDiagnostics = trackedRes.fallbackDiagnostics;
|
|
209
|
+
// CLEAN artifact (#126): accept the AI actor's write-time edits so the
|
|
210
|
+
// artifact is a genuinely clean document. Pre-existing third-party tracked
|
|
211
|
+
// changes are preserved — SafeDocX never silently accepts another
|
|
212
|
+
// reviewer's revisions (normalizeFirst keeps the accept best-effort and
|
|
213
|
+
// never hard-errors on an unusual overlap during finalization). With no AI
|
|
214
|
+
// author there is no write-time AI markup, so the document serializes as-is
|
|
215
|
+
// with a minimal, blast-radius-matching diff.
|
|
216
|
+
if (session.aiAuthor) {
|
|
217
|
+
// Accept the AI actor's write-time edits on an isolated copy so the
|
|
218
|
+
// session (and its tracked artifact) keep the markup, while untouched
|
|
219
|
+
// body blocks stay byte-identical to the source via minimal
|
|
220
|
+
// reserialization against the true original document.xml (#408).
|
|
221
|
+
const cleaned = await session.doc.toAcceptedBuffer({ author: session.aiAuthor, normalizeFirst: true }, { cleanBookmarks: clean });
|
|
222
|
+
revisedBuffer = cleaned.buffer;
|
|
223
|
+
bookmarksRemoved = cleaned.bookmarksRemoved;
|
|
224
|
+
blocksRestored = cleaned.blocksRestored;
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
const revised = await session.doc.toBuffer({ cleanBookmarks: clean, minimalReserialization: clean });
|
|
228
|
+
revisedBuffer = revised.buffer;
|
|
229
|
+
bookmarksRemoved = revised.bookmarksRemoved;
|
|
230
|
+
blocksRestored = revised.blocksRestored;
|
|
279
231
|
}
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
232
|
+
// TRACKED artifact (#126): the session's write-time tracked markup,
|
|
233
|
+
// serialized directly. No comparison, no reconstruction — the redline is
|
|
234
|
+
// exactly what the write-time emitter authored (author, stable ids, and any
|
|
235
|
+
// pre-existing reviewer revisions preserved). Comparison-based redlining is
|
|
236
|
+
// available only via the compare_documents tool.
|
|
237
|
+
if (format === 'tracked' || format === 'both') {
|
|
238
|
+
const tracked = await session.doc.toBuffer({ cleanBookmarks: clean });
|
|
239
|
+
trackedBuffer = tracked.buffer;
|
|
240
|
+
trackedStats = await collectTrackedStats(trackedBuffer, session.aiAuthor);
|
|
283
241
|
}
|
|
284
242
|
manager.setSaveCache(session, {
|
|
285
243
|
cacheKey,
|
|
286
244
|
revision: session.editRevision,
|
|
287
245
|
format,
|
|
288
246
|
cleanBookmarks: clean,
|
|
289
|
-
trackedEngine,
|
|
290
247
|
trackedAuthor: author,
|
|
291
248
|
revisedBuffer,
|
|
292
249
|
trackedBuffer,
|
|
293
250
|
trackedStats,
|
|
294
|
-
trackedReconstructionMode,
|
|
295
|
-
trackedFallbackReason,
|
|
296
|
-
trackedFallbackDiagnostics,
|
|
297
251
|
bookmarksRemoved: clean ? bookmarksRemoved : 0,
|
|
298
252
|
blocksRestored,
|
|
299
|
-
trackedBlocksRestored,
|
|
300
|
-
trackedRestoreError,
|
|
301
253
|
exportedAtUtc: exportTimestamp,
|
|
302
254
|
cachedAtIso: new Date().toISOString(),
|
|
303
255
|
});
|
|
@@ -334,9 +286,12 @@ export async function save(manager, params) {
|
|
|
334
286
|
await fs.mkdir(path.dirname(trackedPath), { recursive: true });
|
|
335
287
|
await fs.writeFile(trackedPath, new Uint8Array(trackedBuffer));
|
|
336
288
|
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
289
|
+
// Summarize the AI's revisions from the session's write-time markup (#126).
|
|
290
|
+
// The clean artifact has accepted them away, so summarize the tracked
|
|
291
|
+
// artifact when present, else the session document directly.
|
|
292
|
+
const revisionSummarySource = trackedBuffer
|
|
293
|
+
?? (await session.doc.toBuffer({ cleanBookmarks: false })).buffer;
|
|
294
|
+
const revisions = await collectAiRevisionSummary(revisionSummarySource, session.aiAuthor);
|
|
340
295
|
const returnedVariants = format === 'clean'
|
|
341
296
|
? ['clean']
|
|
342
297
|
: format === 'tracked'
|
|
@@ -353,21 +308,22 @@ export async function save(manager, params) {
|
|
|
353
308
|
tracked_saved_to: trackedPath,
|
|
354
309
|
size_bytes: format === 'tracked' ? trackedBuffer?.length : revisedBuffer.length,
|
|
355
310
|
tracked_size_bytes: trackedBuffer?.length,
|
|
356
|
-
|
|
311
|
+
// The redline is the write-time markup as authored — no comparison engine
|
|
312
|
+
// or reconstruction is involved (#126).
|
|
313
|
+
tracked_changes_source: format === 'tracked' || format === 'both' ? 'write-time' : undefined,
|
|
357
314
|
tracked_changes_author: format === 'tracked' || format === 'both' ? author : undefined,
|
|
358
315
|
tracked_changes_stats: trackedStats ?? undefined,
|
|
359
|
-
tracked_reconstruction_mode: trackedReconstructionMode,
|
|
360
|
-
tracked_fallback_reason: trackedFallbackReason,
|
|
361
|
-
tracked_fallback_diagnostics: trackedFallbackDiagnostics,
|
|
362
|
-
tracked_rebuild_warning: trackedReconstructionMode === 'rebuild'
|
|
363
|
-
? 'Rebuild mode was used which may alter document structure (tables, fonts, etc.)'
|
|
364
|
-
: undefined,
|
|
365
316
|
revisions,
|
|
317
|
+
// #122: package-level mutations with no native OOXML revision wrapper
|
|
318
|
+
// (comment/footnote side parts, relationships, content types) are not
|
|
319
|
+
// tracked changes, so surface them explicitly alongside the revisions
|
|
320
|
+
// list rather than letting them land silently.
|
|
321
|
+
non_revision_changes: session.nonRevisionManifest.length > 0
|
|
322
|
+
? session.nonRevisionManifest
|
|
323
|
+
: undefined,
|
|
366
324
|
exported_at_utc: exportTimestamp,
|
|
367
325
|
bookmarks_removed: clean ? bookmarksRemoved : 0,
|
|
368
326
|
blocks_restored: blocksRestored,
|
|
369
|
-
tracked_blocks_restored: trackedBlocksRestored,
|
|
370
|
-
tracked_restore_error: trackedRestoreError,
|
|
371
327
|
returned_variants: returnedVariants,
|
|
372
328
|
available_variants: ['clean', 'redline'],
|
|
373
329
|
cache_hit: cacheHit,
|
|
@@ -381,12 +337,11 @@ export async function save(manager, params) {
|
|
|
381
337
|
],
|
|
382
338
|
}
|
|
383
339
|
: { valid: true },
|
|
384
|
-
message: (
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
: `${cacheHit ? 'Cached ' : ''}clean document saved to ${savePath} and tracked changes document saved to ${trackedPath}`),
|
|
340
|
+
message: (format === 'clean'
|
|
341
|
+
? `${cacheHit ? 'Cached ' : ''}document saved to ${savePath}`
|
|
342
|
+
: format === 'tracked'
|
|
343
|
+
? `${cacheHit ? 'Cached ' : ''}tracked changes document saved to ${trackedPath}`
|
|
344
|
+
: `${cacheHit ? 'Cached ' : ''}clean document saved to ${savePath} and tracked changes document saved to ${trackedPath}`),
|
|
390
345
|
}, metadata));
|
|
391
346
|
}
|
|
392
347
|
catch (e) {
|
package/dist/tools/save.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/tools/save.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/tools/save.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@usejunior/docx-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "MCP server for reading, editing, and comparing Word (.docx) and OpenDocument (.odt) files with tracked changes. For Claude, Gemini CLI, Cursor, and any MCP client. Apache-2.0 licensed.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"scripts": {
|
|
13
13
|
"clean:dist": "node -e \"const { rmSync } = require('node:fs'); rmSync('dist', { recursive: true, force: true });\"",
|
|
14
|
-
"build": "npm run build -w @usejunior/docx-core && npm run build -w @usejunior/odf-core --if-present && npm run build -w @usejunior/google-docs-core --if-present && npm run clean:dist && tsc -p tsconfig.build.json",
|
|
14
|
+
"build": "npm run build -w @usejunior/docx-core && npm run build -w @usejunior/docx-compare && npm run build -w @usejunior/odf-core --if-present && npm run build -w @usejunior/google-docs-core --if-present && npm run clean:dist && tsc -p tsconfig.build.json",
|
|
15
15
|
"dev": "tsx watch src/cli.ts",
|
|
16
16
|
"check:spec-coverage": "node scripts/validate_openspec_coverage.mjs",
|
|
17
17
|
"conformance:discover": "tsx scripts/discover_docx_fixtures.ts --out conformance/discovery.report.json",
|
|
@@ -19,16 +19,17 @@
|
|
|
19
19
|
"conformance:smoke": "tsx scripts/run_conformance_harness.ts --manifest conformance/fixtures.manifest.json --mode smoke --report conformance/smoke-report.json",
|
|
20
20
|
"docs:generate:tools": "node --import tsx scripts/generate_tool_reference.ts",
|
|
21
21
|
"test:conformance": "vitest run src/conformance/harness.test.ts",
|
|
22
|
-
"test": "npm run build -w @usejunior/docx-core && npm run build -w @usejunior/odf-core --if-present && npm run check:spec-coverage && node ../../node_modules/vitest/vitest.mjs",
|
|
23
|
-
"test:run": "npm run build -w @usejunior/docx-core && npm run build -w @usejunior/odf-core --if-present && npm run check:spec-coverage && node ../../node_modules/vitest/vitest.mjs run",
|
|
24
|
-
"test:coverage": "npm run build -w @usejunior/docx-core && npm run build -w @usejunior/odf-core --if-present && npm run check:spec-coverage && node ../../node_modules/vitest/vitest.mjs run --coverage --coverage.reporter=text-summary --coverage.reporter=json-summary --coverage.reporter=lcov",
|
|
22
|
+
"test": "npm run build -w @usejunior/docx-core && npm run build -w @usejunior/docx-compare && npm run build -w @usejunior/odf-core --if-present && npm run check:spec-coverage && node ../../node_modules/vitest/vitest.mjs",
|
|
23
|
+
"test:run": "npm run build -w @usejunior/docx-core && npm run build -w @usejunior/docx-compare && npm run build -w @usejunior/odf-core --if-present && npm run check:spec-coverage && node ../../node_modules/vitest/vitest.mjs run",
|
|
24
|
+
"test:coverage": "npm run build -w @usejunior/docx-core && npm run build -w @usejunior/docx-compare && npm run build -w @usejunior/odf-core --if-present && npm run check:spec-coverage && node ../../node_modules/vitest/vitest.mjs run --coverage --coverage.reporter=text-summary --coverage.reporter=json-summary --coverage.reporter=lcov",
|
|
25
25
|
"prepack": "npm run build",
|
|
26
|
-
"lint": "tsc
|
|
26
|
+
"lint": "tsc --noEmit --pretty false"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
30
|
-
"@usejunior/docx-
|
|
31
|
-
"@usejunior/
|
|
30
|
+
"@usejunior/docx-compare": "^0.16.0",
|
|
31
|
+
"@usejunior/docx-core": "^0.16.0",
|
|
32
|
+
"@usejunior/odf-core": "^0.16.0",
|
|
32
33
|
"@xmldom/xmldom": "^0.9.10",
|
|
33
34
|
"zod": "^4.3.6"
|
|
34
35
|
},
|
|
@@ -56,7 +57,7 @@
|
|
|
56
57
|
"NOTICE"
|
|
57
58
|
],
|
|
58
59
|
"peerDependencies": {
|
|
59
|
-
"@usejunior/google-docs-core": "^0.
|
|
60
|
+
"@usejunior/google-docs-core": "^0.16.0"
|
|
60
61
|
},
|
|
61
62
|
"peerDependenciesMeta": {
|
|
62
63
|
"@usejunior/google-docs-core": {
|