@paretools/python 0.12.0 → 0.13.1
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/README.md +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/formatters.d.ts +13 -28
- package/dist/lib/formatters.d.ts.map +1 -1
- package/dist/lib/formatters.js +69 -82
- package/dist/lib/formatters.js.map +1 -1
- package/dist/lib/parsers.d.ts.map +1 -1
- package/dist/lib/parsers.js +3 -56
- package/dist/lib/parsers.js.map +1 -1
- package/dist/schemas/index.d.ts +4 -37
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +4 -36
- package/dist/schemas/index.js.map +1 -1
- package/dist/tools/index.d.ts +2 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +84 -30
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/poetry.js +1 -1
- package/dist/tools/poetry.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -61,7 +61,7 @@ Add to your MCP client config:
|
|
|
61
61
|
}
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
## All Pare Servers (
|
|
64
|
+
## All Pare Servers (240 tools)
|
|
65
65
|
|
|
66
66
|
| Package | Tools | Wraps |
|
|
67
67
|
| -------------------------------------------------------------------- | --------------------------------------------------------------------------- | ---------------------------------- |
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { createServer } from "@paretools/shared";
|
|
2
|
+
import { createServer, readPackageVersion } from "@paretools/shared";
|
|
3
3
|
import { registerAllTools } from "./tools/index.js";
|
|
4
4
|
await createServer({
|
|
5
5
|
name: "@paretools/python",
|
|
6
|
-
version:
|
|
6
|
+
version: readPackageVersion(import.meta.url),
|
|
7
7
|
instructions: "Structured Python tool operations (pip install, mypy, ruff, pip-audit, pytest, uv, black). Returns typed JSON with structured type errors, lint violations, vulnerability data, test results, and formatting status.",
|
|
8
8
|
registerTools: registerAllTools,
|
|
9
9
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,YAAY,CAAC;IACjB,IAAI,EAAE,mBAAmB;IACzB,OAAO,EAAE,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5C,YAAY,EACV,sNAAsN;IACxN,aAAa,EAAE,gBAAgB;CAChC,CAAC,CAAC"}
|
package/dist/lib/formatters.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare function formatUvInstall(data: UvInstall): string;
|
|
|
15
15
|
export declare function formatUvRun(data: UvRun): string;
|
|
16
16
|
/** Formats structured Black formatter results into a human-readable summary. */
|
|
17
17
|
export declare function formatBlack(data: BlackResult): string;
|
|
18
|
-
/** Compact pytest: counts +
|
|
18
|
+
/** Compact pytest: counts + failure test names only (no stack traces). */
|
|
19
19
|
export interface PytestResultCompact {
|
|
20
20
|
[key: string]: unknown;
|
|
21
21
|
success: boolean;
|
|
@@ -24,29 +24,21 @@ export interface PytestResultCompact {
|
|
|
24
24
|
errors: number;
|
|
25
25
|
skipped: number;
|
|
26
26
|
warnings: number;
|
|
27
|
-
total: number;
|
|
28
|
-
duration: number;
|
|
29
27
|
failedTests: string[];
|
|
30
28
|
}
|
|
31
29
|
export declare function compactPytestMap(data: PytestResult): PytestResultCompact;
|
|
32
30
|
export declare function formatPytestCompact(data: PytestResultCompact): string;
|
|
33
|
-
/** Compact mypy: success
|
|
31
|
+
/** Compact mypy: success only. Drop individual diagnostics. */
|
|
34
32
|
export interface MypyResultCompact {
|
|
35
33
|
[key: string]: unknown;
|
|
36
34
|
success: boolean;
|
|
37
|
-
total: number;
|
|
38
|
-
errors: number;
|
|
39
|
-
warnings: number;
|
|
40
|
-
notes: number;
|
|
41
35
|
}
|
|
42
36
|
export declare function compactMypyMap(data: MypyResult): MypyResultCompact;
|
|
43
37
|
export declare function formatMypyCompact(data: MypyResultCompact): string;
|
|
44
|
-
/** Compact ruff: success +
|
|
38
|
+
/** Compact ruff: success + fixedCount. Drop individual entries. */
|
|
45
39
|
export interface RuffResultCompact {
|
|
46
40
|
[key: string]: unknown;
|
|
47
41
|
success: boolean;
|
|
48
|
-
total: number;
|
|
49
|
-
fixable: number;
|
|
50
42
|
fixedCount?: number;
|
|
51
43
|
}
|
|
52
44
|
export declare function compactRuffMap(data: RuffResult): RuffResultCompact;
|
|
@@ -57,35 +49,30 @@ export interface BlackResultCompact {
|
|
|
57
49
|
success: boolean;
|
|
58
50
|
filesChanged: number;
|
|
59
51
|
filesUnchanged: number;
|
|
60
|
-
filesChecked: number;
|
|
61
52
|
errorType?: "check_failed" | "internal_error";
|
|
62
53
|
}
|
|
63
54
|
export declare function compactBlackMap(data: BlackResult): BlackResultCompact;
|
|
64
55
|
export declare function formatBlackCompact(data: BlackResultCompact): string;
|
|
65
|
-
/** Compact pip-install: success +
|
|
56
|
+
/** Compact pip-install: success + dryRun. Drop individual package details. */
|
|
66
57
|
export interface PipInstallCompact {
|
|
67
58
|
[key: string]: unknown;
|
|
68
59
|
success: boolean;
|
|
69
|
-
total: number;
|
|
70
60
|
alreadySatisfied: boolean;
|
|
71
61
|
dryRun?: boolean;
|
|
72
62
|
}
|
|
73
63
|
export declare function compactPipInstallMap(data: PipInstall): PipInstallCompact;
|
|
74
64
|
export declare function formatPipInstallCompact(data: PipInstallCompact): string;
|
|
75
|
-
/** Compact pip-audit: success
|
|
65
|
+
/** Compact pip-audit: success only. Drop individual CVE details. */
|
|
76
66
|
export interface PipAuditResultCompact {
|
|
77
67
|
[key: string]: unknown;
|
|
78
68
|
success: boolean;
|
|
79
|
-
total: number;
|
|
80
69
|
}
|
|
81
70
|
export declare function compactPipAuditMap(data: PipAuditResult): PipAuditResultCompact;
|
|
82
71
|
export declare function formatPipAuditCompact(data: PipAuditResultCompact): string;
|
|
83
|
-
/** Compact uv-install: success +
|
|
72
|
+
/** Compact uv-install: success + error info. Drop individual packages. */
|
|
84
73
|
export interface UvInstallCompact {
|
|
85
74
|
[key: string]: unknown;
|
|
86
75
|
success: boolean;
|
|
87
|
-
total: number;
|
|
88
|
-
duration: number;
|
|
89
76
|
alreadySatisfied?: boolean;
|
|
90
77
|
error?: string;
|
|
91
78
|
resolutionConflicts?: {
|
|
@@ -95,23 +82,21 @@ export interface UvInstallCompact {
|
|
|
95
82
|
}
|
|
96
83
|
export declare function compactUvInstallMap(data: UvInstall): UvInstallCompact;
|
|
97
84
|
export declare function formatUvInstallCompact(data: UvInstallCompact): string;
|
|
98
|
-
/** Compact uv-run: exitCode
|
|
85
|
+
/** Compact uv-run: exitCode. Drop stdout/stderr. */
|
|
99
86
|
export interface UvRunCompact {
|
|
100
87
|
[key: string]: unknown;
|
|
101
88
|
exitCode: number;
|
|
102
89
|
success: boolean;
|
|
103
|
-
duration: number;
|
|
104
90
|
truncated?: boolean;
|
|
105
91
|
}
|
|
106
92
|
export declare function compactUvRunMap(data: UvRun): UvRunCompact;
|
|
107
93
|
export declare function formatUvRunCompact(data: UvRunCompact): string;
|
|
108
94
|
/** Formats structured pip list results into a human-readable package listing. */
|
|
109
95
|
export declare function formatPipList(data: PipList): string;
|
|
110
|
-
/** Compact pip-list:
|
|
96
|
+
/** Compact pip-list: success + error only. Drop individual package details. */
|
|
111
97
|
export interface PipListCompact {
|
|
112
98
|
[key: string]: unknown;
|
|
113
99
|
success: boolean;
|
|
114
|
-
total: number;
|
|
115
100
|
error?: string;
|
|
116
101
|
}
|
|
117
102
|
export declare function compactPipListMap(data: PipList): PipListCompact;
|
|
@@ -216,14 +201,14 @@ export interface PyenvResultCompact {
|
|
|
216
201
|
}
|
|
217
202
|
export declare function compactPyenvMap(data: PyenvResult): PyenvResultCompact;
|
|
218
203
|
export declare function formatPyenvCompact(data: PyenvResultCompact): string;
|
|
219
|
-
/** Formats structured poetry results into a human-readable summary.
|
|
220
|
-
|
|
221
|
-
|
|
204
|
+
/** Formats structured poetry results into a human-readable summary.
|
|
205
|
+
* action is passed separately since it is not included in the output schema. */
|
|
206
|
+
export declare function formatPoetry(data: PoetryResult, action: string): string;
|
|
207
|
+
/** Compact poetry: success only. Drop individual package/artifact details.
|
|
208
|
+
* action is not in the Zod schema so it must not appear in compact output. */
|
|
222
209
|
export interface PoetryResultCompact {
|
|
223
210
|
[key: string]: unknown;
|
|
224
211
|
success: boolean;
|
|
225
|
-
action: string;
|
|
226
|
-
total: number;
|
|
227
212
|
}
|
|
228
213
|
export declare function compactPoetryMap(data: PoetryResult): PoetryResultCompact;
|
|
229
214
|
export declare function formatPoetryCompact(data: PoetryResultCompact): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/lib/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,SAAS,EACT,KAAK,EACL,WAAW,EACX,OAAO,EACP,OAAO,EACP,gBAAgB,EAChB,SAAS,EACT,SAAS,EACT,YAAY,EAIZ,WAAW,EACX,WAAW,EACX,YAAY,EACb,MAAM,qBAAqB,CAAC;AAE7B,kGAAkG;AAClG,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../src/lib/formatters.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/formatters.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/** Formats structured pip install results into a human-readable summary of installed packages. */
|
|
2
2
|
export function formatPipInstall(data) {
|
|
3
|
-
|
|
3
|
+
const total = (data.installed ?? []).length;
|
|
4
|
+
if (data.alreadySatisfied && total === 0)
|
|
4
5
|
return "All requirements already satisfied.";
|
|
5
6
|
if (!data.success)
|
|
6
7
|
return "pip install failed.";
|
|
7
8
|
const verb = data.dryRun ? "Would install" : "Installed";
|
|
8
|
-
const lines = [`${verb} ${
|
|
9
|
+
const lines = [`${verb} ${total} packages:`];
|
|
9
10
|
for (const pkg of data.installed ?? []) {
|
|
10
11
|
lines.push(` ${pkg.name}==${pkg.version}`);
|
|
11
12
|
}
|
|
@@ -13,10 +14,14 @@ export function formatPipInstall(data) {
|
|
|
13
14
|
}
|
|
14
15
|
/** Formats structured mypy type-check results into a human-readable diagnostic summary. */
|
|
15
16
|
export function formatMypy(data) {
|
|
16
|
-
|
|
17
|
+
const diagnostics = data.diagnostics ?? [];
|
|
18
|
+
if (data.success && diagnostics.length === 0)
|
|
17
19
|
return "mypy: no errors found.";
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
+
const errors = diagnostics.filter((d) => d.severity === "error").length;
|
|
21
|
+
const warnings = diagnostics.filter((d) => d.severity === "warning").length;
|
|
22
|
+
const notes = diagnostics.filter((d) => d.severity === "note").length;
|
|
23
|
+
const lines = [`mypy: ${errors} errors, ${warnings} warnings, ${notes} notes`];
|
|
24
|
+
for (const d of diagnostics) {
|
|
20
25
|
const col = d.column ? `:${d.column}` : "";
|
|
21
26
|
const code = d.code ? ` [${d.code}]` : "";
|
|
22
27
|
lines.push(` ${d.file}:${d.line}${col} ${d.severity}: ${d.message}${code}`);
|
|
@@ -25,11 +30,14 @@ export function formatMypy(data) {
|
|
|
25
30
|
}
|
|
26
31
|
/** Formats structured ruff lint results into a human-readable diagnostic listing. */
|
|
27
32
|
export function formatRuff(data) {
|
|
28
|
-
|
|
33
|
+
const diagnostics = data.diagnostics ?? [];
|
|
34
|
+
const total = diagnostics.length;
|
|
35
|
+
if (total === 0)
|
|
29
36
|
return "ruff: no issues found.";
|
|
37
|
+
const fixable = diagnostics.filter((d) => d.fixable).length;
|
|
30
38
|
const fixedPart = data.fixedCount !== undefined ? `, ${data.fixedCount} fixed` : "";
|
|
31
|
-
const lines = [`ruff: ${
|
|
32
|
-
for (const d of
|
|
39
|
+
const lines = [`ruff: ${total} issues (${fixable} fixable${fixedPart})`];
|
|
40
|
+
for (const d of diagnostics) {
|
|
33
41
|
const fixInfo = d.fixApplicability ? ` [fix: ${d.fixApplicability}]` : "";
|
|
34
42
|
lines.push(` ${d.file}:${d.line}:${d.column} ${d.code}: ${d.message}${fixInfo}`);
|
|
35
43
|
}
|
|
@@ -37,10 +45,12 @@ export function formatRuff(data) {
|
|
|
37
45
|
}
|
|
38
46
|
/** Formats structured pip-audit vulnerability results into a human-readable security report. */
|
|
39
47
|
export function formatPipAudit(data) {
|
|
40
|
-
|
|
48
|
+
const vulns = data.vulnerabilities ?? [];
|
|
49
|
+
const total = vulns.length;
|
|
50
|
+
if (total === 0)
|
|
41
51
|
return "No vulnerabilities found.";
|
|
42
|
-
const lines = [`${
|
|
43
|
-
for (const v of
|
|
52
|
+
const lines = [`${total} vulnerabilities:`];
|
|
53
|
+
for (const v of vulns) {
|
|
44
54
|
const fix = v.fixVersions.length ? ` (fix: ${v.fixVersions.join(", ")})` : "";
|
|
45
55
|
const severity = v.severity ? ` [${v.severity}]` : "";
|
|
46
56
|
const score = v.cvssScore != null ? ` CVSS:${v.cvssScore}` : "";
|
|
@@ -50,7 +60,8 @@ export function formatPipAudit(data) {
|
|
|
50
60
|
}
|
|
51
61
|
/** Formats structured pytest results into a human-readable test summary. */
|
|
52
62
|
export function formatPytest(data) {
|
|
53
|
-
|
|
63
|
+
const total = data.passed + data.failed + data.errors + data.skipped;
|
|
64
|
+
if (total === 0)
|
|
54
65
|
return "pytest: no tests collected.";
|
|
55
66
|
const parts = [];
|
|
56
67
|
if (data.passed > 0)
|
|
@@ -63,7 +74,7 @@ export function formatPytest(data) {
|
|
|
63
74
|
parts.push(`${data.skipped} skipped`);
|
|
64
75
|
if (data.warnings > 0)
|
|
65
76
|
parts.push(`${data.warnings} warnings`);
|
|
66
|
-
const lines = [`pytest: ${parts.join(", ")}
|
|
77
|
+
const lines = [`pytest: ${parts.join(", ")}`];
|
|
67
78
|
for (const f of data.failures ?? []) {
|
|
68
79
|
lines.push(` FAILED ${f.test}: ${f.message}`);
|
|
69
80
|
}
|
|
@@ -71,6 +82,8 @@ export function formatPytest(data) {
|
|
|
71
82
|
}
|
|
72
83
|
/** Formats structured uv install results into a human-readable summary. */
|
|
73
84
|
export function formatUvInstall(data) {
|
|
85
|
+
const installed = data.installed ?? [];
|
|
86
|
+
const total = installed.length;
|
|
74
87
|
if (!data.success) {
|
|
75
88
|
const lines = ["uv install failed."];
|
|
76
89
|
if (data.resolutionConflicts && data.resolutionConflicts.length > 0) {
|
|
@@ -84,10 +97,10 @@ export function formatUvInstall(data) {
|
|
|
84
97
|
}
|
|
85
98
|
return lines.join("\n");
|
|
86
99
|
}
|
|
87
|
-
if (data.alreadySatisfied ||
|
|
100
|
+
if (data.alreadySatisfied || total === 0)
|
|
88
101
|
return "All requirements already satisfied.";
|
|
89
|
-
const lines = [`Installed ${
|
|
90
|
-
for (const pkg of
|
|
102
|
+
const lines = [`Installed ${total} packages:`];
|
|
103
|
+
for (const pkg of installed) {
|
|
91
104
|
lines.push(` ${pkg.name}==${pkg.version}`);
|
|
92
105
|
}
|
|
93
106
|
return lines.join("\n");
|
|
@@ -95,7 +108,7 @@ export function formatUvInstall(data) {
|
|
|
95
108
|
/** Formats structured uv run results into a human-readable summary. */
|
|
96
109
|
export function formatUvRun(data) {
|
|
97
110
|
const status = data.success ? "completed" : `failed (exit ${data.exitCode})`;
|
|
98
|
-
const lines = [`uv run ${status}
|
|
111
|
+
const lines = [`uv run ${status}`];
|
|
99
112
|
if (data.uvDiagnostics && data.uvDiagnostics.length > 0) {
|
|
100
113
|
lines.push("uv diagnostics:");
|
|
101
114
|
for (const d of data.uvDiagnostics) {
|
|
@@ -124,7 +137,8 @@ export function formatBlack(data) {
|
|
|
124
137
|
}
|
|
125
138
|
return "black: internal error (exit 123). Check for syntax errors.";
|
|
126
139
|
}
|
|
127
|
-
|
|
140
|
+
const filesChecked = data.filesChanged + data.filesUnchanged;
|
|
141
|
+
if (filesChecked === 0)
|
|
128
142
|
return "black: no Python files found.";
|
|
129
143
|
if (data.success && data.filesChanged === 0) {
|
|
130
144
|
return `black: ${data.filesUnchanged} files already formatted.`;
|
|
@@ -150,13 +164,12 @@ export function compactPytestMap(data) {
|
|
|
150
164
|
errors: data.errors,
|
|
151
165
|
skipped: data.skipped,
|
|
152
166
|
warnings: data.warnings,
|
|
153
|
-
total: data.total,
|
|
154
|
-
duration: data.duration,
|
|
155
167
|
failedTests: (data.failures ?? []).map((f) => f.test),
|
|
156
168
|
};
|
|
157
169
|
}
|
|
158
170
|
export function formatPytestCompact(data) {
|
|
159
|
-
|
|
171
|
+
const total = data.passed + data.failed + data.errors + data.skipped;
|
|
172
|
+
if (total === 0)
|
|
160
173
|
return "pytest: no tests collected.";
|
|
161
174
|
const parts = [];
|
|
162
175
|
if (data.passed > 0)
|
|
@@ -169,7 +182,7 @@ export function formatPytestCompact(data) {
|
|
|
169
182
|
parts.push(`${data.skipped} skipped`);
|
|
170
183
|
if (data.warnings > 0)
|
|
171
184
|
parts.push(`${data.warnings} warnings`);
|
|
172
|
-
const lines = [`pytest: ${parts.join(", ")}
|
|
185
|
+
const lines = [`pytest: ${parts.join(", ")}`];
|
|
173
186
|
for (const t of data.failedTests) {
|
|
174
187
|
lines.push(` FAILED ${t}`);
|
|
175
188
|
}
|
|
@@ -178,37 +191,30 @@ export function formatPytestCompact(data) {
|
|
|
178
191
|
export function compactMypyMap(data) {
|
|
179
192
|
return {
|
|
180
193
|
success: data.success,
|
|
181
|
-
total: data.total,
|
|
182
|
-
errors: data.errors,
|
|
183
|
-
warnings: data.warnings,
|
|
184
|
-
notes: data.notes,
|
|
185
194
|
};
|
|
186
195
|
}
|
|
187
196
|
export function formatMypyCompact(data) {
|
|
188
|
-
if (data.success
|
|
197
|
+
if (data.success)
|
|
189
198
|
return "mypy: no errors found.";
|
|
190
|
-
return
|
|
199
|
+
return "mypy: errors found.";
|
|
191
200
|
}
|
|
192
201
|
export function compactRuffMap(data) {
|
|
193
202
|
return {
|
|
194
203
|
success: data.success,
|
|
195
|
-
total: data.total,
|
|
196
|
-
fixable: data.fixable,
|
|
197
204
|
fixedCount: data.fixedCount,
|
|
198
205
|
};
|
|
199
206
|
}
|
|
200
207
|
export function formatRuffCompact(data) {
|
|
201
|
-
if (data.
|
|
208
|
+
if (data.success && !data.fixedCount)
|
|
202
209
|
return "ruff: no issues found.";
|
|
203
210
|
const fixedPart = data.fixedCount !== undefined ? `, ${data.fixedCount} fixed` : "";
|
|
204
|
-
return `ruff:
|
|
211
|
+
return `ruff: issues found${fixedPart}`;
|
|
205
212
|
}
|
|
206
213
|
export function compactBlackMap(data) {
|
|
207
214
|
return {
|
|
208
215
|
success: data.success,
|
|
209
216
|
filesChanged: data.filesChanged,
|
|
210
217
|
filesUnchanged: data.filesUnchanged,
|
|
211
|
-
filesChecked: data.filesChecked,
|
|
212
218
|
errorType: data.errorType,
|
|
213
219
|
};
|
|
214
220
|
}
|
|
@@ -216,7 +222,8 @@ export function formatBlackCompact(data) {
|
|
|
216
222
|
if (data.errorType === "internal_error") {
|
|
217
223
|
return "black: internal error (exit 123).";
|
|
218
224
|
}
|
|
219
|
-
|
|
225
|
+
const filesChecked = data.filesChanged + data.filesUnchanged;
|
|
226
|
+
if (filesChecked === 0)
|
|
220
227
|
return "black: no Python files found.";
|
|
221
228
|
if (data.filesChanged === 0)
|
|
222
229
|
return `black: ${data.filesUnchanged} files already formatted.`;
|
|
@@ -225,35 +232,31 @@ export function formatBlackCompact(data) {
|
|
|
225
232
|
export function compactPipInstallMap(data) {
|
|
226
233
|
return {
|
|
227
234
|
success: data.success,
|
|
228
|
-
total: data.total,
|
|
229
235
|
alreadySatisfied: data.alreadySatisfied,
|
|
230
236
|
dryRun: data.dryRun || undefined,
|
|
231
237
|
};
|
|
232
238
|
}
|
|
233
239
|
export function formatPipInstallCompact(data) {
|
|
234
|
-
if (data.alreadySatisfied
|
|
240
|
+
if (data.alreadySatisfied)
|
|
235
241
|
return "All requirements already satisfied.";
|
|
236
242
|
if (!data.success)
|
|
237
243
|
return "pip install failed.";
|
|
238
244
|
const verb = data.dryRun ? "Would install" : "Installed";
|
|
239
|
-
return `${verb}
|
|
245
|
+
return `${verb} packages.`;
|
|
240
246
|
}
|
|
241
247
|
export function compactPipAuditMap(data) {
|
|
242
248
|
return {
|
|
243
249
|
success: data.success,
|
|
244
|
-
total: data.total,
|
|
245
250
|
};
|
|
246
251
|
}
|
|
247
252
|
export function formatPipAuditCompact(data) {
|
|
248
|
-
if (data.
|
|
253
|
+
if (data.success)
|
|
249
254
|
return "No vulnerabilities found.";
|
|
250
|
-
return
|
|
255
|
+
return "Vulnerabilities found.";
|
|
251
256
|
}
|
|
252
257
|
export function compactUvInstallMap(data) {
|
|
253
258
|
return {
|
|
254
259
|
success: data.success,
|
|
255
|
-
total: data.total,
|
|
256
|
-
duration: data.duration,
|
|
257
260
|
alreadySatisfied: data.alreadySatisfied,
|
|
258
261
|
error: data.error,
|
|
259
262
|
resolutionConflicts: data.resolutionConflicts,
|
|
@@ -266,32 +269,33 @@ export function formatUvInstallCompact(data) {
|
|
|
266
269
|
}
|
|
267
270
|
return "uv install failed.";
|
|
268
271
|
}
|
|
269
|
-
if (data.alreadySatisfied
|
|
272
|
+
if (data.alreadySatisfied)
|
|
270
273
|
return "All requirements already satisfied.";
|
|
271
|
-
return
|
|
274
|
+
return "Installed packages.";
|
|
272
275
|
}
|
|
273
276
|
export function compactUvRunMap(data) {
|
|
274
277
|
return {
|
|
275
278
|
exitCode: data.exitCode,
|
|
276
279
|
success: data.success,
|
|
277
|
-
duration: data.duration,
|
|
278
280
|
truncated: data.truncated,
|
|
279
281
|
};
|
|
280
282
|
}
|
|
281
283
|
export function formatUvRunCompact(data) {
|
|
282
284
|
const status = data.success ? "completed" : `failed (exit ${data.exitCode})`;
|
|
283
285
|
const truncated = data.truncated ? " (truncated)" : "";
|
|
284
|
-
return `uv run ${status}
|
|
286
|
+
return `uv run ${status}${truncated}`;
|
|
285
287
|
}
|
|
286
288
|
// ── pip-list formatters ──────────────────────────────────────────────
|
|
287
289
|
/** Formats structured pip list results into a human-readable package listing. */
|
|
288
290
|
export function formatPipList(data) {
|
|
289
291
|
if (data.error)
|
|
290
292
|
return `pip list error: ${data.error}`;
|
|
291
|
-
|
|
293
|
+
const packages = data.packages ?? [];
|
|
294
|
+
const total = packages.length;
|
|
295
|
+
if (total === 0)
|
|
292
296
|
return "No packages installed.";
|
|
293
|
-
const lines = [`${
|
|
294
|
-
for (const pkg of
|
|
297
|
+
const lines = [`${total} packages installed:`];
|
|
298
|
+
for (const pkg of packages) {
|
|
295
299
|
lines.push(` ${pkg.name}==${pkg.version}`);
|
|
296
300
|
}
|
|
297
301
|
return lines.join("\n");
|
|
@@ -299,16 +303,15 @@ export function formatPipList(data) {
|
|
|
299
303
|
export function compactPipListMap(data) {
|
|
300
304
|
return {
|
|
301
305
|
success: data.success,
|
|
302
|
-
total: data.total,
|
|
303
306
|
error: data.error,
|
|
304
307
|
};
|
|
305
308
|
}
|
|
306
309
|
export function formatPipListCompact(data) {
|
|
307
310
|
if (data.error)
|
|
308
311
|
return `pip list error: ${data.error}`;
|
|
309
|
-
if (data.
|
|
310
|
-
return "
|
|
311
|
-
return
|
|
312
|
+
if (data.success)
|
|
313
|
+
return "Packages listed.";
|
|
314
|
+
return "No packages installed.";
|
|
312
315
|
}
|
|
313
316
|
// ── pip-show formatters ──────────────────────────────────────────────
|
|
314
317
|
/** Formats structured pip show results into a human-readable package info display. */
|
|
@@ -696,11 +699,12 @@ export function formatPyenvCompact(data) {
|
|
|
696
699
|
return `pyenv ${data.action}: success.`;
|
|
697
700
|
}
|
|
698
701
|
// ── poetry formatters ────────────────────────────────────────────────
|
|
699
|
-
/** Formats structured poetry results into a human-readable summary.
|
|
700
|
-
|
|
702
|
+
/** Formats structured poetry results into a human-readable summary.
|
|
703
|
+
* action is passed separately since it is not included in the output schema. */
|
|
704
|
+
export function formatPoetry(data, action) {
|
|
701
705
|
if (!data.success)
|
|
702
|
-
return `poetry ${
|
|
703
|
-
if (
|
|
706
|
+
return `poetry ${action} failed.`;
|
|
707
|
+
if (action === "show") {
|
|
704
708
|
const pkgs = data.packages ?? [];
|
|
705
709
|
if (pkgs.length === 0)
|
|
706
710
|
return "No packages found.";
|
|
@@ -711,7 +715,7 @@ export function formatPoetry(data) {
|
|
|
711
715
|
}
|
|
712
716
|
return lines.join("\n");
|
|
713
717
|
}
|
|
714
|
-
if (
|
|
718
|
+
if (action === "build") {
|
|
715
719
|
const arts = data.artifacts ?? [];
|
|
716
720
|
if (arts.length === 0)
|
|
717
721
|
return "poetry build: no artifacts produced.";
|
|
@@ -721,11 +725,11 @@ export function formatPoetry(data) {
|
|
|
721
725
|
}
|
|
722
726
|
return lines.join("\n");
|
|
723
727
|
}
|
|
724
|
-
if (
|
|
728
|
+
if (action === "check" || action === "lock" || action === "export") {
|
|
725
729
|
const msgs = data.messages ?? [];
|
|
726
730
|
if (msgs.length === 0)
|
|
727
|
-
return `poetry ${
|
|
728
|
-
const lines = [`poetry ${
|
|
731
|
+
return `poetry ${action}: success.`;
|
|
732
|
+
const lines = [`poetry ${action}:`];
|
|
729
733
|
for (const m of msgs) {
|
|
730
734
|
lines.push(` ${m}`);
|
|
731
735
|
}
|
|
@@ -734,8 +738,8 @@ export function formatPoetry(data) {
|
|
|
734
738
|
// install, add, remove, update
|
|
735
739
|
const pkgs = data.packages ?? [];
|
|
736
740
|
if (pkgs.length === 0)
|
|
737
|
-
return `poetry ${
|
|
738
|
-
const lines = [`poetry ${
|
|
741
|
+
return `poetry ${action}: no changes.`;
|
|
742
|
+
const lines = [`poetry ${action}: ${pkgs.length} packages:`];
|
|
739
743
|
for (const pkg of pkgs) {
|
|
740
744
|
lines.push(` ${pkg.name}==${pkg.version}`);
|
|
741
745
|
}
|
|
@@ -744,28 +748,11 @@ export function formatPoetry(data) {
|
|
|
744
748
|
export function compactPoetryMap(data) {
|
|
745
749
|
return {
|
|
746
750
|
success: data.success,
|
|
747
|
-
action: data.action,
|
|
748
|
-
total: data.total,
|
|
749
751
|
};
|
|
750
752
|
}
|
|
751
753
|
export function formatPoetryCompact(data) {
|
|
752
754
|
if (!data.success)
|
|
753
|
-
return
|
|
754
|
-
|
|
755
|
-
if (data.total === 0)
|
|
756
|
-
return "No packages found.";
|
|
757
|
-
return `${data.total} packages installed.`;
|
|
758
|
-
}
|
|
759
|
-
if (data.action === "build") {
|
|
760
|
-
if (data.total === 0)
|
|
761
|
-
return "poetry build: no artifacts produced.";
|
|
762
|
-
return `Built ${data.total} artifacts.`;
|
|
763
|
-
}
|
|
764
|
-
if (data.action === "check" || data.action === "lock" || data.action === "export") {
|
|
765
|
-
return `poetry ${data.action}: success.`;
|
|
766
|
-
}
|
|
767
|
-
if (data.total === 0)
|
|
768
|
-
return `poetry ${data.action}: no changes.`;
|
|
769
|
-
return `poetry ${data.action}: ${data.total} packages.`;
|
|
755
|
+
return "poetry: failed.";
|
|
756
|
+
return "poetry: success.";
|
|
770
757
|
}
|
|
771
758
|
//# sourceMappingURL=formatters.js.map
|