@paretools/build 0.3.0 → 0.6.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.
Files changed (41) hide show
  1. package/README.md +42 -10
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/build-runner.d.ts +3 -0
  5. package/dist/lib/build-runner.d.ts.map +1 -1
  6. package/dist/lib/build-runner.js +9 -0
  7. package/dist/lib/build-runner.js.map +1 -1
  8. package/dist/lib/formatters.d.ts +67 -1
  9. package/dist/lib/formatters.d.ts.map +1 -1
  10. package/dist/lib/formatters.js +185 -0
  11. package/dist/lib/formatters.js.map +1 -1
  12. package/dist/lib/parsers.d.ts +9 -1
  13. package/dist/lib/parsers.d.ts.map +1 -1
  14. package/dist/lib/parsers.js +218 -0
  15. package/dist/lib/parsers.js.map +1 -1
  16. package/dist/schemas/index.d.ts +175 -70
  17. package/dist/schemas/index.d.ts.map +1 -1
  18. package/dist/schemas/index.js +84 -6
  19. package/dist/schemas/index.js.map +1 -1
  20. package/dist/tools/build.d.ts.map +1 -1
  21. package/dist/tools/build.js +21 -7
  22. package/dist/tools/build.js.map +1 -1
  23. package/dist/tools/esbuild.d.ts +3 -0
  24. package/dist/tools/esbuild.d.ts.map +1 -0
  25. package/dist/tools/esbuild.js +94 -0
  26. package/dist/tools/esbuild.js.map +1 -0
  27. package/dist/tools/index.d.ts.map +1 -1
  28. package/dist/tools/index.js +6 -0
  29. package/dist/tools/index.js.map +1 -1
  30. package/dist/tools/tsc.d.ts.map +1 -1
  31. package/dist/tools/tsc.js +18 -6
  32. package/dist/tools/tsc.js.map +1 -1
  33. package/dist/tools/vite-build.d.ts +3 -0
  34. package/dist/tools/vite-build.d.ts.map +1 -0
  35. package/dist/tools/vite-build.js +58 -0
  36. package/dist/tools/vite-build.js.map +1 -0
  37. package/dist/tools/webpack.d.ts +3 -0
  38. package/dist/tools/webpack.d.ts.map +1 -0
  39. package/dist/tools/webpack.js +63 -0
  40. package/dist/tools/webpack.js.map +1 -0
  41. package/package.json +21 -9
@@ -1,30 +1,44 @@
1
1
  import { z } from "zod";
2
- import { dualOutput, assertAllowedCommand } from "@paretools/shared";
2
+ import { compactDualOutput, assertAllowedCommand, INPUT_LIMITS } from "@paretools/shared";
3
3
  import { runBuildCommand } from "../lib/build-runner.js";
4
4
  import { parseBuildCommandOutput } from "../lib/parsers.js";
5
- import { formatBuildCommand } from "../lib/formatters.js";
5
+ import { formatBuildCommand, compactBuildMap, formatBuildCompact } from "../lib/formatters.js";
6
6
  import { BuildResultSchema } from "../schemas/index.js";
7
7
  export function registerBuildTool(server) {
8
8
  server.registerTool("build", {
9
9
  title: "Run Build",
10
10
  description: "Runs a build command and returns structured success/failure with errors and warnings. Use instead of running build commands in the terminal.",
11
11
  inputSchema: {
12
- command: z.string().describe("Build command to run (e.g., 'npm', 'npx', 'pnpm')"),
12
+ command: z
13
+ .string()
14
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
15
+ .describe("Build command to run (e.g., 'npm', 'npx', 'pnpm')"),
13
16
  args: z
14
- .array(z.string())
17
+ .array(z.string().max(INPUT_LIMITS.STRING_MAX))
18
+ .max(INPUT_LIMITS.ARRAY_MAX)
15
19
  .default([])
16
20
  .describe("Arguments for the build command (e.g., ['run', 'build'])"),
17
- path: z.string().optional().describe("Working directory (default: cwd)"),
21
+ path: z
22
+ .string()
23
+ .max(INPUT_LIMITS.PATH_MAX)
24
+ .optional()
25
+ .describe("Working directory (default: cwd)"),
26
+ compact: z
27
+ .boolean()
28
+ .optional()
29
+ .default(true)
30
+ .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
18
31
  },
19
32
  outputSchema: BuildResultSchema,
20
- }, async ({ command, args, path }) => {
33
+ }, async ({ command, args, path, compact }) => {
21
34
  assertAllowedCommand(command);
22
35
  const cwd = path || process.cwd();
23
36
  const start = Date.now();
24
37
  const result = await runBuildCommand(command, args || [], cwd);
25
38
  const duration = Math.round((Date.now() - start) / 100) / 10;
39
+ const rawOutput = result.stdout + "\n" + result.stderr;
26
40
  const data = parseBuildCommandOutput(result.stdout, result.stderr, result.exitCode, duration);
27
- return dualOutput(data, formatBuildCommand);
41
+ return compactDualOutput(data, rawOutput, formatBuildCommand, compactBuildMap, formatBuildCompact, compact === false);
28
42
  });
29
43
  }
30
44
  //# sourceMappingURL=build.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/tools/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,OAAO,EACP;QACE,KAAK,EAAE,WAAW;QAClB,WAAW,EACT,8IAA8I;QAChJ,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mDAAmD,CAAC;YACjF,IAAI,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,0DAA0D,CAAC;YACvE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;SACzE;QACD,YAAY,EAAE,iBAAiB;KAChC,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;QAChC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QAE7D,MAAM,IAAI,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9F,OAAO,UAAU,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IAC9C,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/tools/build.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,OAAO,EACP;QACE,KAAK,EAAE,WAAW;QAClB,WAAW,EACT,8IAA8I;QAChJ,WAAW,EAAE;YACX,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC;iBAClC,QAAQ,CAAC,mDAAmD,CAAC;YAChE,IAAI,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;iBAC9C,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;iBAC3B,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,0DAA0D,CAAC;YACvE,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,YAAY,EAAE,iBAAiB;KAChC,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACzC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QAEvD,MAAM,IAAI,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9F,OAAO,iBAAiB,CACtB,IAAI,EACJ,SAAS,EACT,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerEsbuildTool(server: McpServer): void;
3
+ //# sourceMappingURL=esbuild.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esbuild.d.ts","sourceRoot":"","sources":["../../src/tools/esbuild.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QA+GpD"}
@@ -0,0 +1,94 @@
1
+ import { z } from "zod";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
+ import { esbuildCmd } from "../lib/build-runner.js";
4
+ import { parseEsbuildOutput } from "../lib/parsers.js";
5
+ import { formatEsbuild, compactEsbuildMap, formatEsbuildCompact } from "../lib/formatters.js";
6
+ import { EsbuildResultSchema } from "../schemas/index.js";
7
+ export function registerEsbuildTool(server) {
8
+ server.registerTool("esbuild", {
9
+ title: "esbuild",
10
+ description: "Runs the esbuild bundler and returns structured errors, warnings, and output files. Use instead of running `esbuild` in the terminal.",
11
+ inputSchema: {
12
+ path: z
13
+ .string()
14
+ .max(INPUT_LIMITS.PATH_MAX)
15
+ .optional()
16
+ .describe("Project root path (default: cwd)"),
17
+ entryPoints: z
18
+ .array(z.string().max(INPUT_LIMITS.PATH_MAX))
19
+ .max(INPUT_LIMITS.ARRAY_MAX)
20
+ .describe("Entry point files to bundle (e.g., ['src/index.ts'])"),
21
+ outdir: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Output directory"),
22
+ outfile: z
23
+ .string()
24
+ .max(INPUT_LIMITS.PATH_MAX)
25
+ .optional()
26
+ .describe("Output file (single entry point)"),
27
+ bundle: z
28
+ .boolean()
29
+ .optional()
30
+ .default(true)
31
+ .describe("Bundle dependencies (default: true)"),
32
+ minify: z.boolean().optional().default(false).describe("Minify output (default: false)"),
33
+ format: z
34
+ .enum(["esm", "cjs", "iife"])
35
+ .optional()
36
+ .describe("Output format (esm, cjs, iife)"),
37
+ platform: z
38
+ .enum(["browser", "node", "neutral"])
39
+ .optional()
40
+ .describe("Target platform (browser, node, neutral)"),
41
+ sourcemap: z
42
+ .boolean()
43
+ .optional()
44
+ .default(false)
45
+ .describe("Generate source maps (default: false)"),
46
+ args: z
47
+ .array(z.string().max(INPUT_LIMITS.STRING_MAX))
48
+ .max(INPUT_LIMITS.ARRAY_MAX)
49
+ .optional()
50
+ .default([])
51
+ .describe("Additional esbuild flags"),
52
+ compact: z
53
+ .boolean()
54
+ .optional()
55
+ .default(true)
56
+ .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
57
+ },
58
+ outputSchema: EsbuildResultSchema,
59
+ }, async ({ path, entryPoints, outdir, outfile, bundle, minify, format, platform, sourcemap, args, compact, }) => {
60
+ const cwd = path || process.cwd();
61
+ // Validate entry points to prevent flag injection
62
+ for (const ep of entryPoints) {
63
+ assertNoFlagInjection(ep, "entryPoints");
64
+ }
65
+ const cliArgs = [...entryPoints];
66
+ if (bundle !== false)
67
+ cliArgs.push("--bundle");
68
+ if (outdir)
69
+ cliArgs.push(`--outdir=${outdir}`);
70
+ if (outfile)
71
+ cliArgs.push(`--outfile=${outfile}`);
72
+ if (minify)
73
+ cliArgs.push("--minify");
74
+ if (format)
75
+ cliArgs.push(`--format=${format}`);
76
+ if (platform)
77
+ cliArgs.push(`--platform=${platform}`);
78
+ if (sourcemap)
79
+ cliArgs.push("--sourcemap");
80
+ for (const a of args ?? []) {
81
+ assertNoFlagInjection(a, "args");
82
+ }
83
+ if (args) {
84
+ cliArgs.push(...args);
85
+ }
86
+ const start = Date.now();
87
+ const result = await esbuildCmd(cliArgs, cwd);
88
+ const duration = Math.round((Date.now() - start) / 100) / 10;
89
+ const rawOutput = result.stdout + "\n" + result.stderr;
90
+ const data = parseEsbuildOutput(result.stdout, result.stderr, result.exitCode, duration);
91
+ return compactDualOutput(data, rawOutput, formatEsbuild, compactEsbuildMap, formatEsbuildCompact, compact === false);
92
+ });
93
+ }
94
+ //# sourceMappingURL=esbuild.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"esbuild.js","sourceRoot":"","sources":["../../src/tools/esbuild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CACjB,SAAS,EACT;QACE,KAAK,EAAE,SAAS;QAChB,WAAW,EACT,uIAAuI;QACzI,WAAW,EAAE;YACX,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,WAAW,EAAE,CAAC;iBACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;iBAC5C,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;iBAC3B,QAAQ,CAAC,sDAAsD,CAAC;YACnE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YACrF,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,MAAM,EAAE,CAAC;iBACN,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,qCAAqC,CAAC;YAClD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YACxF,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;iBAC5B,QAAQ,EAAE;iBACV,QAAQ,CAAC,gCAAgC,CAAC;YAC7C,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;iBACpC,QAAQ,EAAE;iBACV,QAAQ,CAAC,0CAA0C,CAAC;YACvD,SAAS,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,uCAAuC,CAAC;YACpD,IAAI,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;iBAC9C,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;iBAC3B,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,0BAA0B,CAAC;YACvC,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,YAAY,EAAE,mBAAmB;KAClC,EACD,KAAK,EAAE,EACL,IAAI,EACJ,WAAW,EACX,MAAM,EACN,OAAO,EACP,MAAM,EACN,MAAM,EACN,MAAM,EACN,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,OAAO,GACR,EAAE,EAAE;QACH,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAElC,kDAAkD;QAClD,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;YAC7B,qBAAqB,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,OAAO,GAAa,CAAC,GAAG,WAAW,CAAC,CAAC;QAE3C,IAAI,MAAM,KAAK,KAAK;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/C,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC;QAC/C,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;QAClD,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,YAAY,MAAM,EAAE,CAAC,CAAC;QAC/C,IAAI,QAAQ;YAAE,OAAO,CAAC,IAAI,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC;QACrD,IAAI,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE3C,KAAK,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YAC3B,qBAAqB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;QACD,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACxB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC;QAC7D,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QAEvD,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACzF,OAAO,iBAAiB,CACtB,IAAI,EACJ,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAGjD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAMjD"}
@@ -1,7 +1,13 @@
1
1
  import { registerTscTool } from "./tsc.js";
2
2
  import { registerBuildTool } from "./build.js";
3
+ import { registerEsbuildTool } from "./esbuild.js";
4
+ import { registerViteBuildTool } from "./vite-build.js";
5
+ import { registerWebpackTool } from "./webpack.js";
3
6
  export function registerAllTools(server) {
4
7
  registerTscTool(server);
5
8
  registerBuildTool(server);
9
+ registerEsbuildTool(server);
10
+ registerViteBuildTool(server);
11
+ registerWebpackTool(server);
6
12
  }
7
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,eAAe,CAAC,MAAM,CAAC,CAAC;IACxB,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,eAAe,CAAC,MAAM,CAAC,CAAC;IACxB,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC9B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tsc.d.ts","sourceRoot":"","sources":["../../src/tools/tsc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QA6BhD"}
1
+ {"version":3,"file":"tsc.d.ts","sourceRoot":"","sources":["../../src/tools/tsc.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QAkDhD"}
package/dist/tools/tsc.js CHANGED
@@ -1,33 +1,45 @@
1
1
  import { z } from "zod";
2
- import { dualOutput } from "@paretools/shared";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
3
  import { tsc } from "../lib/build-runner.js";
4
4
  import { parseTscOutput } from "../lib/parsers.js";
5
- import { formatTsc } from "../lib/formatters.js";
5
+ import { formatTsc, compactTscMap, formatTscCompact } from "../lib/formatters.js";
6
6
  import { TscResultSchema } from "../schemas/index.js";
7
7
  export function registerTscTool(server) {
8
8
  server.registerTool("tsc", {
9
9
  title: "TypeScript Check",
10
10
  description: "Runs the TypeScript compiler and returns structured diagnostics (file, line, column, code, message). Use instead of running `tsc` in the terminal.",
11
11
  inputSchema: {
12
- path: z.string().optional().describe("Project root path (default: cwd)"),
12
+ path: z
13
+ .string()
14
+ .max(INPUT_LIMITS.PATH_MAX)
15
+ .optional()
16
+ .describe("Project root path (default: cwd)"),
13
17
  noEmit: z
14
18
  .boolean()
15
19
  .optional()
16
20
  .default(true)
17
21
  .describe("Skip emitting output files (default: true)"),
18
- project: z.string().optional().describe("Path to tsconfig.json"),
22
+ project: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Path to tsconfig.json"),
23
+ compact: z
24
+ .boolean()
25
+ .optional()
26
+ .default(true)
27
+ .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
19
28
  },
20
29
  outputSchema: TscResultSchema,
21
- }, async ({ path, noEmit, project }) => {
30
+ }, async ({ path, noEmit, project, compact }) => {
22
31
  const cwd = path || process.cwd();
32
+ if (project)
33
+ assertNoFlagInjection(project, "project");
23
34
  const args = [];
24
35
  if (noEmit !== false)
25
36
  args.push("--noEmit");
26
37
  if (project)
27
38
  args.push("--project", project);
28
39
  const result = await tsc(args, cwd);
40
+ const rawOutput = result.stdout + "\n" + result.stderr;
29
41
  const data = parseTscOutput(result.stdout, result.stderr, result.exitCode);
30
- return dualOutput(data, formatTsc);
42
+ return compactDualOutput(data, rawOutput, formatTsc, compactTscMap, formatTscCompact, compact === false);
31
43
  });
32
44
  }
33
45
  //# sourceMappingURL=tsc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tsc.js","sourceRoot":"","sources":["../../src/tools/tsc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,MAAM,CAAC,YAAY,CACjB,KAAK,EACL;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,oJAAoJ;QACtJ,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACxE,MAAM,EAAE,CAAC;iBACN,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,4CAA4C,CAAC;YACzD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;SACjE;QACD,YAAY,EAAE,eAAe;KAC9B,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QAClC,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,MAAM,KAAK,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3E,OAAO,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tsc.js","sourceRoot":"","sources":["../../src/tools/tsc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,MAAM,CAAC,YAAY,CACjB,KAAK,EACL;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EACT,oJAAoJ;QACtJ,WAAW,EAAE;YACX,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,MAAM,EAAE,CAAC;iBACN,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,4CAA4C,CAAC;YACzD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAC3F,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,YAAY,EAAE,eAAe;KAC9B,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3C,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,IAAI,OAAO;YAAE,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAEvD,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,IAAI,MAAM,KAAK,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAE7C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;QACvD,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC3E,OAAO,iBAAiB,CACtB,IAAI,EACJ,SAAS,EACT,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerViteBuildTool(server: McpServer): void;
3
+ //# sourceMappingURL=vite-build.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-build.d.ts","sourceRoot":"","sources":["../../src/tools/vite-build.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,QAoEtD"}
@@ -0,0 +1,58 @@
1
+ import { z } from "zod";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
+ import { viteCmd } from "../lib/build-runner.js";
4
+ import { parseViteBuildOutput } from "../lib/parsers.js";
5
+ import { formatViteBuild, compactViteBuildMap, formatViteBuildCompact } from "../lib/formatters.js";
6
+ import { ViteBuildResultSchema } from "../schemas/index.js";
7
+ export function registerViteBuildTool(server) {
8
+ server.registerTool("vite-build", {
9
+ title: "Vite Build",
10
+ description: "Runs Vite production build and returns structured output files with sizes. Use instead of running `vite build` in the terminal.",
11
+ inputSchema: {
12
+ path: z
13
+ .string()
14
+ .max(INPUT_LIMITS.PATH_MAX)
15
+ .optional()
16
+ .describe("Project root path (default: cwd)"),
17
+ mode: z
18
+ .string()
19
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
20
+ .optional()
21
+ .default("production")
22
+ .describe("Build mode (default: production)"),
23
+ args: z
24
+ .array(z.string().max(INPUT_LIMITS.STRING_MAX))
25
+ .max(INPUT_LIMITS.ARRAY_MAX)
26
+ .optional()
27
+ .default([])
28
+ .describe("Additional Vite build flags"),
29
+ compact: z
30
+ .boolean()
31
+ .optional()
32
+ .default(true)
33
+ .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
34
+ },
35
+ outputSchema: ViteBuildResultSchema,
36
+ }, async ({ path, mode, args, compact }) => {
37
+ const cwd = path || process.cwd();
38
+ if (mode)
39
+ assertNoFlagInjection(mode, "mode");
40
+ for (const a of args ?? []) {
41
+ assertNoFlagInjection(a, "args");
42
+ }
43
+ const cliArgs = [];
44
+ if (mode && mode !== "production") {
45
+ cliArgs.push("--mode", mode);
46
+ }
47
+ if (args) {
48
+ cliArgs.push(...args);
49
+ }
50
+ const start = Date.now();
51
+ const result = await viteCmd(cliArgs, cwd);
52
+ const duration = Math.round((Date.now() - start) / 100) / 10;
53
+ const rawOutput = result.stdout + "\n" + result.stderr;
54
+ const data = parseViteBuildOutput(result.stdout, result.stderr, result.exitCode, duration);
55
+ return compactDualOutput(data, rawOutput, formatViteBuild, compactViteBuildMap, formatViteBuildCompact, compact === false);
56
+ });
57
+ }
58
+ //# sourceMappingURL=vite-build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vite-build.js","sourceRoot":"","sources":["../../src/tools/vite-build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerWebpackTool(server: McpServer): void;
3
+ //# sourceMappingURL=webpack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webpack.d.ts","sourceRoot":"","sources":["../../src/tools/webpack.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAuEpD"}
@@ -0,0 +1,63 @@
1
+ import { z } from "zod";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
+ import { webpackCmd } from "../lib/build-runner.js";
4
+ import { parseWebpackOutput } from "../lib/parsers.js";
5
+ import { formatWebpack, compactWebpackMap, formatWebpackCompact } from "../lib/formatters.js";
6
+ import { WebpackResultSchema } from "../schemas/index.js";
7
+ export function registerWebpackTool(server) {
8
+ server.registerTool("webpack", {
9
+ title: "webpack",
10
+ description: "Runs webpack build with JSON stats output and returns structured assets, errors, and warnings. Use instead of running `webpack` in the terminal.",
11
+ inputSchema: {
12
+ path: z
13
+ .string()
14
+ .max(INPUT_LIMITS.PATH_MAX)
15
+ .optional()
16
+ .describe("Project root path (default: cwd)"),
17
+ config: z
18
+ .string()
19
+ .max(INPUT_LIMITS.PATH_MAX)
20
+ .optional()
21
+ .describe("Path to webpack config file"),
22
+ mode: z
23
+ .enum(["production", "development", "none"])
24
+ .optional()
25
+ .describe("Build mode (production, development, none)"),
26
+ args: z
27
+ .array(z.string().max(INPUT_LIMITS.STRING_MAX))
28
+ .max(INPUT_LIMITS.ARRAY_MAX)
29
+ .optional()
30
+ .default([])
31
+ .describe("Additional webpack flags"),
32
+ compact: z
33
+ .boolean()
34
+ .optional()
35
+ .default(true)
36
+ .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
37
+ },
38
+ outputSchema: WebpackResultSchema,
39
+ }, async ({ path, config, mode, args, compact }) => {
40
+ const cwd = path || process.cwd();
41
+ if (config)
42
+ assertNoFlagInjection(config, "config");
43
+ for (const a of args ?? []) {
44
+ assertNoFlagInjection(a, "args");
45
+ }
46
+ const cliArgs = [];
47
+ if (config)
48
+ cliArgs.push("--config", config);
49
+ if (mode)
50
+ cliArgs.push("--mode", mode);
51
+ cliArgs.push("--json");
52
+ if (args) {
53
+ cliArgs.push(...args);
54
+ }
55
+ const start = Date.now();
56
+ const result = await webpackCmd(cliArgs, cwd);
57
+ const duration = Math.round((Date.now() - start) / 100) / 10;
58
+ const rawOutput = result.stdout + "\n" + result.stderr;
59
+ const data = parseWebpackOutput(result.stdout, result.stderr, result.exitCode, duration);
60
+ return compactDualOutput(data, rawOutput, formatWebpack, compactWebpackMap, formatWebpackCompact, compact === false);
61
+ });
62
+ }
63
+ //# sourceMappingURL=webpack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webpack.js","sourceRoot":"","sources":["../../src/tools/webpack.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paretools/build",
3
- "version": "0.3.0",
3
+ "version": "0.6.0",
4
4
  "mcpName": "io.github.Dave-London/build",
5
5
  "description": "MCP server for build tools (tsc, esbuild, etc.) with structured, token-efficient output",
6
6
  "license": "MIT",
@@ -9,12 +9,24 @@
9
9
  "mcp-server",
10
10
  "model-context-protocol",
11
11
  "structured-output",
12
+ "ai",
13
+ "ai-agent",
14
+ "claude",
15
+ "cursor",
16
+ "copilot",
17
+ "token-efficient",
18
+ "devtools",
19
+ "cli",
12
20
  "build",
13
- "typescript"
21
+ "typescript",
22
+ "esbuild",
23
+ "vite",
24
+ "webpack",
25
+ "bundler"
14
26
  ],
15
- "homepage": "https://github.com/Dave-London/pare/tree/main/packages/server-build",
27
+ "homepage": "https://github.com/Dave-London/Pare/tree/main/packages/server-build",
16
28
  "engines": {
17
- "node": ">=18"
29
+ "node": ">=20"
18
30
  },
19
31
  "type": "module",
20
32
  "bin": {
@@ -31,7 +43,7 @@
31
43
  },
32
44
  "repository": {
33
45
  "type": "git",
34
- "url": "https://github.com/Dave-London/pare.git",
46
+ "url": "https://github.com/Dave-London/Pare.git",
35
47
  "directory": "packages/server-build"
36
48
  },
37
49
  "files": [
@@ -39,13 +51,13 @@
39
51
  ],
40
52
  "dependencies": {
41
53
  "@modelcontextprotocol/sdk": "^1.26.0",
42
- "zod": "^3.25.0",
43
- "@paretools/shared": "0.3.0"
54
+ "zod": "^4.3.6",
55
+ "@paretools/shared": "0.6.0"
44
56
  },
45
57
  "devDependencies": {
46
- "@types/node": "^22.0.0",
58
+ "@types/node": "^25.2.3",
47
59
  "typescript": "^5.7.0",
48
- "vitest": "^3.0.0",
60
+ "vitest": "^4.0.18",
49
61
  "@paretools/tsconfig": "0.0.0"
50
62
  },
51
63
  "scripts": {