@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 +1 -1
- package/dist/tools/install.d.ts +36 -0
- package/dist/tools/install.d.ts.map +1 -1
- package/dist/tools/install.js +94 -38
- package/dist/tools/install.js.map +1 -1
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -60,7 +60,7 @@ Add to your MCP client config:
|
|
|
60
60
|
}
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
## All Pare Servers (
|
|
63
|
+
## All Pare Servers (244 tools)
|
|
64
64
|
|
|
65
65
|
| Package | Tools | Wraps |
|
|
66
66
|
| -------------------------------------------------------------------- | --------------------------------------------------------------------------- | ---------------------------------- |
|
package/dist/tools/install.d.ts
CHANGED
|
@@ -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":"
|
|
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"}
|
package/dist/tools/install.js
CHANGED
|
@@ -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
|
|
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
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
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.
|
|
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
|
|
56
|
-
"@paretools/shared": "0.
|
|
55
|
+
"zod": "^4.4.3",
|
|
56
|
+
"@paretools/shared": "0.20.0"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@types/node": "^25.
|
|
59
|
+
"@types/node": "^25.9.1",
|
|
60
60
|
"typescript": "^6.0.3",
|
|
61
|
-
"vitest": "^4.1.
|
|
61
|
+
"vitest": "^4.1.7",
|
|
62
62
|
"@paretools/tsconfig": "0.0.0"
|
|
63
63
|
},
|
|
64
64
|
"scripts": {
|