@paretools/python 0.5.0 → 0.7.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/README.md +4 -4
- package/dist/index.js +1 -1
- package/dist/lib/formatters.d.ts +107 -1
- package/dist/lib/formatters.d.ts.map +1 -1
- package/dist/lib/formatters.js +200 -0
- package/dist/lib/formatters.js.map +1 -1
- package/dist/lib/parsers.d.ts +7 -1
- package/dist/lib/parsers.d.ts.map +1 -1
- package/dist/lib/parsers.js +66 -0
- package/dist/lib/parsers.js.map +1 -1
- package/dist/schemas/index.d.ts +33 -0
- package/dist/schemas/index.d.ts.map +1 -1
- package/dist/schemas/index.js +27 -0
- package/dist/schemas/index.js.map +1 -1
- package/dist/tools/black.d.ts.map +1 -1
- package/dist/tools/black.js +19 -6
- package/dist/tools/black.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +27 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/mypy.d.ts.map +1 -1
- package/dist/tools/mypy.js +19 -6
- package/dist/tools/mypy.js.map +1 -1
- package/dist/tools/pip-audit.d.ts.map +1 -1
- package/dist/tools/pip-audit.js +21 -6
- package/dist/tools/pip-audit.js.map +1 -1
- package/dist/tools/pip-install.d.ts.map +1 -1
- package/dist/tools/pip-install.js +37 -8
- package/dist/tools/pip-install.js.map +1 -1
- package/dist/tools/pip-list.d.ts +3 -0
- package/dist/tools/pip-list.d.ts.map +1 -0
- package/dist/tools/pip-list.js +32 -0
- package/dist/tools/pip-list.js.map +1 -0
- package/dist/tools/pip-show.d.ts +3 -0
- package/dist/tools/pip-show.d.ts.map +1 -0
- package/dist/tools/pip-show.js +37 -0
- package/dist/tools/pip-show.js.map +1 -0
- package/dist/tools/pytest.d.ts.map +1 -1
- package/dist/tools/pytest.js +26 -7
- package/dist/tools/pytest.js.map +1 -1
- package/dist/tools/ruff-format.d.ts +3 -0
- package/dist/tools/ruff-format.d.ts.map +1 -0
- package/dist/tools/ruff-format.js +49 -0
- package/dist/tools/ruff-format.js.map +1 -0
- package/dist/tools/ruff.d.ts.map +1 -1
- package/dist/tools/ruff.js +19 -6
- package/dist/tools/ruff.js.map +1 -1
- package/dist/tools/uv-install.d.ts.map +1 -1
- package/dist/tools/uv-install.js +40 -8
- package/dist/tools/uv-install.js.map +1 -1
- package/dist/tools/uv-run.d.ts.map +1 -1
- package/dist/tools/uv-run.js +17 -6
- package/dist/tools/uv-run.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,oGAAoG;AACpG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,KAAK,CAChB,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CACH;IACD,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAIH,qGAAqG;AACrG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC,CAAC;AAEH,6GAA6G;AAC7G,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAIH,sGAAsG;AACtG,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;CACrB,CAAC,CAAC;AAEH,oGAAoG;AACpG,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAIH,wGAAwG;AACxG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACjC,CAAC,CAAC;AAEH,0FAA0F;AAC1F,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAIH,iFAAiF;AACjF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEH,oGAAoG;AACpG,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;CACvC,CAAC,CAAC;AAIH,qFAAqF;AACrF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,KAAK,CAChB,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CACH;IACD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAIH,gFAAgF;AAChF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;CACrB,CAAC,CAAC;AAIH,2FAA2F;AAC3F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACnC,CAAC,CAAC;AAIH,4EAA4E;AAC5E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;CAClB,CAAC,CAAC;AAIH,uEAAuE;AACvE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC9B,CAAC,CAAC;AAIH,oGAAoG;AACpG,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACtC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"black.d.ts","sourceRoot":"","sources":["../../src/tools/black.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"black.d.ts","sourceRoot":"","sources":["../../src/tools/black.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QAsDlD"}
|
package/dist/tools/black.js
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
|
|
3
3
|
import { black } from "../lib/python-runner.js";
|
|
4
4
|
import { parseBlackOutput } from "../lib/parsers.js";
|
|
5
|
-
import { formatBlack } from "../lib/formatters.js";
|
|
5
|
+
import { formatBlack, compactBlackMap, formatBlackCompact } from "../lib/formatters.js";
|
|
6
6
|
import { BlackResultSchema } from "../schemas/index.js";
|
|
7
7
|
export function registerBlackTool(server) {
|
|
8
8
|
server.registerTool("black", {
|
|
9
9
|
title: "Black Formatter",
|
|
10
10
|
description: "Runs Black code formatter and returns structured results (files changed, unchanged, would reformat). Use instead of running `black` in the terminal.",
|
|
11
11
|
inputSchema: {
|
|
12
|
-
path: z
|
|
12
|
+
path: z
|
|
13
|
+
.string()
|
|
14
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
15
|
+
.optional()
|
|
16
|
+
.describe("Project root path (default: cwd)"),
|
|
13
17
|
targets: z
|
|
14
|
-
.array(z.string())
|
|
18
|
+
.array(z.string().max(INPUT_LIMITS.PATH_MAX))
|
|
19
|
+
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
15
20
|
.optional()
|
|
16
21
|
.default(["."])
|
|
17
22
|
.describe('Files or directories to format (default: ["."])'),
|
|
@@ -20,16 +25,24 @@ export function registerBlackTool(server) {
|
|
|
20
25
|
.optional()
|
|
21
26
|
.default(false)
|
|
22
27
|
.describe("Check mode (report without modifying files)"),
|
|
28
|
+
compact: z
|
|
29
|
+
.boolean()
|
|
30
|
+
.optional()
|
|
31
|
+
.default(true)
|
|
32
|
+
.describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
|
|
23
33
|
},
|
|
24
34
|
outputSchema: BlackResultSchema,
|
|
25
|
-
}, async ({ path, targets, check }) => {
|
|
35
|
+
}, async ({ path, targets, check, compact }) => {
|
|
26
36
|
const cwd = path || process.cwd();
|
|
37
|
+
for (const t of targets ?? []) {
|
|
38
|
+
assertNoFlagInjection(t, "targets");
|
|
39
|
+
}
|
|
27
40
|
const args = [...(targets || ["."])];
|
|
28
41
|
if (check)
|
|
29
42
|
args.push("--check");
|
|
30
43
|
const result = await black(args, cwd);
|
|
31
44
|
const data = parseBlackOutput(result.stdout, result.stderr, result.exitCode);
|
|
32
|
-
return
|
|
45
|
+
return compactDualOutput(data, result.stderr, formatBlack, compactBlackMap, formatBlackCompact, compact === false);
|
|
33
46
|
});
|
|
34
47
|
}
|
|
35
48
|
//# sourceMappingURL=black.js.map
|
package/dist/tools/black.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"black.js","sourceRoot":"","sources":["../../src/tools/black.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"black.js","sourceRoot":"","sources":["../../src/tools/black.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,CAAC,YAAY,CACjB,OAAO,EACP;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,sJAAsJ;QACxJ,WAAW,EAAE;YACX,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,OAAO,EAAE,CAAC;iBACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;iBAC5C,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;iBAC3B,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;iBACd,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,KAAK,EAAE,CAAC;iBACL,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,6CAA6C,CAAC;YAC1D,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,YAAY,EAAE,iBAAiB;KAChC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1C,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;YAC9B,qBAAqB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,KAAK;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEhC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7E,OAAO,iBAAiB,CACtB,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAajD"}
|
package/dist/tools/index.js
CHANGED
|
@@ -1,19 +1,38 @@
|
|
|
1
|
+
import { shouldRegisterTool } from "@paretools/shared";
|
|
1
2
|
import { registerPipInstallTool } from "./pip-install.js";
|
|
3
|
+
import { registerPipListTool } from "./pip-list.js";
|
|
4
|
+
import { registerPipShowTool } from "./pip-show.js";
|
|
2
5
|
import { registerMypyTool } from "./mypy.js";
|
|
3
6
|
import { registerRuffTool } from "./ruff.js";
|
|
7
|
+
import { registerRuffFormatTool } from "./ruff-format.js";
|
|
4
8
|
import { registerPipAuditTool } from "./pip-audit.js";
|
|
5
9
|
import { registerPytestTool } from "./pytest.js";
|
|
6
10
|
import { registerUvInstallTool } from "./uv-install.js";
|
|
7
11
|
import { registerUvRunTool } from "./uv-run.js";
|
|
8
12
|
import { registerBlackTool } from "./black.js";
|
|
9
13
|
export function registerAllTools(server) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
const s = (name) => shouldRegisterTool("python", name);
|
|
15
|
+
if (s("pip-install"))
|
|
16
|
+
registerPipInstallTool(server);
|
|
17
|
+
if (s("pip-list"))
|
|
18
|
+
registerPipListTool(server);
|
|
19
|
+
if (s("pip-show"))
|
|
20
|
+
registerPipShowTool(server);
|
|
21
|
+
if (s("mypy"))
|
|
22
|
+
registerMypyTool(server);
|
|
23
|
+
if (s("ruff-check"))
|
|
24
|
+
registerRuffTool(server);
|
|
25
|
+
if (s("ruff-format"))
|
|
26
|
+
registerRuffFormatTool(server);
|
|
27
|
+
if (s("pip-audit"))
|
|
28
|
+
registerPipAuditTool(server);
|
|
29
|
+
if (s("pytest"))
|
|
30
|
+
registerPytestTool(server);
|
|
31
|
+
if (s("uv-install"))
|
|
32
|
+
registerUvInstallTool(server);
|
|
33
|
+
if (s("uv-run"))
|
|
34
|
+
registerUvRunTool(server);
|
|
35
|
+
if (s("black"))
|
|
36
|
+
registerBlackTool(server);
|
|
18
37
|
}
|
|
19
38
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/
|
|
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,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,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,aAAa,CAAC;QAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,UAAU,CAAC;QAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,UAAU,CAAC;QAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,MAAM,CAAC;QAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,CAAC,YAAY,CAAC;QAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,CAAC,aAAa,CAAC;QAAE,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,WAAW,CAAC;QAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,QAAQ,CAAC;QAAE,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC,YAAY,CAAC;QAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,CAAC,QAAQ,CAAC;QAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,OAAO,CAAC;QAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC"}
|
package/dist/tools/mypy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mypy.d.ts","sourceRoot":"","sources":["../../src/tools/mypy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"mypy.d.ts","sourceRoot":"","sources":["../../src/tools/mypy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAgDjD"}
|
package/dist/tools/mypy.js
CHANGED
|
@@ -1,28 +1,41 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
|
|
3
3
|
import { mypy } from "../lib/python-runner.js";
|
|
4
4
|
import { parseMypyOutput } from "../lib/parsers.js";
|
|
5
|
-
import { formatMypy } from "../lib/formatters.js";
|
|
5
|
+
import { formatMypy, compactMypyMap, formatMypyCompact } from "../lib/formatters.js";
|
|
6
6
|
import { MypyResultSchema } from "../schemas/index.js";
|
|
7
7
|
export function registerMypyTool(server) {
|
|
8
8
|
server.registerTool("mypy", {
|
|
9
9
|
title: "mypy Type Check",
|
|
10
10
|
description: "Runs mypy and returns structured type-check diagnostics (file, line, severity, message, code). Use instead of running `mypy` in the terminal.",
|
|
11
11
|
inputSchema: {
|
|
12
|
-
path: z
|
|
12
|
+
path: z
|
|
13
|
+
.string()
|
|
14
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
15
|
+
.optional()
|
|
16
|
+
.describe("Project root path (default: cwd)"),
|
|
13
17
|
targets: z
|
|
14
|
-
.array(z.string())
|
|
18
|
+
.array(z.string().max(INPUT_LIMITS.PATH_MAX))
|
|
19
|
+
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
15
20
|
.optional()
|
|
16
21
|
.default(["."])
|
|
17
22
|
.describe("Files or directories to check (default: ['.'])"),
|
|
23
|
+
compact: z
|
|
24
|
+
.boolean()
|
|
25
|
+
.optional()
|
|
26
|
+
.default(true)
|
|
27
|
+
.describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
|
|
18
28
|
},
|
|
19
29
|
outputSchema: MypyResultSchema,
|
|
20
|
-
}, async ({ path, targets }) => {
|
|
30
|
+
}, async ({ path, targets, compact }) => {
|
|
21
31
|
const cwd = path || process.cwd();
|
|
32
|
+
for (const t of targets ?? []) {
|
|
33
|
+
assertNoFlagInjection(t, "targets");
|
|
34
|
+
}
|
|
22
35
|
const args = [...(targets || ["."])];
|
|
23
36
|
const result = await mypy(args, cwd);
|
|
24
37
|
const data = parseMypyOutput(result.stdout, result.exitCode);
|
|
25
|
-
return
|
|
38
|
+
return compactDualOutput(data, result.stdout, formatMypy, compactMypyMap, formatMypyCompact, compact === false);
|
|
26
39
|
});
|
|
27
40
|
}
|
|
28
41
|
//# sourceMappingURL=mypy.js.map
|
package/dist/tools/mypy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mypy.js","sourceRoot":"","sources":["../../src/tools/mypy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mypy.js","sourceRoot":"","sources":["../../src/tools/mypy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,YAAY,CACjB,MAAM,EACN;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,+IAA+I;QACjJ,WAAW,EAAE;YACX,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,OAAO,EAAE,CAAC;iBACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;iBAC5C,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;iBAC3B,QAAQ,EAAE;iBACV,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;iBACd,QAAQ,CAAC,gDAAgD,CAAC;YAC7D,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,YAAY,EAAE,gBAAgB;KAC/B,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE;QACnC,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;YAC9B,qBAAqB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAErC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACrC,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7D,OAAO,iBAAiB,CACtB,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pip-audit.d.ts","sourceRoot":"","sources":["../../src/tools/pip-audit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"pip-audit.d.ts","sourceRoot":"","sources":["../../src/tools/pip-audit.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QAiDrD"}
|
package/dist/tools/pip-audit.js
CHANGED
|
@@ -1,19 +1,34 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
|
|
3
3
|
import { parsePipAuditJson } from "../lib/parsers.js";
|
|
4
|
-
import { formatPipAudit } from "../lib/formatters.js";
|
|
4
|
+
import { formatPipAudit, compactPipAuditMap, formatPipAuditCompact } from "../lib/formatters.js";
|
|
5
5
|
import { PipAuditResultSchema } from "../schemas/index.js";
|
|
6
6
|
export function registerPipAuditTool(server) {
|
|
7
7
|
server.registerTool("pip-audit", {
|
|
8
8
|
title: "pip Audit",
|
|
9
9
|
description: "Runs pip-audit and returns a structured vulnerability report. Use instead of running `pip-audit` in the terminal.",
|
|
10
10
|
inputSchema: {
|
|
11
|
-
path: z
|
|
12
|
-
|
|
11
|
+
path: z
|
|
12
|
+
.string()
|
|
13
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
14
|
+
.optional()
|
|
15
|
+
.describe("Project root path (default: cwd)"),
|
|
16
|
+
requirements: z
|
|
17
|
+
.string()
|
|
18
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
19
|
+
.optional()
|
|
20
|
+
.describe("Path to requirements file"),
|
|
21
|
+
compact: z
|
|
22
|
+
.boolean()
|
|
23
|
+
.optional()
|
|
24
|
+
.default(true)
|
|
25
|
+
.describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
|
|
13
26
|
},
|
|
14
27
|
outputSchema: PipAuditResultSchema,
|
|
15
|
-
}, async ({ path, requirements }) => {
|
|
28
|
+
}, async ({ path, requirements, compact }) => {
|
|
16
29
|
const cwd = path || process.cwd();
|
|
30
|
+
if (requirements)
|
|
31
|
+
assertNoFlagInjection(requirements, "requirements");
|
|
17
32
|
const args = ["audit", "--format", "json"];
|
|
18
33
|
if (requirements)
|
|
19
34
|
args.push("-r", requirements);
|
|
@@ -21,7 +36,7 @@ export function registerPipAuditTool(server) {
|
|
|
21
36
|
const { run } = await import("@paretools/shared");
|
|
22
37
|
const result = await run("pip-audit", args, { cwd });
|
|
23
38
|
const data = parsePipAuditJson(result.stdout);
|
|
24
|
-
return
|
|
39
|
+
return compactDualOutput(data, result.stdout, formatPipAudit, compactPipAuditMap, formatPipAuditCompact, compact === false);
|
|
25
40
|
});
|
|
26
41
|
}
|
|
27
42
|
//# sourceMappingURL=pip-audit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pip-audit.js","sourceRoot":"","sources":["../../src/tools/pip-audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pip-audit.js","sourceRoot":"","sources":["../../src/tools/pip-audit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,YAAY,CACjB,WAAW,EACX;QACE,KAAK,EAAE,WAAW;QAClB,WAAW,EACT,mHAAmH;QACrH,WAAW,EAAE;YACX,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,2BAA2B,CAAC;YACxC,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,YAAY,EAAE,oBAAoB;KACnC,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE;QACxC,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,IAAI,YAAY;YAAE,qBAAqB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAEtE,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,YAAY;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAEhD,0DAA0D;QAC1D,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACrD,MAAM,IAAI,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,iBAAiB,CACtB,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pip-install.d.ts","sourceRoot":"","sources":["../../src/tools/pip-install.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"pip-install.d.ts","sourceRoot":"","sources":["../../src/tools/pip-install.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,QAuEvD"}
|
|
@@ -1,26 +1,55 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
|
|
3
3
|
import { pip } from "../lib/python-runner.js";
|
|
4
4
|
import { parsePipInstall } from "../lib/parsers.js";
|
|
5
|
-
import { formatPipInstall } from "../lib/formatters.js";
|
|
5
|
+
import { formatPipInstall, compactPipInstallMap, formatPipInstallCompact, } from "../lib/formatters.js";
|
|
6
6
|
import { PipInstallSchema } from "../schemas/index.js";
|
|
7
7
|
export function registerPipInstallTool(server) {
|
|
8
8
|
server.registerTool("pip-install", {
|
|
9
9
|
title: "pip Install",
|
|
10
|
-
description: "Runs pip install and returns a structured summary of installed packages.
|
|
10
|
+
description: "Runs pip install and returns a structured summary of installed packages. " +
|
|
11
|
+
"Use instead of running `pip install` in the terminal. " +
|
|
12
|
+
"WARNING: Installing packages may execute arbitrary setup.py code. " +
|
|
13
|
+
"Only install trusted packages. Use dryRun to preview what would be installed before committing.",
|
|
11
14
|
inputSchema: {
|
|
12
15
|
packages: z
|
|
13
|
-
.array(z.string())
|
|
16
|
+
.array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
|
|
17
|
+
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
14
18
|
.optional()
|
|
15
19
|
.default([])
|
|
16
20
|
.describe("Packages to install (empty for requirements.txt)"),
|
|
17
|
-
requirements: z
|
|
18
|
-
|
|
21
|
+
requirements: z
|
|
22
|
+
.string()
|
|
23
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
24
|
+
.optional()
|
|
25
|
+
.describe("Path to requirements file"),
|
|
26
|
+
path: z
|
|
27
|
+
.string()
|
|
28
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
29
|
+
.optional()
|
|
30
|
+
.describe("Working directory (default: cwd)"),
|
|
31
|
+
dryRun: z
|
|
32
|
+
.boolean()
|
|
33
|
+
.optional()
|
|
34
|
+
.default(false)
|
|
35
|
+
.describe("Preview what would be installed without actually installing (--dry-run)"),
|
|
36
|
+
compact: z
|
|
37
|
+
.boolean()
|
|
38
|
+
.optional()
|
|
39
|
+
.default(true)
|
|
40
|
+
.describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
|
|
19
41
|
},
|
|
20
42
|
outputSchema: PipInstallSchema,
|
|
21
|
-
}, async ({ packages, requirements, path }) => {
|
|
43
|
+
}, async ({ packages, requirements, path, dryRun, compact }) => {
|
|
22
44
|
const cwd = path || process.cwd();
|
|
45
|
+
for (const p of packages ?? []) {
|
|
46
|
+
assertNoFlagInjection(p, "packages");
|
|
47
|
+
}
|
|
48
|
+
if (requirements)
|
|
49
|
+
assertNoFlagInjection(requirements, "requirements");
|
|
23
50
|
const args = ["install"];
|
|
51
|
+
if (dryRun)
|
|
52
|
+
args.push("--dry-run");
|
|
24
53
|
if (requirements) {
|
|
25
54
|
args.push("-r", requirements);
|
|
26
55
|
}
|
|
@@ -32,7 +61,7 @@ export function registerPipInstallTool(server) {
|
|
|
32
61
|
}
|
|
33
62
|
const result = await pip(args, cwd);
|
|
34
63
|
const data = parsePipInstall(result.stdout, result.stderr, result.exitCode);
|
|
35
|
-
return
|
|
64
|
+
return compactDualOutput(data, result.stdout, formatPipInstall, compactPipInstallMap, formatPipInstallCompact, compact === false);
|
|
36
65
|
});
|
|
37
66
|
}
|
|
38
67
|
//# sourceMappingURL=pip-install.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pip-install.js","sourceRoot":"","sources":["../../src/tools/pip-install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pip-install.js","sourceRoot":"","sources":["../../src/tools/pip-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pip-list.d.ts","sourceRoot":"","sources":["../../src/tools/pip-list.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAuCpD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { compactDualOutput, INPUT_LIMITS } from "@paretools/shared";
|
|
3
|
+
import { pip } from "../lib/python-runner.js";
|
|
4
|
+
import { parsePipListJson } from "../lib/parsers.js";
|
|
5
|
+
import { formatPipList, compactPipListMap, formatPipListCompact } from "../lib/formatters.js";
|
|
6
|
+
import { PipListSchema } from "../schemas/index.js";
|
|
7
|
+
export function registerPipListTool(server) {
|
|
8
|
+
server.registerTool("pip-list", {
|
|
9
|
+
title: "pip List",
|
|
10
|
+
description: "Runs pip list and returns a structured list of installed packages. " +
|
|
11
|
+
"Use instead of running `pip list` in the terminal.",
|
|
12
|
+
inputSchema: {
|
|
13
|
+
path: z
|
|
14
|
+
.string()
|
|
15
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
16
|
+
.optional()
|
|
17
|
+
.describe("Working directory (default: cwd)"),
|
|
18
|
+
compact: z
|
|
19
|
+
.boolean()
|
|
20
|
+
.optional()
|
|
21
|
+
.default(true)
|
|
22
|
+
.describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
|
|
23
|
+
},
|
|
24
|
+
outputSchema: PipListSchema,
|
|
25
|
+
}, async ({ path, compact }) => {
|
|
26
|
+
const cwd = path || process.cwd();
|
|
27
|
+
const result = await pip(["list", "--format", "json"], cwd);
|
|
28
|
+
const data = parsePipListJson(result.stdout);
|
|
29
|
+
return compactDualOutput(data, result.stdout, formatPipList, compactPipListMap, formatPipListCompact, compact === false);
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=pip-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pip-list.js","sourceRoot":"","sources":["../../src/tools/pip-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,qEAAqE;YACrE,oDAAoD;QACtD,WAAW,EAAE;YACX,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,YAAY,EAAE,aAAa;KAC5B,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE;QAC1B,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAElC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC;QAC5D,MAAM,IAAI,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,OAAO,iBAAiB,CACtB,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pip-show.d.ts","sourceRoot":"","sources":["../../src/tools/pip-show.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QA4CpD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
|
|
3
|
+
import { pip } from "../lib/python-runner.js";
|
|
4
|
+
import { parsePipShowOutput } from "../lib/parsers.js";
|
|
5
|
+
import { formatPipShow, compactPipShowMap, formatPipShowCompact } from "../lib/formatters.js";
|
|
6
|
+
import { PipShowSchema } from "../schemas/index.js";
|
|
7
|
+
export function registerPipShowTool(server) {
|
|
8
|
+
server.registerTool("pip-show", {
|
|
9
|
+
title: "pip Show",
|
|
10
|
+
description: "Runs pip show and returns structured package metadata (name, version, summary, dependencies). " +
|
|
11
|
+
"Use instead of running `pip show` in the terminal.",
|
|
12
|
+
inputSchema: {
|
|
13
|
+
package: z.string().max(INPUT_LIMITS.SHORT_STRING_MAX).describe("Package name to show"),
|
|
14
|
+
path: z
|
|
15
|
+
.string()
|
|
16
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
17
|
+
.optional()
|
|
18
|
+
.describe("Working directory (default: cwd)"),
|
|
19
|
+
compact: z
|
|
20
|
+
.boolean()
|
|
21
|
+
.optional()
|
|
22
|
+
.default(true)
|
|
23
|
+
.describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
|
|
24
|
+
},
|
|
25
|
+
outputSchema: PipShowSchema,
|
|
26
|
+
}, async (input) => {
|
|
27
|
+
const pkg = input["package"];
|
|
28
|
+
const path = input["path"];
|
|
29
|
+
const compact = input["compact"];
|
|
30
|
+
const cwd = path || process.cwd();
|
|
31
|
+
assertNoFlagInjection(pkg, "package");
|
|
32
|
+
const result = await pip(["show", pkg], cwd);
|
|
33
|
+
const data = parsePipShowOutput(result.stdout);
|
|
34
|
+
return compactDualOutput(data, result.stdout, formatPipShow, compactPipShowMap, formatPipShowCompact, compact === false);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=pip-show.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pip-show.js","sourceRoot":"","sources":["../../src/tools/pip-show.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3F,OAAO,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,MAAM,CAAC,YAAY,CACjB,UAAU,EACV;QACE,KAAK,EAAE,UAAU;QACjB,WAAW,EACT,gGAAgG;YAChG,oDAAoD;QACtD,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACvF,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CAAC,kCAAkC,CAAC;YAC/C,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CACP,kGAAkG,CACnG;SACJ;QACD,YAAY,EAAE,aAAa;KAC5B,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAuB,CAAC;QACjD,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAwB,CAAC;QACxD,MAAM,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,qBAAqB,CAAC,GAAa,EAAE,SAAS,CAAC,CAAC;QAEhD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,MAAM,EAAE,GAAa,CAAC,EAAE,GAAG,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/C,OAAO,iBAAiB,CACtB,IAAI,EACJ,MAAM,CAAC,MAAM,EACb,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EACpB,OAAO,KAAK,KAAK,CAClB,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pytest.d.ts","sourceRoot":"","sources":["../../src/tools/pytest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"pytest.d.ts","sourceRoot":"","sources":["../../src/tools/pytest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,QA6DnD"}
|
package/dist/tools/pytest.js
CHANGED
|
@@ -1,26 +1,45 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import {
|
|
2
|
+
import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
|
|
3
3
|
import { pytest } from "../lib/python-runner.js";
|
|
4
4
|
import { parsePytestOutput } from "../lib/parsers.js";
|
|
5
|
-
import { formatPytest } from "../lib/formatters.js";
|
|
5
|
+
import { formatPytest, compactPytestMap, formatPytestCompact } from "../lib/formatters.js";
|
|
6
6
|
import { PytestResultSchema } from "../schemas/index.js";
|
|
7
7
|
export function registerPytestTool(server) {
|
|
8
8
|
server.registerTool("pytest", {
|
|
9
9
|
title: "pytest",
|
|
10
10
|
description: "Runs pytest and returns structured test results (passed, failed, errors, skipped, failures). Use instead of running `pytest` in the terminal.",
|
|
11
11
|
inputSchema: {
|
|
12
|
-
path: z
|
|
12
|
+
path: z
|
|
13
|
+
.string()
|
|
14
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
15
|
+
.optional()
|
|
16
|
+
.describe("Project root path (default: cwd)"),
|
|
13
17
|
targets: z
|
|
14
|
-
.array(z.string())
|
|
18
|
+
.array(z.string().max(INPUT_LIMITS.PATH_MAX))
|
|
19
|
+
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
15
20
|
.optional()
|
|
16
21
|
.describe("Test files or directories to run (default: auto-discover)"),
|
|
17
|
-
markers: z
|
|
22
|
+
markers: z
|
|
23
|
+
.string()
|
|
24
|
+
.max(INPUT_LIMITS.SHORT_STRING_MAX)
|
|
25
|
+
.optional()
|
|
26
|
+
.describe('Pytest marker expression (e.g. "not slow")'),
|
|
18
27
|
verbose: z.boolean().optional().default(false).describe("Enable verbose output"),
|
|
19
28
|
exitFirst: z.boolean().optional().default(false).describe("Stop on first failure (-x)"),
|
|
29
|
+
compact: z
|
|
30
|
+
.boolean()
|
|
31
|
+
.optional()
|
|
32
|
+
.default(true)
|
|
33
|
+
.describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
|
|
20
34
|
},
|
|
21
35
|
outputSchema: PytestResultSchema,
|
|
22
|
-
}, async ({ path, targets, markers, verbose, exitFirst }) => {
|
|
36
|
+
}, async ({ path, targets, markers, verbose, exitFirst, compact }) => {
|
|
23
37
|
const cwd = path || process.cwd();
|
|
38
|
+
for (const t of targets ?? []) {
|
|
39
|
+
assertNoFlagInjection(t, "targets");
|
|
40
|
+
}
|
|
41
|
+
if (markers)
|
|
42
|
+
assertNoFlagInjection(markers, "markers");
|
|
24
43
|
const args = ["--tb=short", "-q"];
|
|
25
44
|
if (verbose)
|
|
26
45
|
args.splice(args.indexOf("-q"), 1, "-v");
|
|
@@ -32,7 +51,7 @@ export function registerPytestTool(server) {
|
|
|
32
51
|
args.push(...targets);
|
|
33
52
|
const result = await pytest(args, cwd);
|
|
34
53
|
const data = parsePytestOutput(result.stdout, result.stderr, result.exitCode);
|
|
35
|
-
return
|
|
54
|
+
return compactDualOutput(data, result.stdout, formatPytest, compactPytestMap, formatPytestCompact, compact === false);
|
|
36
55
|
});
|
|
37
56
|
}
|
|
38
57
|
//# sourceMappingURL=pytest.js.map
|
package/dist/tools/pytest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pytest.js","sourceRoot":"","sources":["../../src/tools/pytest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"pytest.js","sourceRoot":"","sources":["../../src/tools/pytest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruff-format.d.ts","sourceRoot":"","sources":["../../src/tools/ruff-format.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAWzE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,QAuDvD"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
|
|
3
|
+
import { ruff } from "../lib/python-runner.js";
|
|
4
|
+
import { parseRuffFormatOutput } from "../lib/parsers.js";
|
|
5
|
+
import { formatRuffFormat, compactRuffFormatMap, formatRuffFormatCompact, } from "../lib/formatters.js";
|
|
6
|
+
import { RuffFormatResultSchema } from "../schemas/index.js";
|
|
7
|
+
export function registerRuffFormatTool(server) {
|
|
8
|
+
server.registerTool("ruff-format", {
|
|
9
|
+
title: "ruff Format",
|
|
10
|
+
description: "Runs ruff format and returns structured results (files changed, file list). " +
|
|
11
|
+
"Use instead of running `ruff format` in the terminal.",
|
|
12
|
+
inputSchema: {
|
|
13
|
+
patterns: z
|
|
14
|
+
.array(z.string().max(INPUT_LIMITS.PATH_MAX))
|
|
15
|
+
.max(INPUT_LIMITS.ARRAY_MAX)
|
|
16
|
+
.optional()
|
|
17
|
+
.default(["."])
|
|
18
|
+
.describe('Files or directories to format (default: ["."])'),
|
|
19
|
+
check: z
|
|
20
|
+
.boolean()
|
|
21
|
+
.optional()
|
|
22
|
+
.default(false)
|
|
23
|
+
.describe("Check mode (report without modifying files)"),
|
|
24
|
+
path: z
|
|
25
|
+
.string()
|
|
26
|
+
.max(INPUT_LIMITS.PATH_MAX)
|
|
27
|
+
.optional()
|
|
28
|
+
.describe("Project root path (default: cwd)"),
|
|
29
|
+
compact: z
|
|
30
|
+
.boolean()
|
|
31
|
+
.optional()
|
|
32
|
+
.default(true)
|
|
33
|
+
.describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
|
|
34
|
+
},
|
|
35
|
+
outputSchema: RuffFormatResultSchema,
|
|
36
|
+
}, async ({ patterns, check, path, compact }) => {
|
|
37
|
+
const cwd = path || process.cwd();
|
|
38
|
+
for (const p of patterns ?? []) {
|
|
39
|
+
assertNoFlagInjection(p, "patterns");
|
|
40
|
+
}
|
|
41
|
+
const args = ["format", ...(patterns || ["."])];
|
|
42
|
+
if (check)
|
|
43
|
+
args.push("--check");
|
|
44
|
+
const result = await ruff(args, cwd);
|
|
45
|
+
const data = parseRuffFormatOutput(result.stdout, result.stderr, result.exitCode);
|
|
46
|
+
return compactDualOutput(data, result.stderr, formatRuffFormat, compactRuffFormatMap, formatRuffFormatCompact, compact === false);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=ruff-format.js.map
|