@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
@@ -9,7 +9,7 @@ export const GoBuildErrorSchema = z.object({
9
9
  /** Zod schema for structured go build output with success status and error list. */
10
10
  export const GoBuildResultSchema = z.object({
11
11
  success: z.boolean(),
12
- errors: z.array(GoBuildErrorSchema),
12
+ errors: z.array(GoBuildErrorSchema).optional(),
13
13
  total: z.number(),
14
14
  });
15
15
  /** Zod schema for a single go test case with package, name, status, and optional elapsed time. */
@@ -23,7 +23,7 @@ export const GoTestCaseSchema = z.object({
23
23
  /** Zod schema for structured go test output with test list and pass/fail/skip counts. */
24
24
  export const GoTestResultSchema = z.object({
25
25
  success: z.boolean(),
26
- tests: z.array(GoTestCaseSchema),
26
+ tests: z.array(GoTestCaseSchema).optional(),
27
27
  total: z.number(),
28
28
  passed: z.number(),
29
29
  failed: z.number(),
@@ -38,30 +38,56 @@ export const GoVetDiagnosticSchema = z.object({
38
38
  });
39
39
  /** Zod schema for structured go vet output with diagnostic list and total count. */
40
40
  export const GoVetResultSchema = z.object({
41
- diagnostics: z.array(GoVetDiagnosticSchema),
41
+ diagnostics: z.array(GoVetDiagnosticSchema).optional(),
42
42
  total: z.number(),
43
43
  });
44
44
  /** Zod schema for structured go run output with stdout, stderr, and exit code. */
45
45
  export const GoRunResultSchema = z.object({
46
46
  exitCode: z.number(),
47
- stdout: z.string(),
48
- stderr: z.string(),
47
+ stdout: z.string().optional(),
48
+ stderr: z.string().optional(),
49
49
  success: z.boolean(),
50
50
  });
51
51
  /** Zod schema for structured go mod tidy output with success status and summary. */
52
52
  export const GoModTidyResultSchema = z.object({
53
53
  success: z.boolean(),
54
- summary: z.string(),
54
+ summary: z.string().optional(),
55
55
  });
56
56
  /** Zod schema for structured gofmt output with file list and count. */
57
57
  export const GoFmtResultSchema = z.object({
58
58
  success: z.boolean(),
59
59
  filesChanged: z.number(),
60
- files: z.array(z.string()),
60
+ files: z.array(z.string()).optional(),
61
61
  });
62
62
  /** Zod schema for structured go generate output with success status and output text. */
63
63
  export const GoGenerateResultSchema = z.object({
64
64
  success: z.boolean(),
65
- output: z.string(),
65
+ output: z.string().optional(),
66
+ });
67
+ /** Zod schema for structured go env output with environment variables and key fields. */
68
+ export const GoEnvResultSchema = z.object({
69
+ vars: z.record(z.string(), z.string()),
70
+ goroot: z.string(),
71
+ gopath: z.string(),
72
+ goversion: z.string(),
73
+ goos: z.string(),
74
+ goarch: z.string(),
75
+ });
76
+ /** Zod schema for a single Go package from go list output. */
77
+ export const GoListPackageSchema = z.object({
78
+ dir: z.string(),
79
+ importPath: z.string(),
80
+ name: z.string(),
81
+ goFiles: z.array(z.string()).optional(),
82
+ });
83
+ /** Zod schema for structured go list output with package list and total count. */
84
+ export const GoListResultSchema = z.object({
85
+ packages: z.array(GoListPackageSchema),
86
+ total: z.number(),
87
+ });
88
+ /** Zod schema for structured go get output with success status and output text. */
89
+ export const GoGetResultSchema = z.object({
90
+ success: z.boolean(),
91
+ output: z.string().optional(),
66
92
  });
67
93
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/tools/build.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QAwBlD"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/tools/build.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QA+ClD"}
@@ -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 { parseGoBuildOutput } from "../lib/parsers.js";
5
- import { formatGoBuild } from "../lib/formatters.js";
5
+ import { formatGoBuild, compactBuildMap, formatBuildCompact } from "../lib/formatters.js";
6
6
  import { GoBuildResultSchema } from "../schemas/index.js";
7
7
  export function registerBuildTool(server) {
8
8
  server.registerTool("build", {
9
9
  title: "Go Build",
10
10
  description: "Runs go build and returns structured error list (file, line, column, message). Use instead of running `go build` 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 build (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: GoBuildResultSchema,
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(["build", ...(packages || ["./..."])], cwd);
23
36
  const data = parseGoBuildOutput(result.stdout, result.stderr, result.exitCode);
24
- return dualOutput(data, formatGoBuild);
37
+ const rawOutput = (result.stdout + "\n" + result.stderr).trim();
38
+ return compactDualOutput(data, rawOutput, formatGoBuild, compactBuildMap, formatBuildCompact, compact === false);
25
39
  });
26
40
  }
27
41
  //# 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,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,OAAO,EACP;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,mIAAmI;QACrI,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,oCAAoC,CAAC;SAClD;QACD,YAAY,EAAE,mBAAmB;KAClC,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,OAAO,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/E,OAAO,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACzC,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,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,OAAO,EACP;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,mIAAmI;QACrI,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,oCAAoC,CAAC;YACjD,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,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,OAAO,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/E,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,aAAa,EACb,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 registerEnvTool(server: McpServer): void;
3
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/tools/env.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QA+ChD"}
@@ -0,0 +1,41 @@
1
+ import { z } from "zod";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
+ import { goCmd } from "../lib/go-runner.js";
4
+ import { parseGoEnvOutput } from "../lib/parsers.js";
5
+ import { formatGoEnv, compactEnvMap, formatEnvCompact } from "../lib/formatters.js";
6
+ import { GoEnvResultSchema } from "../schemas/index.js";
7
+ export function registerEnvTool(server) {
8
+ server.registerTool("env", {
9
+ title: "Go Env",
10
+ description: "Returns Go environment variables as structured JSON. Optionally request specific variables. Use instead of running `go env` 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
+ vars: z
18
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
19
+ .max(INPUT_LIMITS.ARRAY_MAX)
20
+ .optional()
21
+ .describe("Specific environment variables to query (e.g., ['GOROOT', 'GOPATH'])"),
22
+ compact: z
23
+ .boolean()
24
+ .optional()
25
+ .default(true)
26
+ .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
27
+ },
28
+ outputSchema: GoEnvResultSchema,
29
+ }, async ({ path, vars, compact }) => {
30
+ for (const v of vars || []) {
31
+ assertNoFlagInjection(v, "vars");
32
+ }
33
+ const cwd = path || process.cwd();
34
+ const args = ["env", "-json", ...(vars || [])];
35
+ const result = await goCmd(args, cwd);
36
+ const data = parseGoEnvOutput(result.stdout);
37
+ const rawOutput = result.stdout.trim();
38
+ return compactDualOutput(data, rawOutput, formatGoEnv, compactEnvMap, formatEnvCompact, compact === false);
39
+ });
40
+ }
41
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/tools/env.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,8IAA8I;QAChJ,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,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,QAAQ,CAAC,sEAAsE,CAAC;YACnF,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,OAAO,EAAE,EAAE,EAAE;QAChC,KAAK,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;YAC3B,qBAAqB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACvC,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 +1 @@
1
- {"version":3,"file":"fmt.d.ts","sourceRoot":"","sources":["../../src/tools/fmt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QA+BhD"}
1
+ {"version":3,"file":"fmt.d.ts","sourceRoot":"","sources":["../../src/tools/fmt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QAsDhD"}
package/dist/tools/fmt.js CHANGED
@@ -1,17 +1,22 @@
1
1
  import { z } from "zod";
2
- import { dualOutput } from "@paretools/shared";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
3
  import { gofmtCmd } from "../lib/go-runner.js";
4
4
  import { parseGoFmtOutput } from "../lib/parsers.js";
5
- import { formatGoFmt } from "../lib/formatters.js";
5
+ import { formatGoFmt, compactFmtMap, formatFmtCompact } from "../lib/formatters.js";
6
6
  import { GoFmtResultSchema } from "../schemas/index.js";
7
7
  export function registerFmtTool(server) {
8
8
  server.registerTool("fmt", {
9
9
  title: "Go Fmt",
10
10
  description: "Checks or fixes Go source formatting using gofmt. In check mode (-l), lists unformatted files. In fix mode (-w), rewrites files. Use instead of running `gofmt` 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
  patterns: z
14
- .array(z.string())
18
+ .array(z.string().max(INPUT_LIMITS.PATH_MAX))
19
+ .max(INPUT_LIMITS.ARRAY_MAX)
15
20
  .optional()
16
21
  .default(["."])
17
22
  .describe("File patterns to format (default: ['.'])"),
@@ -20,15 +25,24 @@ export function registerFmtTool(server) {
20
25
  .optional()
21
26
  .default(false)
22
27
  .describe("Check mode: list unformatted files without fixing (default: false)"),
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."),
23
33
  },
24
34
  outputSchema: GoFmtResultSchema,
25
- }, async ({ path, patterns, check }) => {
35
+ }, async ({ path, patterns, check, compact }) => {
26
36
  const cwd = path || process.cwd();
37
+ for (const p of patterns ?? []) {
38
+ assertNoFlagInjection(p, "patterns");
39
+ }
27
40
  const flag = check ? "-l" : "-w";
28
41
  const args = [flag, ...(patterns || ["."])];
29
42
  const result = await gofmtCmd(args, cwd);
30
43
  const data = parseGoFmtOutput(result.stdout, result.stderr, result.exitCode, !!check);
31
- return dualOutput(data, formatGoFmt);
44
+ const rawOutput = (result.stdout + "\n" + result.stderr).trim();
45
+ return compactDualOutput(data, rawOutput, formatGoFmt, compactFmtMap, formatFmtCompact, compact === false);
32
46
  });
33
47
  }
34
48
  //# sourceMappingURL=fmt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fmt.js","sourceRoot":"","sources":["../../src/tools/fmt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,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,kLAAkL;QACpL,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,GAAG,CAAC,CAAC;iBACd,QAAQ,CAAC,0CAA0C,CAAC;YACvD,KAAK,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,oEAAoE,CAAC;SAClF;QACD,YAAY,EAAE,iBAAiB;KAChC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;QAClC,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACtF,OAAO,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACvC,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"fmt.js","sourceRoot":"","sources":["../../src/tools/fmt.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,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,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,kLAAkL;QACpL,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,QAAQ,CAAC,CAAC;iBAC5C,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;iBAC3B,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;iBACd,QAAQ,CAAC,0CAA0C,CAAC;YACvD,KAAK,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,oEAAoE,CAAC;YACjF,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,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3C,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,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACjC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;QACtF,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 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QAwBrD"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QA+CrD"}
@@ -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 { parseGoGenerateOutput } from "../lib/parsers.js";
5
- import { formatGoGenerate } from "../lib/formatters.js";
5
+ import { formatGoGenerate, compactGenerateMap, formatGenerateCompact } from "../lib/formatters.js";
6
6
  import { GoGenerateResultSchema } from "../schemas/index.js";
7
7
  export function registerGenerateTool(server) {
8
8
  server.registerTool("generate", {
9
9
  title: "Go Generate",
10
- description: "Runs go generate directives in Go source files. Use instead of running `go generate` in the terminal.",
10
+ description: "Runs go generate directives in Go source files. Use instead of running `go generate` in the terminal. WARNING: `go generate` executes arbitrary commands embedded in //go:generate directives in source files. Only use this tool on trusted code that you have reviewed.",
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
  patterns: 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 generate (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: GoGenerateResultSchema,
20
- }, async ({ path, patterns }) => {
30
+ }, async ({ path, patterns, compact }) => {
31
+ for (const p of patterns || []) {
32
+ assertNoFlagInjection(p, "patterns");
33
+ }
21
34
  const cwd = path || process.cwd();
22
35
  const result = await goCmd(["generate", ...(patterns || ["./..."])], cwd);
23
36
  const data = parseGoGenerateOutput(result.stdout, result.stderr, result.exitCode);
24
- return dualOutput(data, formatGoGenerate);
37
+ const rawOutput = (result.stdout + "\n" + result.stderr).trim();
38
+ return compactDualOutput(data, rawOutput, formatGoGenerate, compactGenerateMap, formatGenerateCompact, compact === false);
25
39
  });
26
40
  }
27
41
  //# sourceMappingURL=generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.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,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,uGAAuG;QACzG,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,uCAAuC,CAAC;SACrD;QACD,YAAY,EAAE,sBAAsB;KACrC,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,UAAU,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClF,OAAO,UAAU,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC5C,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.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,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,aAAa;QACpB,WAAW,EACT,2QAA2Q;QAC7Q,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,uCAAuC,CAAC;YACpD,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,YAAY,EAAE,sBAAsB;KACrC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,KAAK,MAAM,CAAC,IAAI,QAAQ,IAAI,EAAE,EAAE,CAAC;YAC/B,qBAAqB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC,UAAU,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClF,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,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACrB,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 registerGetTool(server: McpServer): void;
3
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../src/tools/get.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QA8ChD"}
@@ -0,0 +1,40 @@
1
+ import { z } from "zod";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
+ import { goCmd } from "../lib/go-runner.js";
4
+ import { parseGoGetOutput } from "../lib/parsers.js";
5
+ import { formatGoGet, compactGetMap, formatGetCompact } from "../lib/formatters.js";
6
+ import { GoGetResultSchema } from "../schemas/index.js";
7
+ export function registerGetTool(server) {
8
+ server.registerTool("get", {
9
+ title: "Go Get",
10
+ description: "Downloads and installs Go packages and their dependencies. Use instead of running `go get` in the terminal.",
11
+ inputSchema: {
12
+ packages: z
13
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
14
+ .max(INPUT_LIMITS.ARRAY_MAX)
15
+ .describe("Packages to install (e.g., ['github.com/pkg/errors@latest'])"),
16
+ path: z
17
+ .string()
18
+ .max(INPUT_LIMITS.PATH_MAX)
19
+ .optional()
20
+ .describe("Project root path (default: cwd)"),
21
+ compact: z
22
+ .boolean()
23
+ .optional()
24
+ .default(true)
25
+ .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
26
+ },
27
+ outputSchema: GoGetResultSchema,
28
+ }, async ({ packages, path, compact }) => {
29
+ const cwd = path || process.cwd();
30
+ for (const p of packages) {
31
+ assertNoFlagInjection(p, "packages");
32
+ }
33
+ const args = ["get", ...packages];
34
+ const result = await goCmd(args, cwd);
35
+ const data = parseGoGetOutput(result.stdout, result.stderr, result.exitCode);
36
+ const rawOutput = (result.stdout + "\n" + result.stderr).trim();
37
+ return compactDualOutput(data, rawOutput, formatGoGet, compactGetMap, formatGetCompact, compact === false);
38
+ });
39
+ }
40
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/tools/get.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,6GAA6G;QAC/G,WAAW,EAAE;YACX,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,CAAC,8DAA8D,CAAC;YAC3E,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,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QACpC,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,qBAAqB,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtC,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 +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;AASzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAQjD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAYjD"}
@@ -1,3 +1,4 @@
1
+ import { shouldRegisterTool } from "@paretools/shared";
1
2
  import { registerBuildTool } from "./build.js";
2
3
  import { registerTestTool } from "./test.js";
3
4
  import { registerVetTool } from "./vet.js";
@@ -5,13 +6,30 @@ import { registerRunTool } from "./run.js";
5
6
  import { registerModTidyTool } from "./mod-tidy.js";
6
7
  import { registerFmtTool } from "./fmt.js";
7
8
  import { registerGenerateTool } from "./generate.js";
9
+ import { registerEnvTool } from "./env.js";
10
+ import { registerListTool } from "./list.js";
11
+ import { registerGetTool } from "./get.js";
8
12
  export function registerAllTools(server) {
9
- registerBuildTool(server);
10
- registerTestTool(server);
11
- registerVetTool(server);
12
- registerRunTool(server);
13
- registerModTidyTool(server);
14
- registerFmtTool(server);
15
- registerGenerateTool(server);
13
+ const s = (name) => shouldRegisterTool("go", name);
14
+ if (s("build"))
15
+ registerBuildTool(server);
16
+ if (s("test"))
17
+ registerTestTool(server);
18
+ if (s("vet"))
19
+ registerVetTool(server);
20
+ if (s("run"))
21
+ registerRunTool(server);
22
+ if (s("mod-tidy"))
23
+ registerModTidyTool(server);
24
+ if (s("fmt"))
25
+ registerFmtTool(server);
26
+ if (s("generate"))
27
+ registerGenerateTool(server);
28
+ if (s("env"))
29
+ registerEnvTool(server);
30
+ if (s("list"))
31
+ registerListTool(server);
32
+ if (s("get"))
33
+ registerGetTool(server);
16
34
  }
17
35
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,eAAe,CAAC,MAAM,CAAC,CAAC;IACxB,eAAe,CAAC,MAAM,CAAC,CAAC;IACxB,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,eAAe,CAAC,MAAM,CAAC,CAAC;IACxB,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,CAAC,OAAO,CAAC;QAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,CAAC,MAAM,CAAC;QAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,CAAC,KAAK,CAAC;QAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC,KAAK,CAAC;QAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC,UAAU,CAAC;QAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,KAAK,CAAC;QAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC,UAAU,CAAC;QAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC,CAAC,KAAK,CAAC;QAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,CAAC,MAAM,CAAC;QAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,CAAC,KAAK,CAAC;QAAE,eAAe,CAAC,MAAM,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerListTool(server: McpServer): void;
3
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/tools/list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAgDjD"}
@@ -0,0 +1,42 @@
1
+ import { z } from "zod";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
+ import { goCmd } from "../lib/go-runner.js";
4
+ import { parseGoListOutput } from "../lib/parsers.js";
5
+ import { formatGoList, compactListMap, formatListCompact } from "../lib/formatters.js";
6
+ import { GoListResultSchema } from "../schemas/index.js";
7
+ export function registerListTool(server) {
8
+ server.registerTool("list", {
9
+ title: "Go List",
10
+ description: "Lists Go packages and returns structured package information (dir, importPath, name, goFiles). Use instead of running `go list` 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
+ packages: z
18
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
19
+ .max(INPUT_LIMITS.ARRAY_MAX)
20
+ .optional()
21
+ .default(["./..."])
22
+ .describe("Package patterns to list (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."),
28
+ },
29
+ outputSchema: GoListResultSchema,
30
+ }, async ({ path, packages, compact }) => {
31
+ const cwd = path || process.cwd();
32
+ for (const p of packages ?? []) {
33
+ assertNoFlagInjection(p, "packages");
34
+ }
35
+ const args = ["list", "-json", ...(packages || ["./..."])];
36
+ const result = await goCmd(args, cwd);
37
+ const data = parseGoListOutput(result.stdout);
38
+ const rawOutput = (result.stdout + "\n" + result.stderr).trim();
39
+ return compactDualOutput(data, rawOutput, formatGoList, compactListMap, formatListCompact, compact === false);
40
+ });
41
+ }
42
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/tools/list.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,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,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,kJAAkJ;QACpJ,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,+CAA+C,CAAC;YAC5D,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,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,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,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,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -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,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAmBpD"}
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,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAsCpD"}
@@ -1,22 +1,32 @@
1
1
  import { z } from "zod";
2
- import { dualOutput } from "@paretools/shared";
2
+ import { compactDualOutput, INPUT_LIMITS } from "@paretools/shared";
3
3
  import { goCmd } from "../lib/go-runner.js";
4
4
  import { parseGoModTidyOutput } from "../lib/parsers.js";
5
- import { formatGoModTidy } from "../lib/formatters.js";
5
+ import { formatGoModTidy, compactModTidyMap, formatModTidyCompact } from "../lib/formatters.js";
6
6
  import { GoModTidyResultSchema } from "../schemas/index.js";
7
7
  export function registerModTidyTool(server) {
8
8
  server.registerTool("mod-tidy", {
9
9
  title: "Go Mod Tidy",
10
10
  description: "Runs go mod tidy to add missing and remove unused module dependencies. Use instead of running `go mod tidy` 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)"),
17
+ compact: z
18
+ .boolean()
19
+ .optional()
20
+ .default(true)
21
+ .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
13
22
  },
14
23
  outputSchema: GoModTidyResultSchema,
15
- }, async ({ path }) => {
24
+ }, async ({ path, compact }) => {
16
25
  const cwd = path || process.cwd();
17
26
  const result = await goCmd(["mod", "tidy"], cwd);
18
27
  const data = parseGoModTidyOutput(result.stdout, result.stderr, result.exitCode);
19
- return dualOutput(data, formatGoModTidy);
28
+ const rawOutput = (result.stdout + "\n" + result.stderr).trim();
29
+ return compactDualOutput(data, rawOutput, formatGoModTidy, compactModTidyMap, formatModTidyCompact, compact === false);
20
30
  });
21
31
  }
22
32
  //# sourceMappingURL=mod-tidy.js.map
@@ -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,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,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,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;SACzE;QACD,YAAY,EAAE,qBAAqB;KACpC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACjB,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,OAAO,UAAU,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IAC3C,CAAC,CACF,CAAC;AACJ,CAAC"}
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,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 +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,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QAmChD"}
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,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QAkEhD"}