mcprigor 1.0.0-rc.2 → 1.0.0-rc.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/README.md CHANGED
@@ -7,21 +7,27 @@
7
7
  [![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE)
8
8
  [![Website](https://img.shields.io/badge/docs-mcprigor.com-E879F9)](https://mcprigor.com)
9
9
 
10
- **Plain-language testing for Model Context Protocol servers.**
10
+ **Natural-language testing for Model Context Protocol servers.**
11
11
 
12
- MCP Rigor lets QA teams test MCP tools, resources, prompts, contracts, and transports without writing test code. Tests are deterministic: no AI model interprets the wording. Plain-language files use `.mcpr` to avoid collision with existing `.mcp` formats.
12
+ MCP Rigor lets QA teams test MCP tools, resources, prompts, contracts, and transports without writing test code. Tests are deterministic: no AI model interprets the wording.
13
13
 
14
- > Status: `1.0.0-rc.2` release candidate. Node.js 20 or 22 is required.
14
+ > Status: `1.0.0-rc.4` release candidate. Node.js 20 or 22 is required.
15
15
 
16
16
  ## Install
17
17
 
18
- In your test project:
18
+ MCP Rigor is published on npm as [`mcprigor`](https://www.npmjs.com/package/mcprigor). The package ships compiled code — there is nothing to build from source. In your test project:
19
19
 
20
20
  ```bash
21
21
  npm install --save-dev mcprigor
22
22
  ```
23
23
 
24
- Use `npx mcprigor` in commands below, or install globally to use `mcprigor` directly.
24
+ Or try it instantly without installing:
25
+
26
+ ```bash
27
+ npx mcprigor@latest init tests/acceptance.mcpr
28
+ ```
29
+
30
+ Use `npx mcprigor` in commands below, or install globally (`npm install -g mcprigor`) to use `mcprigor` directly.
25
31
 
26
32
  ## Write your first test
27
33
 
@@ -124,7 +130,7 @@ Expect "content[0].text" contains "complete"
124
130
  Expect "items" has 3 items
125
131
  ```
126
132
 
127
- See the [plain-language cookbook](docs/PLAIN-LANGUAGE-COOKBOOK.md) for copy-ready examples.
133
+ See the [natural-language cookbook](docs/PLAIN-LANGUAGE-COOKBOOK.md) for copy-ready examples.
128
134
 
129
135
  ## Compare local and deployed behavior
130
136
 
@@ -156,7 +162,7 @@ Provide a small `.mcpr` file containing the target, then run:
156
162
  npx mcprigor author server.mcpr --out search-customer.mcpr
157
163
  ```
158
164
 
159
- The guided author discovers operations, asks for inputs, previews a response, and writes a reviewable plain-language test.
165
+ The guided author discovers operations, asks for inputs, previews a response, and writes a reviewable natural-language test.
160
166
 
161
167
  ## Use data-driven tests
162
168
 
@@ -202,7 +208,7 @@ Exit codes:
202
208
  mcprigor workspace [DIRECTORY] Start the local QA interface
203
209
  mcprigor init FILE Create an example test
204
210
  mcprigor check FILE Validate without connecting
205
- mcprigor test FILE Run plain-language or YAML tests
211
+ mcprigor test FILE Run natural-language or YAML tests
206
212
  mcprigor author TARGET --out FILE Build a test interactively
207
213
  mcprigor parity FILE Compare named targets
208
214
  mcprigor discover FILE Save the live MCP contract
@@ -215,7 +221,7 @@ See the [complete CLI reference](docs/CLI-REFERENCE.md).
215
221
  ## Choose your next guide
216
222
 
217
223
  - **New QA user:** [Getting started](docs/GETTING-STARTED.md)
218
- - **Writing scenarios:** [Plain-language cookbook](docs/PLAIN-LANGUAGE-COOKBOOK.md)
224
+ - **Writing scenarios:** [Natural-language cookbook](docs/PLAIN-LANGUAGE-COOKBOOK.md)
219
225
  - **Using the browser UI:** [QA workspace](docs/QA-WORKSPACE.md)
220
226
  - **Setting up targets and CI:** [Engineer setup](docs/ENGINEER-SETUP.md)
221
227
  - **Fixing failures:** [Troubleshooting](docs/TROUBLESHOOTING.md)
package/dist/data.js CHANGED
@@ -274,28 +274,21 @@ async function loadExcel(file, sheet) {
274
274
  const info = await stat(file);
275
275
  if (info.size > 25 * 1024 * 1024)
276
276
  throw new Error("MCP-DATA-018 Spreadsheet exceeds the 25 MiB compressed limit");
277
- const header = await readFile(file).then((bytes) => bytes.subarray(0, 4));
278
- if (header[0] !== 0x50 || header[1] !== 0x4b)
277
+ const archive = await readFile(file);
278
+ if (archive[0] !== 0x50 || archive[1] !== 0x4b)
279
279
  throw new Error("MCP-DATA-019 Spreadsheet is not a valid XLSX ZIP container");
280
- const ExcelJS = (await import("exceljs")).default;
281
- const workbook = new ExcelJS.Workbook();
282
- await workbook.xlsx.readFile(file);
283
- const worksheet = sheet ? workbook.getWorksheet(String(sheet)) : workbook.worksheets[0];
284
- if (!worksheet)
285
- throw new Error(`MCP-DATA-008 Excel sheet “${String(sheet ?? "first sheet")}" was not found`);
286
- const headerRow = worksheet.getRow(1);
287
- const headers = Array.from({ length: headerRow.cellCount }, (_, index) => String(headerRow.getCell(index + 1).text));
288
- const rows = [];
289
- worksheet.eachRow((row, rowNumber) => {
290
- if (rowNumber === 1)
291
- return;
292
- rows.push(Object.fromEntries(headers.map((header, index) => {
293
- const cell = row.getCell(index + 1);
294
- const value = cell.type === ExcelJS.ValueType.Formula ? cell.result : cell.value;
295
- return [header, value === null || value === undefined ? "" : value instanceof Date ? value.toISOString() : value];
296
- })));
297
- });
298
- return rows;
280
+ const { readXlsxSheet } = await import("./xlsx.js");
281
+ const { rows } = readXlsxSheet(archive, sheet === undefined || sheet === null ? undefined : String(sheet));
282
+ const [headerRow, ...body] = rows;
283
+ if (!headerRow?.length)
284
+ return [];
285
+ const headers = headerRow.map((cell) => String(cell ?? ""));
286
+ return body
287
+ .filter((row) => row.some((cell) => cell !== "" && cell !== undefined && cell !== null))
288
+ .map((row) => Object.fromEntries(headers.map((header, index) => {
289
+ const value = row[index];
290
+ return [header, value === null || value === undefined ? "" : value];
291
+ })));
299
292
  }
300
293
  async function loadRest(url, path, headers, context) {
301
294
  if (!context.allowRemote)
package/dist/data.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"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"}
package/dist/imports.d.ts CHANGED
@@ -2,6 +2,18 @@ export interface ImportGraph {
2
2
  source: string;
3
3
  importedFiles: string[];
4
4
  }
5
- /** Resolve flow-library imports and inline declarations without executing imported tests. */
6
- export declare function resolveFlowImports(source: string, entryFile: string, stack?: string[]): Promise<ImportGraph>;
5
+ export interface ImportLimits {
6
+ rootDir?: string;
7
+ maxDepth?: number;
8
+ maxImports?: number;
9
+ maxFileBytes?: number;
10
+ }
11
+ /** Resolve flow-library imports and inline declarations without executing imported tests.
12
+ *
13
+ * Confinement: imports must stay inside the suite root (the entry file's directory by
14
+ * default). Absolute paths, `..` traversal escaping the root, and symlinks that
15
+ * canonicalize outside the root are rejected. Recursion depth, import count, and
16
+ * imported file size are limited to bound resource use on hostile inputs.
17
+ */
18
+ export declare function resolveFlowImports(source: string, entryFile: string, stack?: string[], limits?: ImportLimits): Promise<ImportGraph>;
7
19
  //# sourceMappingURL=imports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE;AAExE,6FAA6F;AAC7F,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CAiBtH"}
1
+ {"version":3,"file":"imports.d.ts","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,WAAW;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE;AACxE,MAAM,WAAW,YAAY;IAAG,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE;AAMjH;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAM,EAAO,EAAE,MAAM,GAAE,YAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CA2BjJ"}
package/dist/imports.js CHANGED
@@ -1,29 +1,59 @@
1
- import { readFile, realpath } from "node:fs/promises";
2
- import { dirname, resolve } from "node:path";
3
- /** Resolve flow-library imports and inline declarations without executing imported tests. */
4
- export async function resolveFlowImports(source, entryFile, stack = []) {
1
+ import { readFile, realpath, stat } from "node:fs/promises";
2
+ import { dirname, isAbsolute, relative, resolve, sep } from "node:path";
3
+ const MAX_DEPTH = 8;
4
+ const MAX_IMPORTS = 64;
5
+ const MAX_FILE_BYTES = 1024 * 1024;
6
+ /** Resolve flow-library imports and inline declarations without executing imported tests.
7
+ *
8
+ * Confinement: imports must stay inside the suite root (the entry file's directory by
9
+ * default). Absolute paths, `..` traversal escaping the root, and symlinks that
10
+ * canonicalize outside the root are rejected. Recursion depth, import count, and
11
+ * imported file size are limited to bound resource use on hostile inputs.
12
+ */
13
+ export async function resolveFlowImports(source, entryFile, stack = [], limits = {}) {
5
14
  const canonical = await realpath(entryFile).catch(() => resolve(entryFile));
15
+ const rootDir = limits.rootDir ?? await realpath(dirname(canonical)).catch(() => resolve(dirname(canonical)));
16
+ const maxDepth = limits.maxDepth ?? MAX_DEPTH;
17
+ const maxImports = limits.maxImports ?? MAX_IMPORTS;
18
+ const maxFileBytes = limits.maxFileBytes ?? MAX_FILE_BYTES;
6
19
  if (stack.includes(canonical))
7
20
  throw new Error(`MCPLANG301 Import cycle: ${[...stack, canonical].join(" → ")}`);
21
+ if (stack.length >= maxDepth)
22
+ throw new Error(`MCPLANG303 Import depth exceeds ${maxDepth} in ${entryFile}`);
8
23
  const expression = /^Import flows from\s+["']([^"']+)["']\s*$/gim;
9
24
  const importedFiles = [];
10
25
  const chunks = [];
11
26
  let match;
12
27
  while ((match = expression.exec(source))) {
13
- const imported = await realpath(resolve(dirname(canonical), match[1])).catch(() => resolve(dirname(canonical), match[1]));
28
+ const specifier = match[1];
29
+ if (isAbsolute(specifier))
30
+ throw new Error(`MCPLANG304 Import path must be relative to the test file, not absolute: ${specifier}`);
31
+ const imported = await confine(resolve(dirname(canonical), specifier), rootDir, specifier);
32
+ const size = await stat(imported).then((s) => s.size).catch(() => 0);
33
+ if (size > maxFileBytes)
34
+ throw new Error(`MCPLANG305 Imported flow library ${specifier} exceeds ${maxFileBytes} bytes`);
14
35
  let importedSource;
15
36
  try {
16
37
  importedSource = await readFile(imported, "utf8");
17
38
  }
18
39
  catch {
19
- throw new Error(`MCPLANG302 Cannot import flow library ${match[1]} from ${entryFile}`);
40
+ throw new Error(`MCPLANG302 Cannot import flow library ${specifier} from ${entryFile}`);
20
41
  }
21
- const graph = await resolveFlowImports(importedSource, imported, [...stack, canonical]);
42
+ const graph = await resolveFlowImports(importedSource, imported, [...stack, canonical], { rootDir, maxDepth, maxImports, maxFileBytes });
22
43
  importedFiles.push(imported, ...graph.importedFiles);
44
+ if (new Set(importedFiles).size > maxImports)
45
+ throw new Error(`MCPLANG306 More than ${maxImports} imported flow libraries`);
23
46
  chunks.push(flowDeclarationsOnly(graph.source));
24
47
  }
25
48
  return { source: `${chunks.join("\n")}\n${source.replace(expression, "")}`, importedFiles: [...new Set(importedFiles)] };
26
49
  }
50
+ async function confine(candidate, rootDir, specifier) {
51
+ const canonical = await realpath(candidate).catch(() => candidate);
52
+ const relation = relative(rootDir, canonical);
53
+ if (relation === "" || (!relation.startsWith(`..${sep}`) && relation !== ".." && !isAbsolute(relation)))
54
+ return canonical;
55
+ throw new Error(`MCPLANG307 Import ${specifier} resolves outside the test suite directory (${rootDir}). Keep shared flow libraries inside the suite folder.`);
56
+ }
27
57
  function flowDeclarationsOnly(source) {
28
58
  const lines = source.replaceAll("\r\n", "\n").split("\n");
29
59
  const output = [];
@@ -1 +1 @@
1
- {"version":3,"file":"imports.js","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"imports.js","sourceRoot":"","sources":["../src/imports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAKxE,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAc,EAAE,SAAiB,EAAE,QAAkB,EAAE,EAAE,SAAuB,EAAE;IACzH,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC9G,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,SAAS,CAAC;IAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC;IACpD,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,cAAc,CAAC;IAC3D,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,GAAG,KAAK,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChH,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,OAAO,SAAS,EAAE,CAAC,CAAC;IAC7G,MAAM,UAAU,GAAG,8CAA8C,CAAC;IAClE,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QAC5B,IAAI,UAAU,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,2EAA2E,SAAS,EAAE,CAAC,CAAC;QACnI,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3F,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACrE,IAAI,IAAI,GAAG,YAAY;YAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,SAAS,YAAY,YAAY,QAAQ,CAAC,CAAC;QACxH,IAAI,cAAsB,CAAC;QAC3B,IAAI,CAAC;YAAC,cAAc,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAAC,CAAC;QAC1D,MAAM,CAAC;YAAC,MAAM,IAAI,KAAK,CAAC,yCAAyC,SAAS,SAAS,SAAS,EAAE,CAAC,CAAC;QAAC,CAAC;QAClG,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC,GAAG,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;QACzI,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,GAAG,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,0BAA0B,CAAC,CAAC;QAC5H,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,aAAa,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;AAC3H,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,SAAiB,EAAE,OAAe,EAAE,SAAiB;IAC1E,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1H,MAAM,IAAI,KAAK,CAAC,qBAAqB,SAAS,+CAA+C,OAAO,wDAAwD,CAAC,CAAC;AAChK,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC;QAC1C,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,EAAE,CAAC;YACvE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAE,CAAC,CAAC;YAC7B,OAAO,KAAK,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAE,CAAC,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAE,CAAC,CAAC;QACpH,CAAC;;YAAM,KAAK,EAAE,CAAC;IACjB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC"}
package/dist/xlsx.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export interface XlsxSheet {
2
+ name: string;
3
+ rows: unknown[][];
4
+ }
5
+ export declare function readXlsxSheet(archive: Buffer, sheetName?: string): XlsxSheet;
6
+ //# sourceMappingURL=xlsx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xlsx.d.ts","sourceRoot":"","sources":["../src/xlsx.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,SAAS;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAA;CAAE;AAE9D,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAyB5E"}
package/dist/xlsx.js ADDED
@@ -0,0 +1,199 @@
1
+ import { inflateRawSync } from "node:zlib";
2
+ /**
3
+ * Minimal, dependency-free XLSX table reader.
4
+ *
5
+ * Scope: read one worksheet of a well-formed .xlsx file as rows of cells —
6
+ * shared strings, inline strings, numbers, booleans, formula cached values,
7
+ * and date-formatted numbers (converted to ISO strings). This is not a
8
+ * general spreadsheet library: no writing, no styles, no merged-cell
9
+ * semantics, no macros.
10
+ *
11
+ * Safety: input size is validated by the caller; this module additionally
12
+ * caps decompressed entry size and cell counts so a crafted file cannot
13
+ * exhaust memory (zip-bomb protection).
14
+ */
15
+ const MAX_ENTRY_BYTES = 256 * 1024 * 1024;
16
+ const MAX_CELLS = 2_000_000;
17
+ export function readXlsxSheet(archive, sheetName) {
18
+ const entries = readZipEntries(archive);
19
+ const read = (path) => {
20
+ const entry = entries.get(path);
21
+ return entry === undefined ? undefined : entry.toString("utf8");
22
+ };
23
+ const workbook = read("xl/workbook.xml");
24
+ if (!workbook)
25
+ throw new Error("MCP-DATA-019 Spreadsheet is missing xl/workbook.xml");
26
+ const date1904 = /<workbookPr[^>]*date1904="(?:1|true)"/.test(workbook);
27
+ const sheets = [...workbook.matchAll(/<sheet\b[^>]*\/?>(?:<\/sheet>)?/g)].map((m) => ({
28
+ name: decodeEntities(attr(m[0], "name") ?? ""),
29
+ rid: attr(m[0], "r:id") ?? attr(m[0], "id") ?? "",
30
+ }));
31
+ if (!sheets.length)
32
+ throw new Error("MCP-DATA-019 Spreadsheet declares no worksheets");
33
+ const chosen = sheetName === undefined ? sheets[0] : sheets.find((s) => s.name === sheetName);
34
+ if (!chosen)
35
+ throw new Error(`MCP-DATA-008 Excel sheet “${sheetName}" was not found`);
36
+ const rels = read("xl/_rels/workbook.xml.rels") ?? "";
37
+ const rel = [...rels.matchAll(/<Relationship\b[^>]*\/?>/g)].find((m) => attr(m[0], "Id") === chosen.rid);
38
+ const target = rel ? attr(rel[0], "Target") ?? "" : `worksheets/sheet${sheets.indexOf(chosen) + 1}.xml`;
39
+ const sheetPath = target.startsWith("/") ? target.slice(1) : `xl/${target}`;
40
+ const sheetXml = read(sheetPath.replaceAll("\\", "/"));
41
+ if (!sheetXml)
42
+ throw new Error(`MCP-DATA-019 Spreadsheet worksheet ${sheetPath} is missing`);
43
+ const shared = parseSharedStrings(read("xl/sharedStrings.xml"));
44
+ const dateStyles = parseDateStyles(read("xl/styles.xml"));
45
+ return { name: chosen.name, rows: parseSheetRows(sheetXml, shared, dateStyles, date1904) };
46
+ }
47
+ // --- worksheet ---
48
+ function parseSheetRows(xml, shared, dateStyles, date1904) {
49
+ const rows = [];
50
+ let cells = 0;
51
+ for (const rowMatch of xml.matchAll(/<row\b[^>]*>([\s\S]*?)<\/row>|<row\b[^>]*\/>/g)) {
52
+ const rowIndex = Number(attr(rowMatch[0], "r") ?? rows.length + 1);
53
+ while (rows.length < rowIndex - 1)
54
+ rows.push([]);
55
+ const values = [];
56
+ for (const cellMatch of (rowMatch[1] ?? "").matchAll(/<c\b[^>]*(?:\/>|>([\s\S]*?)<\/c>)/g)) {
57
+ if (++cells > MAX_CELLS)
58
+ throw new Error(`MCP-DATA-018 Spreadsheet exceeds ${MAX_CELLS.toLocaleString("en-US")} cells`);
59
+ const reference = attr(cellMatch[0], "r");
60
+ const column = reference ? columnIndex(reference) : values.length;
61
+ while (values.length < column)
62
+ values.push("");
63
+ values[column] = cellValue(cellMatch[0], cellMatch[1] ?? "", shared, dateStyles, date1904);
64
+ }
65
+ rows.push(values);
66
+ }
67
+ return rows;
68
+ }
69
+ function cellValue(cellTag, body, shared, dateStyles, date1904) {
70
+ const type = attr(cellTag, "t") ?? "n";
71
+ if (type === "inlineStr")
72
+ return decodeEntities(concatText(body));
73
+ const v = body.match(/<v>([\s\S]*?)<\/v>/)?.[1];
74
+ if (v === undefined)
75
+ return "";
76
+ if (type === "s")
77
+ return shared[Number(v)] ?? "";
78
+ if (type === "str" || type === "e")
79
+ return decodeEntities(v);
80
+ if (type === "b")
81
+ return v.trim() === "1";
82
+ const numeric = Number(v);
83
+ if (!Number.isFinite(numeric))
84
+ return decodeEntities(v);
85
+ const style = Number(attr(cellTag, "s") ?? -1);
86
+ if (dateStyles.has(style))
87
+ return excelDateToIso(numeric, date1904);
88
+ return numeric;
89
+ }
90
+ function excelDateToIso(serial, date1904) {
91
+ const epoch = date1904 ? Date.UTC(1904, 0, 1) : Date.UTC(1899, 11, 30);
92
+ return new Date(Math.round(epoch + serial * 86_400_000)).toISOString();
93
+ }
94
+ function columnIndex(reference) {
95
+ let index = 0;
96
+ for (const char of reference) {
97
+ if (char >= "0" && char <= "9")
98
+ break;
99
+ index = index * 26 + (char.toUpperCase().charCodeAt(0) - 64);
100
+ }
101
+ return index - 1;
102
+ }
103
+ // --- shared strings and styles ---
104
+ function parseSharedStrings(xml) {
105
+ if (!xml)
106
+ return [];
107
+ return [...xml.matchAll(/<si>([\s\S]*?)<\/si>/g)].map((m) => decodeEntities(concatText(m[1])));
108
+ }
109
+ function concatText(fragment) {
110
+ return [...fragment.matchAll(/<t(?:\s[^>]*)?>([\s\S]*?)<\/t>|<t(?:\s[^>]*)?\/>/g)].map((m) => m[1] ?? "").join("");
111
+ }
112
+ const BUILTIN_DATE_FORMATS = new Set([14, 15, 16, 17, 18, 19, 20, 21, 22, 45, 46, 47]);
113
+ function parseDateStyles(xml) {
114
+ const styles = new Set();
115
+ if (!xml)
116
+ return styles;
117
+ const customDates = new Set();
118
+ for (const m of xml.matchAll(/<numFmt\b[^>]*\/?>/g)) {
119
+ const id = Number(attr(m[0], "numFmtId") ?? -1);
120
+ const code = (attr(m[0], "formatCode") ?? "").replace(/"[^"]*"|\[[^\]]*\]|\\./g, "");
121
+ if (/[ymdhs]/i.test(code))
122
+ customDates.add(id);
123
+ }
124
+ const cellXfs = xml.match(/<cellXfs\b[^>]*>([\s\S]*?)<\/cellXfs>/)?.[1] ?? "";
125
+ [...cellXfs.matchAll(/<xf\b[^>]*\/?>/g)].forEach((m, index) => {
126
+ const id = Number(attr(m[0], "numFmtId") ?? 0);
127
+ if (BUILTIN_DATE_FORMATS.has(id) || customDates.has(id))
128
+ styles.add(index);
129
+ });
130
+ return styles;
131
+ }
132
+ // --- XML helpers ---
133
+ function attr(tag, name) {
134
+ return tag.match(new RegExp(`(?:^|\\s)${name.replace(":", "\\:")}="([^"]*)"`))?.[1];
135
+ }
136
+ function decodeEntities(text) {
137
+ return text.replace(/&(lt|gt|amp|quot|apos|#x?[0-9a-fA-F]+);/g, (whole, entity) => {
138
+ if (entity === "lt")
139
+ return "<";
140
+ if (entity === "gt")
141
+ return ">";
142
+ if (entity === "amp")
143
+ return "&";
144
+ if (entity === "quot")
145
+ return '"';
146
+ if (entity === "apos")
147
+ return "'";
148
+ const code = entity.startsWith("#x") || entity.startsWith("#X") ? Number.parseInt(entity.slice(2), 16) : Number.parseInt(entity.slice(1), 10);
149
+ return Number.isFinite(code) && code >= 0 && code <= 0x10ffff ? String.fromCodePoint(code) : whole;
150
+ });
151
+ }
152
+ // --- minimal ZIP reader (central directory + stored/deflate entries) ---
153
+ function readZipEntries(archive) {
154
+ const entries = new Map();
155
+ let eocd = -1;
156
+ for (let index = archive.length - 22; index >= Math.max(0, archive.length - 22 - 65_536); index--) {
157
+ if (archive.readUInt32LE(index) === 0x06054b50) {
158
+ eocd = index;
159
+ break;
160
+ }
161
+ }
162
+ if (eocd < 0)
163
+ throw new Error("MCP-DATA-019 Spreadsheet is not a valid XLSX ZIP container");
164
+ const count = archive.readUInt16LE(eocd + 10);
165
+ let offset = archive.readUInt32LE(eocd + 16);
166
+ for (let index = 0; index < count; index++) {
167
+ if (archive.readUInt32LE(offset) !== 0x02014b50)
168
+ throw new Error("MCP-DATA-019 Spreadsheet ZIP central directory is corrupt");
169
+ const method = archive.readUInt16LE(offset + 10);
170
+ const compressedSize = archive.readUInt32LE(offset + 20);
171
+ const uncompressedSize = archive.readUInt32LE(offset + 24);
172
+ const nameLength = archive.readUInt16LE(offset + 28);
173
+ const extraLength = archive.readUInt16LE(offset + 30);
174
+ const commentLength = archive.readUInt16LE(offset + 32);
175
+ const localOffset = archive.readUInt32LE(offset + 42);
176
+ const name = archive.subarray(offset + 46, offset + 46 + nameLength).toString("utf8");
177
+ if (uncompressedSize > MAX_ENTRY_BYTES)
178
+ throw new Error("MCP-DATA-018 Spreadsheet entry exceeds the decompressed size limit");
179
+ if (name.startsWith("xl/") || name === "[Content_Types].xml") {
180
+ if (archive.readUInt32LE(localOffset) !== 0x04034b50)
181
+ throw new Error("MCP-DATA-019 Spreadsheet ZIP local header is corrupt");
182
+ const localName = archive.readUInt16LE(localOffset + 26);
183
+ const localExtra = archive.readUInt16LE(localOffset + 28);
184
+ const start = localOffset + 30 + localName + localExtra;
185
+ const raw = archive.subarray(start, start + compressedSize);
186
+ if (method === 0)
187
+ entries.set(name, Buffer.from(raw));
188
+ else if (method === 8) {
189
+ const inflated = inflateRawSync(raw, { maxOutputLength: MAX_ENTRY_BYTES });
190
+ entries.set(name, inflated);
191
+ }
192
+ else
193
+ throw new Error(`MCP-DATA-019 Spreadsheet uses unsupported ZIP compression method ${method}`);
194
+ }
195
+ offset += 46 + nameLength + extraLength + commentLength;
196
+ }
197
+ return entries;
198
+ }
199
+ //# sourceMappingURL=xlsx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xlsx.js","sourceRoot":"","sources":["../src/xlsx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAE3C;;;;;;;;;;;;GAYG;AAEH,MAAM,eAAe,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAC1C,MAAM,SAAS,GAAG,SAAS,CAAC;AAI5B,MAAM,UAAU,aAAa,CAAC,OAAe,EAAE,SAAkB;IAC/D,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,CAAC,IAAY,EAAsB,EAAE;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACtF,MAAM,QAAQ,GAAG,uCAAuC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,kCAAkC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpF,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAC9C,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE;KAClD,CAAC,CAAC,CAAC;IACJ,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC/F,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,iBAAiB,CAAC,CAAC;IACtF,MAAM,IAAI,GAAG,IAAI,CAAC,4BAA4B,CAAC,IAAI,EAAE,CAAC;IACtD,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC;IACzG,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,mBAAmB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;IACxG,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC;IAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,SAAS,aAAa,CAAC,CAAC;IAC7F,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;AAC7F,CAAC;AAED,oBAAoB;AAEpB,SAAS,cAAc,CAAC,GAAW,EAAE,MAAgB,EAAE,UAAuB,EAAE,QAAiB;IAC/F,MAAM,IAAI,GAAgB,EAAE,CAAC;IAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,+CAA+C,CAAC,EAAE,CAAC;QACrF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,KAAK,MAAM,SAAS,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC,EAAE,CAAC;YAC3F,IAAI,EAAE,KAAK,GAAG,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACxH,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YAClE,OAAO,MAAM,CAAC,MAAM,GAAG,MAAM;gBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC7F,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,OAAe,EAAE,IAAY,EAAE,MAAgB,EAAE,UAAuB,EAAE,QAAiB;IAC5G,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;IACvC,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAC/B,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,IAAI,KAAK,GAAG;QAAE,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/C,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,QAAiB;IACvD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACvE,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACzE,CAAC;AAED,SAAS,WAAW,CAAC,SAAiB;IACpC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG;YAAE,MAAM;QACtC,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,KAAK,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,oCAAoC;AAEpC,SAAS,kBAAkB,CAAC,GAAuB;IACjD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,OAAO,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAC;AAClG,CAAC;AAED,SAAS,UAAU,CAAC,QAAgB;IAClC,OAAO,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,mDAAmD,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrH,CAAC;AAED,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAEvF,SAAS,eAAe,CAAC,GAAuB;IAC9C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,IAAI,CAAC,GAAG;QAAE,OAAO,MAAM,CAAC;IACxB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACpD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAC;QACrF,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,uCAAuC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9E,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAC5D,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/C,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC7E,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sBAAsB;AAEtB,SAAS,IAAI,CAAC,GAAW,EAAE,IAAY;IACrC,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,OAAO,CAAC,0CAA0C,EAAE,CAAC,KAAK,EAAE,MAAc,EAAE,EAAE;QACxF,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,GAAG,CAAC;QAChC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,GAAG,CAAC;QAChC,IAAI,MAAM,KAAK,KAAK;YAAE,OAAO,GAAG,CAAC;QACjC,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,GAAG,CAAC;QAClC,IAAI,MAAM,KAAK,MAAM;YAAE,OAAO,GAAG,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9I,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrG,CAAC,CAAC,CAAC;AACL,CAAC;AAED,0EAA0E;AAE1E,SAAS,cAAc,CAAC,OAAe;IACrC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAClG,IAAI,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,UAAU,EAAE,CAAC;YAAC,IAAI,GAAG,KAAK,CAAC;YAAC,MAAM;QAAC,CAAC;IAC1E,CAAC;IACD,IAAI,IAAI,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;IAC5F,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC9C,IAAI,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC7C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC9H,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACzD,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QAC3D,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACrD,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACxD,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;QACtD,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,MAAM,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACtF,IAAI,gBAAgB,GAAG,eAAe;YAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QAC9H,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,qBAAqB,EAAE,CAAC;YAC7D,IAAI,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,UAAU;gBAAE,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC9H,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;YAC1D,MAAM,KAAK,GAAG,WAAW,GAAG,EAAE,GAAG,SAAS,GAAG,UAAU,CAAC;YACxD,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,cAAc,CAAC,CAAC;YAC5D,IAAI,MAAM,KAAK,CAAC;gBAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;iBACjD,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC,CAAC;gBAC3E,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC9B,CAAC;;gBAAM,MAAM,IAAI,KAAK,CAAC,oEAAoE,MAAM,EAAE,CAAC,CAAC;QACvG,CAAC;QACD,MAAM,IAAI,EAAE,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC;IAC1D,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -2,6 +2,22 @@
2
2
 
3
3
  This guide covers the configuration engineers normally prepare once so QA authors can focus on scenarios.
4
4
 
5
+ ## Install and pin
6
+
7
+ MCP Rigor is published on npm as [`mcprigor`](https://www.npmjs.com/package/mcprigor) and ships compiled code — teams and CI never build it from source.
8
+
9
+ ```bash
10
+ npm install --save-dev mcprigor
11
+ ```
12
+
13
+ For reproducible CI runs, pin an exact version in `package.json` and update it deliberately:
14
+
15
+ ```json
16
+ { "devDependencies": { "mcprigor": "1.0.0-rc.4" } }
17
+ ```
18
+
19
+ Release notes and tarball checksums for each version are on the [GitHub releases page](https://github.com/FusionOnePlatform/mcprigor/releases).
20
+
5
21
  ## Recommended repository layout
6
22
 
7
23
  ```text
@@ -4,7 +4,7 @@ This guide takes you from installation to one passing MCP test.
4
4
 
5
5
  ## 1. Install MCP Rigor
6
6
 
7
- You need Node.js 20 or 22.
7
+ You need Node.js 20 or 22. MCP Rigor is published on npm as [`mcprigor`](https://www.npmjs.com/package/mcprigor) — the package ships ready-to-run compiled code, so there is nothing to build from source.
8
8
 
9
9
  ```bash
10
10
  mkdir mcp-acceptance-tests
@@ -13,6 +13,12 @@ npm init -y
13
13
  npm install --save-dev mcprigor
14
14
  ```
15
15
 
16
+ To check the installation:
17
+
18
+ ```bash
19
+ npx mcprigor --help
20
+ ```
21
+
16
22
  ## 2. Create a test file
17
23
 
18
24
  Create `calculator.mcpr`:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcprigor",
3
- "version": "1.0.0-rc.2",
3
+ "version": "1.0.0-rc.4",
4
4
  "description": "Plain-language MCP testing with isolated extensions and a local QA workspace",
5
5
  "type": "module",
6
6
  "bin": {
@@ -47,7 +47,6 @@
47
47
  "dependencies": {
48
48
  "@modelcontextprotocol/sdk": "1.27.1",
49
49
  "ajv": "^8.18.0",
50
- "exceljs": "^4.4.0",
51
50
  "yaml": "^2.8.2"
52
51
  },
53
52
  "overrides": {
@@ -55,6 +54,7 @@
55
54
  },
56
55
  "devDependencies": {
57
56
  "@types/node": "^22.19.15",
57
+ "exceljs": "^4.4.0",
58
58
  "tsx": "^4.21.0",
59
59
  "typescript": "^5.9.3",
60
60
  "vitest": "^4.0.18"