@usejunior/docx-mcp 0.9.0 → 0.10.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 +46 -1
- package/dist/.tsbuildinfo +1 -1
- package/dist/cli/commands/edit.d.ts.map +1 -1
- package/dist/cli/commands/edit.js +2 -1
- 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 +2 -1
- package/dist/cli/commands/grep.js.map +1 -1
- package/dist/cli/tool_runner.d.ts +6 -0
- package/dist/cli/tool_runner.d.ts.map +1 -1
- package/dist/cli/tool_runner.js +10 -1
- package/dist/cli/tool_runner.js.map +1 -1
- package/dist/odf_loader.d.ts +2 -0
- package/dist/odf_loader.d.ts.map +1 -0
- package/dist/odf_loader.js +19 -0
- package/dist/odf_loader.js.map +1 -0
- package/dist/server.d.ts +5 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +110 -4
- package/dist/server.js.map +1 -1
- package/dist/session/manager.d.ts +44 -2
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +212 -2
- package/dist/session/manager.js.map +1 -1
- package/dist/tool_catalog.d.ts +40 -12
- package/dist/tool_catalog.d.ts.map +1 -1
- package/dist/tool_catalog.js +49 -17
- package/dist/tool_catalog.js.map +1 -1
- package/dist/tools/accept_changes.js +1 -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 +4 -2
- 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 +3 -1
- package/dist/tools/add_footnote.js.map +1 -1
- package/dist/tools/apply_plan.d.ts.map +1 -1
- package/dist/tools/apply_plan.js +6 -4
- package/dist/tools/apply_plan.js.map +1 -1
- package/dist/tools/clear_formatting.d.ts +2 -1
- package/dist/tools/clear_formatting.d.ts.map +1 -1
- package/dist/tools/clear_formatting.js +62 -49
- package/dist/tools/clear_formatting.js.map +1 -1
- package/dist/tools/compare_documents.d.ts.map +1 -1
- package/dist/tools/compare_documents.js +11 -2
- package/dist/tools/compare_documents.js.map +1 -1
- package/dist/tools/delete_comment.d.ts.map +1 -1
- package/dist/tools/delete_comment.js +3 -1
- package/dist/tools/delete_comment.js.map +1 -1
- package/dist/tools/delete_footnote.d.ts.map +1 -1
- package/dist/tools/delete_footnote.js +3 -1
- package/dist/tools/delete_footnote.js.map +1 -1
- package/dist/tools/export.d.ts +20 -0
- package/dist/tools/export.d.ts.map +1 -0
- package/dist/tools/export.js +96 -0
- package/dist/tools/export.js.map +1 -0
- package/dist/tools/format_layout.d.ts.map +1 -1
- package/dist/tools/format_layout.js +5 -3
- package/dist/tools/format_layout.js.map +1 -1
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +4 -115
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/grep_core.d.ts +49 -0
- package/dist/tools/grep_core.d.ts.map +1 -0
- package/dist/tools/grep_core.js +126 -0
- package/dist/tools/grep_core.js.map +1 -0
- package/dist/tools/insert_paragraph.d.ts +2 -1
- package/dist/tools/insert_paragraph.d.ts.map +1 -1
- package/dist/tools/insert_paragraph.js +4 -2
- package/dist/tools/insert_paragraph.js.map +1 -1
- package/dist/tools/odf/add_comment.d.ts +21 -0
- package/dist/tools/odf/add_comment.d.ts.map +1 -0
- package/dist/tools/odf/add_comment.js +64 -0
- package/dist/tools/odf/add_comment.js.map +1 -0
- package/dist/tools/odf/close_file.d.ts +4 -0
- package/dist/tools/odf/close_file.d.ts.map +1 -0
- package/dist/tools/odf/close_file.js +16 -0
- package/dist/tools/odf/close_file.js.map +1 -0
- package/dist/tools/odf/compare_documents.d.ts +39 -0
- package/dist/tools/odf/compare_documents.d.ts.map +1 -0
- package/dist/tools/odf/compare_documents.js +156 -0
- package/dist/tools/odf/compare_documents.js.map +1 -0
- package/dist/tools/odf/get_comments.d.ts +11 -0
- package/dist/tools/odf/get_comments.d.ts.map +1 -0
- package/dist/tools/odf/get_comments.js +32 -0
- package/dist/tools/odf/get_comments.js.map +1 -0
- package/dist/tools/odf/get_file_status.d.ts +4 -0
- package/dist/tools/odf/get_file_status.d.ts.map +1 -0
- package/dist/tools/odf/get_file_status.js +28 -0
- package/dist/tools/odf/get_file_status.js.map +1 -0
- package/dist/tools/odf/grep.d.ts +19 -0
- package/dist/tools/odf/grep.d.ts.map +1 -0
- package/dist/tools/odf/grep.js +81 -0
- package/dist/tools/odf/grep.js.map +1 -0
- package/dist/tools/odf/insert_paragraph.d.ts +19 -0
- package/dist/tools/odf/insert_paragraph.d.ts.map +1 -0
- package/dist/tools/odf/insert_paragraph.js +50 -0
- package/dist/tools/odf/insert_paragraph.js.map +1 -0
- package/dist/tools/odf/read_file.d.ts +9 -0
- package/dist/tools/odf/read_file.d.ts.map +1 -0
- package/dist/tools/odf/read_file.js +124 -0
- package/dist/tools/odf/read_file.js.map +1 -0
- package/dist/tools/odf/replace_text.d.ts +9 -0
- package/dist/tools/odf/replace_text.d.ts.map +1 -0
- package/dist/tools/odf/replace_text.js +41 -0
- package/dist/tools/odf/replace_text.js.map +1 -0
- package/dist/tools/odf/save.d.ts +7 -0
- package/dist/tools/odf/save.d.ts.map +1 -0
- package/dist/tools/odf/save.js +48 -0
- package/dist/tools/odf/save.js.map +1 -0
- package/dist/tools/open_document.d.ts.map +1 -1
- package/dist/tools/open_document.js +39 -3
- package/dist/tools/open_document.js.map +1 -1
- package/dist/tools/path_policy.d.ts +9 -0
- package/dist/tools/path_policy.d.ts.map +1 -1
- package/dist/tools/path_policy.js +66 -5
- package/dist/tools/path_policy.js.map +1 -1
- package/dist/tools/provider_guard.d.ts +1 -0
- package/dist/tools/provider_guard.d.ts.map +1 -1
- package/dist/tools/provider_guard.js +10 -0
- package/dist/tools/provider_guard.js.map +1 -1
- package/dist/tools/read_file.d.ts +2 -0
- package/dist/tools/read_file.d.ts.map +1 -1
- package/dist/tools/read_file.js +370 -31
- package/dist/tools/read_file.js.map +1 -1
- package/dist/tools/replace_text.d.ts +2 -1
- package/dist/tools/replace_text.d.ts.map +1 -1
- package/dist/tools/replace_text.js +26 -5
- package/dist/tools/replace_text.js.map +1 -1
- package/dist/tools/save.d.ts.map +1 -1
- package/dist/tools/save.js +55 -8
- package/dist/tools/save.js.map +1 -1
- package/dist/tools/session_resolution.d.ts +25 -1
- package/dist/tools/session_resolution.d.ts.map +1 -1
- package/dist/tools/session_resolution.js +179 -2
- 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 +69 -14
- package/dist/tools/tag_parser.js.map +1 -1
- package/dist/tools/update_footnote.d.ts.map +1 -1
- package/dist/tools/update_footnote.js +3 -1
- package/dist/tools/update_footnote.js.map +1 -1
- package/package.json +18 -13
|
@@ -9,7 +9,7 @@ function expandPath(inputPath) {
|
|
|
9
9
|
function normalizePath(inputPath) {
|
|
10
10
|
return path.resolve(expandPath(inputPath));
|
|
11
11
|
}
|
|
12
|
-
async function canonicalizePath(inputPath) {
|
|
12
|
+
export async function canonicalizePath(inputPath) {
|
|
13
13
|
const normalized = normalizePath(inputPath);
|
|
14
14
|
try {
|
|
15
15
|
return await fs.realpath(normalized);
|
|
@@ -18,6 +18,28 @@ async function canonicalizePath(inputPath) {
|
|
|
18
18
|
return normalized;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* True when two paths resolve to the same filesystem location. Canonicalizes both via realpath (with a
|
|
23
|
+
* lexical fallback for paths that do not exist yet) so a symlink can't disguise a clobber of an input
|
|
24
|
+
* document behind a different-looking output path. Shared source-clobber guard for the write tools
|
|
25
|
+
* (issue #313); folded out of the export-local guard so all write tools enforce it identically.
|
|
26
|
+
*/
|
|
27
|
+
export async function resolvesToSamePath(a, b) {
|
|
28
|
+
return (await canonicalizePath(a)) === (await canonicalizePath(b));
|
|
29
|
+
}
|
|
30
|
+
// On Linux `/private/tmp` does not exist by default. If we listed it as a root,
|
|
31
|
+
// `canonicalizePath`'s realpath-fallback would leave it as a ghost entry whose
|
|
32
|
+
// subpaths `resolveWritePathWithExistingAncestor` would still match (walking up
|
|
33
|
+
// to `/` as the existing ancestor), silently allowing writes the user never
|
|
34
|
+
// opted into. Restrict `/private/tmp` to darwin where it is the canonical form
|
|
35
|
+
// of `/tmp`. Windows already covers `%TEMP%/%TMP%` via `os.tmpdir()`.
|
|
36
|
+
export function getPlatformTempDefaults(platform = process.platform) {
|
|
37
|
+
if (platform === 'darwin')
|
|
38
|
+
return ['/tmp', '/private/tmp'];
|
|
39
|
+
if (platform === 'win32')
|
|
40
|
+
return [];
|
|
41
|
+
return ['/tmp'];
|
|
42
|
+
}
|
|
21
43
|
async function resolveAllowedRoots() {
|
|
22
44
|
const configured = process.env.SAFE_DOCX_ALLOWED_ROOTS;
|
|
23
45
|
const fromEnv = configured
|
|
@@ -28,7 +50,7 @@ async function resolveAllowedRoots() {
|
|
|
28
50
|
: [];
|
|
29
51
|
const defaults = fromEnv.length > 0
|
|
30
52
|
? fromEnv
|
|
31
|
-
: [process.env.HOME ?? '', os.tmpdir()].filter((entry) => entry.length > 0);
|
|
53
|
+
: [process.env.HOME ?? '', os.tmpdir(), ...getPlatformTempDefaults()].filter((entry) => entry.length > 0);
|
|
32
54
|
const out = [];
|
|
33
55
|
const seen = new Set();
|
|
34
56
|
for (const rawRoot of defaults) {
|
|
@@ -45,9 +67,48 @@ function isWithinRoot(targetPath, rootPath) {
|
|
|
45
67
|
return rel === '' || (!rel.startsWith('..') && !path.isAbsolute(rel));
|
|
46
68
|
}
|
|
47
69
|
function policyError(type, inputPath, resolvedPath, allowedRoots) {
|
|
48
|
-
|
|
70
|
+
const suggestedRoot = path.dirname(resolvedPath);
|
|
71
|
+
const exampleEnv = process.env.SAFE_DOCX_ALLOWED_ROOTS
|
|
72
|
+
? `SAFE_DOCX_ALLOWED_ROOTS="$SAFE_DOCX_ALLOWED_ROOTS${path.delimiter}${suggestedRoot}"`
|
|
73
|
+
: `SAFE_DOCX_ALLOWED_ROOTS="${suggestedRoot}"`;
|
|
74
|
+
return err('PATH_NOT_ALLOWED', `Refusing to ${type} path outside allowed roots: ${inputPath} -> ${resolvedPath}`, [
|
|
75
|
+
`Allowed roots: ${allowedRoots.join(', ')}.`,
|
|
76
|
+
`To allow this path, restart the MCP server with ${exampleEnv}.`,
|
|
77
|
+
].join(' '));
|
|
49
78
|
}
|
|
50
|
-
|
|
79
|
+
// Canonicalize a *write* target. Unlike a read, the final component may not exist yet, so we cannot
|
|
80
|
+
// simply `realpath` the whole path. The crux of the symlink-escape fix (issue #313) is that we must
|
|
81
|
+
// still resolve the final component when it *does* exist — including a dangling symlink — so the policy
|
|
82
|
+
// check judges where `fs.writeFile` will actually write, not where the link happens to live.
|
|
83
|
+
async function resolveWritePathCanonical(normalizedPath, seen = new Set()) {
|
|
84
|
+
// 1. Final component exists (regular file, directory, or symlink to an existing target): realpath
|
|
85
|
+
// resolves it fully — symmetric with enforceReadPathPolicy.
|
|
86
|
+
try {
|
|
87
|
+
return await fs.realpath(normalizedPath);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Fall through: the final component does not currently resolve.
|
|
91
|
+
}
|
|
92
|
+
// 2. Dangling final component that is itself a symlink. `realpath` throws here, but `fs.writeFile`
|
|
93
|
+
// would happily follow the broken link and create its target. Follow it ourselves so the policy
|
|
94
|
+
// check lands on the real write destination rather than the link's (in-root) location.
|
|
95
|
+
let linkStat = null;
|
|
96
|
+
try {
|
|
97
|
+
linkStat = await fs.lstat(normalizedPath);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Genuinely missing (not even a link): fall through to ancestor resolution.
|
|
101
|
+
}
|
|
102
|
+
if (linkStat?.isSymbolicLink()) {
|
|
103
|
+
if (seen.has(normalizedPath)) {
|
|
104
|
+
throw new Error(`Symlink cycle detected resolving: ${normalizedPath}`);
|
|
105
|
+
}
|
|
106
|
+
seen.add(normalizedPath);
|
|
107
|
+
const target = path.resolve(path.dirname(normalizedPath), await fs.readlink(normalizedPath));
|
|
108
|
+
return resolveWritePathCanonical(target, seen);
|
|
109
|
+
}
|
|
110
|
+
// 3. Genuinely-missing new file: resolve against the first existing ancestor (this also follows a
|
|
111
|
+
// symlinked parent directory via `realpath`). Preserves writing new files into existing dirs.
|
|
51
112
|
let probe = path.dirname(normalizedPath);
|
|
52
113
|
while (true) {
|
|
53
114
|
try {
|
|
@@ -89,7 +150,7 @@ export async function enforceWritePathPolicy(inputPath) {
|
|
|
89
150
|
const normalizedPath = normalizePath(inputPath);
|
|
90
151
|
let resolvedPath;
|
|
91
152
|
try {
|
|
92
|
-
resolvedPath = await
|
|
153
|
+
resolvedPath = await resolveWritePathCanonical(normalizedPath);
|
|
93
154
|
}
|
|
94
155
|
catch (e) {
|
|
95
156
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path_policy.js","sourceRoot":"","sources":["../../src/tools/path_policy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,
|
|
1
|
+
{"version":3,"file":"path_policy.js","sourceRoot":"","sources":["../../src/tools/path_policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider_guard.d.ts","sourceRoot":"","sources":["../../src/tools/provider_guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"provider_guard.d.ts","sourceRoot":"","sources":["../../src/tools/provider_guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAYpD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CASvE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CASrE"}
|
|
@@ -3,10 +3,20 @@ const GDOCS_SUPPORTED_TOOLS = new Set([
|
|
|
3
3
|
'read_file', 'replace_text', 'insert_paragraph', 'grep', 'save',
|
|
4
4
|
'format_layout', 'get_file_status', 'close_file',
|
|
5
5
|
]);
|
|
6
|
+
const ODF_SUPPORTED_TOOLS = new Set([
|
|
7
|
+
'read_file', 'replace_text', 'grep', 'insert_paragraph', 'add_comment', 'get_comments',
|
|
8
|
+
'compare_documents', 'save', 'get_file_status', 'close_file',
|
|
9
|
+
]);
|
|
6
10
|
export function checkGDocsSupport(toolName) {
|
|
7
11
|
if (!GDOCS_SUPPORTED_TOOLS.has(toolName)) {
|
|
8
12
|
return err('UNSUPPORTED_FOR_PROVIDER', `'${toolName}' is not supported for Google Docs.`, 'This tool is only available for DOCX files.');
|
|
9
13
|
}
|
|
10
14
|
return null;
|
|
11
15
|
}
|
|
16
|
+
export function checkOdfSupport(toolName) {
|
|
17
|
+
if (!ODF_SUPPORTED_TOOLS.has(toolName)) {
|
|
18
|
+
return err('UNSUPPORTED_FOR_ODF', `'${toolName}' is not supported for ODF (.odt) files.`, 'Use read_file, replace_text, grep, insert_paragraph, add_comment, get_comments, compare_documents, save, get_file_status, or close_file for .odt files.');
|
|
19
|
+
}
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
12
22
|
//# sourceMappingURL=provider_guard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider_guard.js","sourceRoot":"","sources":["../../src/tools/provider_guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAqB,MAAM,YAAY,CAAC;AAEpD,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM;IAC/D,eAAe,EAAE,iBAAiB,EAAE,YAAY;CACjD,CAAC,CAAC;AAEH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,OAAO,GAAG,CACR,0BAA0B,EAC1B,IAAI,QAAQ,qCAAqC,EACjD,6CAA6C,CAC9C,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"provider_guard.js","sourceRoot":"","sources":["../../src/tools/provider_guard.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAqB,MAAM,YAAY,CAAC;AAEpD,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACpC,WAAW,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM;IAC/D,eAAe,EAAE,iBAAiB,EAAE,YAAY;CACjD,CAAC,CAAC;AAEH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IAClC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc;IACtF,mBAAmB,EAAE,MAAM,EAAE,iBAAiB,EAAE,YAAY;CAC7D,CAAC,CAAC;AAEH,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,OAAO,GAAG,CACR,0BAA0B,EAC1B,IAAI,QAAQ,qCAAqC,EACjD,6CAA6C,CAC9C,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,GAAG,CACR,qBAAqB,EACrB,IAAI,QAAQ,0CAA0C,EACtD,yJAAyJ,CAC1J,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -7,5 +7,7 @@ export declare function readFile(manager: SessionManager, params: {
|
|
|
7
7
|
node_ids?: string[];
|
|
8
8
|
format?: string;
|
|
9
9
|
show_formatting?: boolean;
|
|
10
|
+
comment_rendering?: string;
|
|
11
|
+
include_fingerprint?: boolean;
|
|
10
12
|
}): Promise<ToolResponse>;
|
|
11
13
|
//# sourceMappingURL=read_file.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read_file.d.ts","sourceRoot":"","sources":["../../src/tools/read_file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"read_file.d.ts","sourceRoot":"","sources":["../../src/tools/read_file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAwSxD,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE;IACN,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GACA,OAAO,CAAC,YAAY,CAAC,CAqLvB"}
|