@paretools/npm 0.18.1 → 0.20.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 CHANGED
@@ -60,7 +60,7 @@ Add to your MCP client config:
60
60
  }
61
61
  ```
62
62
 
63
- ## All Pare Servers (240 tools)
63
+ ## All Pare Servers (244 tools)
64
64
 
65
65
  | Package | Tools | Wraps |
66
66
  | -------------------------------------------------------------------- | --------------------------------------------------------------------------- | ---------------------------------- |
@@ -1,4 +1,40 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  /** Registers the `install` tool on the given MCP server. */
3
3
  export declare function registerInstallTool(server: McpServer): void;
4
+ /**
5
+ * Throws when an install command reports success but no `node_modules/` was
6
+ * created in `cwd`. This catches the dominant silent-success failure mode
7
+ * described in #842, where pnpm exits 0 without actually installing.
8
+ *
9
+ * Exported so unit tests can exercise the verification without needing to
10
+ * shell out to a real package manager.
11
+ */
12
+ export declare function assertInstallActuallyHappened(args: {
13
+ cwd: string;
14
+ pm: "npm" | "pnpm" | "yarn";
15
+ subcommand: string;
16
+ exitCode: number;
17
+ stderr: string;
18
+ }): void;
19
+ interface InstallFlagOptions {
20
+ ignoreScripts?: boolean;
21
+ filter?: string;
22
+ saveDev?: boolean;
23
+ frozenLockfile?: boolean;
24
+ dryRun?: boolean;
25
+ production?: boolean;
26
+ legacyPeerDeps?: boolean;
27
+ force?: boolean;
28
+ noAudit?: boolean;
29
+ exact?: boolean;
30
+ global?: boolean;
31
+ registry?: string;
32
+ }
33
+ /** Exported for unit tests. */
34
+ export declare function composeInstallFlags(pm: "npm" | "pnpm" | "yarn", opts: InstallFlagOptions): string[];
35
+ /** Exported for unit tests. */
36
+ export declare function assertSafeRegistryUrl(url: string): void;
37
+ /** Exported for unit tests. */
38
+ export declare function getLockfileHash(cwd: string, pm: "npm" | "pnpm" | "yarn"): Promise<string | undefined>;
39
+ export {};
4
40
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/tools/install.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAqJpD"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/tools/install.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAiKpD;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IAClD,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,IAAI,CAWP;AAED,UAAU,kBAAkB;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,+BAA+B;AAC/B,wBAAgB,mBAAmB,CACjC,EAAE,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,EAC3B,IAAI,EAAE,kBAAkB,GACvB,MAAM,EAAE,CAwBV;AAED,+BAA+B;AAC/B,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CASvD;AAED,+BAA+B;AAC/B,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAC1B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAW7B"}
@@ -1,6 +1,8 @@
1
1
  import { z } from "zod";
2
2
  import { createHash } from "node:crypto";
3
+ import { existsSync } from "node:fs";
3
4
  import { readFile } from "node:fs/promises";
5
+ import { join } from "node:path";
4
6
  import { dualOutput, assertNoFlagInjection, INPUT_LIMITS, projectPathInput, } from "@paretools/shared";
5
7
  import { runPm } from "../lib/npm-runner.js";
6
8
  import { detectPackageManager } from "../lib/detect-pm.js";
@@ -57,7 +59,8 @@ export function registerInstallTool(server) {
57
59
  noAudit: z
58
60
  .boolean()
59
61
  .optional()
60
- .describe("Skip the automatic audit step to speed up installation (maps to --no-audit)"),
62
+ .describe("Skip the automatic audit step to speed up installation. Only npm runs an audit during install, so this maps to --no-audit on npm. " +
63
+ "On pnpm and yarn it is a silent no-op (audit is a separate command, not part of install)."),
61
64
  exact: z
62
65
  .boolean()
63
66
  .optional()
@@ -88,41 +91,20 @@ export function registerInstallTool(server) {
88
91
  }
89
92
  const cwd = path || process.cwd();
90
93
  const pm = await detectPackageManager(cwd, packageManager);
91
- const flags = [];
92
- if (ignoreScripts)
93
- flags.push("--ignore-scripts");
94
- if (pm === "pnpm" && filter)
95
- flags.push(`--filter=${filter}`);
96
- if (saveDev)
97
- flags.push("--save-dev");
98
- if (frozenLockfile) {
99
- if (pm !== "npm")
100
- flags.push("--frozen-lockfile");
101
- }
102
- if (dryRun)
103
- flags.push("--dry-run");
104
- if (production) {
105
- if (pm === "npm")
106
- flags.push("--omit=dev");
107
- else if (pm === "pnpm")
108
- flags.push("--prod");
109
- else
110
- flags.push("--production");
111
- }
112
- if (legacyPeerDeps && pm === "npm")
113
- flags.push("--legacy-peer-deps");
114
- if (force)
115
- flags.push("--force");
116
- if (noAudit)
117
- flags.push("--no-audit");
118
- if (exact)
119
- flags.push("--save-exact");
120
- if (isGlobal)
121
- flags.push("--global");
122
- if (registry)
123
- flags.push(`--registry=${registry}`);
124
- if (pm === "npm")
125
- flags.push("--json");
94
+ const flags = composeInstallFlags(pm, {
95
+ ignoreScripts,
96
+ filter,
97
+ saveDev,
98
+ frozenLockfile,
99
+ dryRun,
100
+ production,
101
+ legacyPeerDeps,
102
+ force,
103
+ noAudit,
104
+ exact,
105
+ global: isGlobal,
106
+ registry,
107
+ });
126
108
  const subcommand = frozenLockfile && pm === "npm" ? "ci" : "install";
127
109
  const beforeLockfileHash = await getLockfileHash(cwd, pm);
128
110
  const start = Date.now();
@@ -132,10 +114,83 @@ export function registerInstallTool(server) {
132
114
  const lockfileChanged = beforeLockfileHash !== afterLockfileHash;
133
115
  const output = result.stdout + "\n" + result.stderr;
134
116
  const install = parseInstallOutput(output);
117
+ // Sanity check: install (other than dry-run / global) MUST leave a
118
+ // node_modules/ on disk. Without this guard, a CLI that exits 0 with
119
+ // a benign "already up to date" message gets reported as success even
120
+ // though nothing was installed. See #842.
121
+ if (!dryRun && !isGlobal) {
122
+ assertInstallActuallyHappened({
123
+ cwd,
124
+ pm,
125
+ subcommand,
126
+ exitCode: result.exitCode,
127
+ stderr: result.stderr,
128
+ });
129
+ }
135
130
  return dualOutput({ ...install, packageManager: pm, lockfileChanged }, (d) => formatInstall(d, duration));
136
131
  });
137
132
  }
138
- function assertSafeRegistryUrl(url) {
133
+ /**
134
+ * Throws when an install command reports success but no `node_modules/` was
135
+ * created in `cwd`. This catches the dominant silent-success failure mode
136
+ * described in #842, where pnpm exits 0 without actually installing.
137
+ *
138
+ * Exported so unit tests can exercise the verification without needing to
139
+ * shell out to a real package manager.
140
+ */
141
+ export function assertInstallActuallyHappened(args) {
142
+ const nodeModulesPath = join(args.cwd, "node_modules");
143
+ if (existsSync(nodeModulesPath))
144
+ return;
145
+ const stderrTail = args.stderr.trim().split("\n").slice(-5).join("\n");
146
+ throw new Error(`${args.pm} ${args.subcommand} reported success but no node_modules/ was created at ${nodeModulesPath}. ` +
147
+ `This usually means the package manager exited 0 without actually installing (e.g. a misleading "already up to date" message, or a workspace filter that matched nothing).\n` +
148
+ `pm=${args.pm} cwd=${args.cwd} exitCode=${args.exitCode}` +
149
+ (stderrTail ? `\nstderr (last 5 lines):\n${stderrTail}` : ""));
150
+ }
151
+ /** Exported for unit tests. */
152
+ export function composeInstallFlags(pm, opts) {
153
+ const flags = [];
154
+ if (opts.ignoreScripts)
155
+ flags.push("--ignore-scripts");
156
+ if (pm === "pnpm" && opts.filter)
157
+ flags.push(`--filter=${opts.filter}`);
158
+ if (opts.saveDev)
159
+ flags.push("--save-dev");
160
+ if (opts.frozenLockfile && pm !== "npm")
161
+ flags.push("--frozen-lockfile");
162
+ if (opts.dryRun)
163
+ flags.push("--dry-run");
164
+ if (opts.production) {
165
+ if (pm === "npm")
166
+ flags.push("--omit=dev");
167
+ else if (pm === "pnpm")
168
+ flags.push("--prod");
169
+ else
170
+ flags.push("--production");
171
+ }
172
+ if (opts.legacyPeerDeps && pm === "npm")
173
+ flags.push("--legacy-peer-deps");
174
+ if (opts.force)
175
+ flags.push("--force");
176
+ // --no-audit is npm-only. pnpm install does not audit (audit is a separate
177
+ // `pnpm audit` command) and rejects --no-audit with "Unknown option: 'audit'".
178
+ // yarn install also doesn't run an audit, so the flag is silently dropped
179
+ // there too. See #872.
180
+ if (opts.noAudit && pm === "npm")
181
+ flags.push("--no-audit");
182
+ if (opts.exact)
183
+ flags.push("--save-exact");
184
+ if (opts.global)
185
+ flags.push("--global");
186
+ if (opts.registry)
187
+ flags.push(`--registry=${opts.registry}`);
188
+ if (pm === "npm")
189
+ flags.push("--json");
190
+ return flags;
191
+ }
192
+ /** Exported for unit tests. */
193
+ export function assertSafeRegistryUrl(url) {
139
194
  if (/^https:\/\//i.test(url))
140
195
  return;
141
196
  if (/^http:\/\//i.test(url) && process.env.PARE_NPM_ALLOW_HTTP_REGISTRY === "true") {
@@ -144,7 +199,8 @@ function assertSafeRegistryUrl(url) {
144
199
  throw new Error(`Registry URL scheme not allowed: "${url}". Only https:// URLs are permitted by default. ` +
145
200
  `Set PARE_NPM_ALLOW_HTTP_REGISTRY=true to allow http:// URLs.`);
146
201
  }
147
- async function getLockfileHash(cwd, pm) {
202
+ /** Exported for unit tests. */
203
+ export async function getLockfileHash(cwd, pm) {
148
204
  const lockfileName = pm === "pnpm" ? "pnpm-lock.yaml" : pm === "yarn" ? "yarn.lock" : "package-lock.json";
149
205
  const lockfilePath = `${cwd}/${lockfileName}`;
150
206
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/tools/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/tools/install.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paretools/npm",
3
- "version": "0.18.1",
3
+ "version": "0.20.0",
4
4
  "mcpName": "io.github.Dave-London/pare-npm",
5
5
  "description": "MCP server for npm/pnpm/yarn — structured dependency, audit, and script data for AI agents",
6
6
  "license": "MIT",
@@ -52,13 +52,13 @@
52
52
  ],
53
53
  "dependencies": {
54
54
  "@modelcontextprotocol/sdk": "^1.29.0",
55
- "zod": "^4.3.6",
56
- "@paretools/shared": "0.18.1"
55
+ "zod": "^4.4.3",
56
+ "@paretools/shared": "0.20.0"
57
57
  },
58
58
  "devDependencies": {
59
- "@types/node": "^25.6.0",
59
+ "@types/node": "^25.9.1",
60
60
  "typescript": "^6.0.3",
61
- "vitest": "^4.1.5",
61
+ "vitest": "^4.1.7",
62
62
  "@paretools/tsconfig": "0.0.0"
63
63
  },
64
64
  "scripts": {