@adeu/mcp-server 1.18.2 → 1.18.4

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/index.js CHANGED
@@ -1289,8 +1289,8 @@ var READ_DOCX_TAIL = "Modes:\n- 'full' (default): paginated body content. Use pa
1289
1289
  var PROCESS_BATCH_COMMON_DESC = "Applies a batch of edits and review actions to a DOCX.\n\nAll changes evaluate against the ORIGINAL document state \u2014 do not chain dependent edits within one batch (e.g. rename X to Y, then modify Y). Apply the rename first, then send a second batch.\n\n";
1290
1290
  var PROCESS_BATCH_OPERATIONS_DESC = "Each item in `changes` must specify a `type`:\n1. 'modify': Search-and-replace. By default `target_text` must match uniquely (`match_mode`:'strict') \u2014 add surrounding context to disambiguate, or set `match_mode`:'first'/'all' to edit the first or every occurrence. Set `regex`:true to treat `target_text` as a regular expression (capture groups available in `new_text` as $1, $2\u2026). `new_text` supports Markdown: '# Heading 1' through '###### Heading 6', '**bold**', '_italic_', and '\\n\\n' to split into multiple paragraphs. Empty `new_text` deletes. Do NOT write CriticMarkup tags ({++, {--, {>>) manually \u2014 use the `comment` parameter for comments.\n \u2022 EMPTY/FORM TABLE CELLS: a blank cell has no text to match. `read_docx` renders each cell with a trailing `{#cell:<id>}` anchor \u2014 to fill a blank cell, set `target_text` to that exact anchor (e.g. '{#cell:0000005E}') and put the value in `new_text`. Do NOT try to match the pipe layout ('Date | | |'); the pipes are display separators, not editable text.\n2. 'accept' / 'reject': Finalize or revert a tracked change by `target_id` (e.g. 'Chg:12').\n3. 'reply': Reply to a comment by `target_id` (e.g. 'Com:5') with `text`.\n4. 'insert_row' / 'delete_row': Table edits. Disk mode only \u2014 not supported on Live Word canvas.\n\nID VOLATILITY: 'Chg:N' and 'Com:N' shift between document states. Always call `read_docx` immediately before any accept/reject/reply \u2014 do not reuse IDs from earlier in the conversation. The `{#cell:<id>}` anchors are stable (Word-assigned) and safe to reuse across reads.\n\n`author_name` is used for attribution on all tracked changes and comments, in both disk and Live Word modes.";
1291
1291
  var DIFF_DOCX_DESC = "Compares two DOCX files and returns a compact `@@ Word Patch @@` diff \u2014 Adeu's token-level, sub-word patch format \u2014 of their text content. Useful for analyzing differences between versions before editing.";
1292
- var gitSha = "263a4e4";
1293
- var packageVersion = "1.18.2";
1292
+ var gitSha = "dc59148";
1293
+ var packageVersion = "1.18.4";
1294
1294
  var buildTag = ` [Adeu v${packageVersion}+${gitSha}]`;
1295
1295
  var args = process.argv.slice(2);
1296
1296
  var scopeIdx = args.indexOf("--scope");
@@ -1971,8 +1971,8 @@ ${stats.skipped_details.join("\n")}`;
1971
1971
  async function main() {
1972
1972
  const transport = new StdioServerTransport();
1973
1973
  await server.connect(transport);
1974
- const gitSha2 = "263a4e4";
1975
- const buildTs = "2026-07-03T13:50:27.555Z";
1974
+ const gitSha2 = "dc59148";
1975
+ const buildTs = "2026-07-05T06:17:14.425Z";
1976
1976
  console.error(
1977
1977
  `Adeu MCP Server (Node.js Engine: ${identifyEngine()}) running on stdio build=${gitSha2}@${buildTs}`
1978
1978
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adeu/mcp-server",
3
- "version": "1.18.2",
3
+ "version": "1.18.4",
4
4
  "description": "",
5
5
  "mcpName": "ai.adeu/adeu",
6
6
  "main": "./dist/index.js",
@@ -31,7 +31,7 @@
31
31
  "license": "MIT",
32
32
  "type": "module",
33
33
  "dependencies": {
34
- "@adeu/core": "^1.18.2",
34
+ "@adeu/core": "^1.18.4",
35
35
  "@modelcontextprotocol/sdk": "^1.0.0",
36
36
  "@modelcontextprotocol/ext-apps": "^1.0.0",
37
37
  "zod": "^3.23.8"
@@ -4,6 +4,11 @@ import { spawn, ChildProcess } from "node:child_process";
4
4
  import { resolve, join } from "node:path";
5
5
  import { existsSync, readFileSync } from "node:fs";
6
6
 
7
+ // Each Python CLI invocation spawns a fresh interpreter costing ~3-5s on
8
+ // Windows even when warm, so tests that shell out to Python need more than
9
+ // vitest's 5s default timeout.
10
+ const PYTHON_PARITY_TIMEOUT_MS = 60_000;
11
+
7
12
  describe("Parity Live Server Integration Verification", () => {
8
13
  let serverProc: ChildProcess;
9
14
  const fixturePath = resolve(
@@ -112,7 +117,7 @@ describe("Parity Live Server Integration Verification", () => {
112
117
  expect(res.result.content[0].text).not.toContain("[Debug] build=");
113
118
  });
114
119
 
115
- it("GAP 2 (Live): process_document_batch modify straddling deleted text returns actionable deletion error", async () => {
120
+ it("GAP 2 (Live): process_document_batch modify straddling deleted text returns actionable deletion error", { timeout: PYTHON_PARITY_TIMEOUT_MS }, async () => {
116
121
  const outPath = join(
117
122
  resolve(__dirname, "../../../../tmp"),
118
123
  `live_gap2_out_${Date.now()}.docx`,
@@ -197,7 +202,7 @@ describe("Parity Live Server Integration Verification", () => {
197
202
  }
198
203
  });
199
204
 
200
- it("GAP 1 (Live): read_docx mode=outline heading count and content parity with Python", async () => {
205
+ it("GAP 1 (Live): read_docx mode=outline heading count and content parity with Python", { timeout: PYTHON_PARITY_TIMEOUT_MS }, async () => {
201
206
  const gap1FixturePath = resolve(
202
207
  __dirname,
203
208
  "../tests/fixtures/gap1_deleted_row_repro.docx",
@@ -288,7 +293,7 @@ describe("Parity Live Server Integration Verification", () => {
288
293
  expect(nodeHeadingsDirty).toEqual(pythonHeadingsDirty);
289
294
  });
290
295
 
291
- it("GAP 1 - Style Def (Live): style-definition outlineLvl on non-heading style classification parity", async () => {
296
+ it("GAP 1 - Style Def (Live): style-definition outlineLvl on non-heading style classification parity", { timeout: PYTHON_PARITY_TIMEOUT_MS }, async () => {
292
297
  const gap1FixturePath = resolve(
293
298
  __dirname,
294
299
  "../tests/fixtures/gap1_minimal_repro.docx",