@paretools/go 0.8.5 → 0.9.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 (50) hide show
  1. package/dist/lib/formatters.d.ts +25 -9
  2. package/dist/lib/formatters.d.ts.map +1 -1
  3. package/dist/lib/formatters.js +208 -29
  4. package/dist/lib/formatters.js.map +1 -1
  5. package/dist/lib/go-runner.d.ts +1 -1
  6. package/dist/lib/go-runner.d.ts.map +1 -1
  7. package/dist/lib/go-runner.js +3 -3
  8. package/dist/lib/go-runner.js.map +1 -1
  9. package/dist/lib/parsers.d.ts +45 -10
  10. package/dist/lib/parsers.d.ts.map +1 -1
  11. package/dist/lib/parsers.js +490 -33
  12. package/dist/lib/parsers.js.map +1 -1
  13. package/dist/schemas/index.d.ts +148 -4
  14. package/dist/schemas/index.d.ts.map +1 -1
  15. package/dist/schemas/index.js +96 -5
  16. package/dist/schemas/index.js.map +1 -1
  17. package/dist/tools/build.d.ts.map +1 -1
  18. package/dist/tools/build.js +61 -2
  19. package/dist/tools/build.js.map +1 -1
  20. package/dist/tools/env.d.ts.map +1 -1
  21. package/dist/tools/env.js +14 -4
  22. package/dist/tools/env.js.map +1 -1
  23. package/dist/tools/fmt.d.ts.map +1 -1
  24. package/dist/tools/fmt.js +26 -3
  25. package/dist/tools/fmt.js.map +1 -1
  26. package/dist/tools/generate.d.ts.map +1 -1
  27. package/dist/tools/generate.js +54 -2
  28. package/dist/tools/generate.js.map +1 -1
  29. package/dist/tools/get.d.ts.map +1 -1
  30. package/dist/tools/get.js +34 -3
  31. package/dist/tools/get.js.map +1 -1
  32. package/dist/tools/golangci-lint.d.ts.map +1 -1
  33. package/dist/tools/golangci-lint.js +144 -4
  34. package/dist/tools/golangci-lint.js.map +1 -1
  35. package/dist/tools/list.d.ts.map +1 -1
  36. package/dist/tools/list.js +66 -5
  37. package/dist/tools/list.js.map +1 -1
  38. package/dist/tools/mod-tidy.d.ts.map +1 -1
  39. package/dist/tools/mod-tidy.js +69 -4
  40. package/dist/tools/mod-tidy.js.map +1 -1
  41. package/dist/tools/run.d.ts.map +1 -1
  42. package/dist/tools/run.js +59 -6
  43. package/dist/tools/run.js.map +1 -1
  44. package/dist/tools/test.d.ts.map +1 -1
  45. package/dist/tools/test.js +86 -2
  46. package/dist/tools/test.js.map +1 -1
  47. package/dist/tools/vet.d.ts.map +1 -1
  48. package/dist/tools/vet.js +54 -4
  49. package/dist/tools/vet.js.map +1 -1
  50. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"mod-tidy.d.ts","sourceRoot":"","sources":["../../src/tools/mod-tidy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,6DAA6D;AAC7D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAsCpD"}
1
+ {"version":3,"file":"mod-tidy.d.ts","sourceRoot":"","sources":["../../src/tools/mod-tidy.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBzE,6DAA6D;AAC7D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAmGpD"}
@@ -1,9 +1,22 @@
1
1
  import { z } from "zod";
2
- import { compactDualOutput, INPUT_LIMITS } from "@paretools/shared";
2
+ import { createHash } from "node:crypto";
3
+ import { readFile } from "node:fs/promises";
4
+ import { join } from "node:path";
5
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
6
  import { goCmd } from "../lib/go-runner.js";
4
7
  import { parseGoModTidyOutput } from "../lib/parsers.js";
5
8
  import { formatGoModTidy, compactModTidyMap, formatModTidyCompact } from "../lib/formatters.js";
6
9
  import { GoModTidyResultSchema } from "../schemas/index.js";
10
+ /** Compute a quick hash of a file's contents, or return undefined if the file doesn't exist. */
11
+ async function hashFile(filePath) {
12
+ try {
13
+ const content = await readFile(filePath);
14
+ return createHash("md5").update(content).digest("hex");
15
+ }
16
+ catch {
17
+ return undefined;
18
+ }
19
+ }
7
20
  /** Registers the `mod-tidy` tool on the given MCP server. */
8
21
  export function registerModTidyTool(server) {
9
22
  server.registerTool("mod-tidy", {
@@ -15,6 +28,31 @@ export function registerModTidyTool(server) {
15
28
  .max(INPUT_LIMITS.PATH_MAX)
16
29
  .optional()
17
30
  .describe("Project root path (default: cwd)"),
31
+ diff: z
32
+ .boolean()
33
+ .optional()
34
+ .default(false)
35
+ .describe("Non-destructive check mode: show what changes would be made without modifying files (-diff)"),
36
+ verbose: z
37
+ .boolean()
38
+ .optional()
39
+ .default(false)
40
+ .describe("Print information about removed modules (-v)"),
41
+ continueOnError: z
42
+ .boolean()
43
+ .optional()
44
+ .default(false)
45
+ .describe("Attempt to proceed despite errors encountered while loading packages (-e)"),
46
+ goVersion: z
47
+ .string()
48
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
49
+ .optional()
50
+ .describe("Set the expected Go language version (-go=<version>). Example: '1.21'"),
51
+ compat: z
52
+ .string()
53
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
54
+ .optional()
55
+ .describe("Preserve backward compatibility with the specified Go version (-compat=<version>). Example: '1.20'"),
18
56
  compact: z
19
57
  .boolean()
20
58
  .optional()
@@ -22,10 +60,37 @@ export function registerModTidyTool(server) {
22
60
  .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
23
61
  },
24
62
  outputSchema: GoModTidyResultSchema,
25
- }, async ({ path, compact }) => {
63
+ }, async ({ path, diff, verbose, continueOnError, goVersion, compat, compact }) => {
26
64
  const cwd = path || process.cwd();
27
- const result = await goCmd(["mod", "tidy"], cwd);
28
- const data = parseGoModTidyOutput(result.stdout, result.stderr, result.exitCode);
65
+ if (goVersion)
66
+ assertNoFlagInjection(goVersion, "goVersion");
67
+ if (compat)
68
+ assertNoFlagInjection(compat, "compat");
69
+ // Hash go.mod and go.sum before tidy to detect changes (Gap #156)
70
+ const goModPath = join(cwd, "go.mod");
71
+ const goSumPath = join(cwd, "go.sum");
72
+ const [goModHashBefore, goSumHashBefore] = await Promise.all([
73
+ hashFile(goModPath),
74
+ hashFile(goSumPath),
75
+ ]);
76
+ const args = ["mod", "tidy"];
77
+ if (diff)
78
+ args.push("-diff");
79
+ if (verbose)
80
+ args.push("-v");
81
+ if (continueOnError)
82
+ args.push("-e");
83
+ if (goVersion)
84
+ args.push(`-go=${goVersion}`);
85
+ if (compat)
86
+ args.push(`-compat=${compat}`);
87
+ const result = await goCmd(args, cwd);
88
+ // Hash go.mod and go.sum after tidy
89
+ const [goModHashAfter, goSumHashAfter] = await Promise.all([
90
+ hashFile(goModPath),
91
+ hashFile(goSumPath),
92
+ ]);
93
+ const data = parseGoModTidyOutput(result.stdout, result.stderr, result.exitCode, goModHashBefore, goModHashAfter, goSumHashBefore, goSumHashAfter);
29
94
  const rawOutput = (result.stdout + "\n" + result.stderr).trim();
30
95
  return compactDualOutput(data, rawOutput, formatGoModTidy, compactModTidyMap, formatModTidyCompact, compact === false);
31
96
  });
@@ -1 +1 @@
1
- {"version":3,"file":"mod-tidy.js","sourceRoot":"","sources":["../../src/tools/mod-tidy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,6DAA6D;AAC7D,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,8HAA8H;QAChI,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,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,YAAY,EAAE,qBAAqB;KACpC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QACjD,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjF,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAChE,OAAO,iBAAiB,CACtB,IAAI,EACJ,SAAS,EACT,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"mod-tidy.js","sourceRoot":"","sources":["../../src/tools/mod-tidy.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/tools/run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QAkEhD"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/tools/run.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QAyIhD"}
package/dist/tools/run.js CHANGED
@@ -32,7 +32,37 @@ export function registerRunTool(server) {
32
32
  .max(INPUT_LIMITS.ARRAY_MAX)
33
33
  .optional()
34
34
  .default([])
35
- .describe("Build flags to pass to go run (e.g., -race, -tags)"),
35
+ .describe("Build flags to pass to go run (e.g., '-tags=integration'). " +
36
+ "Note: flags like -race and -tags have dedicated params for discoverability, " +
37
+ "but can also be passed here. Flag injection checks are not applied to buildArgs " +
38
+ "since they are intentionally build flags."),
39
+ race: z.boolean().optional().default(false).describe("Enable data race detection (-race)"),
40
+ tags: z
41
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
42
+ .max(INPUT_LIMITS.ARRAY_MAX)
43
+ .optional()
44
+ .describe("Build tags for conditional compilation (-tags)"),
45
+ timeout: z
46
+ .number()
47
+ .int()
48
+ .min(1000)
49
+ .max(600000)
50
+ .optional()
51
+ .describe("Program execution timeout in milliseconds. Overrides the default 300s build timeout. " +
52
+ "Min: 1000 (1s), Max: 600000 (10m)."),
53
+ exec: z
54
+ .string()
55
+ .max(INPUT_LIMITS.PATH_MAX)
56
+ .optional()
57
+ .describe("Custom execution wrapper (-exec). The built binary is passed to this command instead of being run directly."),
58
+ maxOutput: z
59
+ .number()
60
+ .int()
61
+ .min(1024)
62
+ .max(1048576)
63
+ .optional()
64
+ .describe("Maximum length in characters for stdout/stderr output. Output exceeding this limit will be truncated. " +
65
+ "Default: no limit. Max: 1048576 (1MB)."),
36
66
  compact: z
37
67
  .boolean()
38
68
  .optional()
@@ -40,20 +70,43 @@ export function registerRunTool(server) {
40
70
  .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
41
71
  },
42
72
  outputSchema: GoRunResultSchema,
43
- }, async ({ path, file, args, buildArgs, compact }) => {
73
+ }, async ({ path, file, args, buildArgs, race, tags, timeout, exec: execWrapper, maxOutput, compact, }) => {
44
74
  const cwd = path || process.cwd();
45
75
  const target = file || ".";
46
76
  assertNoFlagInjection(target, "file");
47
- for (const a of buildArgs ?? []) {
48
- assertNoFlagInjection(a, "buildArgs");
77
+ if (execWrapper)
78
+ assertNoFlagInjection(execWrapper, "exec");
79
+ // buildArgs are intentionally build flags (e.g., -race, -tags, -ldflags)
80
+ // so assertNoFlagInjection is not applied to them.
81
+ const cmdArgs = ["run"];
82
+ if (race)
83
+ cmdArgs.push("-race");
84
+ if (tags && tags.length > 0) {
85
+ for (const t of tags) {
86
+ assertNoFlagInjection(t, "tags");
87
+ }
88
+ cmdArgs.push("-tags", tags.join(","));
49
89
  }
50
- const cmdArgs = ["run", ...(buildArgs || []), target];
90
+ if (execWrapper)
91
+ cmdArgs.push(`-exec=${execWrapper}`);
92
+ cmdArgs.push(...(buildArgs || []), target);
51
93
  const programArgs = args || [];
52
94
  if (programArgs.length > 0) {
53
95
  cmdArgs.push("--", ...programArgs);
54
96
  }
55
- const result = await goCmd(cmdArgs, cwd);
97
+ const result = await goCmd(cmdArgs, cwd, timeout);
56
98
  const data = parseGoRunOutput(result.stdout, result.stderr, result.exitCode);
99
+ // Apply maxOutput truncation with truncation flag tracking
100
+ if (maxOutput) {
101
+ if (data.stdout && data.stdout.length > maxOutput) {
102
+ data.stdout = data.stdout.slice(0, maxOutput) + "\n... (truncated)";
103
+ data.stdoutTruncated = true;
104
+ }
105
+ if (data.stderr && data.stderr.length > maxOutput) {
106
+ data.stderr = data.stderr.slice(0, maxOutput) + "\n... (truncated)";
107
+ data.stderrTruncated = true;
108
+ }
109
+ }
57
110
  const rawOutput = (result.stdout + "\n" + result.stderr).trim();
58
111
  return compactDualOutput(data, rawOutput, formatGoRun, compactRunMap, formatRunCompact, compact === false);
59
112
  });
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/tools/run.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,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,wDAAwD;AACxD,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,MAAM,CAAC,YAAY,CACjB,KAAK,EACL;QACE,KAAK,EAAE,QAAQ;QACf,WAAW,EACT,+HAA+H;QACjI,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,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,OAAO,CAAC,GAAG,CAAC;iBACZ,QAAQ,CAAC,wCAAwC,CAAC;YACrD,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,kCAAkC,CAAC;YAC/C,SAAS,EAAE,CAAC;iBACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;iBACpD,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;iBAC3B,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,oDAAoD,CAAC;YACjE,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,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QACjD,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,CAAC;QAC3B,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,SAAS,IAAI,EAAE,EAAE,CAAC;YAChC,qBAAqB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QACxC,CAAC;QACD,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAC/B,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7E,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAChE,OAAO,iBAAiB,CACtB,IAAI,EACJ,SAAS,EACT,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/tools/run.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/tools/test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAwDjD"}
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/tools/test.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QA+JjD"}
@@ -26,6 +26,59 @@ export function registerTestTool(server) {
26
26
  .max(INPUT_LIMITS.SHORT_STRING_MAX)
27
27
  .optional()
28
28
  .describe("Test name filter regex"),
29
+ failfast: z
30
+ .boolean()
31
+ .optional()
32
+ .default(false)
33
+ .describe("Stop running tests after the first failure (-failfast). Saves time and tokens."),
34
+ short: z
35
+ .boolean()
36
+ .optional()
37
+ .default(false)
38
+ .describe("Tell long-running tests to shorten their run time (-short). Enables quick smoke tests."),
39
+ race: z
40
+ .boolean()
41
+ .optional()
42
+ .default(false)
43
+ .describe("Enable data race detection during tests (-race)"),
44
+ timeout: z
45
+ .string()
46
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
47
+ .optional()
48
+ .describe("Test execution timeout (-timeout <d>). Examples: '30s', '5m', '1h'. Default: 10m."),
49
+ count: z
50
+ .number()
51
+ .int()
52
+ .min(1)
53
+ .max(1000)
54
+ .optional()
55
+ .describe("Run each test and benchmark N times (-count <n>). Useful for verifying flaky test fixes."),
56
+ cover: z
57
+ .boolean()
58
+ .optional()
59
+ .default(false)
60
+ .describe("Enable test coverage analysis (-cover)"),
61
+ coverprofile: z
62
+ .string()
63
+ .max(INPUT_LIMITS.PATH_MAX)
64
+ .optional()
65
+ .describe("Write a coverage profile to the named file (-coverprofile <file>). Implies -cover."),
66
+ tags: z
67
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
68
+ .max(INPUT_LIMITS.ARRAY_MAX)
69
+ .optional()
70
+ .describe("Build tags required to run tests correctly (-tags)"),
71
+ parallel: z
72
+ .number()
73
+ .int()
74
+ .min(1)
75
+ .max(1000)
76
+ .optional()
77
+ .describe("Maximum number of tests to run in parallel (-parallel <n>). Default: GOMAXPROCS."),
78
+ shuffle: z
79
+ .enum(["on", "off"])
80
+ .optional()
81
+ .describe("Randomize test execution order (-shuffle). 'on' uses a random seed, 'off' is the default."),
29
82
  compact: z
30
83
  .boolean()
31
84
  .optional()
@@ -33,14 +86,45 @@ export function registerTestTool(server) {
33
86
  .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
34
87
  },
35
88
  outputSchema: GoTestResultSchema,
36
- }, async ({ path, packages, run: runFilter, compact }) => {
89
+ }, async ({ path, packages, run: runFilter, failfast, short, race, timeout, count, cover, coverprofile, tags, parallel, shuffle, compact, }) => {
37
90
  const cwd = path || process.cwd();
38
91
  for (const p of packages ?? []) {
39
92
  assertNoFlagInjection(p, "packages");
40
93
  }
41
94
  if (runFilter)
42
95
  assertNoFlagInjection(runFilter, "run");
43
- const args = ["test", "-json", ...(packages || ["./..."])];
96
+ if (timeout)
97
+ assertNoFlagInjection(timeout, "timeout");
98
+ if (coverprofile)
99
+ assertNoFlagInjection(coverprofile, "coverprofile");
100
+ const args = ["test", "-json"];
101
+ if (failfast)
102
+ args.push("-failfast");
103
+ if (short)
104
+ args.push("-short");
105
+ if (race)
106
+ args.push("-race");
107
+ if (timeout)
108
+ args.push("-timeout", timeout);
109
+ if (count !== undefined)
110
+ args.push("-count", String(count));
111
+ if (coverprofile) {
112
+ args.push("-coverprofile", coverprofile);
113
+ }
114
+ else if (cover) {
115
+ args.push("-cover");
116
+ }
117
+ if (tags && tags.length > 0) {
118
+ for (const t of tags) {
119
+ assertNoFlagInjection(t, "tags");
120
+ }
121
+ args.push("-tags", tags.join(","));
122
+ }
123
+ if (parallel !== undefined)
124
+ args.push("-parallel", String(parallel));
125
+ if (shuffle === "on")
126
+ args.push("-shuffle=on");
127
+ args.push(...(packages || ["./..."]));
44
128
  if (runFilter)
45
129
  args.push("-run", runFilter);
46
130
  const result = await goCmd(args, cwd);
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/tools/test.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,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,yDAAyD;AACzD,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,YAAY,CACjB,MAAM,EACN;QACE,KAAK,EAAE,SAAS;QAChB,WAAW,EACT,sIAAsI;QACxI,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,QAAQ,EAAE,CAAC;iBACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;iBACpD,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;iBAC3B,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;iBAClB,QAAQ,CAAC,mCAAmC,CAAC;YAChD,GAAG,EAAE,CAAC;iBACH,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC;iBAClC,QAAQ,EAAE;iBACV,QAAQ,CAAC,wBAAwB,CAAC;YACrC,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,YAAY,EAAE,kBAAkB;KACjC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QACpD,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC/B,qBAAqB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,SAAS;YAAE,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAEvD,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAE5C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7D,OAAO,iBAAiB,CACtB,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/tools/test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"vet.d.ts","sourceRoot":"","sources":["../../src/tools/vet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QA+ChD"}
1
+ {"version":3,"file":"vet.d.ts","sourceRoot":"","sources":["../../src/tools/vet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QAgGhD"}
package/dist/tools/vet.js CHANGED
@@ -8,7 +8,7 @@ import { GoVetResultSchema } from "../schemas/index.js";
8
8
  export function registerVetTool(server) {
9
9
  server.registerTool("vet", {
10
10
  title: "Go Vet",
11
- description: "Runs go vet and returns structured static analysis diagnostics. Use instead of running `go vet` in the terminal.",
11
+ description: "Runs go vet and returns structured static analysis diagnostics with analyzer names. Uses -json flag for native JSON output with automatic text fallback. Use instead of running `go vet` in the terminal.",
12
12
  inputSchema: {
13
13
  path: z
14
14
  .string()
@@ -21,6 +21,28 @@ export function registerVetTool(server) {
21
21
  .optional()
22
22
  .default(["./..."])
23
23
  .describe("Packages to vet (default: ./...)"),
24
+ analyzers: z
25
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
26
+ .max(INPUT_LIMITS.ARRAY_MAX)
27
+ .optional()
28
+ .describe("Specific analyzers to enable or disable. Prefix with '-' to disable. Example: ['shadow', '-printf']"),
29
+ tags: z
30
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
31
+ .max(INPUT_LIMITS.ARRAY_MAX)
32
+ .optional()
33
+ .describe("Build tags for correct vetting of conditionally compiled code (-tags)"),
34
+ contextLines: z
35
+ .number()
36
+ .int()
37
+ .min(0)
38
+ .max(50)
39
+ .optional()
40
+ .describe("Number of context lines to include around each diagnostic (-c=N)"),
41
+ vettool: z
42
+ .string()
43
+ .max(INPUT_LIMITS.PATH_MAX)
44
+ .optional()
45
+ .describe("Path to a custom analyzer tool binary (-vettool)"),
24
46
  compact: z
25
47
  .boolean()
26
48
  .optional()
@@ -28,13 +50,41 @@ export function registerVetTool(server) {
28
50
  .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
29
51
  },
30
52
  outputSchema: GoVetResultSchema,
31
- }, async ({ path, packages, compact }) => {
53
+ }, async ({ path, packages, analyzers, tags, contextLines, vettool, compact }) => {
32
54
  const cwd = path || process.cwd();
33
55
  for (const p of packages ?? []) {
34
56
  assertNoFlagInjection(p, "packages");
35
57
  }
36
- const result = await goCmd(["vet", ...(packages || ["./..."])], cwd);
37
- const data = parseGoVetOutput(result.stdout, result.stderr);
58
+ if (vettool)
59
+ assertNoFlagInjection(vettool, "vettool");
60
+ const args = ["vet", "-json"];
61
+ if (tags && tags.length > 0) {
62
+ for (const t of tags) {
63
+ assertNoFlagInjection(t, "tags");
64
+ }
65
+ args.push("-tags", tags.join(","));
66
+ }
67
+ if (contextLines !== undefined)
68
+ args.push(`-c=${contextLines}`);
69
+ if (vettool)
70
+ args.push(`-vettool=${vettool}`);
71
+ if (analyzers && analyzers.length > 0) {
72
+ for (const a of analyzers) {
73
+ assertNoFlagInjection(a, "analyzers");
74
+ // Analyzers are passed as -<name> (disable) or -<name>=true (enable)
75
+ if (a.startsWith("-")) {
76
+ // Disable: go vet -<name>=false
77
+ args.push(`${a}=false`);
78
+ }
79
+ else {
80
+ // Enable: go vet -<name>
81
+ args.push(`-${a}`);
82
+ }
83
+ }
84
+ }
85
+ args.push(...(packages || ["./..."]));
86
+ const result = await goCmd(args, cwd);
87
+ const data = parseGoVetOutput(result.stdout, result.stderr, result.exitCode);
38
88
  const rawOutput = (result.stdout + "\n" + result.stderr).trim();
39
89
  return compactDualOutput(data, rawOutput, formatGoVet, compactVetMap, formatVetCompact, compact === false);
40
90
  });
@@ -1 +1 @@
1
- {"version":3,"file":"vet.js","sourceRoot":"","sources":["../../src/tools/vet.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,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,wDAAwD;AACxD,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,MAAM,CAAC,YAAY,CACjB,KAAK,EACL;QACE,KAAK,EAAE,QAAQ;QACf,WAAW,EACT,kHAAkH;QACpH,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,QAAQ,EAAE,CAAC;iBACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;iBACpD,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;iBAC3B,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;iBAClB,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,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC/B,qBAAqB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5D,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAChE,OAAO,iBAAiB,CACtB,IAAI,EACJ,SAAS,EACT,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"vet.js","sourceRoot":"","sources":["../../src/tools/vet.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paretools/go",
3
- "version": "0.8.5",
3
+ "version": "0.9.0",
4
4
  "mcpName": "io.github.Dave-London/pare-go",
5
5
  "description": "MCP server for Go tools (build, test, vet, run, mod-tidy, fmt, generate) with structured, token-efficient output",
6
6
  "license": "MIT",
@@ -50,7 +50,7 @@
50
50
  "dependencies": {
51
51
  "@modelcontextprotocol/sdk": "^1.26.0",
52
52
  "zod": "^4.3.6",
53
- "@paretools/shared": "0.8.5"
53
+ "@paretools/shared": "0.9.0"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@types/node": "^25.2.3",