@paretools/dotnet 0.11.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 (58) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +11 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/lib/dotnet-runner.d.ts +4 -0
  7. package/dist/lib/dotnet-runner.d.ts.map +1 -0
  8. package/dist/lib/dotnet-runner.js +6 -0
  9. package/dist/lib/dotnet-runner.js.map +1 -0
  10. package/dist/lib/formatters.d.ts +100 -0
  11. package/dist/lib/formatters.d.ts.map +1 -0
  12. package/dist/lib/formatters.js +272 -0
  13. package/dist/lib/formatters.js.map +1 -0
  14. package/dist/lib/parsers.d.ts +18 -0
  15. package/dist/lib/parsers.d.ts.map +1 -0
  16. package/dist/lib/parsers.js +382 -0
  17. package/dist/lib/parsers.js.map +1 -0
  18. package/dist/schemas/index.d.ts +251 -0
  19. package/dist/schemas/index.d.ts.map +1 -0
  20. package/dist/schemas/index.js +118 -0
  21. package/dist/schemas/index.js.map +1 -0
  22. package/dist/tools/add-package.d.ts +4 -0
  23. package/dist/tools/add-package.d.ts.map +1 -0
  24. package/dist/tools/add-package.js +72 -0
  25. package/dist/tools/add-package.js.map +1 -0
  26. package/dist/tools/build.d.ts +4 -0
  27. package/dist/tools/build.d.ts.map +1 -0
  28. package/dist/tools/build.js +74 -0
  29. package/dist/tools/build.js.map +1 -0
  30. package/dist/tools/clean.d.ts +4 -0
  31. package/dist/tools/clean.d.ts.map +1 -0
  32. package/dist/tools/clean.js +58 -0
  33. package/dist/tools/clean.js.map +1 -0
  34. package/dist/tools/index.d.ts +4 -0
  35. package/dist/tools/index.d.ts.map +1 -0
  36. package/dist/tools/index.js +30 -0
  37. package/dist/tools/index.js.map +1 -0
  38. package/dist/tools/list-package.d.ts +4 -0
  39. package/dist/tools/list-package.d.ts.map +1 -0
  40. package/dist/tools/list-package.js +78 -0
  41. package/dist/tools/list-package.js.map +1 -0
  42. package/dist/tools/publish.d.ts +4 -0
  43. package/dist/tools/publish.d.ts.map +1 -0
  44. package/dist/tools/publish.js +92 -0
  45. package/dist/tools/publish.js.map +1 -0
  46. package/dist/tools/restore.d.ts +4 -0
  47. package/dist/tools/restore.d.ts.map +1 -0
  48. package/dist/tools/restore.js +58 -0
  49. package/dist/tools/restore.js.map +1 -0
  50. package/dist/tools/run.d.ts +4 -0
  51. package/dist/tools/run.d.ts.map +1 -0
  52. package/dist/tools/run.js +91 -0
  53. package/dist/tools/run.js.map +1 -0
  54. package/dist/tools/test.d.ts +4 -0
  55. package/dist/tools/test.d.ts.map +1 -0
  56. package/dist/tools/test.js +81 -0
  57. package/dist/tools/test.js.map +1 -0
  58. package/package.json +64 -0
@@ -0,0 +1,118 @@
1
+ import { z } from "zod";
2
+ // ---------------------------------------------------------------------------
3
+ // build
4
+ // ---------------------------------------------------------------------------
5
+ /** Zod schema for a single MSBuild diagnostic with file location, severity, and error code. */
6
+ export const DotnetDiagnosticSchema = z.object({
7
+ file: z.string(),
8
+ line: z.number(),
9
+ column: z.number().optional(),
10
+ code: z.string().optional(),
11
+ severity: z.enum(["error", "warning"]),
12
+ message: z.string().optional(),
13
+ });
14
+ /** Zod schema for structured `dotnet build` output. */
15
+ export const DotnetBuildResultSchema = z.object({
16
+ success: z.boolean(),
17
+ diagnostics: z.array(DotnetDiagnosticSchema),
18
+ total: z.number(),
19
+ errors: z.number(),
20
+ warnings: z.number(),
21
+ });
22
+ // ---------------------------------------------------------------------------
23
+ // test
24
+ // ---------------------------------------------------------------------------
25
+ /** Zod schema for a single test case result. */
26
+ export const DotnetTestCaseSchema = z.object({
27
+ name: z.string(),
28
+ status: z.enum(["Passed", "Failed", "Skipped"]),
29
+ duration: z.string().optional(),
30
+ errorMessage: z.string().optional(),
31
+ });
32
+ /** Zod schema for structured `dotnet test` output. */
33
+ export const DotnetTestResultSchema = z.object({
34
+ success: z.boolean(),
35
+ total: z.number(),
36
+ passed: z.number(),
37
+ failed: z.number(),
38
+ skipped: z.number(),
39
+ tests: z.array(DotnetTestCaseSchema),
40
+ });
41
+ // ---------------------------------------------------------------------------
42
+ // run
43
+ // ---------------------------------------------------------------------------
44
+ /** Zod schema for structured `dotnet run` output. */
45
+ export const DotnetRunResultSchema = z.object({
46
+ success: z.boolean(),
47
+ exitCode: z.number(),
48
+ stdout: z.string().optional(),
49
+ stderr: z.string().optional(),
50
+ timedOut: z.boolean().optional(),
51
+ });
52
+ // ---------------------------------------------------------------------------
53
+ // publish
54
+ // ---------------------------------------------------------------------------
55
+ /** Zod schema for structured `dotnet publish` output. */
56
+ export const DotnetPublishResultSchema = z.object({
57
+ success: z.boolean(),
58
+ exitCode: z.number(),
59
+ outputPath: z.string().optional(),
60
+ warnings: z.array(z.string()).optional(),
61
+ errors: z.array(z.string()).optional(),
62
+ });
63
+ // ---------------------------------------------------------------------------
64
+ // restore
65
+ // ---------------------------------------------------------------------------
66
+ /** Zod schema for structured `dotnet restore` output. */
67
+ export const DotnetRestoreResultSchema = z.object({
68
+ success: z.boolean(),
69
+ exitCode: z.number(),
70
+ restoredProjects: z.number().optional(),
71
+ warnings: z.array(z.string()).optional(),
72
+ errors: z.array(z.string()).optional(),
73
+ });
74
+ // ---------------------------------------------------------------------------
75
+ // clean
76
+ // ---------------------------------------------------------------------------
77
+ /** Zod schema for structured `dotnet clean` output. */
78
+ export const DotnetCleanResultSchema = z.object({
79
+ success: z.boolean(),
80
+ exitCode: z.number(),
81
+ });
82
+ // ---------------------------------------------------------------------------
83
+ // add-package
84
+ // ---------------------------------------------------------------------------
85
+ /** Zod schema for structured `dotnet add package` output. */
86
+ export const DotnetAddPackageResultSchema = z.object({
87
+ success: z.boolean(),
88
+ exitCode: z.number(),
89
+ package: z.string(),
90
+ version: z.string().optional(),
91
+ errors: z.array(z.string()).optional(),
92
+ });
93
+ // ---------------------------------------------------------------------------
94
+ // list-package
95
+ // ---------------------------------------------------------------------------
96
+ /** Zod schema for a single NuGet package entry. */
97
+ export const DotnetPackageEntrySchema = z.object({
98
+ id: z.string(),
99
+ resolved: z.string(),
100
+ latest: z.string().optional(),
101
+ deprecated: z.boolean().optional(),
102
+ });
103
+ /** Zod schema for a project's package listing. */
104
+ export const DotnetProjectPackagesSchema = z.object({
105
+ project: z.string(),
106
+ frameworks: z.array(z.object({
107
+ framework: z.string(),
108
+ topLevel: z.array(DotnetPackageEntrySchema).optional(),
109
+ transitive: z.array(DotnetPackageEntrySchema).optional(),
110
+ })),
111
+ });
112
+ /** Zod schema for structured `dotnet list package` output. */
113
+ export const DotnetListPackageResultSchema = z.object({
114
+ success: z.boolean(),
115
+ exitCode: z.number(),
116
+ projects: z.array(DotnetProjectPackagesSchema),
117
+ });
118
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /** Registers the `add-package` tool on the given MCP server. */
3
+ export declare function registerAddPackageTool(server: McpServer): void;
4
+ //# sourceMappingURL=add-package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-package.d.ts","sourceRoot":"","sources":["../../src/tools/add-package.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBzE,gEAAgE;AAChE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,QAmFvD"}
@@ -0,0 +1,72 @@
1
+ import { z } from "zod";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS, projectPathInput, compactInput, } from "@paretools/shared";
3
+ import { dotnet } from "../lib/dotnet-runner.js";
4
+ import { parseDotnetAddPackageOutput } from "../lib/parsers.js";
5
+ import { formatDotnetAddPackage, compactAddPackageMap, formatAddPackageCompact, } from "../lib/formatters.js";
6
+ import { DotnetAddPackageResultSchema } from "../schemas/index.js";
7
+ /** Registers the `add-package` tool on the given MCP server. */
8
+ export function registerAddPackageTool(server) {
9
+ server.registerTool("add-package", {
10
+ title: ".NET Add Package",
11
+ description: "Runs dotnet add package to add a NuGet package and returns structured results. WARNING: may execute untrusted code.",
12
+ inputSchema: {
13
+ path: projectPathInput,
14
+ project: z
15
+ .string()
16
+ .max(INPUT_LIMITS.PATH_MAX)
17
+ .optional()
18
+ .describe("Path to the project file"),
19
+ package: z
20
+ .string()
21
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
22
+ .describe("NuGet package name to add"),
23
+ version: z
24
+ .string()
25
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
26
+ .optional()
27
+ .describe("Package version to install (--version)"),
28
+ prerelease: z
29
+ .boolean()
30
+ .optional()
31
+ .default(false)
32
+ .describe("Allow prerelease packages (--prerelease)"),
33
+ source: z
34
+ .string()
35
+ .max(INPUT_LIMITS.STRING_MAX)
36
+ .optional()
37
+ .describe("NuGet package source URI to use (--source)"),
38
+ noRestore: z
39
+ .boolean()
40
+ .optional()
41
+ .default(false)
42
+ .describe("Skip automatic restore after adding (--no-restore)"),
43
+ compact: compactInput,
44
+ },
45
+ outputSchema: DotnetAddPackageResultSchema,
46
+ }, async ({ path, project, package: packageName, version, prerelease, source, noRestore, compact, }) => {
47
+ const cwd = path || process.cwd();
48
+ assertNoFlagInjection(packageName, "package");
49
+ if (project)
50
+ assertNoFlagInjection(project, "project");
51
+ if (version)
52
+ assertNoFlagInjection(version, "version");
53
+ if (source)
54
+ assertNoFlagInjection(source, "source");
55
+ const args = ["add"];
56
+ if (project)
57
+ args.push(project);
58
+ args.push("package", packageName);
59
+ if (version)
60
+ args.push("--version", version);
61
+ if (prerelease)
62
+ args.push("--prerelease");
63
+ if (source)
64
+ args.push("--source", source);
65
+ if (noRestore)
66
+ args.push("--no-restore");
67
+ const result = await dotnet(args, cwd);
68
+ const data = parseDotnetAddPackageOutput(result.stdout, result.stderr, result.exitCode, packageName);
69
+ return compactDualOutput(data, result.stdout + result.stderr, formatDotnetAddPackage, compactAddPackageMap, formatAddPackageCompact, compact === false);
70
+ });
71
+ }
72
+ //# sourceMappingURL=add-package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-package.js","sourceRoot":"","sources":["../../src/tools/add-package.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /** Registers the `build` tool on the given MCP server. */
3
+ export declare function registerBuildTool(server: McpServer): void;
4
+ //# sourceMappingURL=build.d.ts.map
@@ -0,0 +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;AAazE,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QAqElD"}
@@ -0,0 +1,74 @@
1
+ import { z } from "zod";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS, projectPathInput, compactInput, } from "@paretools/shared";
3
+ import { dotnet } from "../lib/dotnet-runner.js";
4
+ import { parseDotnetBuildOutput } from "../lib/parsers.js";
5
+ import { formatDotnetBuild, compactBuildMap, formatBuildCompact } from "../lib/formatters.js";
6
+ import { DotnetBuildResultSchema } from "../schemas/index.js";
7
+ /** Registers the `build` tool on the given MCP server. */
8
+ export function registerBuildTool(server) {
9
+ server.registerTool("build", {
10
+ title: ".NET Build",
11
+ description: "Runs dotnet build and returns structured diagnostics (file, line, column, code, severity, message).",
12
+ inputSchema: {
13
+ path: projectPathInput,
14
+ project: z
15
+ .string()
16
+ .max(INPUT_LIMITS.PATH_MAX)
17
+ .optional()
18
+ .describe("Path to the project or solution file"),
19
+ configuration: z
20
+ .string()
21
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
22
+ .optional()
23
+ .describe("Build configuration (e.g. Debug, Release)"),
24
+ framework: z
25
+ .string()
26
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
27
+ .optional()
28
+ .describe("Target framework (e.g. net8.0)"),
29
+ runtime: z
30
+ .string()
31
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
32
+ .optional()
33
+ .describe("Target runtime identifier (e.g. win-x64, linux-x64)"),
34
+ noRestore: z
35
+ .boolean()
36
+ .optional()
37
+ .default(false)
38
+ .describe("Skip automatic restore before building (--no-restore)"),
39
+ verbosity: z
40
+ .enum(["quiet", "minimal", "normal", "detailed", "diagnostic"])
41
+ .optional()
42
+ .describe("MSBuild verbosity level"),
43
+ compact: compactInput,
44
+ },
45
+ outputSchema: DotnetBuildResultSchema,
46
+ }, async ({ path, project, configuration, framework, runtime, noRestore, verbosity, compact }) => {
47
+ const cwd = path || process.cwd();
48
+ if (project)
49
+ assertNoFlagInjection(project, "project");
50
+ if (configuration)
51
+ assertNoFlagInjection(configuration, "configuration");
52
+ if (framework)
53
+ assertNoFlagInjection(framework, "framework");
54
+ if (runtime)
55
+ assertNoFlagInjection(runtime, "runtime");
56
+ const args = ["build"];
57
+ if (project)
58
+ args.push(project);
59
+ if (configuration)
60
+ args.push("--configuration", configuration);
61
+ if (framework)
62
+ args.push("--framework", framework);
63
+ if (runtime)
64
+ args.push("--runtime", runtime);
65
+ if (noRestore)
66
+ args.push("--no-restore");
67
+ if (verbosity)
68
+ args.push("--verbosity", verbosity);
69
+ const result = await dotnet(args, cwd);
70
+ const data = parseDotnetBuildOutput(result.stdout, result.stderr, result.exitCode);
71
+ return compactDualOutput(data, result.stdout + result.stderr, formatDotnetBuild, compactBuildMap, formatBuildCompact, compact === false);
72
+ });
73
+ }
74
+ //# sourceMappingURL=build.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/tools/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /** Registers the `clean` tool on the given MCP server. */
3
+ export declare function registerCleanTool(server: McpServer): void;
4
+ //# sourceMappingURL=clean.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../src/tools/clean.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QAuDlD"}
@@ -0,0 +1,58 @@
1
+ import { z } from "zod";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS, projectPathInput, compactInput, } from "@paretools/shared";
3
+ import { dotnet } from "../lib/dotnet-runner.js";
4
+ import { parseDotnetCleanOutput } from "../lib/parsers.js";
5
+ import { formatDotnetClean, compactCleanMap, formatCleanCompact } from "../lib/formatters.js";
6
+ import { DotnetCleanResultSchema } from "../schemas/index.js";
7
+ /** Registers the `clean` tool on the given MCP server. */
8
+ export function registerCleanTool(server) {
9
+ server.registerTool("clean", {
10
+ title: ".NET Clean",
11
+ description: "Runs dotnet clean to remove build outputs and returns structured results.",
12
+ inputSchema: {
13
+ path: projectPathInput,
14
+ project: z
15
+ .string()
16
+ .max(INPUT_LIMITS.PATH_MAX)
17
+ .optional()
18
+ .describe("Path to the project or solution file"),
19
+ configuration: z
20
+ .string()
21
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
22
+ .optional()
23
+ .describe("Build configuration to clean (e.g. Debug, Release)"),
24
+ framework: z
25
+ .string()
26
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
27
+ .optional()
28
+ .describe("Target framework to clean (e.g. net8.0)"),
29
+ verbosity: z
30
+ .enum(["quiet", "minimal", "normal", "detailed", "diagnostic"])
31
+ .optional()
32
+ .describe("MSBuild verbosity level"),
33
+ compact: compactInput,
34
+ },
35
+ outputSchema: DotnetCleanResultSchema,
36
+ }, async ({ path, project, configuration, framework, verbosity, compact }) => {
37
+ const cwd = path || process.cwd();
38
+ if (project)
39
+ assertNoFlagInjection(project, "project");
40
+ if (configuration)
41
+ assertNoFlagInjection(configuration, "configuration");
42
+ if (framework)
43
+ assertNoFlagInjection(framework, "framework");
44
+ const args = ["clean"];
45
+ if (project)
46
+ args.push(project);
47
+ if (configuration)
48
+ args.push("--configuration", configuration);
49
+ if (framework)
50
+ args.push("--framework", framework);
51
+ if (verbosity)
52
+ args.push("--verbosity", verbosity);
53
+ const result = await dotnet(args, cwd);
54
+ const data = parseDotnetCleanOutput(result.exitCode);
55
+ return compactDualOutput(data, result.stdout + result.stderr, formatDotnetClean, compactCleanMap, formatCleanCompact, compact === false);
56
+ });
57
+ }
58
+ //# sourceMappingURL=clean.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean.js","sourceRoot":"","sources":["../../src/tools/clean.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,0DAA0D;AAC1D,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,OAAO,EACP;QACE,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,2EAA2E;QACxF,WAAW,EAAE;YACX,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,sCAAsC,CAAC;YACnD,aAAa,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC;iBAClC,QAAQ,EAAE;iBACV,QAAQ,CAAC,oDAAoD,CAAC;YACjE,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC;iBAClC,QAAQ,EAAE;iBACV,QAAQ,CAAC,yCAAyC,CAAC;YACtD,SAAS,EAAE,CAAC;iBACT,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;iBAC9D,QAAQ,EAAE;iBACV,QAAQ,CAAC,yBAAyB,CAAC;YACtC,OAAO,EAAE,YAAY;SACtB;QACD,YAAY,EAAE,uBAAuB;KACtC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE;QACxE,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,IAAI,OAAO;YAAE,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QACvD,IAAI,aAAa;YAAE,qBAAqB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QACzE,IAAI,SAAS;YAAE,qBAAqB,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAE7D,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,OAAO;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,aAAa;YAAE,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAC/D,IAAI,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACnD,IAAI,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAEnD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrD,OAAO,iBAAiB,CACtB,IAAI,EACJ,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAC7B,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /** Registers all .NET tools on the given MCP server, filtered by policy. */
3
+ export declare function registerAllTools(server: McpServer): void;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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;AAWzE,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAUjD"}
@@ -0,0 +1,30 @@
1
+ import { shouldRegisterTool } from "@paretools/shared";
2
+ import { registerBuildTool } from "./build.js";
3
+ import { registerTestTool } from "./test.js";
4
+ import { registerRunTool } from "./run.js";
5
+ import { registerPublishTool } from "./publish.js";
6
+ import { registerRestoreTool } from "./restore.js";
7
+ import { registerCleanTool } from "./clean.js";
8
+ import { registerAddPackageTool } from "./add-package.js";
9
+ import { registerListPackageTool } from "./list-package.js";
10
+ /** Registers all .NET tools on the given MCP server, filtered by policy. */
11
+ export function registerAllTools(server) {
12
+ const s = (name) => shouldRegisterTool("dotnet", name);
13
+ if (s("build"))
14
+ registerBuildTool(server);
15
+ if (s("test"))
16
+ registerTestTool(server);
17
+ if (s("run"))
18
+ registerRunTool(server);
19
+ if (s("publish"))
20
+ registerPublishTool(server);
21
+ if (s("restore"))
22
+ registerRestoreTool(server);
23
+ if (s("clean"))
24
+ registerCleanTool(server);
25
+ if (s("add-package"))
26
+ registerAddPackageTool(server);
27
+ if (s("list-package"))
28
+ registerListPackageTool(server);
29
+ }
30
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
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,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAE5D,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC/D,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,SAAS,CAAC;QAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,SAAS,CAAC;QAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,OAAO,CAAC;QAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,CAAC,aAAa,CAAC;QAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,cAAc,CAAC;QAAE,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /** Registers the `list-package` tool on the given MCP server. */
3
+ export declare function registerListPackageTool(server: McpServer): void;
4
+ //# sourceMappingURL=list-package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-package.d.ts","sourceRoot":"","sources":["../../src/tools/list-package.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiBzE,iEAAiE;AACjE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,QAoFxD"}
@@ -0,0 +1,78 @@
1
+ import { z } from "zod";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS, projectPathInput, compactInput, } from "@paretools/shared";
3
+ import { dotnet } from "../lib/dotnet-runner.js";
4
+ import { parseDotnetListPackageOutput } from "../lib/parsers.js";
5
+ import { formatDotnetListPackage, compactListPackageMap, formatListPackageCompact, } from "../lib/formatters.js";
6
+ import { DotnetListPackageResultSchema } from "../schemas/index.js";
7
+ /** Registers the `list-package` tool on the given MCP server. */
8
+ export function registerListPackageTool(server) {
9
+ server.registerTool("list-package", {
10
+ title: ".NET List Packages",
11
+ description: "Runs dotnet list package and returns structured NuGet package listings per project and framework.",
12
+ inputSchema: {
13
+ path: projectPathInput,
14
+ project: z
15
+ .string()
16
+ .max(INPUT_LIMITS.PATH_MAX)
17
+ .optional()
18
+ .describe("Path to the project or solution file"),
19
+ outdated: z
20
+ .boolean()
21
+ .optional()
22
+ .default(false)
23
+ .describe("Show outdated packages (--outdated)"),
24
+ deprecated: z
25
+ .boolean()
26
+ .optional()
27
+ .default(false)
28
+ .describe("Show deprecated packages (--deprecated)"),
29
+ vulnerable: z
30
+ .boolean()
31
+ .optional()
32
+ .default(false)
33
+ .describe("Show packages with known vulnerabilities (--vulnerable)"),
34
+ includeTransitive: z
35
+ .boolean()
36
+ .optional()
37
+ .default(false)
38
+ .describe("Include transitive packages (--include-transitive)"),
39
+ format: z
40
+ .enum(["json", "text"])
41
+ .optional()
42
+ .describe("Output format. JSON is preferred for structured parsing (--format json)"),
43
+ source: z
44
+ .string()
45
+ .max(INPUT_LIMITS.STRING_MAX)
46
+ .optional()
47
+ .describe("NuGet package source URI for version checks (--source)"),
48
+ compact: compactInput,
49
+ },
50
+ outputSchema: DotnetListPackageResultSchema,
51
+ }, async ({ path, project, outdated, deprecated, vulnerable, includeTransitive, format, source, compact, }) => {
52
+ const cwd = path || process.cwd();
53
+ if (project)
54
+ assertNoFlagInjection(project, "project");
55
+ if (source)
56
+ assertNoFlagInjection(source, "source");
57
+ const args = ["list"];
58
+ if (project)
59
+ args.push(project);
60
+ args.push("package");
61
+ if (outdated)
62
+ args.push("--outdated");
63
+ if (deprecated)
64
+ args.push("--deprecated");
65
+ if (vulnerable)
66
+ args.push("--vulnerable");
67
+ if (includeTransitive)
68
+ args.push("--include-transitive");
69
+ if (format)
70
+ args.push("--format", format);
71
+ if (source)
72
+ args.push("--source", source);
73
+ const result = await dotnet(args, cwd);
74
+ const data = parseDotnetListPackageOutput(result.stdout, result.stderr, result.exitCode);
75
+ return compactDualOutput(data, result.stdout + result.stderr, formatDotnetListPackage, compactListPackageMap, formatListPackageCompact, compact === false);
76
+ });
77
+ }
78
+ //# sourceMappingURL=list-package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-package.js","sourceRoot":"","sources":["../../src/tools/list-package.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /** Registers the `publish` tool on the given MCP server. */
3
+ export declare function registerPublishTool(server: McpServer): void;
4
+ //# sourceMappingURL=publish.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.d.ts","sourceRoot":"","sources":["../../src/tools/publish.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QA8FpD"}
@@ -0,0 +1,92 @@
1
+ import { z } from "zod";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS, projectPathInput, compactInput, } from "@paretools/shared";
3
+ import { dotnet } from "../lib/dotnet-runner.js";
4
+ import { parseDotnetPublishOutput } from "../lib/parsers.js";
5
+ import { formatDotnetPublish, compactPublishMap, formatPublishCompact } from "../lib/formatters.js";
6
+ import { DotnetPublishResultSchema } from "../schemas/index.js";
7
+ /** Registers the `publish` tool on the given MCP server. */
8
+ export function registerPublishTool(server) {
9
+ server.registerTool("publish", {
10
+ title: ".NET Publish",
11
+ description: "Runs dotnet publish for deployment and returns structured output with output path and diagnostics.",
12
+ inputSchema: {
13
+ path: projectPathInput,
14
+ project: z
15
+ .string()
16
+ .max(INPUT_LIMITS.PATH_MAX)
17
+ .optional()
18
+ .describe("Path to the project or solution file"),
19
+ configuration: z
20
+ .string()
21
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
22
+ .optional()
23
+ .describe("Build configuration (e.g. Debug, Release)"),
24
+ framework: z
25
+ .string()
26
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
27
+ .optional()
28
+ .describe("Target framework (e.g. net8.0)"),
29
+ runtime: z
30
+ .string()
31
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
32
+ .optional()
33
+ .describe("Target runtime identifier (e.g. win-x64, linux-x64)"),
34
+ output: z
35
+ .string()
36
+ .max(INPUT_LIMITS.PATH_MAX)
37
+ .optional()
38
+ .describe("Output directory for published files (-o)"),
39
+ selfContained: z
40
+ .boolean()
41
+ .optional()
42
+ .describe("Publish as self-contained deployment (--self-contained)"),
43
+ noRestore: z
44
+ .boolean()
45
+ .optional()
46
+ .default(false)
47
+ .describe("Skip automatic restore before publishing (--no-restore)"),
48
+ noBuild: z
49
+ .boolean()
50
+ .optional()
51
+ .default(false)
52
+ .describe("Skip build before publishing (--no-build)"),
53
+ compact: compactInput,
54
+ },
55
+ outputSchema: DotnetPublishResultSchema,
56
+ }, async ({ path, project, configuration, framework, runtime, output, selfContained, noRestore, noBuild, compact, }) => {
57
+ const cwd = path || process.cwd();
58
+ if (project)
59
+ assertNoFlagInjection(project, "project");
60
+ if (configuration)
61
+ assertNoFlagInjection(configuration, "configuration");
62
+ if (framework)
63
+ assertNoFlagInjection(framework, "framework");
64
+ if (runtime)
65
+ assertNoFlagInjection(runtime, "runtime");
66
+ if (output)
67
+ assertNoFlagInjection(output, "output");
68
+ const args = ["publish"];
69
+ if (project)
70
+ args.push(project);
71
+ if (configuration)
72
+ args.push("--configuration", configuration);
73
+ if (framework)
74
+ args.push("--framework", framework);
75
+ if (runtime)
76
+ args.push("--runtime", runtime);
77
+ if (output)
78
+ args.push("-o", output);
79
+ if (selfContained === true)
80
+ args.push("--self-contained");
81
+ if (selfContained === false)
82
+ args.push("--no-self-contained");
83
+ if (noRestore)
84
+ args.push("--no-restore");
85
+ if (noBuild)
86
+ args.push("--no-build");
87
+ const result = await dotnet(args, cwd);
88
+ const data = parseDotnetPublishOutput(result.stdout, result.stderr, result.exitCode);
89
+ return compactDualOutput(data, result.stdout + result.stderr, formatDotnetPublish, compactPublishMap, formatPublishCompact, compact === false);
90
+ });
91
+ }
92
+ //# sourceMappingURL=publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish.js","sourceRoot":"","sources":["../../src/tools/publish.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /** Registers the `restore` tool on the given MCP server. */
3
+ export declare function registerRestoreTool(server: McpServer): void;
4
+ //# sourceMappingURL=restore.d.ts.map