@paretools/go 0.8.5 → 0.10.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 (53) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/formatters.d.ts +33 -9
  5. package/dist/lib/formatters.d.ts.map +1 -1
  6. package/dist/lib/formatters.js +291 -34
  7. package/dist/lib/formatters.js.map +1 -1
  8. package/dist/lib/go-runner.d.ts +1 -1
  9. package/dist/lib/go-runner.d.ts.map +1 -1
  10. package/dist/lib/go-runner.js +3 -3
  11. package/dist/lib/go-runner.js.map +1 -1
  12. package/dist/lib/parsers.d.ts +47 -12
  13. package/dist/lib/parsers.d.ts.map +1 -1
  14. package/dist/lib/parsers.js +653 -45
  15. package/dist/lib/parsers.js.map +1 -1
  16. package/dist/schemas/index.d.ts +218 -4
  17. package/dist/schemas/index.d.ts.map +1 -1
  18. package/dist/schemas/index.js +142 -5
  19. package/dist/schemas/index.js.map +1 -1
  20. package/dist/tools/build.d.ts.map +1 -1
  21. package/dist/tools/build.js +97 -12
  22. package/dist/tools/build.js.map +1 -1
  23. package/dist/tools/env.d.ts.map +1 -1
  24. package/dist/tools/env.js +15 -13
  25. package/dist/tools/env.js.map +1 -1
  26. package/dist/tools/fmt.d.ts.map +1 -1
  27. package/dist/tools/fmt.js +28 -12
  28. package/dist/tools/fmt.js.map +1 -1
  29. package/dist/tools/generate.d.ts.map +1 -1
  30. package/dist/tools/generate.js +77 -12
  31. package/dist/tools/generate.js.map +1 -1
  32. package/dist/tools/get.d.ts.map +1 -1
  33. package/dist/tools/get.js +91 -11
  34. package/dist/tools/get.js.map +1 -1
  35. package/dist/tools/golangci-lint.d.ts.map +1 -1
  36. package/dist/tools/golangci-lint.js +145 -13
  37. package/dist/tools/golangci-lint.js.map +1 -1
  38. package/dist/tools/list.d.ts.map +1 -1
  39. package/dist/tools/list.js +77 -13
  40. package/dist/tools/list.js.map +1 -1
  41. package/dist/tools/mod-tidy.d.ts.map +1 -1
  42. package/dist/tools/mod-tidy.js +119 -12
  43. package/dist/tools/mod-tidy.js.map +1 -1
  44. package/dist/tools/run.d.ts.map +1 -1
  45. package/dist/tools/run.js +108 -16
  46. package/dist/tools/run.js.map +1 -1
  47. package/dist/tools/test.d.ts.map +1 -1
  48. package/dist/tools/test.js +112 -11
  49. package/dist/tools/test.js.map +1 -1
  50. package/dist/tools/vet.d.ts.map +1 -1
  51. package/dist/tools/vet.js +55 -13
  52. package/dist/tools/vet.js.map +1 -1
  53. package/package.json +2 -2
@@ -8,33 +8,98 @@ import { GoGenerateResultSchema } from "../schemas/index.js";
8
8
  export function registerGenerateTool(server) {
9
9
  server.registerTool("generate", {
10
10
  title: "Go Generate",
11
- 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
+ description: "Runs go generate directives in Go source files. WARNING: may execute untrusted code.",
12
12
  inputSchema: {
13
- path: z
14
- .string()
15
- .max(INPUT_LIMITS.PATH_MAX)
16
- .optional()
17
- .describe("Project root path (default: cwd)"),
13
+ path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Project root path"),
18
14
  patterns: z
19
15
  .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
20
16
  .max(INPUT_LIMITS.ARRAY_MAX)
21
17
  .optional()
22
18
  .default(["./..."])
23
19
  .describe("Packages to generate (default: ./...)"),
24
- compact: z
20
+ dryRun: z
25
21
  .boolean()
26
22
  .optional()
27
- .default(true)
28
- .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
23
+ .default(false)
24
+ .describe("Print the commands that would be executed but do not run them (-n). Essential for safe previewing."),
25
+ run: z
26
+ .string()
27
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
28
+ .optional()
29
+ .describe("Run only generators whose directive matches this regexp (-run <regexp>). Reduces execution scope and risk."),
30
+ skip: z
31
+ .string()
32
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
33
+ .optional()
34
+ .describe("Skip generators whose directive matches this regexp (-skip <regexp>). Useful to exclude known-slow or broken generators."),
35
+ verbose: z
36
+ .boolean()
37
+ .optional()
38
+ .default(false)
39
+ .describe("Print the names of packages and files as they are processed (-v)"),
40
+ commands: z
41
+ .boolean()
42
+ .optional()
43
+ .default(false)
44
+ .describe("Print commands as they are executed (-x)"),
45
+ timeout: z
46
+ .number()
47
+ .int()
48
+ .min(1000)
49
+ .max(600000)
50
+ .optional()
51
+ .describe("Execution timeout in milliseconds for go generate"),
52
+ tags: z
53
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
54
+ .max(INPUT_LIMITS.ARRAY_MAX)
55
+ .optional()
56
+ .describe("Build tags for conditional compilation (-tags)"),
57
+ compact: z.boolean().optional().default(true).describe("Prefer compact output"),
29
58
  },
30
59
  outputSchema: GoGenerateResultSchema,
31
- }, async ({ path, patterns, compact }) => {
60
+ }, async ({ path, patterns, dryRun, run: runFilter, skip, verbose, commands, timeout, tags, compact, }) => {
32
61
  for (const p of patterns || []) {
33
62
  assertNoFlagInjection(p, "patterns");
34
63
  }
64
+ if (runFilter)
65
+ assertNoFlagInjection(runFilter, "run");
66
+ if (skip)
67
+ assertNoFlagInjection(skip, "skip");
35
68
  const cwd = path || process.cwd();
36
- const result = await goCmd(["generate", ...(patterns || ["./..."])], cwd);
37
- const data = parseGoGenerateOutput(result.stdout, result.stderr, result.exitCode);
69
+ const args = ["generate"];
70
+ if (dryRun)
71
+ args.push("-n");
72
+ if (runFilter)
73
+ args.push("-run", runFilter);
74
+ if (skip)
75
+ args.push("-skip", skip);
76
+ if (verbose)
77
+ args.push("-v");
78
+ if (commands)
79
+ args.push("-x");
80
+ if (tags && tags.length > 0) {
81
+ for (const t of tags) {
82
+ assertNoFlagInjection(t, "tags");
83
+ }
84
+ args.push("-tags", tags.join(","));
85
+ }
86
+ args.push(...(patterns || ["./..."]));
87
+ let timedOut = false;
88
+ let result;
89
+ try {
90
+ result = await goCmd(args, cwd, timeout);
91
+ }
92
+ catch (err) {
93
+ const msg = err instanceof Error ? err.message : String(err);
94
+ if (msg.includes("timed out")) {
95
+ timedOut = true;
96
+ result = { stdout: "", stderr: msg, exitCode: 124 };
97
+ }
98
+ else {
99
+ throw err;
100
+ }
101
+ }
102
+ const data = parseGoGenerateOutput(result.stdout, result.stderr, result.exitCode, timedOut);
38
103
  const rawOutput = (result.stdout + "\n" + result.stderr).trim();
39
104
  return compactDualOutput(data, rawOutput, formatGoGenerate, compactGenerateMap, formatGenerateCompact, compact === false);
40
105
  });
@@ -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,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,6DAA6D;AAC7D,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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/tools/generate.ts"],"names":[],"mappings":"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"}
@@ -1 +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,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QA8ChD"}
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../src/tools/get.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wDAAwD;AACxD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,QAqEhD"}
package/dist/tools/get.js CHANGED
@@ -1,4 +1,6 @@
1
1
  import { z } from "zod";
2
+ import { readFile } from "node:fs/promises";
3
+ import { join } from "node:path";
2
4
  import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
5
  import { goCmd } from "../lib/go-runner.js";
4
6
  import { parseGoGetOutput } from "../lib/parsers.js";
@@ -8,34 +10,112 @@ import { GoGetResultSchema } from "../schemas/index.js";
8
10
  export function registerGetTool(server) {
9
11
  server.registerTool("get", {
10
12
  title: "Go Get",
11
- description: "Downloads and installs Go packages and their dependencies. Use instead of running `go get` in the terminal.",
13
+ description: "Downloads and installs Go packages and their dependencies.",
12
14
  inputSchema: {
13
15
  packages: z
14
16
  .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
15
17
  .max(INPUT_LIMITS.ARRAY_MAX)
16
18
  .describe("Packages to install (e.g., ['github.com/pkg/errors@latest'])"),
17
- path: z
18
- .string()
19
- .max(INPUT_LIMITS.PATH_MAX)
19
+ path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Project root path"),
20
+ update: z
21
+ .enum(["all", "patch"])
20
22
  .optional()
21
- .describe("Project root path (default: cwd)"),
22
- compact: z
23
+ .describe("Update modules: 'all' maps to -u (update to latest), 'patch' maps to -u=patch (patch-level updates only)"),
24
+ testDeps: z
23
25
  .boolean()
24
26
  .optional()
25
- .default(true)
26
- .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
27
+ .default(false)
28
+ .describe("Also download packages needed to build and test the specified packages (-t)"),
29
+ verbose: z
30
+ .boolean()
31
+ .optional()
32
+ .default(false)
33
+ .describe("Print information about download and resolution progress (-v)"),
34
+ downloadOnly: z
35
+ .boolean()
36
+ .optional()
37
+ .default(false)
38
+ .describe("Download the named packages but do not install them (-d)"),
39
+ compact: z.boolean().optional().default(true).describe("Prefer compact output"),
27
40
  },
28
41
  outputSchema: GoGetResultSchema,
29
- }, async ({ packages, path, compact }) => {
42
+ }, async ({ packages, path, update, testDeps, verbose, downloadOnly, compact }) => {
30
43
  const cwd = path || process.cwd();
31
44
  for (const p of packages) {
32
45
  assertNoFlagInjection(p, "packages");
33
46
  }
34
- const args = ["get", ...packages];
47
+ const args = ["get"];
48
+ if (update === "all")
49
+ args.push("-u");
50
+ else if (update === "patch")
51
+ args.push("-u=patch");
52
+ if (testDeps)
53
+ args.push("-t");
54
+ if (verbose)
55
+ args.push("-v");
56
+ if (downloadOnly)
57
+ args.push("-d");
58
+ args.push(...packages);
59
+ const goModBefore = await readGoMod(cwd);
35
60
  const result = await goCmd(args, cwd);
36
- const data = parseGoGetOutput(result.stdout, result.stderr, result.exitCode);
61
+ const goModAfter = await readGoMod(cwd);
62
+ // Pass requestedPackages for per-package status tracking (Gap #153)
63
+ const data = parseGoGetOutput(result.stdout, result.stderr, result.exitCode, packages);
64
+ const goModChanges = diffGoModRequirements(goModBefore, goModAfter);
65
+ if (goModChanges) {
66
+ data.goModChanges = goModChanges;
67
+ }
37
68
  const rawOutput = (result.stdout + "\n" + result.stderr).trim();
38
69
  return compactDualOutput(data, rawOutput, formatGoGet, compactGetMap, formatGetCompact, compact === false);
39
70
  });
40
71
  }
72
+ async function readGoMod(cwd) {
73
+ try {
74
+ return await readFile(join(cwd, "go.mod"), "utf-8");
75
+ }
76
+ catch {
77
+ return undefined;
78
+ }
79
+ }
80
+ function diffGoModRequirements(before, after) {
81
+ if (before === undefined || after === undefined) {
82
+ return undefined;
83
+ }
84
+ const beforeSet = parseRequireSet(before);
85
+ const afterSet = parseRequireSet(after);
86
+ const added = [...afterSet].filter((r) => !beforeSet.has(r)).sort();
87
+ const removed = [...beforeSet].filter((r) => !afterSet.has(r)).sort();
88
+ if (added.length === 0 && removed.length === 0) {
89
+ return undefined;
90
+ }
91
+ return { added, removed };
92
+ }
93
+ function parseRequireSet(goMod) {
94
+ const result = new Set();
95
+ let inBlock = false;
96
+ for (const rawLine of goMod.split("\n")) {
97
+ const line = rawLine.trim();
98
+ if (!line || line.startsWith("//"))
99
+ continue;
100
+ if (line.startsWith("require (")) {
101
+ inBlock = true;
102
+ continue;
103
+ }
104
+ if (inBlock && line === ")") {
105
+ inBlock = false;
106
+ continue;
107
+ }
108
+ const target = inBlock
109
+ ? line
110
+ : line.startsWith("require ")
111
+ ? line.slice("require ".length)
112
+ : "";
113
+ if (!target)
114
+ continue;
115
+ const cleaned = target.replace(/\s+\/\/.*$/, "").trim();
116
+ if (cleaned)
117
+ result.add(cleaned);
118
+ }
119
+ return result;
120
+ }
41
121
  //# sourceMappingURL=get.js.map
@@ -1 +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,wDAAwD;AACxD,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
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/tools/get.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"golangci-lint.d.ts","sourceRoot":"","sources":["../../src/tools/golangci-lint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,kEAAkE;AAClE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,QA8DzD"}
1
+ {"version":3,"file":"golangci-lint.d.ts","sourceRoot":"","sources":["../../src/tools/golangci-lint.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,kEAAkE;AAClE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,QAsNzD"}
@@ -8,13 +8,9 @@ import { GolangciLintResultSchema } from "../schemas/index.js";
8
8
  export function registerGolangciLintTool(server) {
9
9
  server.registerTool("golangci-lint", {
10
10
  title: "golangci-lint",
11
- description: "Runs golangci-lint and returns structured lint diagnostics (file, line, linter, severity, message). Use instead of running `golangci-lint` in the terminal.",
11
+ description: "Runs golangci-lint and returns structured lint diagnostics (file, line, linter, severity, message).",
12
12
  inputSchema: {
13
- path: z
14
- .string()
15
- .max(INPUT_LIMITS.PATH_MAX)
16
- .optional()
17
- .describe("Project root path (default: cwd)"),
13
+ path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Project root path"),
18
14
  patterns: z
19
15
  .array(z.string().max(INPUT_LIMITS.PATH_MAX))
20
16
  .max(INPUT_LIMITS.ARRAY_MAX)
@@ -26,29 +22,165 @@ export function registerGolangciLintTool(server) {
26
22
  .max(INPUT_LIMITS.PATH_MAX)
27
23
  .optional()
28
24
  .describe("Path to golangci-lint config file"),
29
- compact: z
25
+ fix: z
26
+ .boolean()
27
+ .optional()
28
+ .default(false)
29
+ .describe("Automatically fix found issues where possible (--fix)"),
30
+ fast: z
31
+ .boolean()
32
+ .optional()
33
+ .default(false)
34
+ .describe("Run only fast linters for quick feedback during iteration (--fast)"),
35
+ new: z
30
36
  .boolean()
31
37
  .optional()
32
- .default(true)
33
- .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
38
+ .default(false)
39
+ .describe("Show only new issues (--new). Useful for incremental linting."),
40
+ newFromRev: z
41
+ .string()
42
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
43
+ .optional()
44
+ .describe("Show only new issues created after the specified git revision (--new-from-rev <rev>). Essential for PR review workflows."),
45
+ enable: z
46
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
47
+ .max(INPUT_LIMITS.ARRAY_MAX)
48
+ .optional()
49
+ .describe("Enable specific linters (--enable <linter1,linter2,...>)"),
50
+ disable: z
51
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
52
+ .max(INPUT_LIMITS.ARRAY_MAX)
53
+ .optional()
54
+ .describe("Disable specific linters (--disable <linter1,linter2,...>)"),
55
+ timeout: z
56
+ .string()
57
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
58
+ .optional()
59
+ .describe("Timeout for the linter run (--timeout <duration>). Example: '5m', '300s'. Default: 1m."),
60
+ buildTags: z
61
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
62
+ .max(INPUT_LIMITS.ARRAY_MAX)
63
+ .optional()
64
+ .describe("Build tags for correct analysis (--build-tags <tag1,tag2,...>)"),
65
+ concurrency: z
66
+ .number()
67
+ .int()
68
+ .min(1)
69
+ .max(128)
70
+ .optional()
71
+ .describe("Number of CPUs to use for linting (--concurrency <n>). Default: number of CPUs."),
72
+ maxIssuesPerLinter: z
73
+ .number()
74
+ .int()
75
+ .min(0)
76
+ .optional()
77
+ .describe("Maximum issues per linter (--max-issues-per-linter <n>). 0 means unlimited. Default: 50."),
78
+ maxSameIssues: z
79
+ .number()
80
+ .int()
81
+ .min(0)
82
+ .optional()
83
+ .describe("Maximum number of same issues reported (--max-same-issues <n>). 0 means unlimited. Default: 3."),
84
+ presets: z
85
+ .array(z.enum([
86
+ "bugs",
87
+ "comment",
88
+ "complexity",
89
+ "error",
90
+ "format",
91
+ "import",
92
+ "metalinter",
93
+ "module",
94
+ "performance",
95
+ "sql",
96
+ "style",
97
+ "test",
98
+ "unused",
99
+ ]))
100
+ .max(INPUT_LIMITS.ARRAY_MAX)
101
+ .optional()
102
+ .describe("Enable linter presets (--presets <preset1,preset2,...>)"),
103
+ sortResults: z
104
+ .boolean()
105
+ .optional()
106
+ .default(false)
107
+ .describe("Sort lint results for consistent output (--sort-results)"),
108
+ compact: z.boolean().optional().default(true).describe("Prefer compact output"),
34
109
  },
35
110
  outputSchema: GolangciLintResultSchema,
36
- }, async ({ path, patterns, config, compact }) => {
111
+ }, async ({ path, patterns, config, fix, fast, new: newOnly, newFromRev, enable, disable, timeout, buildTags, concurrency, maxIssuesPerLinter, maxSameIssues, presets, sortResults, compact, }) => {
37
112
  const cwd = path || process.cwd();
38
113
  for (const p of patterns ?? []) {
39
114
  assertNoFlagInjection(p, "patterns");
40
115
  }
41
- if (config) {
116
+ if (config)
42
117
  assertNoFlagInjection(config, "config");
43
- }
118
+ if (newFromRev)
119
+ assertNoFlagInjection(newFromRev, "newFromRev");
120
+ if (timeout)
121
+ assertNoFlagInjection(timeout, "timeout");
44
122
  const args = ["run", "--out-format", "json"];
45
- if (config) {
123
+ if (config)
46
124
  args.push("--config", config);
125
+ if (fix)
126
+ args.push("--fix");
127
+ if (fast)
128
+ args.push("--fast");
129
+ if (newOnly)
130
+ args.push("--new");
131
+ if (newFromRev)
132
+ args.push("--new-from-rev", newFromRev);
133
+ if (enable && enable.length > 0) {
134
+ for (const e of enable) {
135
+ assertNoFlagInjection(e, "enable");
136
+ }
137
+ args.push("--enable", enable.join(","));
138
+ }
139
+ if (disable && disable.length > 0) {
140
+ for (const d of disable) {
141
+ assertNoFlagInjection(d, "disable");
142
+ }
143
+ args.push("--disable", disable.join(","));
144
+ }
145
+ if (timeout)
146
+ args.push("--timeout", timeout);
147
+ if (buildTags && buildTags.length > 0) {
148
+ for (const t of buildTags) {
149
+ assertNoFlagInjection(t, "buildTags");
150
+ }
151
+ args.push("--build-tags", buildTags.join(","));
152
+ }
153
+ if (concurrency !== undefined)
154
+ args.push("--concurrency", String(concurrency));
155
+ if (maxIssuesPerLinter !== undefined) {
156
+ args.push("--max-issues-per-linter", String(maxIssuesPerLinter));
47
157
  }
158
+ if (maxSameIssues !== undefined) {
159
+ args.push("--max-same-issues", String(maxSameIssues));
160
+ }
161
+ if (presets && presets.length > 0)
162
+ args.push("--presets", presets.join(","));
163
+ if (sortResults)
164
+ args.push("--sort-results");
48
165
  args.push(...(patterns || ["./..."]));
49
166
  const result = await golangciLintCmd(args, cwd);
50
167
  // golangci-lint outputs JSON to stdout even on exit code 1 (issues found)
51
168
  const data = parseGolangciLintJson(result.stdout, result.exitCode);
169
+ // Set resultsTruncated if limits were set (indicates potential truncation)
170
+ if (maxIssuesPerLinter !== undefined &&
171
+ maxIssuesPerLinter > 0 &&
172
+ data.total >= maxIssuesPerLinter) {
173
+ data.resultsTruncated = true;
174
+ }
175
+ if (maxSameIssues !== undefined && maxSameIssues > 0 && data.total > 0) {
176
+ // Check if any linter hit the maxSameIssues limit
177
+ for (const entry of data.byLinter ?? []) {
178
+ if (entry.count >= maxSameIssues) {
179
+ data.resultsTruncated = true;
180
+ break;
181
+ }
182
+ }
183
+ }
52
184
  return compactDualOutput(data, result.stdout, formatGolangciLint, compactGolangciLintMap, formatGolangciLintCompact, compact === false);
53
185
  });
54
186
  }
@@ -1 +1 @@
1
- {"version":3,"file":"golangci-lint.js","sourceRoot":"","sources":["../../src/tools/golangci-lint.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,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,kEAAkE;AAClE,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,6JAA6J;QAC/J,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,OAAO,CAAC,CAAC;iBAClB,QAAQ,CAAC,wDAAwD,CAAC;YACrE,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,mCAAmC,CAAC;YAChD,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,YAAY,EAAE,wBAAwB;KACvC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;QAC5C,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,MAAM,EAAE,CAAC;YACX,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;QAC7C,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChD,0EAA0E;QAC1E,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnE,OAAO,iBAAiB,CACtB,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,kBAAkB,EAClB,sBAAsB,EACtB,yBAAyB,EACzB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"golangci-lint.js","sourceRoot":"","sources":["../../src/tools/golangci-lint.ts"],"names":[],"mappings":"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"}
@@ -1 +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,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAgDjD"}
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,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAuIjD"}
@@ -1,41 +1,105 @@
1
1
  import { z } from "zod";
2
2
  import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
3
  import { goCmd } from "../lib/go-runner.js";
4
- import { parseGoListOutput } from "../lib/parsers.js";
4
+ import { parseGoListOutput, parseGoListModulesOutput } from "../lib/parsers.js";
5
5
  import { formatGoList, compactListMap, formatListCompact } from "../lib/formatters.js";
6
6
  import { GoListResultSchema } from "../schemas/index.js";
7
7
  /** Registers the `list` tool on the given MCP server. */
8
8
  export function registerListTool(server) {
9
9
  server.registerTool("list", {
10
10
  title: "Go List",
11
- description: "Lists Go packages and returns structured package information (dir, importPath, name, goFiles). Use instead of running `go list` in the terminal.",
11
+ description: "Lists Go packages or modules and returns structured information. When `modules` is true, lists modules (with path, version, dir); otherwise lists packages (with dir, importPath, name, goFiles, testGoFiles).",
12
12
  inputSchema: {
13
- path: z
14
- .string()
15
- .max(INPUT_LIMITS.PATH_MAX)
16
- .optional()
17
- .describe("Project root path (default: cwd)"),
13
+ path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Project root path"),
18
14
  packages: z
19
15
  .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
20
16
  .max(INPUT_LIMITS.ARRAY_MAX)
21
17
  .optional()
22
18
  .default(["./..."])
23
19
  .describe("Package patterns to list (default: ['./...'])"),
24
- compact: z
20
+ jsonFields: z
21
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
22
+ .max(INPUT_LIMITS.ARRAY_MAX)
23
+ .optional()
24
+ .describe("Selective JSON fields for go1.22+ (-json=Field1,Field2). Reduces output volume for large workspaces."),
25
+ modules: z
26
+ .boolean()
27
+ .optional()
28
+ .default(false)
29
+ .describe("List modules instead of packages (-m). When true, output uses the modules field " +
30
+ "with path, version, dir, goMod, goVersion, main, indirect."),
31
+ updates: z
32
+ .boolean()
33
+ .optional()
34
+ .default(false)
35
+ .describe("Show available module updates (-u). Requires module mode (-m) which will be auto-enabled."),
36
+ deps: z
37
+ .boolean()
38
+ .optional()
39
+ .default(false)
40
+ .describe("List not just the named packages but also all their transitive dependencies (-deps)"),
41
+ tolerateErrors: z
25
42
  .boolean()
26
43
  .optional()
27
- .default(true)
28
- .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
44
+ .default(false)
45
+ .describe("Tolerate errors in packages -- useful for listing packages in partially broken projects (-e)"),
46
+ versions: z
47
+ .boolean()
48
+ .optional()
49
+ .default(false)
50
+ .describe("Show all known versions of each module (-versions). Requires module mode (-m) which will be auto-enabled."),
51
+ find: z
52
+ .boolean()
53
+ .optional()
54
+ .default(false)
55
+ .describe("Find packages matching the patterns without resolving dependencies (-find). Faster for simple listing."),
56
+ tags: z
57
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
58
+ .max(INPUT_LIMITS.ARRAY_MAX)
59
+ .optional()
60
+ .describe("Build tags that may affect which packages are listed (-tags)"),
61
+ compact: z.boolean().optional().default(true).describe("Prefer compact output"),
29
62
  },
30
63
  outputSchema: GoListResultSchema,
31
- }, async ({ path, packages, compact }) => {
64
+ }, async ({ path, packages, modules, updates, deps, tolerateErrors, versions, find, jsonFields, tags, compact, }) => {
32
65
  const cwd = path || process.cwd();
33
66
  for (const p of packages ?? []) {
34
67
  assertNoFlagInjection(p, "packages");
35
68
  }
36
- const args = ["list", "-json", ...(packages || ["./..."])];
69
+ for (const f of jsonFields ?? []) {
70
+ assertNoFlagInjection(f, "jsonFields");
71
+ }
72
+ const args = [
73
+ "list",
74
+ jsonFields && jsonFields.length > 0 ? `-json=${jsonFields.join(",")}` : "-json",
75
+ ];
76
+ if (tags && tags.length > 0) {
77
+ for (const t of tags) {
78
+ assertNoFlagInjection(t, "tags");
79
+ }
80
+ args.push("-tags", tags.join(","));
81
+ }
82
+ // Determine if module mode should be enabled
83
+ const useModuleMode = modules || updates || versions;
84
+ if (useModuleMode) {
85
+ args.push("-m");
86
+ if (updates)
87
+ args.push("-u");
88
+ if (versions)
89
+ args.push("-versions");
90
+ }
91
+ if (deps)
92
+ args.push("-deps");
93
+ if (tolerateErrors)
94
+ args.push("-e");
95
+ if (find)
96
+ args.push("-find");
97
+ args.push(...(packages || ["./..."]));
37
98
  const result = await goCmd(args, cwd);
38
- const data = parseGoListOutput(result.stdout);
99
+ // Parse based on mode
100
+ const data = useModuleMode
101
+ ? parseGoListModulesOutput(result.stdout, result.exitCode)
102
+ : parseGoListOutput(result.stdout, result.exitCode);
39
103
  const rawOutput = (result.stdout + "\n" + result.stderr).trim();
40
104
  return compactDualOutput(data, rawOutput, formatGoList, compactListMap, formatListCompact, compact === false);
41
105
  });
@@ -1 +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,yDAAyD;AACzD,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
+ {"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,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAChF,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,gNAAgN;QAClN,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACpF,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,UAAU,EAAE,CAAC;iBACV,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,CACP,sGAAsG,CACvG;YACH,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,kFAAkF;gBAChF,4DAA4D,CAC/D;YACH,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,2FAA2F,CAC5F;YACH,IAAI,EAAE,CAAC;iBACJ,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,qFAAqF,CACtF;YACH,cAAc,EAAE,CAAC;iBACd,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,8FAA8F,CAC/F;YACH,QAAQ,EAAE,CAAC;iBACR,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,2GAA2G,CAC5G;YACH,IAAI,EAAE,CAAC;iBACJ,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,wGAAwG,CACzG;YACH,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,8DAA8D,CAAC;YAC3E,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;SAChF;QACD,YAAY,EAAE,kBAAkB;KACjC,EACD,KAAK,EAAE,EACL,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,OAAO,EACP,IAAI,EACJ,cAAc,EACd,QAAQ,EACR,IAAI,EACJ,UAAU,EACV,IAAI,EACJ,OAAO,GACR,EAAE,EAAE;QACH,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,KAAK,MAAM,CAAC,IAAI,UAAU,IAAI,EAAE,EAAE,CAAC;YACjC,qBAAqB,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,IAAI,GAAG;YACX,MAAM;YACN,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;SAChF,CAAC;QACF,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;gBACrB,qBAAqB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,6CAA6C;QAC7C,MAAM,aAAa,GAAG,OAAO,IAAI,OAAO,IAAI,QAAQ,CAAC;QAErD,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,IAAI,OAAO;gBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,QAAQ;gBAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,cAAc;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAEtC,sBAAsB;QACtB,MAAM,IAAI,GAAG,aAAa;YACxB,CAAC,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC;YAC1D,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEtD,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,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,QA6FpD"}