@paretools/python 0.8.5 → 0.10.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 (62) hide show
  1. package/README.md +1 -1
  2. package/dist/index.js +1 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/formatters.d.ts +52 -5
  5. package/dist/lib/formatters.d.ts.map +1 -1
  6. package/dist/lib/formatters.js +287 -37
  7. package/dist/lib/formatters.js.map +1 -1
  8. package/dist/lib/parsers.d.ts +30 -15
  9. package/dist/lib/parsers.d.ts.map +1 -1
  10. package/dist/lib/parsers.js +506 -51
  11. package/dist/lib/parsers.js.map +1 -1
  12. package/dist/lib/python-runner.d.ts +2 -0
  13. package/dist/lib/python-runner.d.ts.map +1 -1
  14. package/dist/lib/python-runner.js +12 -8
  15. package/dist/lib/python-runner.js.map +1 -1
  16. package/dist/schemas/index.d.ts +354 -69
  17. package/dist/schemas/index.d.ts.map +1 -1
  18. package/dist/schemas/index.js +266 -32
  19. package/dist/schemas/index.js.map +1 -1
  20. package/dist/tools/black.d.ts.map +1 -1
  21. package/dist/tools/black.js +45 -10
  22. package/dist/tools/black.js.map +1 -1
  23. package/dist/tools/conda.d.ts.map +1 -1
  24. package/dist/tools/conda.js +73 -14
  25. package/dist/tools/conda.js.map +1 -1
  26. package/dist/tools/mypy.d.ts.map +1 -1
  27. package/dist/tools/mypy.js +168 -13
  28. package/dist/tools/mypy.js.map +1 -1
  29. package/dist/tools/pip-audit.d.ts.map +1 -1
  30. package/dist/tools/pip-audit.js +75 -15
  31. package/dist/tools/pip-audit.js.map +1 -1
  32. package/dist/tools/pip-install.d.ts.map +1 -1
  33. package/dist/tools/pip-install.js +88 -14
  34. package/dist/tools/pip-install.js.map +1 -1
  35. package/dist/tools/pip-list.d.ts.map +1 -1
  36. package/dist/tools/pip-list.js +58 -13
  37. package/dist/tools/pip-list.js.map +1 -1
  38. package/dist/tools/pip-show.d.ts.map +1 -1
  39. package/dist/tools/pip-show.js +46 -12
  40. package/dist/tools/pip-show.js.map +1 -1
  41. package/dist/tools/poetry.d.ts.map +1 -1
  42. package/dist/tools/poetry.js +75 -14
  43. package/dist/tools/poetry.js.map +1 -1
  44. package/dist/tools/pyenv.d.ts.map +1 -1
  45. package/dist/tools/pyenv.js +84 -19
  46. package/dist/tools/pyenv.js.map +1 -1
  47. package/dist/tools/pytest.d.ts.map +1 -1
  48. package/dist/tools/pytest.js +77 -11
  49. package/dist/tools/pytest.js.map +1 -1
  50. package/dist/tools/ruff-format.d.ts.map +1 -1
  51. package/dist/tools/ruff-format.js +84 -9
  52. package/dist/tools/ruff-format.js.map +1 -1
  53. package/dist/tools/ruff.d.ts.map +1 -1
  54. package/dist/tools/ruff.js +87 -11
  55. package/dist/tools/ruff.js.map +1 -1
  56. package/dist/tools/uv-install.d.ts.map +1 -1
  57. package/dist/tools/uv-install.js +79 -14
  58. package/dist/tools/uv-install.js.map +1 -1
  59. package/dist/tools/uv-run.d.ts.map +1 -1
  60. package/dist/tools/uv-run.js +81 -13
  61. package/dist/tools/uv-run.js.map +1 -1
  62. package/package.json +2 -2
@@ -1,43 +1,67 @@
1
1
  import { z } from "zod";
2
- import { compactDualOutput, INPUT_LIMITS } from "@paretools/shared";
2
+ import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
3
  import { conda } from "../lib/python-runner.js";
4
- import { parseCondaListJson, parseCondaInfoJson, parseCondaEnvListJson } from "../lib/parsers.js";
4
+ import { parseCondaListJson, parseCondaInfoJson, parseCondaEnvListJson, parseCondaMutationJson, } from "../lib/parsers.js";
5
5
  import { formatCondaResult, compactCondaResultMap, formatCondaResultCompact, } from "../lib/formatters.js";
6
- import { CondaResultSchema } from "../schemas/index.js";
7
6
  /** Registers the `conda` tool on the given MCP server. */
8
7
  export function registerCondaTool(server) {
9
8
  server.registerTool("conda", {
10
9
  title: "Conda",
11
- description: "Runs conda commands (list, info, env-list) and returns structured JSON output. " +
12
- "Use instead of running `conda` in the terminal.",
10
+ description: "Runs conda commands (list, info, env-list, create, remove, update) and returns structured JSON output.",
13
11
  inputSchema: {
14
12
  action: z
15
- .enum(["list", "info", "env-list"])
16
- .describe("Conda action to perform: list packages, show info, or list environments"),
13
+ .enum(["list", "info", "env-list", "create", "remove", "update"])
14
+ .describe("Conda action to perform"),
17
15
  name: z
18
16
  .string()
19
17
  .max(INPUT_LIMITS.STRING_MAX)
20
18
  .optional()
21
19
  .describe("Environment name (used with 'list' action to list packages in a specific env)"),
22
- path: z
20
+ prefix: z
23
21
  .string()
24
22
  .max(INPUT_LIMITS.PATH_MAX)
25
23
  .optional()
26
- .describe("Working directory (default: cwd)"),
27
- compact: z
24
+ .describe("Environment prefix path as alternative to name (--prefix DIR)"),
25
+ packageFilter: z
26
+ .string()
27
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
28
+ .optional()
29
+ .describe("Regex filter for conda list to show only matching packages"),
30
+ packages: z
31
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
32
+ .max(INPUT_LIMITS.ARRAY_MAX)
33
+ .optional()
34
+ .describe("Packages used by create/remove/update actions"),
35
+ all: z
28
36
  .boolean()
29
37
  .optional()
30
- .default(true)
31
- .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
38
+ .default(false)
39
+ .describe("For update action, update all installed packages (--all)"),
40
+ path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Working directory"),
41
+ compact: z.boolean().optional().default(true).describe("Prefer compact output"),
32
42
  },
33
- outputSchema: CondaResultSchema,
34
- }, async ({ action, name, path, compact }) => {
43
+ // MCP listTools expects an object-shaped schema; discriminated unions can be omitted.
44
+ outputSchema: z.object({ action: z.string() }).passthrough(),
45
+ }, async ({ action, name, prefix, packageFilter, packages, all, path, compact }) => {
35
46
  const cwd = path || process.cwd();
47
+ if (name)
48
+ assertNoFlagInjection(name, "name");
49
+ if (prefix)
50
+ assertNoFlagInjection(prefix, "prefix");
51
+ if (packageFilter)
52
+ assertNoFlagInjection(packageFilter, "packageFilter");
53
+ for (const p of packages ?? []) {
54
+ assertNoFlagInjection(p, "packages");
55
+ }
36
56
  switch (action) {
37
57
  case "list": {
38
58
  const args = ["list", "--json"];
39
59
  if (name)
40
60
  args.push("--name", name);
61
+ else if (prefix)
62
+ args.push("--prefix", prefix);
63
+ if (packageFilter)
64
+ args.push(packageFilter);
41
65
  const result = await conda(args, cwd);
42
66
  const data = parseCondaListJson(result.stdout, name);
43
67
  return compactDualOutput(data, result.stdout, formatCondaResult, compactCondaResultMap, formatCondaResultCompact, compact === false);
@@ -64,6 +88,41 @@ export function registerCondaTool(server) {
64
88
  const data = parseCondaEnvListJson(envResult.stdout, activePrefix);
65
89
  return compactDualOutput(data, envResult.stdout, formatCondaResult, compactCondaResultMap, formatCondaResultCompact, compact === false);
66
90
  }
91
+ case "create": {
92
+ const args = ["create", "--json", "-y"];
93
+ if (name)
94
+ args.push("--name", name);
95
+ else if (prefix)
96
+ args.push("--prefix", prefix);
97
+ args.push(...(packages ?? []));
98
+ const result = await conda(args, cwd);
99
+ const data = parseCondaMutationJson(result.stdout, result.stderr, "create", name, prefix);
100
+ return compactDualOutput(data, `${result.stdout}\n${result.stderr}`, formatCondaResult, compactCondaResultMap, formatCondaResultCompact, compact === false);
101
+ }
102
+ case "remove": {
103
+ const args = ["remove", "--json", "-y"];
104
+ if (name)
105
+ args.push("--name", name);
106
+ else if (prefix)
107
+ args.push("--prefix", prefix);
108
+ args.push(...(packages ?? []));
109
+ const result = await conda(args, cwd);
110
+ const data = parseCondaMutationJson(result.stdout, result.stderr, "remove", name, prefix);
111
+ return compactDualOutput(data, `${result.stdout}\n${result.stderr}`, formatCondaResult, compactCondaResultMap, formatCondaResultCompact, compact === false);
112
+ }
113
+ case "update": {
114
+ const args = ["update", "--json", "-y"];
115
+ if (name)
116
+ args.push("--name", name);
117
+ else if (prefix)
118
+ args.push("--prefix", prefix);
119
+ if (all)
120
+ args.push("--all");
121
+ args.push(...(packages ?? []));
122
+ const result = await conda(args, cwd);
123
+ const data = parseCondaMutationJson(result.stdout, result.stderr, "update", name, prefix);
124
+ return compactDualOutput(data, `${result.stdout}\n${result.stderr}`, formatCondaResult, compactCondaResultMap, formatCondaResultCompact, compact === false);
125
+ }
67
126
  }
68
127
  });
69
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"conda.js","sourceRoot":"","sources":["../../src/tools/conda.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conda.js","sourceRoot":"","sources":["../../src/tools/conda.ts"],"names":[],"mappings":"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"}
@@ -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,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QAgDjD"}
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,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,QA8LjD"}
@@ -1,41 +1,196 @@
1
1
  import { z } from "zod";
2
2
  import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
3
  import { mypy } from "../lib/python-runner.js";
4
- import { parseMypyOutput } from "../lib/parsers.js";
4
+ import { parseMypyJsonOutput } from "../lib/parsers.js";
5
5
  import { formatMypy, compactMypyMap, formatMypyCompact } from "../lib/formatters.js";
6
6
  import { MypyResultSchema } from "../schemas/index.js";
7
7
  /** Registers the `mypy` tool on the given MCP server. */
8
8
  export function registerMypyTool(server) {
9
9
  server.registerTool("mypy", {
10
10
  title: "mypy Type Check",
11
- description: "Runs mypy and returns structured type-check diagnostics (file, line, severity, message, code). Use instead of running `mypy` in the terminal.",
11
+ description: "Runs mypy and returns structured type-check diagnostics (file, line, severity, message, code).",
12
12
  inputSchema: {
13
- path: z
14
- .string()
15
- .max(INPUT_LIMITS.PATH_MAX)
16
- .optional()
17
- .describe("Project root path (default: cwd)"),
13
+ path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Project root path"),
18
14
  targets: z
19
15
  .array(z.string().max(INPUT_LIMITS.PATH_MAX))
20
16
  .max(INPUT_LIMITS.ARRAY_MAX)
21
17
  .optional()
22
18
  .default(["."])
23
19
  .describe("Files or directories to check (default: ['.'])"),
24
- compact: z
20
+ strict: z
21
+ .boolean()
22
+ .optional()
23
+ .default(false)
24
+ .describe("Enable strict mode for thorough type checking (--strict)"),
25
+ ignoreMissingImports: z
26
+ .boolean()
27
+ .optional()
28
+ .default(false)
29
+ .describe("Suppress errors about missing imports for projects with incomplete stubs (--ignore-missing-imports)"),
30
+ noIncremental: z
31
+ .boolean()
32
+ .optional()
33
+ .default(false)
34
+ .describe("Disable incremental mode (--no-incremental)"),
35
+ configFile: z
36
+ .string()
37
+ .max(INPUT_LIMITS.PATH_MAX)
38
+ .optional()
39
+ .describe("Path to mypy config file (--config-file)"),
40
+ pythonVersion: z
41
+ .string()
42
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
43
+ .optional()
44
+ .describe("Python version to target (e.g. '3.11')"),
45
+ exclude: z
46
+ .string()
47
+ .max(INPUT_LIMITS.STRING_MAX)
48
+ .optional()
49
+ .describe("Regular expression to exclude files/directories"),
50
+ followImports: z
51
+ .enum(["normal", "silent", "skip", "error"])
52
+ .optional()
53
+ .describe("How to handle imports (normal/silent/skip/error)"),
54
+ module: z
55
+ .string()
56
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
57
+ .optional()
58
+ .describe("Specific module to type-check (-m MODULE)"),
59
+ package: z
60
+ .string()
61
+ .max(INPUT_LIMITS.SHORT_STRING_MAX)
62
+ .optional()
63
+ .describe("Specific package to type-check (-p PACKAGE)"),
64
+ installTypes: z
65
+ .boolean()
66
+ .optional()
67
+ .describe("Auto-install missing type stubs (--install-types --non-interactive)"),
68
+ disallowUntypedDefs: z
69
+ .boolean()
70
+ .optional()
71
+ .default(false)
72
+ .describe("Disallow defining functions without type annotations (--disallow-untyped-defs)"),
73
+ disallowIncompleteDefs: z
74
+ .boolean()
75
+ .optional()
76
+ .default(false)
77
+ .describe("Disallow partially typed function definitions (--disallow-incomplete-defs)"),
78
+ disallowUntypedCalls: z
79
+ .boolean()
80
+ .optional()
81
+ .default(false)
82
+ .describe("Disallow calling untyped functions from typed contexts (--disallow-untyped-calls)"),
83
+ disallowAnyGenerics: z
84
+ .boolean()
85
+ .optional()
86
+ .default(false)
87
+ .describe("Disallow usage of generic types without explicit parameters (--disallow-any-generics)"),
88
+ warnReturnAny: z
89
+ .boolean()
90
+ .optional()
91
+ .default(false)
92
+ .describe("Warn about returning values of type Any (--warn-return-any)"),
93
+ warnUnusedIgnores: z
94
+ .boolean()
95
+ .optional()
96
+ .default(false)
97
+ .describe("Warn about unnecessary # type: ignore comments (--warn-unused-ignores)"),
98
+ warnRedundantCasts: z
25
99
  .boolean()
26
100
  .optional()
27
- .default(true)
28
- .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
101
+ .default(false)
102
+ .describe("Warn about redundant type casts (--warn-redundant-casts)"),
103
+ warnUnreachable: z
104
+ .boolean()
105
+ .optional()
106
+ .default(false)
107
+ .describe("Warn about statically unreachable code (--warn-unreachable)"),
108
+ compact: z.boolean().optional().default(true).describe("Prefer compact output"),
29
109
  },
30
110
  outputSchema: MypyResultSchema,
31
- }, async ({ path, targets, compact }) => {
111
+ }, async (input) => {
112
+ const path = input["path"];
113
+ const targets = input["targets"];
114
+ const strict = input["strict"];
115
+ const ignoreMissingImports = input["ignoreMissingImports"];
116
+ const noIncremental = input["noIncremental"];
117
+ const configFile = input["configFile"];
118
+ const pythonVersion = input["pythonVersion"];
119
+ const exclude = input["exclude"];
120
+ const followImports = input["followImports"];
121
+ const mod = input["module"];
122
+ const pkg = input["package"];
123
+ const installTypes = input["installTypes"];
124
+ const disallowUntypedDefs = input["disallowUntypedDefs"];
125
+ const disallowIncompleteDefs = input["disallowIncompleteDefs"];
126
+ const disallowUntypedCalls = input["disallowUntypedCalls"];
127
+ const disallowAnyGenerics = input["disallowAnyGenerics"];
128
+ const warnReturnAny = input["warnReturnAny"];
129
+ const warnUnusedIgnores = input["warnUnusedIgnores"];
130
+ const warnRedundantCasts = input["warnRedundantCasts"];
131
+ const warnUnreachable = input["warnUnreachable"];
132
+ const compact = input["compact"];
32
133
  const cwd = path || process.cwd();
33
134
  for (const t of targets ?? []) {
34
135
  assertNoFlagInjection(t, "targets");
35
136
  }
36
- const args = [...(targets || ["."])];
137
+ if (configFile)
138
+ assertNoFlagInjection(configFile, "configFile");
139
+ if (pythonVersion)
140
+ assertNoFlagInjection(pythonVersion, "pythonVersion");
141
+ if (exclude)
142
+ assertNoFlagInjection(exclude, "exclude");
143
+ if (mod)
144
+ assertNoFlagInjection(mod, "module");
145
+ if (pkg)
146
+ assertNoFlagInjection(pkg, "package");
147
+ // Use --output json for structured output; falls back to text parsing on older mypy
148
+ const args = ["--output", "json"];
149
+ // Config and version options
150
+ if (configFile)
151
+ args.push("--config-file", configFile);
152
+ if (pythonVersion)
153
+ args.push("--python-version", pythonVersion);
154
+ if (exclude)
155
+ args.push("--exclude", exclude);
156
+ if (followImports)
157
+ args.push("--follow-imports", followImports);
158
+ if (installTypes)
159
+ args.push("--install-types", "--non-interactive");
160
+ if (strict)
161
+ args.push("--strict");
162
+ if (ignoreMissingImports)
163
+ args.push("--ignore-missing-imports");
164
+ if (noIncremental)
165
+ args.push("--no-incremental");
166
+ if (disallowUntypedDefs)
167
+ args.push("--disallow-untyped-defs");
168
+ if (disallowIncompleteDefs)
169
+ args.push("--disallow-incomplete-defs");
170
+ if (disallowUntypedCalls)
171
+ args.push("--disallow-untyped-calls");
172
+ if (disallowAnyGenerics)
173
+ args.push("--disallow-any-generics");
174
+ if (warnReturnAny)
175
+ args.push("--warn-return-any");
176
+ if (warnUnusedIgnores)
177
+ args.push("--warn-unused-ignores");
178
+ if (warnRedundantCasts)
179
+ args.push("--warn-redundant-casts");
180
+ if (warnUnreachable)
181
+ args.push("--warn-unreachable");
182
+ // Target selection: module > package > file targets
183
+ if (mod) {
184
+ args.push("-m", mod);
185
+ }
186
+ else if (pkg) {
187
+ args.push("-p", pkg);
188
+ }
189
+ else {
190
+ args.push(...(targets || ["."]));
191
+ }
37
192
  const result = await mypy(args, cwd);
38
- const data = parseMypyOutput(result.stdout, result.exitCode);
193
+ const data = parseMypyJsonOutput(result.stdout, result.exitCode);
39
194
  return compactDualOutput(data, result.stdout, formatMypy, compactMypyMap, formatMypyCompact, compact === false);
40
195
  });
41
196
  }
@@ -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,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,yDAAyD;AACzD,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
+ {"version":3,"file":"mypy.js","sourceRoot":"","sources":["../../src/tools/mypy.ts"],"names":[],"mappings":"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"}
@@ -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,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QAiDrD"}
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;AAOzE,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,QA6GrD"}
@@ -1,5 +1,6 @@
1
1
  import { z } from "zod";
2
2
  import { compactDualOutput, assertNoFlagInjection, INPUT_LIMITS } from "@paretools/shared";
3
+ import { pipAudit } from "../lib/python-runner.js";
3
4
  import { parsePipAuditJson } from "../lib/parsers.js";
4
5
  import { formatPipAudit, compactPipAuditMap, formatPipAuditCompact } from "../lib/formatters.js";
5
6
  import { PipAuditResultSchema } from "../schemas/index.js";
@@ -7,36 +8,95 @@ import { PipAuditResultSchema } from "../schemas/index.js";
7
8
  export function registerPipAuditTool(server) {
8
9
  server.registerTool("pip-audit", {
9
10
  title: "pip Audit",
10
- description: "Runs pip-audit and returns a structured vulnerability report. Use instead of running `pip-audit` in the terminal.",
11
+ description: "Runs pip-audit and returns a structured vulnerability report.",
11
12
  inputSchema: {
12
- path: z
13
- .string()
14
- .max(INPUT_LIMITS.PATH_MAX)
15
- .optional()
16
- .describe("Project root path (default: cwd)"),
13
+ path: z.string().max(INPUT_LIMITS.PATH_MAX).optional().describe("Project root path"),
17
14
  requirements: z
18
15
  .string()
19
16
  .max(INPUT_LIMITS.PATH_MAX)
20
17
  .optional()
21
18
  .describe("Path to requirements file"),
22
- compact: z
19
+ fix: z
20
+ .boolean()
21
+ .optional()
22
+ .default(false)
23
+ .describe("Auto-remediate vulnerabilities (--fix)"),
24
+ dryRun: z
25
+ .boolean()
26
+ .optional()
27
+ .default(false)
28
+ .describe("Preview fix changes without applying (--dry-run)"),
29
+ strict: z
30
+ .boolean()
31
+ .optional()
32
+ .default(false)
33
+ .describe("Fail on skipped dependencies (-S, --strict)"),
34
+ noDeps: z
23
35
  .boolean()
24
36
  .optional()
25
- .default(true)
26
- .describe("Auto-compact when structured output exceeds raw CLI tokens. Set false to always get full schema."),
37
+ .default(false)
38
+ .describe("Skip auditing dependencies (--no-deps)"),
39
+ skipEditable: z
40
+ .boolean()
41
+ .optional()
42
+ .default(false)
43
+ .describe("Skip auditing editable packages (--skip-editable)"),
44
+ local: z
45
+ .boolean()
46
+ .optional()
47
+ .default(false)
48
+ .describe("Only audit packages in the local virtualenv (-l, --local)"),
49
+ ignoreVuln: z
50
+ .array(z.string().max(INPUT_LIMITS.SHORT_STRING_MAX))
51
+ .max(INPUT_LIMITS.ARRAY_MAX)
52
+ .optional()
53
+ .describe("Vulnerability IDs to suppress (e.g. PYSEC-2023-001)"),
54
+ vulnerabilityService: z
55
+ .enum(["osv", "pypi"])
56
+ .optional()
57
+ .describe("Vulnerability service to query (default: pypi)"),
58
+ indexUrl: z
59
+ .string()
60
+ .max(INPUT_LIMITS.STRING_MAX)
61
+ .optional()
62
+ .describe("Custom package index URL for corporate/private registry support"),
63
+ compact: z.boolean().optional().default(true).describe("Prefer compact output"),
27
64
  },
28
65
  outputSchema: PipAuditResultSchema,
29
- }, async ({ path, requirements, compact }) => {
66
+ }, async ({ path, requirements, fix, dryRun, strict, noDeps, skipEditable, local, ignoreVuln, vulnerabilityService, indexUrl, compact, }) => {
30
67
  const cwd = path || process.cwd();
31
68
  if (requirements)
32
69
  assertNoFlagInjection(requirements, "requirements");
33
- const args = ["audit", "--format", "json"];
70
+ if (indexUrl)
71
+ assertNoFlagInjection(indexUrl, "indexUrl");
72
+ for (const v of ignoreVuln ?? []) {
73
+ assertNoFlagInjection(v, "ignoreVuln");
74
+ }
75
+ const args = ["--format", "json"];
34
76
  if (requirements)
35
77
  args.push("-r", requirements);
36
- // pip-audit is a separate tool: pip-audit (not pip audit)
37
- const { run } = await import("@paretools/shared");
38
- const result = await run("pip-audit", args, { cwd });
39
- const data = parsePipAuditJson(result.stdout);
78
+ if (fix)
79
+ args.push("--fix");
80
+ if (dryRun)
81
+ args.push("--dry-run");
82
+ if (strict)
83
+ args.push("--strict");
84
+ if (noDeps)
85
+ args.push("--no-deps");
86
+ if (skipEditable)
87
+ args.push("--skip-editable");
88
+ if (local)
89
+ args.push("--local");
90
+ if (vulnerabilityService)
91
+ args.push("--vulnerability-service", vulnerabilityService);
92
+ if (indexUrl)
93
+ args.push("--index-url", indexUrl);
94
+ for (const v of ignoreVuln ?? []) {
95
+ args.push("--ignore-vuln", v);
96
+ }
97
+ // pip-audit is a standalone binary, NOT a pip subcommand
98
+ const result = await pipAudit(args, cwd);
99
+ const data = parsePipAuditJson(result.stdout, result.exitCode);
40
100
  return compactDualOutput(data, result.stdout, formatPipAudit, compactPipAuditMap, formatPipAuditCompact, compact === false);
41
101
  });
42
102
  }
@@ -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,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,8DAA8D;AAC9D,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
+ {"version":3,"file":"pip-audit.js","sourceRoot":"","sources":["../../src/tools/pip-audit.ts"],"names":[],"mappings":"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"}
@@ -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;AAWzE,gEAAgE;AAChE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,QAuEvD"}
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,gEAAgE;AAChE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,QAoJvD"}