@usejunior/docx-mcp 0.11.0 → 0.11.1

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.
@@ -1,45 +0,0 @@
1
- import { randomBytes } from 'node:crypto';
2
- import { errorMessage } from "../error_utils.js";
3
- import { err, ok } from './types.js';
4
- import { mergeSessionResolutionMetadata, resolveSessionForTool } from './session_resolution.js';
5
- function createPlanContextId() {
6
- const alphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
7
- const bytes = randomBytes(12);
8
- let suffix = '';
9
- for (let i = 0; i < 12; i += 1) {
10
- suffix += alphabet[bytes[i] % alphabet.length];
11
- }
12
- return `plctx_${suffix}`;
13
- }
14
- function optionalString(value) {
15
- if (typeof value !== 'string')
16
- return undefined;
17
- const trimmed = value.trim();
18
- return trimmed.length > 0 ? trimmed : undefined;
19
- }
20
- export async function initPlan(manager, params) {
21
- try {
22
- const resolved = await resolveSessionForTool(manager, params, { toolName: 'init_plan' });
23
- if (!resolved.ok)
24
- return resolved.response;
25
- const { session, metadata } = resolved;
26
- return ok(mergeSessionResolutionMetadata({
27
- plan_context_id: createPlanContextId(),
28
- file_path: manager.normalizePath(session.originalPath),
29
- session_epoch: session.createdAt.getTime(),
30
- base_revision: session.editRevision,
31
- edit_count: session.editCount,
32
- created_at: new Date().toISOString(),
33
- plan_context: {
34
- plan_name: optionalString(params.plan_name) ?? null,
35
- orchestrator_id: optionalString(params.orchestrator_id) ?? null,
36
- document_filename: session.filename,
37
- },
38
- }, metadata));
39
- }
40
- catch (e) {
41
- const msg = errorMessage(e);
42
- return err('PLAN_INIT_ERROR', `Failed to initialize plan context: ${msg}`);
43
- }
44
- }
45
- //# sourceMappingURL=init_plan.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init_plan.js","sourceRoot":"","sources":["../../src/tools/init_plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAa,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAE,GAAG,EAAE,EAAE,EAAqB,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhG,SAAS,mBAAmB;IAC1B,MAAM,QAAQ,GAAG,gEAAgE,CAAC;IAClF,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAC9B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,SAAS,MAAM,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAuB,EACvB,MAIC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,QAAQ,CAAC,QAAQ,CAAC;QAC3C,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;QAEvC,OAAO,EAAE,CAAC,8BAA8B,CAAC;YACvC,eAAe,EAAE,mBAAmB,EAAE;YACtC,SAAS,EAAE,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;YACtD,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;YAC1C,aAAa,EAAE,OAAO,CAAC,YAAY;YACnC,UAAU,EAAE,OAAO,CAAC,SAAS;YAC7B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,YAAY,EAAE;gBACZ,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI;gBACnD,eAAe,EAAE,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,IAAI;gBAC/D,iBAAiB,EAAE,OAAO,CAAC,QAAQ;aACpC;SACF,EAAE,QAAQ,CAAC,CAAC,CAAC;IAChB,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,MAAM,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,OAAO,GAAG,CAAC,iBAAiB,EAAE,sCAAsC,GAAG,EAAE,CAAC,CAAC;IAC7E,CAAC;AACH,CAAC"}
@@ -1,7 +0,0 @@
1
- import { type ToolResponse } from './types.js';
2
- export declare function mergePlans(params: {
3
- plans: unknown;
4
- fail_on_conflict?: boolean;
5
- require_shared_base_revision?: boolean;
6
- }): Promise<ToolResponse>;
7
- //# sourceMappingURL=merge_plans.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge_plans.d.ts","sourceRoot":"","sources":["../../src/tools/merge_plans.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AA4axD,wBAAsB,UAAU,CAC9B,MAAM,EAAE;IACN,KAAK,EAAE,OAAO,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACxC,GACA,OAAO,CAAC,YAAY,CAAC,CA4DvB"}
@@ -1,408 +0,0 @@
1
- import { err, ok } from './types.js';
2
- import { errorMessage } from "../error_utils.js";
3
- function asRecord(value) {
4
- if (!value || typeof value !== 'object' || Array.isArray(value))
5
- return null;
6
- return value;
7
- }
8
- function asTrimmedString(value) {
9
- if (typeof value !== 'string')
10
- return undefined;
11
- const trimmed = value.trim();
12
- return trimmed.length > 0 ? trimmed : undefined;
13
- }
14
- function asInteger(value) {
15
- if (typeof value !== 'number' || !Number.isFinite(value))
16
- return null;
17
- if (!Number.isInteger(value) || value < 0)
18
- return null;
19
- return value;
20
- }
21
- function asBoolean(value, fallback) {
22
- return typeof value === 'boolean' ? value : fallback;
23
- }
24
- function normalizeOperation(value) {
25
- const raw = asTrimmedString(value)?.toLowerCase();
26
- if (!raw)
27
- return null;
28
- if (raw === 'replace_text')
29
- return 'replace_text';
30
- if (raw === 'insert_paragraph')
31
- return 'insert_paragraph';
32
- return null;
33
- }
34
- function extractRange(step) {
35
- const rangeRaw = step.range ?? step.span ?? step.match_range;
36
- if (rangeRaw == null)
37
- return null;
38
- const rangeObj = asRecord(rangeRaw);
39
- if (!rangeObj)
40
- return 'invalid';
41
- const start = asInteger(rangeObj.start);
42
- const end = asInteger(rangeObj.end);
43
- if (start == null || end == null)
44
- return 'invalid';
45
- if (end <= start)
46
- return 'invalid';
47
- return { start, end };
48
- }
49
- function stepRef(step) {
50
- return {
51
- plan_id: step.source_plan_id,
52
- plan_index: step.source_plan_index,
53
- step_index: step.source_step_index,
54
- step_id: step.step_id,
55
- };
56
- }
57
- function buildAutoStepId(planIndex, stepIndex) {
58
- return `auto_${planIndex + 1}_${stepIndex + 1}`;
59
- }
60
- function cloneArguments(step) {
61
- const out = {};
62
- for (const [key, value] of Object.entries(step)) {
63
- if (key === 'operation' || key === 'op' || key === 'step_id' || key === 'note' || key === 'range' || key === 'span' || key === 'match_range') {
64
- continue;
65
- }
66
- out[key] = value;
67
- }
68
- return out;
69
- }
70
- function normalizePlans(plansRaw) {
71
- if (!Array.isArray(plansRaw)) {
72
- return {
73
- plans: [],
74
- plan_count: 0,
75
- conflicts: [
76
- {
77
- code: 'INVALID_INPUT',
78
- severity: 'hard',
79
- message: "'plans' must be an array.",
80
- step_refs: [],
81
- },
82
- ],
83
- };
84
- }
85
- const plans = [];
86
- const conflicts = [];
87
- for (let pIdx = 0; pIdx < plansRaw.length; pIdx += 1) {
88
- const planObj = asRecord(plansRaw[pIdx]);
89
- const planId = asTrimmedString(planObj?.plan_id) ?? `plan_${pIdx + 1}`;
90
- if (!planObj) {
91
- conflicts.push({
92
- code: 'INVALID_PLAN',
93
- severity: 'hard',
94
- message: `Plan at index ${pIdx} is not an object.`,
95
- step_refs: [],
96
- });
97
- continue;
98
- }
99
- const baseRevisionRaw = planObj.base_revision;
100
- const baseRevision = baseRevisionRaw == null ? null : asInteger(baseRevisionRaw);
101
- if (baseRevisionRaw != null && baseRevision == null) {
102
- conflicts.push({
103
- code: 'INVALID_BASE_REVISION',
104
- severity: 'hard',
105
- message: `Plan '${planId}' has invalid base_revision. Expected a non-negative integer.`,
106
- step_refs: [],
107
- });
108
- }
109
- const stepsRaw = planObj.steps;
110
- if (!Array.isArray(stepsRaw)) {
111
- conflicts.push({
112
- code: 'INVALID_PLAN_STEPS',
113
- severity: 'hard',
114
- message: `Plan '${planId}' must include a 'steps' array.`,
115
- step_refs: [],
116
- });
117
- continue;
118
- }
119
- const normalizedSteps = [];
120
- for (let sIdx = 0; sIdx < stepsRaw.length; sIdx += 1) {
121
- const stepObj = asRecord(stepsRaw[sIdx]);
122
- const generatedStepId = buildAutoStepId(pIdx, sIdx);
123
- const providedStepId = asTrimmedString(stepObj?.step_id);
124
- const finalStepId = providedStepId ?? generatedStepId;
125
- if (!stepObj) {
126
- conflicts.push({
127
- code: 'INVALID_STEP',
128
- severity: 'hard',
129
- message: `Step ${sIdx} in plan '${planId}' is not an object.`,
130
- step_refs: [{ plan_id: planId, plan_index: pIdx, step_index: sIdx, step_id: finalStepId }],
131
- });
132
- continue;
133
- }
134
- const operation = normalizeOperation(stepObj.operation ?? stepObj.op);
135
- if (!operation) {
136
- conflicts.push({
137
- code: 'INVALID_STEP_OPERATION',
138
- severity: 'hard',
139
- message: `Step '${finalStepId}' in plan '${planId}' has unsupported operation.`,
140
- step_refs: [{ plan_id: planId, plan_index: pIdx, step_index: sIdx, step_id: finalStepId }],
141
- });
142
- continue;
143
- }
144
- const baseStep = {
145
- step_id: finalStepId,
146
- source_plan_id: planId,
147
- source_plan_index: pIdx,
148
- source_step_index: sIdx,
149
- note: asTrimmedString(stepObj.note),
150
- arguments: cloneArguments(stepObj),
151
- };
152
- if (operation === 'replace_text') {
153
- const targetParagraphId = asTrimmedString(stepObj.target_paragraph_id);
154
- if (!targetParagraphId) {
155
- conflicts.push({
156
- code: 'INVALID_STEP_TARGET',
157
- severity: 'hard',
158
- message: `replace_text step '${finalStepId}' in plan '${planId}' requires target_paragraph_id.`,
159
- step_refs: [{ plan_id: planId, plan_index: pIdx, step_index: sIdx, step_id: finalStepId }],
160
- });
161
- continue;
162
- }
163
- const range = extractRange(stepObj);
164
- if (range === 'invalid') {
165
- conflicts.push({
166
- code: 'INVALID_STEP_RANGE',
167
- severity: 'hard',
168
- message: `replace_text step '${finalStepId}' in plan '${planId}' has invalid range/span metadata.`,
169
- paragraph_id: targetParagraphId,
170
- step_refs: [{ plan_id: planId, plan_index: pIdx, step_index: sIdx, step_id: finalStepId }],
171
- });
172
- continue;
173
- }
174
- normalizedSteps.push({
175
- ...baseStep,
176
- operation,
177
- target_paragraph_id: targetParagraphId,
178
- range: range ?? undefined,
179
- });
180
- continue;
181
- }
182
- const anchorParagraphId = asTrimmedString(stepObj.positional_anchor_node_id)
183
- ?? asTrimmedString(stepObj.anchor_paragraph_id);
184
- if (!anchorParagraphId) {
185
- conflicts.push({
186
- code: 'INVALID_STEP_TARGET',
187
- severity: 'hard',
188
- message: `insert_paragraph step '${finalStepId}' in plan '${planId}' requires positional_anchor_node_id.`,
189
- step_refs: [{ plan_id: planId, plan_index: pIdx, step_index: sIdx, step_id: finalStepId }],
190
- });
191
- continue;
192
- }
193
- const position = (asTrimmedString(stepObj.position) ?? 'AFTER').toUpperCase();
194
- if (position !== 'BEFORE' && position !== 'AFTER') {
195
- conflicts.push({
196
- code: 'INVALID_STEP_POSITION',
197
- severity: 'hard',
198
- message: `insert_paragraph step '${finalStepId}' in plan '${planId}' has invalid position '${String(stepObj.position)}'.`,
199
- paragraph_id: anchorParagraphId,
200
- step_refs: [{ plan_id: planId, plan_index: pIdx, step_index: sIdx, step_id: finalStepId }],
201
- });
202
- continue;
203
- }
204
- normalizedSteps.push({
205
- ...baseStep,
206
- operation,
207
- positional_anchor_node_id: anchorParagraphId,
208
- position: position,
209
- });
210
- }
211
- plans.push({
212
- plan_id: planId,
213
- base_revision: baseRevision,
214
- source_plan_index: pIdx,
215
- steps: normalizedSteps,
216
- });
217
- }
218
- return {
219
- plans,
220
- conflicts,
221
- plan_count: plansRaw.length,
222
- };
223
- }
224
- function detectDuplicateStepIdConflicts(steps) {
225
- const byStepId = new Map();
226
- for (const step of steps) {
227
- const arr = byStepId.get(step.step_id) ?? [];
228
- arr.push(step);
229
- byStepId.set(step.step_id, arr);
230
- }
231
- const conflicts = [];
232
- for (const [stepId, dupeSteps] of byStepId.entries()) {
233
- if (dupeSteps.length < 2)
234
- continue;
235
- conflicts.push({
236
- code: 'DUPLICATE_STEP_ID',
237
- severity: 'hard',
238
- message: `Duplicate step_id '${stepId}' detected across submitted plans.`,
239
- step_refs: dupeSteps.map((s) => stepRef(s)),
240
- details: { duplicate_step_id: stepId },
241
- });
242
- }
243
- return conflicts;
244
- }
245
- function rangesOverlap(a, b) {
246
- return a.start < b.end && b.start < a.end;
247
- }
248
- function detectReplaceConflicts(steps) {
249
- const replaceSteps = steps.filter((s) => s.operation === 'replace_text' && !!s.target_paragraph_id);
250
- const byParagraph = new Map();
251
- for (const step of replaceSteps) {
252
- const paragraphId = step.target_paragraph_id;
253
- const arr = byParagraph.get(paragraphId) ?? [];
254
- arr.push(step);
255
- byParagraph.set(paragraphId, arr);
256
- }
257
- const conflicts = [];
258
- for (const [paragraphId, paragraphSteps] of byParagraph.entries()) {
259
- if (paragraphSteps.length < 2)
260
- continue;
261
- const unknownRangeSteps = paragraphSteps.filter((s) => !s.range);
262
- if (unknownRangeSteps.length > 0) {
263
- conflicts.push({
264
- code: 'UNKNOWN_REPLACE_RANGE',
265
- severity: 'hard',
266
- message: `replace_text steps targeting paragraph '${paragraphId}' require explicit non-overlapping ranges for deterministic merge.`,
267
- paragraph_id: paragraphId,
268
- step_refs: paragraphSteps.map((s) => stepRef(s)),
269
- });
270
- continue;
271
- }
272
- for (let i = 0; i < paragraphSteps.length; i += 1) {
273
- for (let j = i + 1; j < paragraphSteps.length; j += 1) {
274
- const a = paragraphSteps[i];
275
- const b = paragraphSteps[j];
276
- if (!a.range || !b.range)
277
- continue;
278
- if (!rangesOverlap(a.range, b.range))
279
- continue;
280
- conflicts.push({
281
- code: 'OVERLAPPING_REPLACE_RANGE',
282
- severity: 'hard',
283
- message: `replace_text spans overlap in paragraph '${paragraphId}'.`,
284
- paragraph_id: paragraphId,
285
- step_refs: [stepRef(a), stepRef(b)],
286
- details: {
287
- first_range: a.range,
288
- second_range: b.range,
289
- },
290
- });
291
- }
292
- }
293
- }
294
- return conflicts;
295
- }
296
- function detectInsertSlotCollisions(steps) {
297
- const insertSteps = steps.filter((s) => s.operation === 'insert_paragraph' && !!s.positional_anchor_node_id && !!s.position);
298
- const bySlot = new Map();
299
- for (const step of insertSteps) {
300
- const slotKey = `${step.positional_anchor_node_id}::${step.position}`;
301
- const arr = bySlot.get(slotKey) ?? [];
302
- arr.push(step);
303
- bySlot.set(slotKey, arr);
304
- }
305
- const conflicts = [];
306
- for (const [slotKey, slotSteps] of bySlot.entries()) {
307
- if (slotSteps.length < 2)
308
- continue;
309
- const anchorId = slotSteps[0].positional_anchor_node_id;
310
- const position = slotSteps[0].position;
311
- conflicts.push({
312
- code: 'INSERT_SLOT_COLLISION',
313
- severity: 'hard',
314
- message: `Multiple insert_paragraph steps target the same slot '${slotKey}'.`,
315
- paragraph_id: anchorId,
316
- step_refs: slotSteps.map((s) => stepRef(s)),
317
- details: {
318
- anchor_paragraph_id: anchorId,
319
- position,
320
- },
321
- });
322
- }
323
- return conflicts;
324
- }
325
- function detectBaseRevisionConflicts(plans, requireSharedBaseRevision) {
326
- const revisions = new Set();
327
- for (const plan of plans) {
328
- if (plan.base_revision == null)
329
- continue;
330
- revisions.add(plan.base_revision);
331
- }
332
- if (revisions.size === 0) {
333
- return { conflicts: [], mergedBaseRevision: null };
334
- }
335
- const mergedBaseRevision = revisions.size === 1 ? [...revisions][0] : null;
336
- if (!requireSharedBaseRevision || revisions.size <= 1) {
337
- return { conflicts: [], mergedBaseRevision };
338
- }
339
- return {
340
- mergedBaseRevision,
341
- conflicts: [
342
- {
343
- code: 'BASE_REVISION_CONFLICT',
344
- severity: 'hard',
345
- message: `Submitted plans have mismatched base_revision values: ${[...revisions].sort((a, b) => a - b).join(', ')}.`,
346
- step_refs: [],
347
- details: {
348
- base_revisions: [...revisions].sort((a, b) => a - b),
349
- },
350
- },
351
- ],
352
- };
353
- }
354
- export async function mergePlans(params) {
355
- try {
356
- const failOnConflict = asBoolean(params.fail_on_conflict, true);
357
- const requireSharedBaseRevision = asBoolean(params.require_shared_base_revision, true);
358
- const normalized = normalizePlans(params.plans);
359
- const normalizedPlans = normalized.plans;
360
- const flattenedSteps = normalizedPlans.flatMap((plan) => plan.steps);
361
- const revisionCheck = detectBaseRevisionConflicts(normalizedPlans, requireSharedBaseRevision);
362
- const conflicts = [
363
- ...normalized.conflicts,
364
- ...revisionCheck.conflicts,
365
- ...detectDuplicateStepIdConflicts(flattenedSteps),
366
- ...detectReplaceConflicts(flattenedSteps),
367
- ...detectInsertSlotCollisions(flattenedSteps),
368
- ];
369
- const hasConflicts = conflicts.length > 0;
370
- const mergedPlan = {
371
- format: 'safe_docx_merged_plan_v1',
372
- generated_at: new Date().toISOString(),
373
- base_revision: revisionCheck.mergedBaseRevision,
374
- plan_count: normalized.plan_count,
375
- step_count: flattenedSteps.length,
376
- steps: flattenedSteps,
377
- };
378
- if (hasConflicts && failOnConflict) {
379
- return {
380
- success: false,
381
- error: {
382
- code: 'PLAN_CONFLICT',
383
- message: `Detected ${conflicts.length} hard conflict(s) while merging plans.`,
384
- hint: 'Resolve reported conflicts, or set fail_on_conflict=false to inspect diagnostics without hard failure.',
385
- },
386
- has_conflicts: true,
387
- conflict_count: conflicts.length,
388
- conflicts,
389
- merged_plan: mergedPlan,
390
- };
391
- }
392
- return ok({
393
- has_conflicts: hasConflicts,
394
- conflict_count: conflicts.length,
395
- conflicts,
396
- merged_plan: mergedPlan,
397
- conflict_policy: {
398
- fail_on_conflict: failOnConflict,
399
- require_shared_base_revision: requireSharedBaseRevision,
400
- },
401
- });
402
- }
403
- catch (e) {
404
- const msg = errorMessage(e);
405
- return err('MERGE_PLAN_ERROR', `Failed to merge plans: ${msg}`);
406
- }
407
- }
408
- //# sourceMappingURL=merge_plans.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge_plans.js","sourceRoot":"","sources":["../../src/tools/merge_plans.ts"],"names":[],"mappings":"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"}