@paretools/go 0.5.0 → 0.7.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 (51) hide show
  1. package/README.md +4 -4
  2. package/dist/index.js +1 -1
  3. package/dist/lib/formatters.d.ts +88 -1
  4. package/dist/lib/formatters.d.ts.map +1 -1
  5. package/dist/lib/formatters.js +147 -4
  6. package/dist/lib/formatters.js.map +1 -1
  7. package/dist/lib/parsers.d.ts +10 -1
  8. package/dist/lib/parsers.d.ts.map +1 -1
  9. package/dist/lib/parsers.js +70 -0
  10. package/dist/lib/parsers.js.map +1 -1
  11. package/dist/schemas/index.d.ts +45 -11
  12. package/dist/schemas/index.d.ts.map +1 -1
  13. package/dist/schemas/index.js +34 -8
  14. package/dist/schemas/index.js.map +1 -1
  15. package/dist/tools/build.d.ts.map +1 -1
  16. package/dist/tools/build.js +20 -6
  17. package/dist/tools/build.js.map +1 -1
  18. package/dist/tools/env.d.ts +3 -0
  19. package/dist/tools/env.d.ts.map +1 -0
  20. package/dist/tools/env.js +41 -0
  21. package/dist/tools/env.js.map +1 -0
  22. package/dist/tools/fmt.d.ts.map +1 -1
  23. package/dist/tools/fmt.js +20 -6
  24. package/dist/tools/fmt.js.map +1 -1
  25. package/dist/tools/generate.d.ts.map +1 -1
  26. package/dist/tools/generate.js +21 -7
  27. package/dist/tools/generate.js.map +1 -1
  28. package/dist/tools/get.d.ts +3 -0
  29. package/dist/tools/get.d.ts.map +1 -0
  30. package/dist/tools/get.js +40 -0
  31. package/dist/tools/get.js.map +1 -0
  32. package/dist/tools/index.d.ts.map +1 -1
  33. package/dist/tools/index.js +25 -7
  34. package/dist/tools/index.js.map +1 -1
  35. package/dist/tools/list.d.ts +3 -0
  36. package/dist/tools/list.d.ts.map +1 -0
  37. package/dist/tools/list.js +42 -0
  38. package/dist/tools/list.js.map +1 -0
  39. package/dist/tools/mod-tidy.d.ts.map +1 -1
  40. package/dist/tools/mod-tidy.js +15 -5
  41. package/dist/tools/mod-tidy.js.map +1 -1
  42. package/dist/tools/run.d.ts.map +1 -1
  43. package/dist/tools/run.js +31 -9
  44. package/dist/tools/run.js.map +1 -1
  45. package/dist/tools/test.d.ts.map +1 -1
  46. package/dist/tools/test.js +26 -7
  47. package/dist/tools/test.js.map +1 -1
  48. package/dist/tools/vet.d.ts.map +1 -1
  49. package/dist/tools/vet.js +20 -6
  50. package/dist/tools/vet.js.map +1 -1
  51. package/package.json +4 -4
package/dist/tools/run.js CHANGED
@@ -1,38 +1,60 @@
1
1
  import { z } from "zod";
2
- import { dualOutput } from "@paretools/shared";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
3
  import { goCmd } from "../lib/go-runner.js";
4
4
  import { parseGoRunOutput } from "../lib/parsers.js";
5
- import { formatGoRun } from "../lib/formatters.js";
5
+ import { formatGoRun, compactRunMap, formatRunCompact } from "../lib/formatters.js";
6
6
  import { GoRunResultSchema } from "../schemas/index.js";
7
7
  export function registerRunTool(server) {
8
8
  server.registerTool("run", {
9
9
  title: "Go Run",
10
10
  description: "Runs a Go program and returns structured output (stdout, stderr, exit code). Use instead of running `go run` in the terminal.",
11
11
  inputSchema: {
12
- path: z.string().optional().describe("Project root path (default: cwd)"),
13
- file: z.string().optional().default(".").describe("Go file or package to run (default: .)"),
12
+ path: z
13
+ .string()
14
+ .max(INPUT_LIMITS.PATH_MAX)
15
+ .optional()
16
+ .describe("Project root path (default: cwd)"),
17
+ file: z
18
+ .string()
19
+ .max(INPUT_LIMITS.PATH_MAX)
20
+ .optional()
21
+ .default(".")
22
+ .describe("Go file or package to run (default: .)"),
14
23
  args: z
15
- .array(z.string())
24
+ .array(z.string().max(INPUT_LIMITS.STRING_MAX))
25
+ .max(INPUT_LIMITS.ARRAY_MAX)
16
26
  .optional()
17
27
  .default([])
18
28
  .describe("Arguments to pass to the program"),
19
29
  buildArgs: z
20
- .array(z.string())
30
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
31
+ .max(INPUT_LIMITS.ARRAY_MAX)
21
32
  .optional()
22
33
  .default([])
23
34
  .describe("Build flags to pass to go run (e.g., -race, -tags)"),
35
+ compact: z
36
+ .boolean()
37
+ .optional()
38
+ .default(true)
39
+ .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
24
40
  },
25
41
  outputSchema: GoRunResultSchema,
26
- }, async ({ path, file, args, buildArgs }) => {
42
+ }, async ({ path, file, args, buildArgs, compact }) => {
27
43
  const cwd = path || process.cwd();
28
- const cmdArgs = ["run", ...(buildArgs || []), file || "."];
44
+ const target = file || ".";
45
+ assertNoFlagInjection(target, "file");
46
+ for (const a of buildArgs ?? []) {
47
+ assertNoFlagInjection(a, "buildArgs");
48
+ }
49
+ const cmdArgs = ["run", ...(buildArgs || []), target];
29
50
  const programArgs = args || [];
30
51
  if (programArgs.length > 0) {
31
52
  cmdArgs.push("--", ...programArgs);
32
53
  }
33
54
  const result = await goCmd(cmdArgs, cwd);
34
55
  const data = parseGoRunOutput(result.stdout, result.stderr, result.exitCode);
35
- return dualOutput(data, formatGoRun);
56
+ const rawOutput = (result.stdout + "\n" + result.stderr).trim();
57
+ return compactDualOutput(data, rawOutput, formatGoRun, compactRunMap, formatRunCompact, compact === false);
36
58
  });
37
59
  }
38
60
  //# sourceMappingURL=run.js.map
@@ -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,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,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,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACxE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YAC3F,IAAI,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,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;iBACjB,QAAQ,EAAE;iBACV,OAAO,CAAC,EAAE,CAAC;iBACX,QAAQ,CAAC,oDAAoD,CAAC;SAClE;QACD,YAAY,EAAE,iBAAiB;KAChC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC;QAC3D,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,OAAO,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACvC,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,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QA4BjD"}
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,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAwDjD"}
@@ -1,31 +1,50 @@
1
1
  import { z } from "zod";
2
- import { dualOutput } from "@paretools/shared";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
3
  import { goCmd } from "../lib/go-runner.js";
4
4
  import { parseGoTestJson } from "../lib/parsers.js";
5
- import { formatGoTest } from "../lib/formatters.js";
5
+ import { formatGoTest, compactTestMap, formatTestCompact } from "../lib/formatters.js";
6
6
  import { GoTestResultSchema } from "../schemas/index.js";
7
7
  export function registerTestTool(server) {
8
8
  server.registerTool("test", {
9
9
  title: "Go Test",
10
10
  description: "Runs go test and returns structured test results (name, status, package, elapsed). Use instead of running `go test` 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
  packages: z
14
- .array(z.string())
18
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
19
+ .max(INPUT_LIMITS.ARRAY_MAX)
15
20
  .optional()
16
21
  .default(["./..."])
17
22
  .describe("Packages to test (default: ./...)"),
18
- run: z.string().optional().describe("Test name filter regex"),
23
+ run: z
24
+ .string()
25
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
26
+ .optional()
27
+ .describe("Test name filter regex"),
28
+ compact: z
29
+ .boolean()
30
+ .optional()
31
+ .default(true)
32
+ .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
19
33
  },
20
34
  outputSchema: GoTestResultSchema,
21
- }, async ({ path, packages, run: runFilter }) => {
35
+ }, async ({ path, packages, run: runFilter, compact }) => {
22
36
  const cwd = path || process.cwd();
37
+ for (const p of packages ?? []) {
38
+ assertNoFlagInjection(p, "packages");
39
+ }
40
+ if (runFilter)
41
+ assertNoFlagInjection(runFilter, "run");
23
42
  const args = ["test", "-json", ...(packages || ["./..."])];
24
43
  if (runFilter)
25
44
  args.push("-run", runFilter);
26
45
  const result = await goCmd(args, cwd);
27
46
  const data = parseGoTestJson(result.stdout, result.exitCode);
28
- return dualOutput(data, formatGoTest);
47
+ return compactDualOutput(data, result.stdout, formatGoTest, compactTestMap, formatTestCompact, compact === false);
29
48
  });
30
49
  }
31
50
  //# sourceMappingURL=test.js.map
@@ -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,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,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,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACxE,QAAQ,EAAE,CAAC;iBACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;iBAClB,QAAQ,CAAC,mCAAmC,CAAC;YAChD,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;SAC9D;QACD,YAAY,EAAE,kBAAkB;KACjC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE;QAC3C,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,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,UAAU,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACxC,CAAC,CACF,CAAC;AACJ,CAAC"}
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,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 +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,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QAwBhD"}
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,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QA+ChD"}
package/dist/tools/vet.js CHANGED
@@ -1,27 +1,41 @@
1
1
  import { z } from "zod";
2
- import { dualOutput } from "@paretools/shared";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
3
  import { goCmd } from "../lib/go-runner.js";
4
4
  import { parseGoVetOutput } from "../lib/parsers.js";
5
- import { formatGoVet } from "../lib/formatters.js";
5
+ import { formatGoVet, compactVetMap, formatVetCompact } from "../lib/formatters.js";
6
6
  import { GoVetResultSchema } from "../schemas/index.js";
7
7
  export function registerVetTool(server) {
8
8
  server.registerTool("vet", {
9
9
  title: "Go Vet",
10
10
  description: "Runs go vet and returns structured static analysis diagnostics. Use instead of running `go vet` 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
  packages: z
14
- .array(z.string())
18
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
19
+ .max(INPUT_LIMITS.ARRAY_MAX)
15
20
  .optional()
16
21
  .default(["./..."])
17
22
  .describe("Packages to vet (default: ./...)"),
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."),
18
28
  },
19
29
  outputSchema: GoVetResultSchema,
20
- }, async ({ path, packages }) => {
30
+ }, async ({ path, packages, compact }) => {
21
31
  const cwd = path || process.cwd();
32
+ for (const p of packages ?? []) {
33
+ assertNoFlagInjection(p, "packages");
34
+ }
22
35
  const result = await goCmd(["vet", ...(packages || ["./..."])], cwd);
23
36
  const data = parseGoVetOutput(result.stdout, result.stderr);
24
- return dualOutput(data, formatGoVet);
37
+ const rawOutput = (result.stdout + "\n" + result.stderr).trim();
38
+ return compactDualOutput(data, rawOutput, formatGoVet, compactVetMap, formatVetCompact, compact === false);
25
39
  });
26
40
  }
27
41
  //# sourceMappingURL=vet.js.map
@@ -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,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,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,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YACxE,QAAQ,EAAE,CAAC;iBACR,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;iBAClB,QAAQ,CAAC,kCAAkC,CAAC;SAChD;QACD,YAAY,EAAE,iBAAiB;KAChC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3B,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,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,OAAO,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACvC,CAAC,CACF,CAAC;AACJ,CAAC"}
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,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paretools/go",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "mcpName": "io.github.Dave-London/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",
@@ -22,7 +22,7 @@
22
22
  "gofmt",
23
23
  "go-test"
24
24
  ],
25
- "homepage": "https://github.com/Dave-London/pare/tree/main/packages/server-go",
25
+ "homepage": "https://github.com/Dave-London/Pare/tree/main/packages/server-go",
26
26
  "engines": {
27
27
  "node": ">=20"
28
28
  },
@@ -41,7 +41,7 @@
41
41
  },
42
42
  "repository": {
43
43
  "type": "git",
44
- "url": "https://github.com/Dave-London/pare.git",
44
+ "url": "https://github.com/Dave-London/Pare.git",
45
45
  "directory": "packages/server-go"
46
46
  },
47
47
  "files": [
@@ -50,7 +50,7 @@
50
50
  "dependencies": {
51
51
  "@modelcontextprotocol/sdk": "^1.26.0",
52
52
  "zod": "^4.3.6",
53
- "@paretools/shared": "0.5.0"
53
+ "@paretools/shared": "0.7.0"
54
54
  },
55
55
  "devDependencies": {
56
56
  "@types/node": "^25.2.3",