@paretools/jvm 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/formatters.d.ts +88 -0
  7. package/dist/lib/formatters.d.ts.map +1 -0
  8. package/dist/lib/formatters.js +278 -0
  9. package/dist/lib/formatters.js.map +1 -0
  10. package/dist/lib/jvm-runner.d.ts +12 -0
  11. package/dist/lib/jvm-runner.d.ts.map +1 -0
  12. package/dist/lib/jvm-runner.js +58 -0
  13. package/dist/lib/jvm-runner.js.map +1 -0
  14. package/dist/lib/parsers.d.ts +86 -0
  15. package/dist/lib/parsers.d.ts.map +1 -0
  16. package/dist/lib/parsers.js +438 -0
  17. package/dist/lib/parsers.js.map +1 -0
  18. package/dist/schemas/index.d.ts +183 -0
  19. package/dist/schemas/index.d.ts.map +1 -0
  20. package/dist/schemas/index.js +112 -0
  21. package/dist/schemas/index.js.map +1 -0
  22. package/dist/tools/gradle-build.d.ts +3 -0
  23. package/dist/tools/gradle-build.d.ts.map +1 -0
  24. package/dist/tools/gradle-build.js +55 -0
  25. package/dist/tools/gradle-build.js.map +1 -0
  26. package/dist/tools/gradle-dependencies.d.ts +3 -0
  27. package/dist/tools/gradle-dependencies.d.ts.map +1 -0
  28. package/dist/tools/gradle-dependencies.js +34 -0
  29. package/dist/tools/gradle-dependencies.js.map +1 -0
  30. package/dist/tools/gradle-tasks.d.ts +3 -0
  31. package/dist/tools/gradle-tasks.d.ts.map +1 -0
  32. package/dist/tools/gradle-tasks.js +32 -0
  33. package/dist/tools/gradle-tasks.js.map +1 -0
  34. package/dist/tools/gradle-test.d.ts +3 -0
  35. package/dist/tools/gradle-test.d.ts.map +1 -0
  36. package/dist/tools/gradle-test.js +57 -0
  37. package/dist/tools/gradle-test.js.map +1 -0
  38. package/dist/tools/index.d.ts +4 -0
  39. package/dist/tools/index.d.ts.map +1 -0
  40. package/dist/tools/index.js +30 -0
  41. package/dist/tools/index.js.map +1 -0
  42. package/dist/tools/maven-build.d.ts +3 -0
  43. package/dist/tools/maven-build.d.ts.map +1 -0
  44. package/dist/tools/maven-build.js +55 -0
  45. package/dist/tools/maven-build.js.map +1 -0
  46. package/dist/tools/maven-dependencies.d.ts +3 -0
  47. package/dist/tools/maven-dependencies.d.ts.map +1 -0
  48. package/dist/tools/maven-dependencies.js +23 -0
  49. package/dist/tools/maven-dependencies.js.map +1 -0
  50. package/dist/tools/maven-test.d.ts +3 -0
  51. package/dist/tools/maven-test.d.ts.map +1 -0
  52. package/dist/tools/maven-test.js +57 -0
  53. package/dist/tools/maven-test.js.map +1 -0
  54. package/dist/tools/maven-verify.d.ts +3 -0
  55. package/dist/tools/maven-verify.d.ts.map +1 -0
  56. package/dist/tools/maven-verify.js +47 -0
  57. package/dist/tools/maven-verify.js.map +1 -0
  58. package/package.json +72 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Dave London
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
4
+ import { registerAllTools } from "./tools/index.js";
5
+ const server = new McpServer({ name: "@paretools/jvm", version: "0.1.0" }, {
6
+ instructions: "Structured JVM build tool operations (Gradle, Maven). Run builds, tests, list tasks, show dependencies. Returns typed JSON.",
7
+ });
8
+ registerAllTools(server);
9
+ const transport = new StdioServerTransport();
10
+ await server.connect(transport);
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,EAC5C;IACE,YAAY,EACV,6HAA6H;CAChI,CACF,CAAC;AAEF,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAEzB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
@@ -0,0 +1,88 @@
1
+ import type { GradleBuildResult, GradleTestResult, GradleTasksResult, GradleDependenciesResult, MavenBuildResult, MavenTestResult, MavenDependenciesResult, MavenVerifyResult } from "../schemas/index.js";
2
+ export declare function formatGradleBuild(data: GradleBuildResult): string;
3
+ export declare function formatGradleTest(data: GradleTestResult): string;
4
+ export declare function formatGradleTasks(data: GradleTasksResult): string;
5
+ export declare function formatGradleDependencies(data: GradleDependenciesResult): string;
6
+ export declare function formatMavenBuild(data: MavenBuildResult): string;
7
+ export declare function formatMavenTest(data: MavenTestResult): string;
8
+ export declare function formatMavenDependencies(data: MavenDependenciesResult): string;
9
+ export declare function formatMavenVerify(data: MavenVerifyResult): string;
10
+ export interface GradleBuildCompact {
11
+ [key: string]: unknown;
12
+ success: boolean;
13
+ exitCode: number;
14
+ duration: number;
15
+ timedOut: boolean;
16
+ tasksExecuted?: number;
17
+ tasksFailed?: number;
18
+ diagnosticCount: number;
19
+ }
20
+ export declare function compactGradleBuildMap(data: GradleBuildResult): GradleBuildCompact;
21
+ export declare function formatGradleBuildCompact(data: GradleBuildCompact): string;
22
+ export interface GradleTestCompact {
23
+ [key: string]: unknown;
24
+ success: boolean;
25
+ exitCode: number;
26
+ duration: number;
27
+ timedOut: boolean;
28
+ totalTests: number;
29
+ passed: number;
30
+ failed: number;
31
+ skipped: number;
32
+ }
33
+ export declare function compactGradleTestMap(data: GradleTestResult): GradleTestCompact;
34
+ export declare function formatGradleTestCompact(data: GradleTestCompact): string;
35
+ export interface GradleTasksCompact {
36
+ [key: string]: unknown;
37
+ total: number;
38
+ }
39
+ export declare function compactGradleTasksMap(data: GradleTasksResult): GradleTasksCompact;
40
+ export declare function formatGradleTasksCompact(data: GradleTasksCompact): string;
41
+ export interface GradleDepsCompact {
42
+ [key: string]: unknown;
43
+ totalDependencies: number;
44
+ configurationCount: number;
45
+ }
46
+ export declare function compactGradleDepsMap(data: GradleDependenciesResult): GradleDepsCompact;
47
+ export declare function formatGradleDepsCompact(data: GradleDepsCompact): string;
48
+ export interface MavenBuildCompact {
49
+ [key: string]: unknown;
50
+ success: boolean;
51
+ exitCode: number;
52
+ duration: number;
53
+ timedOut: boolean;
54
+ diagnosticCount: number;
55
+ }
56
+ export declare function compactMavenBuildMap(data: MavenBuildResult): MavenBuildCompact;
57
+ export declare function formatMavenBuildCompact(data: MavenBuildCompact): string;
58
+ export interface MavenTestCompact {
59
+ [key: string]: unknown;
60
+ success: boolean;
61
+ exitCode: number;
62
+ duration: number;
63
+ timedOut: boolean;
64
+ totalTests: number;
65
+ passed: number;
66
+ failed: number;
67
+ errors: number;
68
+ skipped: number;
69
+ }
70
+ export declare function compactMavenTestMap(data: MavenTestResult): MavenTestCompact;
71
+ export declare function formatMavenTestCompact(data: MavenTestCompact): string;
72
+ export interface MavenDepsCompact {
73
+ [key: string]: unknown;
74
+ total: number;
75
+ }
76
+ export declare function compactMavenDepsMap(data: MavenDependenciesResult): MavenDepsCompact;
77
+ export declare function formatMavenDepsCompact(data: MavenDepsCompact): string;
78
+ export interface MavenVerifyCompact {
79
+ [key: string]: unknown;
80
+ success: boolean;
81
+ exitCode: number;
82
+ duration: number;
83
+ timedOut: boolean;
84
+ diagnosticCount: number;
85
+ }
86
+ export declare function compactMavenVerifyMap(data: MavenVerifyResult): MavenVerifyCompact;
87
+ export declare function formatMavenVerifyCompact(data: MavenVerifyCompact): string;
88
+ //# sourceMappingURL=formatters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/lib/formatters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,278 @@
1
+ // ── Gradle formatters ───────────────────────────────────────────────
2
+ export function formatGradleBuild(data) {
3
+ const lines = [];
4
+ if (data.timedOut) {
5
+ lines.push(`gradle build: TIMED OUT after ${data.duration}ms (exit code ${data.exitCode}).`);
6
+ }
7
+ else if (data.success) {
8
+ lines.push(`gradle build: success (${data.duration}ms).`);
9
+ }
10
+ else {
11
+ lines.push(`gradle build: exit code ${data.exitCode} (${data.duration}ms).`);
12
+ }
13
+ if (data.tasksExecuted !== undefined)
14
+ lines.push(`tasks executed: ${data.tasksExecuted}`);
15
+ if (data.tasksFailed !== undefined)
16
+ lines.push(`tasks failed: ${data.tasksFailed}`);
17
+ if (data.diagnostics) {
18
+ for (const d of data.diagnostics) {
19
+ const loc = d.file ? `${d.file}${d.line ? `:${d.line}` : ""}` : "";
20
+ lines.push(` ${d.severity}: ${d.message}${loc ? ` (${loc})` : ""}`);
21
+ }
22
+ }
23
+ if (data.stdout)
24
+ lines.push(data.stdout);
25
+ if (data.stderr)
26
+ lines.push(data.stderr);
27
+ return lines.join("\n");
28
+ }
29
+ export function formatGradleTest(data) {
30
+ const lines = [];
31
+ if (data.timedOut) {
32
+ lines.push(`gradle test: TIMED OUT after ${data.duration}ms (exit code ${data.exitCode}).`);
33
+ }
34
+ else if (data.success) {
35
+ lines.push(`gradle test: success (${data.duration}ms).`);
36
+ }
37
+ else {
38
+ lines.push(`gradle test: exit code ${data.exitCode} (${data.duration}ms).`);
39
+ }
40
+ lines.push(`${data.totalTests} tests: ${data.passed} passed, ${data.failed} failed, ${data.skipped} skipped`);
41
+ if (data.tests) {
42
+ for (const t of data.tests) {
43
+ const status = t.passed ? "PASS" : "FAIL";
44
+ const cls = t.className ? `${t.className} > ` : "";
45
+ lines.push(` ${status} ${cls}${t.name}${t.duration ? ` (${t.duration})` : ""}`);
46
+ if (t.failure)
47
+ lines.push(` ${t.failure}`);
48
+ }
49
+ }
50
+ return lines.join("\n");
51
+ }
52
+ export function formatGradleTasks(data) {
53
+ if (data.total === 0)
54
+ return "gradle: no tasks found.";
55
+ const lines = [`gradle: ${data.total} tasks`];
56
+ let lastGroup;
57
+ for (const t of data.tasks) {
58
+ if (t.group && t.group !== lastGroup) {
59
+ lines.push(`\n${t.group} tasks`);
60
+ lastGroup = t.group;
61
+ }
62
+ lines.push(` ${t.name}${t.description ? ` - ${t.description}` : ""}`);
63
+ }
64
+ return lines.join("\n");
65
+ }
66
+ export function formatGradleDependencies(data) {
67
+ if (data.totalDependencies === 0)
68
+ return "gradle: no dependencies found.";
69
+ const lines = [`gradle: ${data.totalDependencies} dependencies`];
70
+ for (const config of data.configurations) {
71
+ lines.push(`\n${config.configuration}:`);
72
+ for (const d of config.dependencies) {
73
+ lines.push(` ${d.group}:${d.artifact}${d.version ? `:${d.version}` : ""}`);
74
+ }
75
+ }
76
+ return lines.join("\n");
77
+ }
78
+ // ── Maven formatters ────────────────────────────────────────────────
79
+ export function formatMavenBuild(data) {
80
+ const lines = [];
81
+ if (data.timedOut) {
82
+ lines.push(`maven build: TIMED OUT after ${data.duration}ms (exit code ${data.exitCode}).`);
83
+ }
84
+ else if (data.success) {
85
+ lines.push(`maven build: success (${data.duration}ms).`);
86
+ }
87
+ else {
88
+ lines.push(`maven build: exit code ${data.exitCode} (${data.duration}ms).`);
89
+ }
90
+ if (data.diagnostics) {
91
+ for (const d of data.diagnostics) {
92
+ const loc = d.file ? `${d.file}${d.line ? `:${d.line}` : ""}` : "";
93
+ lines.push(` ${d.severity}: ${d.message}${loc ? ` (${loc})` : ""}`);
94
+ }
95
+ }
96
+ if (data.stdout)
97
+ lines.push(data.stdout);
98
+ if (data.stderr)
99
+ lines.push(data.stderr);
100
+ return lines.join("\n");
101
+ }
102
+ export function formatMavenTest(data) {
103
+ const lines = [];
104
+ if (data.timedOut) {
105
+ lines.push(`maven test: TIMED OUT after ${data.duration}ms (exit code ${data.exitCode}).`);
106
+ }
107
+ else if (data.success) {
108
+ lines.push(`maven test: success (${data.duration}ms).`);
109
+ }
110
+ else {
111
+ lines.push(`maven test: exit code ${data.exitCode} (${data.duration}ms).`);
112
+ }
113
+ lines.push(`${data.totalTests} tests: ${data.passed} passed, ${data.failed} failed, ${data.errors} errors, ${data.skipped} skipped`);
114
+ if (data.tests) {
115
+ for (const t of data.tests) {
116
+ const status = t.passed ? "PASS" : "FAIL";
117
+ const cls = t.className ? `${t.className} > ` : "";
118
+ lines.push(` ${status} ${cls}${t.name}`);
119
+ if (t.failure)
120
+ lines.push(` ${t.failure}`);
121
+ }
122
+ }
123
+ return lines.join("\n");
124
+ }
125
+ export function formatMavenDependencies(data) {
126
+ if (data.total === 0)
127
+ return "maven: no dependencies found.";
128
+ const lines = [`maven: ${data.total} dependencies`];
129
+ for (const d of data.dependencies) {
130
+ const parts = [` ${d.groupId}:${d.artifactId}`];
131
+ if (d.version)
132
+ parts.push(`:${d.version}`);
133
+ if (d.scope)
134
+ parts.push(` (${d.scope})`);
135
+ lines.push(parts.join(""));
136
+ }
137
+ return lines.join("\n");
138
+ }
139
+ export function formatMavenVerify(data) {
140
+ const lines = [];
141
+ if (data.timedOut) {
142
+ lines.push(`maven verify: TIMED OUT after ${data.duration}ms (exit code ${data.exitCode}).`);
143
+ }
144
+ else if (data.success) {
145
+ lines.push(`maven verify: success (${data.duration}ms).`);
146
+ }
147
+ else {
148
+ lines.push(`maven verify: exit code ${data.exitCode} (${data.duration}ms).`);
149
+ }
150
+ if (data.diagnostics) {
151
+ for (const d of data.diagnostics) {
152
+ const loc = d.file ? `${d.file}${d.line ? `:${d.line}` : ""}` : "";
153
+ lines.push(` ${d.severity}: ${d.message}${loc ? ` (${loc})` : ""}`);
154
+ }
155
+ }
156
+ if (data.stdout)
157
+ lines.push(data.stdout);
158
+ if (data.stderr)
159
+ lines.push(data.stderr);
160
+ return lines.join("\n");
161
+ }
162
+ export function compactGradleBuildMap(data) {
163
+ return {
164
+ success: data.success,
165
+ exitCode: data.exitCode,
166
+ duration: data.duration,
167
+ timedOut: data.timedOut,
168
+ tasksExecuted: data.tasksExecuted,
169
+ tasksFailed: data.tasksFailed,
170
+ diagnosticCount: (data.diagnostics ?? []).length,
171
+ };
172
+ }
173
+ export function formatGradleBuildCompact(data) {
174
+ if (data.timedOut)
175
+ return `gradle build: TIMED OUT after ${data.duration}ms (exit code ${data.exitCode}).`;
176
+ if (data.success)
177
+ return `gradle build: success (${data.duration}ms).`;
178
+ return `gradle build: exit code ${data.exitCode} (${data.duration}ms), ${data.diagnosticCount} diagnostics.`;
179
+ }
180
+ export function compactGradleTestMap(data) {
181
+ return {
182
+ success: data.success,
183
+ exitCode: data.exitCode,
184
+ duration: data.duration,
185
+ timedOut: data.timedOut,
186
+ totalTests: data.totalTests,
187
+ passed: data.passed,
188
+ failed: data.failed,
189
+ skipped: data.skipped,
190
+ };
191
+ }
192
+ export function formatGradleTestCompact(data) {
193
+ if (data.timedOut)
194
+ return `gradle test: TIMED OUT after ${data.duration}ms (exit code ${data.exitCode}).`;
195
+ if (data.success)
196
+ return `gradle test: ${data.totalTests} passed (${data.duration}ms).`;
197
+ return `gradle test: ${data.passed}/${data.totalTests} passed, ${data.failed} failed, ${data.skipped} skipped (${data.duration}ms).`;
198
+ }
199
+ export function compactGradleTasksMap(data) {
200
+ return { total: data.total };
201
+ }
202
+ export function formatGradleTasksCompact(data) {
203
+ if (data.total === 0)
204
+ return "gradle: no tasks found.";
205
+ return `gradle: ${data.total} tasks`;
206
+ }
207
+ export function compactGradleDepsMap(data) {
208
+ return {
209
+ totalDependencies: data.totalDependencies,
210
+ configurationCount: data.configurations.length,
211
+ };
212
+ }
213
+ export function formatGradleDepsCompact(data) {
214
+ if (data.totalDependencies === 0)
215
+ return "gradle: no dependencies found.";
216
+ return `gradle: ${data.totalDependencies} dependencies across ${data.configurationCount} configurations`;
217
+ }
218
+ export function compactMavenBuildMap(data) {
219
+ return {
220
+ success: data.success,
221
+ exitCode: data.exitCode,
222
+ duration: data.duration,
223
+ timedOut: data.timedOut,
224
+ diagnosticCount: (data.diagnostics ?? []).length,
225
+ };
226
+ }
227
+ export function formatMavenBuildCompact(data) {
228
+ if (data.timedOut)
229
+ return `maven build: TIMED OUT after ${data.duration}ms (exit code ${data.exitCode}).`;
230
+ if (data.success)
231
+ return `maven build: success (${data.duration}ms).`;
232
+ return `maven build: exit code ${data.exitCode} (${data.duration}ms), ${data.diagnosticCount} diagnostics.`;
233
+ }
234
+ export function compactMavenTestMap(data) {
235
+ return {
236
+ success: data.success,
237
+ exitCode: data.exitCode,
238
+ duration: data.duration,
239
+ timedOut: data.timedOut,
240
+ totalTests: data.totalTests,
241
+ passed: data.passed,
242
+ failed: data.failed,
243
+ errors: data.errors,
244
+ skipped: data.skipped,
245
+ };
246
+ }
247
+ export function formatMavenTestCompact(data) {
248
+ if (data.timedOut)
249
+ return `maven test: TIMED OUT after ${data.duration}ms (exit code ${data.exitCode}).`;
250
+ if (data.success)
251
+ return `maven test: ${data.totalTests} passed (${data.duration}ms).`;
252
+ return `maven test: ${data.passed}/${data.totalTests} passed, ${data.failed} failed, ${data.errors} errors, ${data.skipped} skipped (${data.duration}ms).`;
253
+ }
254
+ export function compactMavenDepsMap(data) {
255
+ return { total: data.total };
256
+ }
257
+ export function formatMavenDepsCompact(data) {
258
+ if (data.total === 0)
259
+ return "maven: no dependencies found.";
260
+ return `maven: ${data.total} dependencies`;
261
+ }
262
+ export function compactMavenVerifyMap(data) {
263
+ return {
264
+ success: data.success,
265
+ exitCode: data.exitCode,
266
+ duration: data.duration,
267
+ timedOut: data.timedOut,
268
+ diagnosticCount: (data.diagnostics ?? []).length,
269
+ };
270
+ }
271
+ export function formatMavenVerifyCompact(data) {
272
+ if (data.timedOut)
273
+ return `maven verify: TIMED OUT after ${data.duration}ms (exit code ${data.exitCode}).`;
274
+ if (data.success)
275
+ return `maven verify: success (${data.duration}ms).`;
276
+ return `maven verify: exit code ${data.exitCode} (${data.duration}ms), ${data.diagnosticCount} diagnostics.`;
277
+ }
278
+ //# sourceMappingURL=formatters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../src/lib/formatters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type RunResult } from "@paretools/shared";
2
+ export type JvmTool = "gradle" | "maven";
3
+ /**
4
+ * Detects whether to use Gradle or Maven based on project files.
5
+ * Checks for Gradle wrapper / build files first, then Maven pom.xml.
6
+ */
7
+ export declare function detectTool(cwd: string): JvmTool;
8
+ /** Runs a Gradle command with the given arguments. */
9
+ export declare function gradleCmd(args: string[], cwd: string): Promise<RunResult>;
10
+ /** Runs a Maven command with the given arguments. */
11
+ export declare function mvnCmd(args: string[], cwd: string): Promise<RunResult>;
12
+ //# sourceMappingURL=jvm-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jvm-runner.d.ts","sourceRoot":"","sources":["../../src/lib/jvm-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAIxD,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAIzC;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAY/C;AA8BD,sDAAsD;AACtD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAI/E;AAED,qDAAqD;AACrD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAI5E"}
@@ -0,0 +1,58 @@
1
+ import { run } from "@paretools/shared";
2
+ import { existsSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ const TIMEOUT = 300_000;
5
+ /**
6
+ * Detects whether to use Gradle or Maven based on project files.
7
+ * Checks for Gradle wrapper / build files first, then Maven pom.xml.
8
+ */
9
+ export function detectTool(cwd) {
10
+ if (existsSync(join(cwd, "gradlew")) ||
11
+ existsSync(join(cwd, "gradlew.bat")) ||
12
+ existsSync(join(cwd, "build.gradle")) ||
13
+ existsSync(join(cwd, "build.gradle.kts")) ||
14
+ existsSync(join(cwd, "settings.gradle")) ||
15
+ existsSync(join(cwd, "settings.gradle.kts"))) {
16
+ return "gradle";
17
+ }
18
+ return "maven";
19
+ }
20
+ /**
21
+ * Resolves which Gradle executable to use.
22
+ * Prefers the Gradle wrapper (./gradlew) if present; falls back to `gradle`.
23
+ */
24
+ function resolveGradleCmd(cwd) {
25
+ if (process.platform === "win32" && existsSync(join(cwd, "gradlew.bat"))) {
26
+ return join(cwd, "gradlew.bat");
27
+ }
28
+ if (existsSync(join(cwd, "gradlew"))) {
29
+ return join(cwd, "gradlew");
30
+ }
31
+ return "gradle";
32
+ }
33
+ /**
34
+ * Resolves which Maven executable to use.
35
+ * Prefers the Maven wrapper (./mvnw) if present; falls back to `mvn`.
36
+ */
37
+ function resolveMvnCmd(cwd) {
38
+ if (process.platform === "win32" && existsSync(join(cwd, "mvnw.cmd"))) {
39
+ return join(cwd, "mvnw.cmd");
40
+ }
41
+ if (existsSync(join(cwd, "mvnw"))) {
42
+ return join(cwd, "mvnw");
43
+ }
44
+ return "mvn";
45
+ }
46
+ /** Runs a Gradle command with the given arguments. */
47
+ export async function gradleCmd(args, cwd) {
48
+ const cmd = resolveGradleCmd(cwd);
49
+ // Always use --console=plain for parseable output
50
+ return run(cmd, ["--console=plain", ...args], { cwd, timeout: TIMEOUT });
51
+ }
52
+ /** Runs a Maven command with the given arguments. */
53
+ export async function mvnCmd(args, cwd) {
54
+ const cmd = resolveMvnCmd(cwd);
55
+ // Use batch mode for non-interactive, parseable output
56
+ return run(cmd, ["-B", ...args], { cwd, timeout: TIMEOUT });
57
+ }
58
+ //# sourceMappingURL=jvm-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jvm-runner.js","sourceRoot":"","sources":["../../src/lib/jvm-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAkB,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,IACE,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAChC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QACpC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACrC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;QACzC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;QACxC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC,EAC5C,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,GAAW;IACnC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAClC,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;QACtE,OAAO,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sDAAsD;AACtD,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAc,EAAE,GAAW;IACzD,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAClC,kDAAkD;IAClD,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,qDAAqD;AACrD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAc,EAAE,GAAW;IACtD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,uDAAuD;IACvD,OAAO,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,86 @@
1
+ import type { GradleBuildResult, GradleTestResult, GradleTasksResult, GradleDependenciesResult, MavenBuildResult, MavenTestResult, MavenDependenciesResult, MavenVerifyResult, BuildDiagnostic } from "../schemas/index.js";
2
+ /** Extracts compiler errors and warnings from combined output. */
3
+ export declare function parseDiagnostics(output: string): BuildDiagnostic[];
4
+ /** Parses Gradle build output into structured result. */
5
+ export declare function parseGradleBuild(stdout: string, stderr: string, exitCode: number, duration: number, timedOut?: boolean): GradleBuildResult;
6
+ /** Parses Gradle test output into structured result. */
7
+ export declare function parseGradleTest(stdout: string, stderr: string, exitCode: number, duration: number, timedOut?: boolean): GradleTestResult;
8
+ /**
9
+ * Parses `gradle tasks --all --console=plain` output into structured task data.
10
+ *
11
+ * Expected format:
12
+ * ```
13
+ * > Task :tasks
14
+ *
15
+ * ------------------------------------------------------------
16
+ * Tasks runnable from root project 'myproject'
17
+ * ------------------------------------------------------------
18
+ *
19
+ * Build tasks
20
+ * -----------
21
+ * assemble - Assembles the outputs of this project.
22
+ * build - Assembles and tests this project.
23
+ *
24
+ * Help tasks
25
+ * ----------
26
+ * tasks - Displays the tasks runnable from root project.
27
+ * ```
28
+ */
29
+ export declare function parseGradleTasks(stdout: string): GradleTasksResult;
30
+ /**
31
+ * Parses `gradle dependencies --console=plain` output.
32
+ *
33
+ * Expected format:
34
+ * ```
35
+ * > Task :dependencies
36
+ *
37
+ * ------------------------------------------------------------
38
+ * Root project 'myproject'
39
+ * ------------------------------------------------------------
40
+ *
41
+ * compileClasspath - Compile classpath for source set 'main'.
42
+ * +--- org.springframework:spring-core:5.3.20
43
+ * +--- com.google.guava:guava:31.1-jre
44
+ * \--- org.slf4j:slf4j-api:1.7.36
45
+ *
46
+ * runtimeClasspath - Runtime classpath of source set 'main'.
47
+ * +--- org.springframework:spring-core:5.3.20
48
+ * \--- org.slf4j:slf4j-api:1.7.36
49
+ * ```
50
+ */
51
+ export declare function parseGradleDependencies(stdout: string): GradleDependenciesResult;
52
+ /** Parses Maven build (package) output into structured result. */
53
+ export declare function parseMavenBuild(stdout: string, stderr: string, exitCode: number, duration: number, timedOut?: boolean): MavenBuildResult;
54
+ /**
55
+ * Parses Maven Surefire test output.
56
+ *
57
+ * Expected format:
58
+ * ```
59
+ * [INFO] -------------------------------------------------------
60
+ * [INFO] T E S T S
61
+ * [INFO] -------------------------------------------------------
62
+ * [INFO] Running com.example.AppTest
63
+ * [INFO] Tests run: 5, Failures: 1, Errors: 0, Skipped: 1, Time elapsed: 0.123 s
64
+ * [INFO]
65
+ * [INFO] Results:
66
+ * [INFO]
67
+ * [INFO] Tests run: 5, Failures: 1, Errors: 0, Skipped: 1
68
+ * ```
69
+ */
70
+ export declare function parseMavenTest(stdout: string, stderr: string, exitCode: number, duration: number, timedOut?: boolean): MavenTestResult;
71
+ /**
72
+ * Parses `mvn dependency:tree` output.
73
+ *
74
+ * Expected format:
75
+ * ```
76
+ * [INFO] --- dependency:3.6.0:tree (default-cli) @ myproject ---
77
+ * [INFO] com.example:myproject:jar:1.0-SNAPSHOT
78
+ * [INFO] +- org.springframework:spring-core:jar:5.3.20:compile
79
+ * [INFO] +- com.google.guava:guava:jar:31.1-jre:compile
80
+ * [INFO] \- org.slf4j:slf4j-api:jar:1.7.36:compile
81
+ * ```
82
+ */
83
+ export declare function parseMavenDependencies(stdout: string): MavenDependenciesResult;
84
+ /** Parses Maven verify output (same structure as build). */
85
+ export declare function parseMavenVerify(stdout: string, stderr: string, exitCode: number, duration: number, timedOut?: boolean): MavenVerifyResult;
86
+ //# sourceMappingURL=parsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/lib/parsers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAGhB,iBAAiB,EACjB,wBAAwB,EAGxB,gBAAgB,EAChB,eAAe,EAEf,uBAAuB,EAEvB,iBAAiB,EACjB,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAI7B,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,EAAE,CAiElE;AAID,yDAAyD;AACzD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,OAAe,GACxB,iBAAiB,CAkCnB;AAED,wDAAwD;AACxD,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,OAAe,GACxB,gBAAgB,CA8ElB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAkDlE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,wBAAwB,CAwEhF;AAID,kEAAkE;AAClE,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,OAAe,GACxB,gBAAgB,CAclB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,OAAe,GACxB,eAAe,CAuDjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,CA+B9E;AAED,4DAA4D;AAC5D,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,OAAe,GACxB,iBAAiB,CAcnB"}