@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.
- package/LICENSE +21 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/dotnet-runner.d.ts +4 -0
- package/dist/lib/dotnet-runner.d.ts.map +1 -0
- package/dist/lib/dotnet-runner.js +6 -0
- package/dist/lib/dotnet-runner.js.map +1 -0
- package/dist/lib/formatters.d.ts +100 -0
- package/dist/lib/formatters.d.ts.map +1 -0
- package/dist/lib/formatters.js +272 -0
- package/dist/lib/formatters.js.map +1 -0
- package/dist/lib/parsers.d.ts +18 -0
- package/dist/lib/parsers.d.ts.map +1 -0
- package/dist/lib/parsers.js +382 -0
- package/dist/lib/parsers.js.map +1 -0
- package/dist/schemas/index.d.ts +251 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +118 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/tools/add-package.d.ts +4 -0
- package/dist/tools/add-package.d.ts.map +1 -0
- package/dist/tools/add-package.js +72 -0
- package/dist/tools/add-package.js.map +1 -0
- package/dist/tools/build.d.ts +4 -0
- package/dist/tools/build.d.ts.map +1 -0
- package/dist/tools/build.js +74 -0
- package/dist/tools/build.js.map +1 -0
- package/dist/tools/clean.d.ts +4 -0
- package/dist/tools/clean.d.ts.map +1 -0
- package/dist/tools/clean.js +58 -0
- package/dist/tools/clean.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +30 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/list-package.d.ts +4 -0
- package/dist/tools/list-package.d.ts.map +1 -0
- package/dist/tools/list-package.js +78 -0
- package/dist/tools/list-package.js.map +1 -0
- package/dist/tools/publish.d.ts +4 -0
- package/dist/tools/publish.d.ts.map +1 -0
- package/dist/tools/publish.js +92 -0
- package/dist/tools/publish.js.map +1 -0
- package/dist/tools/restore.d.ts +4 -0
- package/dist/tools/restore.d.ts.map +1 -0
- package/dist/tools/restore.js +58 -0
- package/dist/tools/restore.js.map +1 -0
- package/dist/tools/run.d.ts +4 -0
- package/dist/tools/run.d.ts.map +1 -0
- package/dist/tools/run.js +91 -0
- package/dist/tools/run.js.map +1 -0
- package/dist/tools/test.d.ts +4 -0
- package/dist/tools/test.d.ts.map +1 -0
- package/dist/tools/test.js +81 -0
- package/dist/tools/test.js.map +1 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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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"}
|