@usejunior/docx-mcp 0.18.0 → 0.21.2
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/dist/.tsbuildinfo +1 -1
- package/dist/cli/commands/compare.d.ts +13 -8
- package/dist/cli/commands/compare.d.ts.map +1 -1
- package/dist/cli/commands/compare.js +29 -34
- package/dist/cli/commands/compare.js.map +1 -1
- package/dist/cli/commands/edit.d.ts.map +1 -1
- package/dist/cli/commands/edit.js +5 -18
- package/dist/cli/commands/edit.js.map +1 -1
- package/dist/cli/commands/grep.d.ts.map +1 -1
- package/dist/cli/commands/grep.js +11 -4
- package/dist/cli/commands/grep.js.map +1 -1
- package/dist/cli/flag_parser.d.ts.map +1 -1
- package/dist/cli/flag_parser.js +11 -0
- package/dist/cli/flag_parser.js.map +1 -1
- package/dist/cli/help.d.ts +1 -0
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +35 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +47 -18
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output_option.d.ts +22 -0
- package/dist/cli/output_option.d.ts.map +1 -0
- package/dist/cli/output_option.js +67 -0
- package/dist/cli/output_option.js.map +1 -0
- package/dist/cli/tool_runner.d.ts +39 -1
- package/dist/cli/tool_runner.d.ts.map +1 -1
- package/dist/cli/tool_runner.js +79 -5
- package/dist/cli/tool_runner.js.map +1 -1
- package/dist/cli.js +8 -2
- package/dist/cli.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +28 -0
- package/dist/server.js.map +1 -1
- package/dist/session/manager.d.ts +5 -0
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +9 -2
- package/dist/session/manager.js.map +1 -1
- package/dist/tool_catalog.d.ts +106 -8
- package/dist/tool_catalog.d.ts.map +1 -1
- package/dist/tool_catalog.js +150 -5
- package/dist/tool_catalog.js.map +1 -1
- package/dist/tools/accept_ai_edits.d.ts.map +1 -1
- package/dist/tools/accept_ai_edits.js +4 -1
- package/dist/tools/accept_ai_edits.js.map +1 -1
- package/dist/tools/accept_changes.d.ts.map +1 -1
- package/dist/tools/accept_changes.js +4 -1
- package/dist/tools/accept_changes.js.map +1 -1
- package/dist/tools/add_comment.d.ts.map +1 -1
- package/dist/tools/add_comment.js +6 -4
- package/dist/tools/add_comment.js.map +1 -1
- package/dist/tools/add_footnote.js +2 -2
- package/dist/tools/add_footnote.js.map +1 -1
- package/dist/tools/ai_revision_guard.d.ts +49 -1
- package/dist/tools/ai_revision_guard.d.ts.map +1 -1
- package/dist/tools/ai_revision_guard.js +74 -10
- package/dist/tools/ai_revision_guard.js.map +1 -1
- package/dist/tools/batch_edit.d.ts.map +1 -1
- package/dist/tools/batch_edit.js +58 -7
- package/dist/tools/batch_edit.js.map +1 -1
- package/dist/tools/clear_formatting.d.ts.map +1 -1
- package/dist/tools/clear_formatting.js +3 -2
- package/dist/tools/clear_formatting.js.map +1 -1
- package/dist/tools/compare_documents.d.ts +2 -1
- package/dist/tools/compare_documents.d.ts.map +1 -1
- package/dist/tools/compare_documents.js +31 -36
- package/dist/tools/compare_documents.js.map +1 -1
- package/dist/tools/conformance_refusal.d.ts +13 -0
- package/dist/tools/conformance_refusal.d.ts.map +1 -0
- package/dist/tools/conformance_refusal.js +19 -0
- package/dist/tools/conformance_refusal.js.map +1 -0
- package/dist/tools/delete_comment.js +2 -2
- package/dist/tools/delete_comment.js.map +1 -1
- package/dist/tools/delete_footnote.js +2 -2
- package/dist/tools/delete_footnote.js.map +1 -1
- package/dist/tools/format_layout.js +2 -2
- package/dist/tools/format_layout.js.map +1 -1
- package/dist/tools/format_numbering.d.ts +12 -0
- package/dist/tools/format_numbering.d.ts.map +1 -0
- package/dist/tools/format_numbering.js +153 -0
- package/dist/tools/format_numbering.js.map +1 -0
- package/dist/tools/format_section.d.ts +21 -0
- package/dist/tools/format_section.d.ts.map +1 -0
- package/dist/tools/format_section.js +211 -0
- package/dist/tools/format_section.js.map +1 -0
- package/dist/tools/formatting_convention.d.ts +121 -0
- package/dist/tools/formatting_convention.d.ts.map +1 -0
- package/dist/tools/formatting_convention.js +477 -0
- package/dist/tools/formatting_convention.js.map +1 -0
- package/dist/tools/get_sections.d.ts +39 -0
- package/dist/tools/get_sections.d.ts.map +1 -0
- package/dist/tools/get_sections.js +59 -0
- package/dist/tools/get_sections.js.map +1 -0
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +18 -1
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/insert_paragraph.d.ts.map +1 -1
- package/dist/tools/insert_paragraph.js +12 -3
- package/dist/tools/insert_paragraph.js.map +1 -1
- package/dist/tools/insert_section_break.d.ts +11 -0
- package/dist/tools/insert_section_break.d.ts.map +1 -0
- package/dist/tools/insert_section_break.js +167 -0
- package/dist/tools/insert_section_break.js.map +1 -0
- package/dist/tools/open_document.d.ts.map +1 -1
- package/dist/tools/open_document.js +4 -0
- package/dist/tools/open_document.js.map +1 -1
- package/dist/tools/reject_ai_edits.d.ts.map +1 -1
- package/dist/tools/reject_ai_edits.js +4 -1
- package/dist/tools/reject_ai_edits.js.map +1 -1
- package/dist/tools/replace_text.d.ts.map +1 -1
- package/dist/tools/replace_text.js +53 -4
- package/dist/tools/replace_text.js.map +1 -1
- package/dist/tools/revision_result.d.ts +11 -0
- package/dist/tools/revision_result.d.ts.map +1 -0
- package/dist/tools/revision_result.js +18 -0
- package/dist/tools/revision_result.js.map +1 -0
- package/dist/tools/session_resolution.d.ts.map +1 -1
- package/dist/tools/session_resolution.js +13 -1
- package/dist/tools/session_resolution.js.map +1 -1
- package/dist/tools/tag_parser.d.ts.map +1 -1
- package/dist/tools/tag_parser.js +15 -5
- package/dist/tools/tag_parser.js.map +1 -1
- package/dist/tools/update_footnote.js +2 -2
- package/dist/tools/update_footnote.js.map +1 -1
- package/package.json +6 -6
- package/dist/tools/comparison_defaults.d.ts +0 -9
- package/dist/tools/comparison_defaults.d.ts.map +0 -1
- package/dist/tools/comparison_defaults.js +0 -8
- package/dist/tools/comparison_defaults.js.map +0 -1
|
@@ -1,20 +1,25 @@
|
|
|
1
|
+
import { compareDocuments, type UnrepresentedChange } from '@usejunior/docx-compare';
|
|
1
2
|
export interface CompareCommandArgs {
|
|
2
3
|
originalPath: string;
|
|
3
4
|
revisedPath: string;
|
|
4
5
|
outputPath?: string;
|
|
5
|
-
engine?: string;
|
|
6
|
-
mode?: string;
|
|
7
6
|
author?: string;
|
|
8
|
-
premergeRuns?: boolean;
|
|
9
7
|
}
|
|
10
8
|
export interface CompareCommandResult {
|
|
11
9
|
output: string;
|
|
12
|
-
|
|
13
|
-
mode: 'inplace' | 'rebuild';
|
|
14
|
-
mode_requested: 'inplace' | 'rebuild';
|
|
15
|
-
fallback_reason?: string;
|
|
10
|
+
package_base: 'revised';
|
|
16
11
|
bytes: number;
|
|
17
12
|
stats: unknown;
|
|
13
|
+
/**
|
|
14
|
+
* Input differences the redline carries without revision markup (#1029).
|
|
15
|
+
* Present only when the comparison reported at least one.
|
|
16
|
+
*/
|
|
17
|
+
unrepresented_changes?: UnrepresentedChange[];
|
|
18
|
+
/** One human-readable warning per unrepresented change; also printed to stderr. */
|
|
19
|
+
warnings?: string[];
|
|
18
20
|
}
|
|
19
|
-
export
|
|
21
|
+
export interface CompareCommandDependencies {
|
|
22
|
+
compare: typeof compareDocuments;
|
|
23
|
+
}
|
|
24
|
+
export declare function runCompareCommand(args: CompareCommandArgs, dependencies?: CompareCommandDependencies): Promise<CompareCommandResult>;
|
|
20
25
|
//# sourceMappingURL=compare.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/compare.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compare.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/compare.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,gBAAgB,EAEhB,KAAK,mBAAmB,EACzB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,SAAS,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,qBAAqB,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC9C,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,OAAO,gBAAgB,CAAC;CAClC;AAwBD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,kBAAkB,EACxB,YAAY,GAAE,0BAAiD,GAC9D,OAAO,CAAC,oBAAoB,CAAC,CA2B/B"}
|
|
@@ -1,53 +1,48 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
function
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { readFile, writeFile, mkdir, rename, rm } from 'node:fs/promises';
|
|
3
|
+
import { basename, dirname, join, resolve } from 'node:path';
|
|
4
|
+
import { compareDocuments, formatUnrepresentedChangeWarnings, } from '@usejunior/docx-compare';
|
|
5
|
+
const DEFAULT_DEPENDENCIES = {
|
|
6
|
+
compare: compareDocuments,
|
|
7
|
+
};
|
|
8
|
+
async function writeFileAtomically(target, contents) {
|
|
9
|
+
await mkdir(dirname(target), { recursive: true });
|
|
10
|
+
const temporary = join(dirname(target), `.${basename(target)}.${process.pid}.${randomUUID()}.tmp`);
|
|
11
|
+
try {
|
|
12
|
+
await writeFile(temporary, contents, { flag: 'wx' });
|
|
13
|
+
await rename(temporary, target);
|
|
12
14
|
}
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
function normalizeMode(raw) {
|
|
16
|
-
const candidate = (raw ?? 'rebuild').trim().toLowerCase();
|
|
17
|
-
if (candidate !== 'inplace' && candidate !== 'rebuild') {
|
|
18
|
-
throw new Error(`Unsupported mode: ${String(raw)}. Use inplace or rebuild.`);
|
|
15
|
+
finally {
|
|
16
|
+
await rm(temporary, { force: true });
|
|
19
17
|
}
|
|
20
|
-
return candidate;
|
|
21
18
|
}
|
|
22
|
-
function defaultOutputPath(revisedPath
|
|
23
|
-
return revisedPath.replace(/\.docx$/i, '') +
|
|
19
|
+
function defaultOutputPath(revisedPath) {
|
|
20
|
+
return revisedPath.replace(/\.docx$/i, '') + '.REDLINE.docx';
|
|
24
21
|
}
|
|
25
|
-
export async function runCompareCommand(args) {
|
|
26
|
-
const engine = normalizeEngine(args.engine);
|
|
27
|
-
const mode = normalizeMode(args.mode);
|
|
22
|
+
export async function runCompareCommand(args, dependencies = DEFAULT_DEPENDENCIES) {
|
|
28
23
|
const originalAbs = resolve(args.originalPath);
|
|
29
24
|
const revisedAbs = resolve(args.revisedPath);
|
|
30
|
-
const outputAbs = resolve(args.outputPath ?? defaultOutputPath(revisedAbs
|
|
25
|
+
const outputAbs = resolve(args.outputPath ?? defaultOutputPath(revisedAbs));
|
|
31
26
|
const [originalBuffer, revisedBuffer] = await Promise.all([
|
|
32
27
|
readFile(originalAbs),
|
|
33
28
|
readFile(revisedAbs),
|
|
34
29
|
]);
|
|
35
|
-
const result = await
|
|
36
|
-
engine,
|
|
30
|
+
const result = await dependencies.compare(originalBuffer, revisedBuffer, {
|
|
37
31
|
author: args.author ?? 'Comparison',
|
|
38
|
-
reconstructionMode: mode,
|
|
39
|
-
premergeRuns: args.premergeRuns,
|
|
40
32
|
});
|
|
41
|
-
await
|
|
42
|
-
|
|
33
|
+
await writeFileAtomically(outputAbs, result.document);
|
|
34
|
+
const unrepresented = result.unrepresentedChanges ?? [];
|
|
43
35
|
return {
|
|
44
36
|
output: outputAbs,
|
|
45
|
-
|
|
46
|
-
mode: result.reconstructionModeUsed ?? mode,
|
|
47
|
-
mode_requested: mode,
|
|
48
|
-
fallback_reason: result.fallbackReason,
|
|
37
|
+
package_base: 'revised',
|
|
49
38
|
bytes: result.document.length,
|
|
50
39
|
stats: result.stats,
|
|
40
|
+
...(unrepresented.length > 0
|
|
41
|
+
? {
|
|
42
|
+
unrepresented_changes: unrepresented,
|
|
43
|
+
warnings: formatUnrepresentedChangeWarnings(unrepresented),
|
|
44
|
+
}
|
|
45
|
+
: {}),
|
|
51
46
|
};
|
|
52
47
|
}
|
|
53
48
|
//# sourceMappingURL=compare.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/cli/commands/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"compare.js","sourceRoot":"","sources":["../../../src/cli/commands/compare.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EACL,gBAAgB,EAChB,iCAAiC,GAElC,MAAM,yBAAyB,CAAC;AA2BjC,MAAM,oBAAoB,GAA+B;IACvD,OAAO,EAAE,gBAAgB;CAC1B,CAAC;AAEF,KAAK,UAAU,mBAAmB,CAAC,MAAc,EAAE,QAAyB;IAC1E,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,IAAI,CACpB,OAAO,CAAC,MAAM,CAAC,EACf,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,CAC1D,CAAC;IACF,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrD,MAAM,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAmB;IAC5C,OAAO,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,eAAe,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAwB,EACxB,eAA2C,oBAAoB;IAE/D,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5E,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxD,QAAQ,CAAC,WAAW,CAAC;QACrB,QAAQ,CAAC,UAAU,CAAC;KACrB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,aAAa,EAAE;QACvE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,YAAY;KACpC,CAAC,CAAC;IACH,MAAM,mBAAmB,CAAC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEtD,MAAM,aAAa,GAAG,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;IACxD,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,YAAY,EAAE,SAAS;QACvB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;QAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;YAC1B,CAAC,CAAC;gBACE,qBAAqB,EAAE,aAAa;gBACpC,QAAQ,EAAE,iCAAiC,CAAC,aAAa,CAAC;aAC3D;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/edit.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CAmF7D;AAMD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"edit.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/edit.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CAmF7D;AAMD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAmD9F"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { SessionManager } from '../../session/manager.js';
|
|
6
6
|
import { dispatchToolCall } from '../../server.js';
|
|
7
|
-
import { resolveCliAiAuthor } from '../tool_runner.js';
|
|
7
|
+
import { CliCommandFailure, finishCliCommand, resolveCliAiAuthor } from '../tool_runner.js';
|
|
8
8
|
// ---------------------------------------------------------------------------
|
|
9
9
|
// Argv parser
|
|
10
10
|
// ---------------------------------------------------------------------------
|
|
@@ -124,23 +124,10 @@ export async function runEditCommand(args, opts) {
|
|
|
124
124
|
const applySuccess = applyResult.success;
|
|
125
125
|
if (applySuccess === false) {
|
|
126
126
|
opts.writeError(JSON.stringify(applyResult, null, 2));
|
|
127
|
-
throw new
|
|
128
|
-
}
|
|
129
|
-
// Save if output path specified
|
|
130
|
-
if (args.output_path) {
|
|
131
|
-
const saveResult = await dispatchToolCall(mgr, 'save', {
|
|
132
|
-
file_path: args.file_path,
|
|
133
|
-
save_to_local_path: args.output_path,
|
|
134
|
-
});
|
|
135
|
-
const saveSuccess = saveResult.success;
|
|
136
|
-
if (saveSuccess === false) {
|
|
137
|
-
opts.writeError(JSON.stringify(saveResult, null, 2));
|
|
138
|
-
throw new Error('Edit save failed');
|
|
139
|
-
}
|
|
140
|
-
opts.write(JSON.stringify({ apply: applyResult, save: saveResult }, null, 2));
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
opts.write(JSON.stringify(applyResult, null, 2));
|
|
127
|
+
throw new CliCommandFailure('Edit batch_edit failed');
|
|
144
128
|
}
|
|
129
|
+
// Save to the output path, or refuse to report success for an edit that
|
|
130
|
+
// would be discarded when the process exits (#1048).
|
|
131
|
+
await finishCliCommand(mgr, { command: 'edit', args: { file_path: args.file_path }, result: applyResult, outputPath: args.output_path }, opts);
|
|
145
132
|
}
|
|
146
133
|
//# sourceMappingURL=edit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/cli/commands/edit.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/cli/commands/edit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/grep.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CA2D7D;
|
|
1
|
+
{"version":3,"file":"grep.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/grep.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,eAAe,CA2D7D;AA8DD,wBAAsB,cAAc,CAClC,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE;IAAE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,GAC1E,OAAO,CAAC,IAAI,CAAC,CAiCf"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { SessionManager } from '../../session/manager.js';
|
|
11
11
|
import { dispatchToolCall } from '../../server.js';
|
|
12
|
-
import { resolveCliAiAuthor } from '../tool_runner.js';
|
|
12
|
+
import { CliCommandFailure, resolveCliAiAuthor } from '../tool_runner.js';
|
|
13
13
|
export function parseGrepArgs(argv) {
|
|
14
14
|
const files = [];
|
|
15
15
|
let pattern;
|
|
@@ -71,6 +71,12 @@ function formatHumanOutput(result, filePath) {
|
|
|
71
71
|
// Multi-file results
|
|
72
72
|
for (const file of result.files) {
|
|
73
73
|
const f = file;
|
|
74
|
+
if (f.error) {
|
|
75
|
+
// A file that could not be searched is reported, not silently counted as
|
|
76
|
+
// zero matches (#1025).
|
|
77
|
+
lines.push(`${f.file_path}: ${f.error_code ? `${f.error_code}: ` : ''}${f.error}`);
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
74
80
|
if (f.total_matches === 0)
|
|
75
81
|
continue;
|
|
76
82
|
for (const match of f.matches) {
|
|
@@ -115,9 +121,10 @@ export async function runGrepCommand(args, opts) {
|
|
|
115
121
|
}
|
|
116
122
|
const result = await dispatchToolCall(mgr, 'grep', toolArgs);
|
|
117
123
|
if (!result.success) {
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
124
|
+
// Same structured error object the generic tool commands print, so a
|
|
125
|
+
// typed refusal (UNSUPPORTED_CONFORMANCE_CLASS) keeps its code and hint.
|
|
126
|
+
opts.writeError(JSON.stringify(result, null, 2));
|
|
127
|
+
throw new CliCommandFailure('grep failed');
|
|
121
128
|
}
|
|
122
129
|
if (args.json) {
|
|
123
130
|
opts.write(JSON.stringify(result, null, 2));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../src/cli/commands/grep.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"grep.js","sourceRoot":"","sources":["../../../src/cli/commands/grep.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flag_parser.d.ts","sourceRoot":"","sources":["../../src/cli/flag_parser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"flag_parser.d.ts","sourceRoot":"","sources":["../../src/cli/flag_parser.ts"],"names":[],"mappings":"AA2BA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,IAAI,EAAE,OAAO,CAAC;CACf,CAAC;AA6EF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,CAuG5E;AAqBD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAiDzD"}
|
package/dist/cli/flag_parser.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { z } from 'zod';
|
|
6
6
|
import { SAFE_DOCX_TOOL_CATALOG } from '../tool_catalog.js';
|
|
7
7
|
import { parseBoolean, toKebabCase } from './parse_utils.js';
|
|
8
|
+
import { CLI_OUTPUT_HELP_LINES, acceptsCliOutputOption } from './output_option.js';
|
|
8
9
|
// ---------------------------------------------------------------------------
|
|
9
10
|
// Short aliases — keyed by tool name, values map alias → snake_case param
|
|
10
11
|
// ---------------------------------------------------------------------------
|
|
@@ -209,6 +210,16 @@ export function generateToolHelp(toolName) {
|
|
|
209
210
|
if (desc)
|
|
210
211
|
lines.push(` ${desc}`);
|
|
211
212
|
}
|
|
213
|
+
if (acceptsCliOutputOption(toolName)) {
|
|
214
|
+
lines.push(' -o, --output <path>');
|
|
215
|
+
lines.push(' Save the edited document to this path.');
|
|
216
|
+
lines.push(' --save-format <clean|tracked|both>');
|
|
217
|
+
lines.push(' With -o: which variant(s) to save (default: both). Use tracked to keep revisions left by a selective accept/reject.');
|
|
218
|
+
lines.push('');
|
|
219
|
+
lines.push('Saving:');
|
|
220
|
+
for (const line of CLI_OUTPUT_HELP_LINES)
|
|
221
|
+
lines.push(` ${line}`);
|
|
222
|
+
}
|
|
212
223
|
// Show aliases if any
|
|
213
224
|
const aliases = { ...FLAG_ALIASES._global, ...FLAG_ALIASES[toolName] };
|
|
214
225
|
const aliasEntries = Object.entries(aliases);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flag_parser.js","sourceRoot":"","sources":["../../src/cli/flag_parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAe,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"flag_parser.js","sourceRoot":"","sources":["../../src/cli/flag_parser.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/help.d.ts
CHANGED
package/dist/cli/help.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAoCA,wBAAgB,kBAAkB,IAAI,MAAM,CA2C3C;AAMD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvD;AAMD,wBAAgB,cAAc,IAAI,MAAM,CAoBvC"}
|
package/dist/cli/help.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { SAFE_DOCX_TOOL_CATALOG } from '../tool_catalog.js';
|
|
5
5
|
import { generateToolHelp } from './flag_parser.js';
|
|
6
6
|
import { toKebabCase } from './parse_utils.js';
|
|
7
|
+
import { CLI_OUTPUT_HELP_LINES } from './output_option.js';
|
|
7
8
|
function groupTools() {
|
|
8
9
|
const readOnly = [];
|
|
9
10
|
const mutating = [];
|
|
@@ -34,8 +35,11 @@ export function renderTopLevelHelp() {
|
|
|
34
35
|
lines.push('Built-in commands:');
|
|
35
36
|
lines.push(' serve Start the MCP server (default)');
|
|
36
37
|
lines.push(' compare <original> <revised> [output] Compare two DOCX files and write redline output');
|
|
38
|
+
lines.push(' -o, --output <path> Write redline output to this path');
|
|
39
|
+
lines.push(' --author <name> Track-changes author (default: Comparison)');
|
|
40
|
+
lines.push(' Output always uses the revised-based tagged package');
|
|
37
41
|
lines.push(' Compare stats count revision ranges; atom totals use *Atoms fields');
|
|
38
|
-
lines.push(' edit <file> [--replace ...] [-o output] Batch edit a DOCX file');
|
|
42
|
+
lines.push(' edit <file> [--replace ...] [-o output] Batch edit a DOCX file (-o required to keep the edit)');
|
|
39
43
|
lines.push(' grep "pattern" <file> [files...] Search DOCX files for text');
|
|
40
44
|
lines.push('');
|
|
41
45
|
for (const group of groupTools()) {
|
|
@@ -48,6 +52,12 @@ export function renderTopLevelHelp() {
|
|
|
48
52
|
}
|
|
49
53
|
lines.push('');
|
|
50
54
|
}
|
|
55
|
+
lines.push('Saving edits:');
|
|
56
|
+
lines.push(' edit and the editing tools take -o, --output <path>, e.g. safe-docx replace-text <file> ... -o edited.docx');
|
|
57
|
+
lines.push(' (save, export, convert-to-odt and close-file write their own output and do not.)');
|
|
58
|
+
for (const line of CLI_OUTPUT_HELP_LINES)
|
|
59
|
+
lines.push(` ${line}`);
|
|
60
|
+
lines.push('');
|
|
51
61
|
lines.push('Global options:');
|
|
52
62
|
lines.push(' -h, --help Show help');
|
|
53
63
|
lines.push(' -v, --version Show version');
|
|
@@ -61,4 +71,28 @@ export function renderTopLevelHelp() {
|
|
|
61
71
|
export function renderToolHelp(toolName) {
|
|
62
72
|
return generateToolHelp(toolName);
|
|
63
73
|
}
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
// edit command help
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
export function renderEditHelp() {
|
|
78
|
+
return [
|
|
79
|
+
'safe-docx edit',
|
|
80
|
+
'',
|
|
81
|
+
'Apply several replace/insert edits to a DOCX file in one run (a batch_edit wrapper).',
|
|
82
|
+
'',
|
|
83
|
+
'Usage:',
|
|
84
|
+
' safe-docx edit <file> [--replace <paragraph_id> <old> <new>]... [--insert-after <anchor_id> <text>]...',
|
|
85
|
+
' [--insert-before <anchor_id> <text>]... [--instruction <text>] -o <path>',
|
|
86
|
+
'',
|
|
87
|
+
'Options:',
|
|
88
|
+
' --replace <paragraph_id> <old> <new> Replace text in a paragraph (repeatable)',
|
|
89
|
+
' --insert-after <anchor_id> <text> Insert a paragraph after an anchor (repeatable)',
|
|
90
|
+
' --insert-before <anchor_id> <text> Insert a paragraph before an anchor (repeatable)',
|
|
91
|
+
' --instruction <text> Instruction recorded with each step',
|
|
92
|
+
' -o, --output <path> Save the edited document to this path',
|
|
93
|
+
'',
|
|
94
|
+
'Saving:',
|
|
95
|
+
...CLI_OUTPUT_HELP_LINES.map((line) => ` ${line}`),
|
|
96
|
+
].join('\n');
|
|
97
|
+
}
|
|
64
98
|
//# sourceMappingURL=help.js.map
|
package/dist/cli/help.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAQ3D,SAAS,UAAU;IACjB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,IAAI,IAAI,sBAAsB,EAAE,CAAC;QAC1C,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO;QACL,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,QAAQ,EAAE;QAC7C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE;KAC5C,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;IAC3F,KAAK,CAAC,IAAI,CAAC,+FAA+F,CAAC,CAAC;IAC5G,KAAK,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;IAC9F,KAAK,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;IACxG,KAAK,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAC;IAClH,KAAK,CAAC,IAAI,CAAC,oHAAoH,CAAC,CAAC;IACjI,KAAK,CAAC,IAAI,CAAC,qGAAqG,CAAC,CAAC;IAClH,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;IACvF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAE,CAAC;YACnE,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5B,KAAK,CAAC,IAAI,CAAC,8GAA8G,CAAC,CAAC;IAC3H,KAAK,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACjG,KAAK,MAAM,IAAI,IAAI,qBAAqB;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAClE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAC;IACtE,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;IACzE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IAElF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAC9E,2CAA2C;AAC3C,8EAA8E;AAE9E,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACpC,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,UAAU,cAAc;IAC5B,OAAO;QACL,gBAAgB;QAChB,EAAE;QACF,sFAAsF;QACtF,EAAE;QACF,QAAQ;QACR,0GAA0G;QAC1G,kGAAkG;QAClG,EAAE;QACF,UAAU;QACV,mFAAmF;QACnF,0FAA0F;QAC1F,2FAA2F;QAC3F,8EAA8E;QAC9E,gFAAgF;QAChF,EAAE;QACF,SAAS;QACT,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;KACpD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
package/dist/cli/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,kBAAkB,EAAE,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,kBAAkB,EAAE,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAW9G,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACrE,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAwED,wBAAgB,aAAa,CAAC,SAAS,GAAE,OAAO,CAAC,WAAW,CAAM,GAAG,UAAU,CA8G9E;AAED,wBAAsB,MAAM,CAAC,IAAI,WAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/D"}
|
package/dist/cli/index.js
CHANGED
|
@@ -4,10 +4,12 @@ import { runServeCommand } from './commands/serve.js';
|
|
|
4
4
|
import { runCompareCommand } from './commands/compare.js';
|
|
5
5
|
import { parseEditArgs, runEditCommand } from './commands/edit.js';
|
|
6
6
|
import { parseGrepArgs, runGrepCommand } from './commands/grep.js';
|
|
7
|
-
import {
|
|
7
|
+
import { toSnakeCase } from './parse_utils.js';
|
|
8
8
|
import { parseToolFlags, generateToolHelp } from './flag_parser.js';
|
|
9
|
-
import { renderTopLevelHelp } from './help.js';
|
|
10
|
-
import { runToolCommand } from './tool_runner.js';
|
|
9
|
+
import { renderEditHelp, renderTopLevelHelp } from './help.js';
|
|
10
|
+
import { CliCommandFailure, runToolCommand } from './tool_runner.js';
|
|
11
|
+
import { acceptsCliOutputOption, extractCliOutputOption } from './output_option.js';
|
|
12
|
+
import { conformanceRefusalResponse } from '../tools/conformance_refusal.js';
|
|
11
13
|
import { SAFE_DOCX_TOOL_CATALOG } from '../tool_catalog.js';
|
|
12
14
|
function packageVersion() {
|
|
13
15
|
try {
|
|
@@ -22,35 +24,34 @@ function packageVersion() {
|
|
|
22
24
|
function parseCompareArgs(args) {
|
|
23
25
|
const positional = [];
|
|
24
26
|
const options = {};
|
|
27
|
+
let flaggedOutputPath;
|
|
25
28
|
for (let i = 0; i < args.length; i++) {
|
|
26
29
|
const token = args[i];
|
|
27
30
|
if (!token)
|
|
28
31
|
continue;
|
|
29
|
-
if (!token.startsWith('
|
|
32
|
+
if (!token.startsWith('-')) {
|
|
30
33
|
positional.push(token);
|
|
31
34
|
continue;
|
|
32
35
|
}
|
|
33
36
|
const consumeValue = (flagName) => {
|
|
34
37
|
const next = args[i + 1];
|
|
35
|
-
if (!next || next.startsWith('
|
|
38
|
+
if (!next || next.startsWith('-')) {
|
|
36
39
|
throw new Error(`Missing value for ${flagName}.`);
|
|
37
40
|
}
|
|
38
41
|
i += 1;
|
|
39
42
|
return next;
|
|
40
43
|
};
|
|
41
44
|
switch (token) {
|
|
42
|
-
case '
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
45
|
+
case '-o':
|
|
46
|
+
case '--output':
|
|
47
|
+
if (flaggedOutputPath !== undefined) {
|
|
48
|
+
throw new Error('compare output may be specified only once.');
|
|
49
|
+
}
|
|
50
|
+
flaggedOutputPath = consumeValue(token);
|
|
47
51
|
break;
|
|
48
52
|
case '--author':
|
|
49
53
|
options.author = consumeValue(token);
|
|
50
54
|
break;
|
|
51
|
-
case '--premerge-runs':
|
|
52
|
-
options.premergeRuns = parseBoolean(consumeValue(token), token);
|
|
53
|
-
break;
|
|
54
55
|
default:
|
|
55
56
|
throw new Error(`Unknown option for compare command: ${token}`);
|
|
56
57
|
}
|
|
@@ -58,14 +59,17 @@ function parseCompareArgs(args) {
|
|
|
58
59
|
if (positional.length < 2 || positional.length > 3) {
|
|
59
60
|
throw new Error('compare requires: <original> <revised> [output]');
|
|
60
61
|
}
|
|
61
|
-
const [originalPath, revisedPath,
|
|
62
|
+
const [originalPath, revisedPath, positionalOutputPath] = positional;
|
|
62
63
|
if (!originalPath || !revisedPath) {
|
|
63
64
|
throw new Error('compare requires: <original> <revised> [output]');
|
|
64
65
|
}
|
|
66
|
+
if (positionalOutputPath !== undefined && flaggedOutputPath !== undefined) {
|
|
67
|
+
throw new Error('compare output cannot be supplied both positionally and with -o/--output.');
|
|
68
|
+
}
|
|
65
69
|
return {
|
|
66
70
|
originalPath,
|
|
67
71
|
revisedPath,
|
|
68
|
-
outputPath,
|
|
72
|
+
outputPath: flaggedOutputPath ?? positionalOutputPath,
|
|
69
73
|
...options,
|
|
70
74
|
};
|
|
71
75
|
}
|
|
@@ -110,7 +114,23 @@ export function createProgram(overrides = {}) {
|
|
|
110
114
|
}
|
|
111
115
|
if (command === 'compare') {
|
|
112
116
|
const parsed = parseCompareArgs(rest);
|
|
113
|
-
|
|
117
|
+
let result;
|
|
118
|
+
try {
|
|
119
|
+
result = await handlers.compare(parsed);
|
|
120
|
+
}
|
|
121
|
+
catch (e) {
|
|
122
|
+
// A WML Strict input is refused by the comparison library with a typed
|
|
123
|
+
// error; emit it as the same structured JSON the tool commands use.
|
|
124
|
+
const refusal = conformanceRefusalResponse(e);
|
|
125
|
+
if (!refusal)
|
|
126
|
+
throw e;
|
|
127
|
+
handlers.writeError(JSON.stringify(refusal, null, 2));
|
|
128
|
+
throw new CliCommandFailure('compare failed');
|
|
129
|
+
}
|
|
130
|
+
// Warnings go to stderr so stdout stays a single JSON line for callers
|
|
131
|
+
// that parse it, while a human running the CLI still sees them (#1029).
|
|
132
|
+
for (const warning of result.warnings ?? [])
|
|
133
|
+
handlers.writeError(warning);
|
|
114
134
|
handlers.write(JSON.stringify(result));
|
|
115
135
|
return;
|
|
116
136
|
}
|
|
@@ -122,6 +142,10 @@ export function createProgram(overrides = {}) {
|
|
|
122
142
|
}
|
|
123
143
|
// Edit command — batched batch_edit wrapper
|
|
124
144
|
if (command === 'edit') {
|
|
145
|
+
if (rest.includes('--help') || rest.includes('-h')) {
|
|
146
|
+
handlers.write(renderEditHelp());
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
125
149
|
const editArgs = parseEditArgs(rest);
|
|
126
150
|
await runEditCommand(editArgs, { write: handlers.write, writeError: handlers.writeError });
|
|
127
151
|
return;
|
|
@@ -130,12 +154,17 @@ export function createProgram(overrides = {}) {
|
|
|
130
154
|
const toolName = toSnakeCase(command);
|
|
131
155
|
const catalogEntry = SAFE_DOCX_TOOL_CATALOG.find((t) => t.name === toolName);
|
|
132
156
|
if (catalogEntry) {
|
|
133
|
-
|
|
157
|
+
// Mutating tools take -o/--output: without it their edit would be
|
|
158
|
+
// discarded when this one-shot process exits (#1048).
|
|
159
|
+
const { argv: toolArgv, ...output } = acceptsCliOutputOption(toolName)
|
|
160
|
+
? extractCliOutputOption(rest)
|
|
161
|
+
: { argv: rest };
|
|
162
|
+
const { args: toolArgs, help } = parseToolFlags(toolArgv, toolName);
|
|
134
163
|
if (help) {
|
|
135
164
|
handlers.write(generateToolHelp(toolName));
|
|
136
165
|
return;
|
|
137
166
|
}
|
|
138
|
-
await runToolCommand(toolName, toolArgs, { write: handlers.write, writeError: handlers.writeError });
|
|
167
|
+
await runToolCommand(toolName, toolArgs, { write: handlers.write, writeError: handlers.writeError }, output);
|
|
139
168
|
return;
|
|
140
169
|
}
|
|
141
170
|
throw new Error(`Unknown command: ${command}. Use --help to see available commands.`);
|