@nodetool-ai/pack-manager 0.0.0-stage → 0.8.9-beta.2
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 -2
- package/dist/.nodetool-build-stamp +1 -0
- package/dist/child-exit.d.ts +3 -0
- package/dist/child-exit.d.ts.map +1 -0
- package/dist/child-exit.js +17 -0
- package/dist/child-exit.js.map +1 -0
- package/dist/cli-feature.d.ts +30 -0
- package/dist/cli-feature.d.ts.map +1 -0
- package/dist/cli-feature.js +89 -0
- package/dist/cli-feature.js.map +1 -0
- package/dist/command-errors.d.ts +8 -0
- package/dist/command-errors.d.ts.map +1 -0
- package/dist/command-errors.js +49 -0
- package/dist/command-errors.js.map +1 -0
- package/dist/commands/authorized-pack-install.d.ts +7 -0
- package/dist/commands/authorized-pack-install.d.ts.map +1 -0
- package/dist/commands/authorized-pack-install.js +20 -0
- package/dist/commands/authorized-pack-install.js.map +1 -0
- package/dist/commands/output.d.ts +32 -0
- package/dist/commands/output.d.ts.map +1 -0
- package/dist/commands/output.js +150 -0
- package/dist/commands/output.js.map +1 -0
- package/dist/commands/pack-install-authorization.d.ts +40 -0
- package/dist/commands/pack-install-authorization.d.ts.map +1 -0
- package/dist/commands/pack-install-authorization.js +132 -0
- package/dist/commands/pack-install-authorization.js.map +1 -0
- package/dist/commands/pack-management.d.ts +26 -0
- package/dist/commands/pack-management.d.ts.map +1 -0
- package/dist/commands/pack-management.js +74 -0
- package/dist/commands/pack-management.js.map +1 -0
- package/dist/commands/packs.d.ts +5 -0
- package/dist/commands/packs.d.ts.map +1 -0
- package/dist/commands/packs.js +12 -0
- package/dist/commands/packs.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/install-lock.d.ts +12 -0
- package/dist/install-lock.d.ts.map +1 -0
- package/dist/install-lock.js +139 -0
- package/dist/install-lock.js.map +1 -0
- package/dist/npm-runner.d.ts +23 -0
- package/dist/npm-runner.d.ts.map +1 -0
- package/dist/npm-runner.js +160 -0
- package/dist/npm-runner.js.map +1 -0
- package/dist/packs/command-service.d.ts +16 -0
- package/dist/packs/command-service.d.ts.map +1 -0
- package/dist/packs/command-service.js +203 -0
- package/dist/packs/command-service.js.map +1 -0
- package/dist/packs/doctor-lock.d.ts +8 -0
- package/dist/packs/doctor-lock.d.ts.map +1 -0
- package/dist/packs/doctor-lock.js +50 -0
- package/dist/packs/doctor-lock.js.map +1 -0
- package/dist/packs/doctor.d.ts +25 -0
- package/dist/packs/doctor.d.ts.map +1 -0
- package/dist/packs/doctor.js +12 -0
- package/dist/packs/doctor.js.map +1 -0
- package/dist/packs/global-bootstrap.d.ts +11 -0
- package/dist/packs/global-bootstrap.d.ts.map +1 -0
- package/dist/packs/global-bootstrap.js +72 -0
- package/dist/packs/global-bootstrap.js.map +1 -0
- package/dist/packs/host.d.ts +12 -0
- package/dist/packs/host.d.ts.map +1 -0
- package/dist/packs/host.js +69 -0
- package/dist/packs/host.js.map +1 -0
- package/dist/packs/install-manifests.d.ts +2 -0
- package/dist/packs/install-manifests.d.ts.map +1 -0
- package/dist/packs/install-manifests.js +30 -0
- package/dist/packs/install-manifests.js.map +1 -0
- package/dist/packs/install-process.d.ts +4 -0
- package/dist/packs/install-process.d.ts.map +1 -0
- package/dist/packs/install-process.js +11 -0
- package/dist/packs/install-process.js.map +1 -0
- package/dist/packs/install-selection.d.ts +39 -0
- package/dist/packs/install-selection.d.ts.map +1 -0
- package/dist/packs/install-selection.js +67 -0
- package/dist/packs/install-selection.js.map +1 -0
- package/dist/packs/install-state.d.ts +25 -0
- package/dist/packs/install-state.d.ts.map +1 -0
- package/dist/packs/install-state.js +45 -0
- package/dist/packs/install-state.js.map +1 -0
- package/dist/packs/install-tree.d.ts +35 -0
- package/dist/packs/install-tree.d.ts.map +1 -0
- package/dist/packs/install-tree.js +253 -0
- package/dist/packs/install-tree.js.map +1 -0
- package/dist/packs/install-verification.d.ts +12 -0
- package/dist/packs/install-verification.d.ts.map +1 -0
- package/dist/packs/install-verification.js +75 -0
- package/dist/packs/install-verification.js.map +1 -0
- package/dist/packs/installed.d.ts +36 -0
- package/dist/packs/installed.d.ts.map +1 -0
- package/dist/packs/installed.js +87 -0
- package/dist/packs/installed.js.map +1 -0
- package/dist/packs/installer-load-check.d.ts +5 -0
- package/dist/packs/installer-load-check.d.ts.map +1 -0
- package/dist/packs/installer-load-check.js +98 -0
- package/dist/packs/installer-load-check.js.map +1 -0
- package/dist/packs/installer.d.ts +16 -0
- package/dist/packs/installer.d.ts.map +1 -0
- package/dist/packs/installer.js +149 -0
- package/dist/packs/installer.js.map +1 -0
- package/dist/packs/management.d.ts +51 -0
- package/dist/packs/management.d.ts.map +1 -0
- package/dist/packs/management.js +78 -0
- package/dist/packs/management.js.map +1 -0
- package/dist/packs/mode.d.ts +48 -0
- package/dist/packs/mode.d.ts.map +1 -0
- package/dist/packs/mode.js +251 -0
- package/dist/packs/mode.js.map +1 -0
- package/dist/packs/owned-replay-plan.d.ts +5 -0
- package/dist/packs/owned-replay-plan.d.ts.map +1 -0
- package/dist/packs/owned-replay-plan.js +65 -0
- package/dist/packs/owned-replay-plan.js.map +1 -0
- package/dist/packs/removal-selection.d.ts +12 -0
- package/dist/packs/removal-selection.d.ts.map +1 -0
- package/dist/packs/removal-selection.js +186 -0
- package/dist/packs/removal-selection.js.map +1 -0
- package/dist/packs/removal.d.ts +12 -0
- package/dist/packs/removal.d.ts.map +1 -0
- package/dist/packs/removal.js +144 -0
- package/dist/packs/removal.js.map +1 -0
- package/dist/packs/repair.d.ts +2 -0
- package/dist/packs/repair.d.ts.map +1 -0
- package/dist/packs/repair.js +2 -0
- package/dist/packs/repair.js.map +1 -0
- package/package.json +51 -4
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { existsSync, readFileSync, realpathSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join, posix, win32 } from "node:path";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
const NPX_REASON = 'Packs need a global or local install. Run "npm install -g @nodetool-ai/cli" or "npm install @nodetool-ai/cli" in a project.';
|
|
6
|
+
const DEV_REASON = "Node packs are workspaces in this checkout. Build the required workspace instead of installing it.";
|
|
7
|
+
export class CliRootNotFoundError extends Error {
|
|
8
|
+
name = "CliRootNotFoundError";
|
|
9
|
+
constructor(entry) { super(`Cannot find @nodetool-ai/cli package root for ${entry}`); }
|
|
10
|
+
}
|
|
11
|
+
const dependenciesSchema = z.record(z.string(), z.string());
|
|
12
|
+
const manifestSchema = z.object({
|
|
13
|
+
name: z.string().optional(),
|
|
14
|
+
version: z.string().min(1).optional(),
|
|
15
|
+
dependencies: dependenciesSchema.optional(),
|
|
16
|
+
devDependencies: dependenciesSchema.optional(),
|
|
17
|
+
optionalDependencies: dependenciesSchema.optional(),
|
|
18
|
+
workspaces: z.union([z.array(z.string()), z.object({ packages: z.array(z.string()) })]).optional()
|
|
19
|
+
});
|
|
20
|
+
function pathKey(path, style) {
|
|
21
|
+
const paths = style === "win32" ? win32 : posix;
|
|
22
|
+
const normalized = paths.normalize(path).replace(/[/\\]+$/, "");
|
|
23
|
+
return style === "win32" ? normalized.toLowerCase() : normalized;
|
|
24
|
+
}
|
|
25
|
+
/** Classify a known package root without filesystem reads or npm subprocesses. */
|
|
26
|
+
export function classifyInstallLayout(layout) {
|
|
27
|
+
const pathStyle = layout.pathStyle ?? "posix";
|
|
28
|
+
const paths = pathStyle === "win32" ? win32 : posix;
|
|
29
|
+
const cliRoot = paths.normalize(layout.cliRoot);
|
|
30
|
+
const segments = pathKey(cliRoot, pathStyle).split(paths.sep);
|
|
31
|
+
const modules = paths.dirname(paths.dirname(cliRoot));
|
|
32
|
+
const npmLayout = pathKey(paths.basename(modules), pathStyle) === "node_modules" &&
|
|
33
|
+
pathKey(paths.basename(paths.dirname(cliRoot)), pathStyle) === "@nodetool-ai";
|
|
34
|
+
const nodeModulesRoot = npmLayout ? modules : null;
|
|
35
|
+
const identity = { cliRoot, coreVersion: layout.coreVersion, pathStyle };
|
|
36
|
+
if (segments.includes("_npx")) {
|
|
37
|
+
return { ...identity, kind: "npx", reason: NPX_REASON, nodeModulesRoot };
|
|
38
|
+
}
|
|
39
|
+
if (segments.includes(".pnpm")) {
|
|
40
|
+
return { ...identity, kind: "unsupported", reason: "Node pack installation is unsupported in a pnpm store. Use an npm global or local install.", nodeModulesRoot };
|
|
41
|
+
}
|
|
42
|
+
if (layout.yarnPnp) {
|
|
43
|
+
return { ...identity, kind: "unsupported", reason: "Node pack installation is unsupported with Yarn PnP. Use an npm global or local install.", nodeModulesRoot };
|
|
44
|
+
}
|
|
45
|
+
const bunLayout = segments.some((part, index) => part === ".bun" && segments[index + 1] === "install" && segments[index + 2] === "global") ||
|
|
46
|
+
layout.bunGlobalRoots?.some((root) => pathKey(cliRoot, pathStyle).startsWith(pathKey(root, pathStyle) + paths.sep));
|
|
47
|
+
if (bunLayout) {
|
|
48
|
+
return { ...identity, kind: "unsupported", reason: "Node pack installation is unsupported in the Bun global directory. Use an npm global or local install.", nodeModulesRoot };
|
|
49
|
+
}
|
|
50
|
+
if (!segments.includes("node_modules")) {
|
|
51
|
+
return { ...identity, kind: "dev", reason: DEV_REASON,
|
|
52
|
+
nodeModulesRoot: layout.workspaceRoot ? paths.join(layout.workspaceRoot, "node_modules") : null };
|
|
53
|
+
}
|
|
54
|
+
if (nodeModulesRoot && layout.globalNodeModulesRoots?.some((root) => pathKey(root, pathStyle) === pathKey(nodeModulesRoot, pathStyle))) {
|
|
55
|
+
return { ...identity, kind: "global", installRoot: cliRoot, nodeModulesRoot: paths.join(cliRoot, "node_modules") };
|
|
56
|
+
}
|
|
57
|
+
if (nodeModulesRoot && layout.projectHasCli) {
|
|
58
|
+
return { ...identity, kind: "local", installRoot: paths.dirname(nodeModulesRoot), nodeModulesRoot };
|
|
59
|
+
}
|
|
60
|
+
return { ...identity, kind: "unsupported", reason: "The project does not list @nodetool-ai/cli as a dependency. Install it explicitly in the project or use an npm global install.", nodeModulesRoot };
|
|
61
|
+
}
|
|
62
|
+
function readManifest(root) {
|
|
63
|
+
const file = join(root, "package.json");
|
|
64
|
+
let content;
|
|
65
|
+
try {
|
|
66
|
+
content = readFileSync(file, "utf8");
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
throw error;
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
return manifestSchema.parse(JSON.parse(content));
|
|
76
|
+
}
|
|
77
|
+
catch (cause) {
|
|
78
|
+
throw new Error(`Invalid package manifest: ${file}`, { cause });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function ancestorDirectories(start) {
|
|
82
|
+
const paths = process.platform === "win32" ? win32 : posix;
|
|
83
|
+
const result = [];
|
|
84
|
+
for (let current = start;; current = paths.dirname(current)) {
|
|
85
|
+
result.push(current);
|
|
86
|
+
if (paths.dirname(current) === current) {
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function prefixFromNpmrc() {
|
|
92
|
+
const file = process.env["npm_config_userconfig"] ?? process.env["NPM_CONFIG_USERCONFIG"] ?? join(homedir(), ".npmrc");
|
|
93
|
+
let content;
|
|
94
|
+
try {
|
|
95
|
+
content = readFileSync(file, "utf8");
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
throw error;
|
|
102
|
+
}
|
|
103
|
+
let prefix;
|
|
104
|
+
for (const line of content.split(/\r?\n/)) {
|
|
105
|
+
// npm config sections do not define a top-level global prefix.
|
|
106
|
+
if (line.trimStart().startsWith("[")) {
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
const match = /^\s*prefix\s*=\s*(.*)$/.exec(line);
|
|
110
|
+
if (!match) {
|
|
111
|
+
continue;
|
|
112
|
+
}
|
|
113
|
+
const raw = match[1].trim();
|
|
114
|
+
if (raw.startsWith('"') && raw.endsWith('"')) {
|
|
115
|
+
try {
|
|
116
|
+
prefix = z.string().parse(JSON.parse(raw));
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// A malformed prefix is not a reliable global installation root.
|
|
120
|
+
prefix = undefined;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
else if (raw.startsWith("'") && raw.endsWith("'")) {
|
|
124
|
+
prefix = raw.slice(1, -1);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
const chars = [];
|
|
128
|
+
for (let index = 0; index < raw.length; index++) {
|
|
129
|
+
const char = raw[index];
|
|
130
|
+
if (char === ";" || char === "#") {
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
if (char === "\\" && ["\\", ";", "#"].includes(raw[index + 1])) {
|
|
134
|
+
index++;
|
|
135
|
+
chars.push(raw[index]);
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
chars.push(char);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
prefix = chars.join("").trim();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return prefix;
|
|
145
|
+
}
|
|
146
|
+
function defaultGlobalRoots() {
|
|
147
|
+
const paths = process.platform === "win32" ? win32 : posix;
|
|
148
|
+
const roots = process.platform === "win32"
|
|
149
|
+
? [paths.join(paths.dirname(process.execPath), "node_modules")]
|
|
150
|
+
: [paths.resolve(paths.dirname(process.execPath), "../lib/node_modules"), "/usr/local/lib/node_modules", "/usr/lib/node_modules"];
|
|
151
|
+
const prefix = process.env["npm_config_prefix"] ?? process.env["NPM_CONFIG_PREFIX"] ?? prefixFromNpmrc();
|
|
152
|
+
if (prefix) {
|
|
153
|
+
let expanded = prefix.replace(/(?<!\\)\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g, (original, name) => process.env[name] ?? original);
|
|
154
|
+
if (expanded.startsWith("~/") || expanded.startsWith("~\\")) {
|
|
155
|
+
expanded = paths.join(homedir(), expanded.slice(2));
|
|
156
|
+
}
|
|
157
|
+
roots.push(paths.resolve(expanded, process.platform === "win32" ? "node_modules" : "lib/node_modules"));
|
|
158
|
+
}
|
|
159
|
+
const appData = process.env["APPDATA"];
|
|
160
|
+
if (process.platform === "win32" && appData) {
|
|
161
|
+
roots.push(paths.join(appData, "npm", "node_modules"));
|
|
162
|
+
}
|
|
163
|
+
return roots;
|
|
164
|
+
}
|
|
165
|
+
function canonicalGlobalRoot(root) {
|
|
166
|
+
try {
|
|
167
|
+
return realpathSync(root);
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
171
|
+
return root;
|
|
172
|
+
}
|
|
173
|
+
throw error;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/** Resolve the real CLI entry and inspect its layout only when the host requests it. */
|
|
177
|
+
export function detectInstallMode(entryPath, options = {}) {
|
|
178
|
+
const paths = process.platform === "win32" ? win32 : posix;
|
|
179
|
+
const entry = realpathSync(entryPath);
|
|
180
|
+
let cliRoot;
|
|
181
|
+
let coreVersion;
|
|
182
|
+
for (const directory of ancestorDirectories(paths.dirname(entry))) {
|
|
183
|
+
const manifest = readManifest(directory);
|
|
184
|
+
if (manifest?.name === "@nodetool-ai/cli") {
|
|
185
|
+
if (!manifest.version) {
|
|
186
|
+
throw new Error(`CLI package has no version: ${directory}`);
|
|
187
|
+
}
|
|
188
|
+
cliRoot = directory;
|
|
189
|
+
coreVersion = manifest.version;
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
if (!cliRoot || !coreVersion) {
|
|
194
|
+
throw new CliRootNotFoundError(entry);
|
|
195
|
+
}
|
|
196
|
+
const ancestors = ancestorDirectories(cliRoot);
|
|
197
|
+
const yarnPnp = ancestors.some((directory) => [".pnp.cjs", ".pnp.js", ".pnp.loader.mjs"].some((file) => existsSync(paths.join(directory, file))));
|
|
198
|
+
const modules = paths.dirname(paths.dirname(cliRoot));
|
|
199
|
+
const project = readManifest(paths.dirname(modules));
|
|
200
|
+
const projectHasCli = Boolean(project?.dependencies?.["@nodetool-ai/cli"] ?? project?.devDependencies?.["@nodetool-ai/cli"] ?? project?.optionalDependencies?.["@nodetool-ai/cli"]);
|
|
201
|
+
const workspaceRoot = ancestors.find((directory) => readManifest(directory)?.workspaces !== undefined);
|
|
202
|
+
const layout = {
|
|
203
|
+
cliRoot, coreVersion, pathStyle: process.platform === "win32" ? "win32" : "posix",
|
|
204
|
+
globalNodeModulesRoots: (options.globalNodeModulesRoots ?? defaultGlobalRoots()).map(canonicalGlobalRoot), projectHasCli, yarnPnp,
|
|
205
|
+
bunGlobalRoots: options.bunGlobalRoots ?? [paths.join(process.env["BUN_INSTALL"] ?? paths.join(homedir(), ".bun"), "install", "global")]
|
|
206
|
+
};
|
|
207
|
+
if (workspaceRoot) {
|
|
208
|
+
return classifyInstallLayout({ ...layout, workspaceRoot });
|
|
209
|
+
}
|
|
210
|
+
return classifyInstallLayout(layout);
|
|
211
|
+
}
|
|
212
|
+
/** A standalone command feature may read its installed dependencies without owning a pack installer. */
|
|
213
|
+
export function detectStandaloneFeatureMode(entryPath, catalog) {
|
|
214
|
+
const paths = process.platform === "win32" ? win32 : posix;
|
|
215
|
+
const entry = realpathSync(entryPath);
|
|
216
|
+
const directories = ancestorDirectories(paths.dirname(entry));
|
|
217
|
+
for (const directory of directories) {
|
|
218
|
+
const manifest = readManifest(directory);
|
|
219
|
+
if (!manifest) {
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
const owners = catalog.packs.filter(pack => pack.kind === "cli-feature" && pack.npm.name === manifest.name);
|
|
223
|
+
const owner = owners[0];
|
|
224
|
+
if (owners.length !== 1 || !owner) {
|
|
225
|
+
throw new Error(`Standalone command owner ${manifest.name ?? directory} is not an admitted CLI feature`);
|
|
226
|
+
}
|
|
227
|
+
if (manifest.version !== catalog.coreVersion || manifest.version !== owner.npm.version) {
|
|
228
|
+
throw new Error(`Standalone command ${owner.id} version ${String(manifest.version)} differs from catalog version ${catalog.coreVersion}`);
|
|
229
|
+
}
|
|
230
|
+
const modules = paths.dirname(paths.dirname(directory));
|
|
231
|
+
const project = readManifest(paths.dirname(modules));
|
|
232
|
+
const workspaceRoot = directories.find(candidate => readManifest(candidate)?.workspaces !== undefined);
|
|
233
|
+
const mode = classifyInstallLayout({
|
|
234
|
+
cliRoot: directory, coreVersion: manifest.version, pathStyle: process.platform === "win32" ? "win32" : "posix",
|
|
235
|
+
globalNodeModulesRoots: defaultGlobalRoots().map(canonicalGlobalRoot), workspaceRoot,
|
|
236
|
+
projectHasCli: Boolean(project?.dependencies?.["@nodetool-ai/cli"] ?? project?.devDependencies?.["@nodetool-ai/cli"] ?? project?.optionalDependencies?.["@nodetool-ai/cli"])
|
|
237
|
+
});
|
|
238
|
+
const reason = 'Standalone command features cannot install packs. Run "npm install -g @nodetool-ai/cli" or install it in a project, then use "nodetool packs add".';
|
|
239
|
+
return { cliRoot: mode.cliRoot, coreVersion: mode.coreVersion, pathStyle: mode.pathStyle,
|
|
240
|
+
kind: mode.kind === "npx" ? "npx" : "unsupported", nodeModulesRoot: mode.nodeModulesRoot, reason };
|
|
241
|
+
}
|
|
242
|
+
throw new Error(`Cannot find a catalog-admitted standalone command owner for ${entry}`);
|
|
243
|
+
}
|
|
244
|
+
/** The catalog factory supplies the concrete closure when no ids are available yet. */
|
|
245
|
+
export function installDetailsForMode(mode, ids = []) {
|
|
246
|
+
if (mode.kind === "global" || mode.kind === "local") {
|
|
247
|
+
return { supported: true, reason: null, command: ids.length ? `nodetool packs add ${[...new Set(ids)].sort().join(" ")}` : null };
|
|
248
|
+
}
|
|
249
|
+
return { supported: false, reason: mode.reason, command: null };
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode.js","sourceRoot":"","sources":["../../src/packs/mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { NodeCatalogIndex } from "@nodetool-ai/pack-core";
|
|
2
|
+
import type { InstallPlan, TreePackage } from "./install-tree.js";
|
|
3
|
+
/** npm labels replaying an exact no-save owned package as a change. */
|
|
4
|
+
export declare function normalizeOwnedPackReplay(plan: InstallPlan, before: readonly TreePackage[], catalog: NodeCatalogIndex, coreNames?: ReadonlySet<string>): InstallPlan;
|
|
5
|
+
//# sourceMappingURL=owned-replay-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owned-replay-plan.d.ts","sourceRoot":"","sources":["../../src/packs/owned-replay-plan.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAqB,MAAM,wBAAwB,CAAC;AAElF,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAKlE,uEAAuE;AACvE,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,WAAW,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,SAAS,GAAE,WAAW,CAAC,MAAM,CAAa,GAAG,WAAW,CA4C9K"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { RUNTIME_NPM_PACKAGES } from "@nodetool-ai/protocol/runtime-npm-packages";
|
|
3
|
+
const identity = z.object({ name: z.string(), version: z.string(), path: z.string() });
|
|
4
|
+
const replayChange = z.object({ from: identity, to: identity });
|
|
5
|
+
/** npm labels replaying an exact no-save owned package as a change. */
|
|
6
|
+
export function normalizeOwnedPackReplay(plan, before, catalog, coreNames = new Set()) {
|
|
7
|
+
const table = new Map((catalog.installPins ?? []).map((pin) => [pin.installName ?? pin.name, pin]));
|
|
8
|
+
const excluded = new Set([
|
|
9
|
+
...coreNames,
|
|
10
|
+
...(catalog.installPins ?? []).filter((pin) => pin.shared).map((pin) => pin.name),
|
|
11
|
+
...Object.values(RUNTIME_NPM_PACKAGES).flatMap((group) => group.packageNames),
|
|
12
|
+
...Object.values(RUNTIME_NPM_PACKAGES).flatMap((group) => group.packageNames.map((name) => table.get(name)?.name).filter((name) => name !== undefined))
|
|
13
|
+
]);
|
|
14
|
+
const owned = new Map();
|
|
15
|
+
for (const pack of catalog.packs) {
|
|
16
|
+
for (const pin of [pack.npm, ...pack.provides.map((name) => table.get(name)).filter((pin) => pin !== undefined)]) {
|
|
17
|
+
if (!excluded.has(pin.name)) {
|
|
18
|
+
owned.set(pin.name, pin);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const paths = new Map(before.map((entry) => [entry.realPath, entry]));
|
|
23
|
+
const byName = new Map();
|
|
24
|
+
for (const entry of before) {
|
|
25
|
+
const entries = byName.get(entry.name) ?? [];
|
|
26
|
+
entries.push(entry);
|
|
27
|
+
byName.set(entry.name, entries);
|
|
28
|
+
}
|
|
29
|
+
const change = plan.change.filter((raw) => {
|
|
30
|
+
const text = z.string().safeParse(raw);
|
|
31
|
+
if (text.success) {
|
|
32
|
+
const match = /^change (\S+) (\S+) => (\S+)$/.exec(text.data);
|
|
33
|
+
if (!match || match[2] !== match[3]) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
const pin = owned.get(match[1]);
|
|
37
|
+
const entries = byName.get(match[1]);
|
|
38
|
+
if (!pin || entries?.length !== 1) {
|
|
39
|
+
return true;
|
|
40
|
+
}
|
|
41
|
+
const previous = entries[0];
|
|
42
|
+
const folder = pin.installName ?? pin.name;
|
|
43
|
+
return previous.path !== `node_modules/${folder}` || !previous.realPath.replaceAll("\\", "/").endsWith(`/node_modules/${folder}`) ||
|
|
44
|
+
!previous.integrity || previous.integrity !== pin.integrity || previous.version !== match[2] ||
|
|
45
|
+
pin.version !== catalog.coreVersion || match[2] !== catalog.coreVersion;
|
|
46
|
+
}
|
|
47
|
+
const parsed = replayChange.safeParse(raw);
|
|
48
|
+
if (!parsed.success) {
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
const { from, to } = parsed.data;
|
|
52
|
+
if (from.name !== to.name || from.version !== to.version || from.path !== to.path) {
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
const pin = owned.get(from.name);
|
|
56
|
+
const previous = paths.get(from.path);
|
|
57
|
+
if (!pin || !previous || !previous.integrity || previous.integrity !== pin.integrity || previous.name !== from.name ||
|
|
58
|
+
previous.version !== from.version || pin.version !== catalog.coreVersion || from.version !== catalog.coreVersion) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
});
|
|
63
|
+
return { ...plan, change };
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=owned-replay-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owned-replay-plan.js","sourceRoot":"","sources":["../../src/packs/owned-replay-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type InstallPacksRequest, type InstallSelection } from "./install-selection.js";
|
|
2
|
+
export interface RemovalSelection {
|
|
3
|
+
readonly authorization: InstallSelection;
|
|
4
|
+
readonly remove: readonly string[];
|
|
5
|
+
readonly kept: readonly string[];
|
|
6
|
+
readonly removePaths: ReadonlySet<string>;
|
|
7
|
+
readonly npmNames: readonly string[];
|
|
8
|
+
readonly remainingPackIds: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
/** Preserve logical pack requirements and every dependency reachable from retained roots. */
|
|
11
|
+
export declare function preparePackRemoval(request: InstallPacksRequest): Promise<RemovalSelection>;
|
|
12
|
+
//# sourceMappingURL=removal-selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removal-selection.d.ts","sourceRoot":"","sources":["../../src/packs/removal-selection.ts"],"names":[],"mappings":"AAMA,OAAO,EAA+C,KAAK,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEtI,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,aAAa,EAAE,gBAAgB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAeD,6FAA6F;AAC7F,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAqGhG"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { readFile, realpath } from "node:fs/promises";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { RUNTIME_NPM_PACKAGES, isRuntimeNpmPackageId } from "@nodetool-ai/protocol/runtime-npm-packages";
|
|
6
|
+
import { planPackRemoval } from "./management.js";
|
|
7
|
+
import { prepareInstallSelection, expandCatalogPacks } from "./install-selection.js";
|
|
8
|
+
const dependencySchema = z.object({ dependencies: z.record(z.string(), z.string()).optional(),
|
|
9
|
+
optionalDependencies: z.record(z.string(), z.string()).optional(), peerDependencies: z.record(z.string(), z.string()).optional(),
|
|
10
|
+
peerDependenciesMeta: z.record(z.string(), z.object({ optional: z.boolean().optional() })).optional() });
|
|
11
|
+
const dependencyName = z.string().regex(/^(?:@[A-Za-z0-9._-]+\/)?[A-Za-z0-9._-]+$/, "Invalid npm dependency name")
|
|
12
|
+
.refine(name => name.split("/").every(part => part !== "." && part !== ".."), "Invalid npm dependency name");
|
|
13
|
+
function reachable(roots, edges) {
|
|
14
|
+
const result = new Set();
|
|
15
|
+
const pending = [...roots];
|
|
16
|
+
while (pending.length) {
|
|
17
|
+
const path = pending.pop();
|
|
18
|
+
if (result.has(path)) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
result.add(path);
|
|
22
|
+
pending.push(...(edges.get(path) ?? []));
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
/** Preserve logical pack requirements and every dependency reachable from retained roots. */
|
|
27
|
+
export async function preparePackRemoval(request) {
|
|
28
|
+
const selection = await prepareInstallSelection({ ...request, packs: [], runtimeLibraries: [] });
|
|
29
|
+
// Legacy state proves no automatic ownership. Preserve those entries as independent selections.
|
|
30
|
+
const explicit = new Set(selection.previous.requestedPacks ?? selection.previous.packs);
|
|
31
|
+
const managed = new Set(selection.previous.managedPacks ?? []);
|
|
32
|
+
const requested = new Set(request.packs);
|
|
33
|
+
const automatic = expandCatalogPacks(selection.catalog, request.packs)
|
|
34
|
+
.filter(pack => managed.has(pack.id) && !explicit.has(pack.id)).map(pack => pack.id);
|
|
35
|
+
let logical = planPackRemoval(selection.catalog, selection.installedIds, [...requested, ...automatic]);
|
|
36
|
+
const requestedLibraries = [...new Set([...(request.runtimeLibraries ?? []), ...logical.runtimeLibraries])];
|
|
37
|
+
for (const id of requestedLibraries) {
|
|
38
|
+
if (!isRuntimeNpmPackageId(id)) {
|
|
39
|
+
throw new Error(`Unknown runtime library: ${id}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const byPath = new Map(selection.before.map((entry) => [entry.path, entry]));
|
|
43
|
+
const byRealPath = new Map(selection.before.map((entry) => [entry.realPath, entry.path]));
|
|
44
|
+
const edges = new Map();
|
|
45
|
+
const dependencies = async (directory, omit = new Set()) => {
|
|
46
|
+
const manifest = dependencySchema.parse(JSON.parse(await readFile(join(directory, "package.json"), "utf8")));
|
|
47
|
+
const peers = Object.keys(manifest.peerDependencies ?? {}).filter((name) => !manifest.peerDependenciesMeta?.[name]?.optional);
|
|
48
|
+
const names = [...new Set([...Object.keys({ ...manifest.dependencies, ...manifest.optionalDependencies }), ...peers])];
|
|
49
|
+
const resolver = createRequire(join(directory, "package.json"));
|
|
50
|
+
const result = [];
|
|
51
|
+
for (const name of names) {
|
|
52
|
+
if (omit.has(name) || name.startsWith("node:")) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
dependencyName.parse(name);
|
|
56
|
+
// A package subpath requests npm lookup paths even when its name is a Node builtin.
|
|
57
|
+
for (const lookup of resolver.resolve.paths(`${name}/package.json`) ?? []) {
|
|
58
|
+
try {
|
|
59
|
+
const actual = await realpath(join(lookup, name));
|
|
60
|
+
const path = byRealPath.get(actual);
|
|
61
|
+
if (path) {
|
|
62
|
+
result.push(path);
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
if (!(error instanceof Error && "code" in error && error.code === "ENOENT")) {
|
|
68
|
+
throw error;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
};
|
|
75
|
+
for (const entry of selection.before) {
|
|
76
|
+
edges.set(entry.path, await dependencies(entry.realPath));
|
|
77
|
+
}
|
|
78
|
+
const catalogById = new Map(selection.catalog.packs.map((pack) => [pack.id, pack]));
|
|
79
|
+
const physicalRoots = request.packs.flatMap(id => {
|
|
80
|
+
const pack = catalogById.get(id);
|
|
81
|
+
return pack ? [pack.npm.name, ...pack.provides].map(name => `node_modules/${name}`).filter(path => byPath.has(path)) : [];
|
|
82
|
+
});
|
|
83
|
+
const physicalClosure = reachable(physicalRoots, edges);
|
|
84
|
+
const physicalAutomatic = selection.catalog.packs.filter(pack => managed.has(pack.id) && !explicit.has(pack.id) &&
|
|
85
|
+
physicalClosure.has(`node_modules/${pack.npm.name}`)).map(pack => pack.id);
|
|
86
|
+
logical = planPackRemoval(selection.catalog, selection.installedIds, [...requested, ...automatic, ...physicalAutomatic]);
|
|
87
|
+
const ownerRoots = new Map();
|
|
88
|
+
for (const id of logical.remove) {
|
|
89
|
+
const pack = catalogById.get(id);
|
|
90
|
+
ownerRoots.set(id, [pack.npm.name, ...pack.provides].map((name) => `node_modules/${name}`).filter((path) => byPath.has(path)));
|
|
91
|
+
}
|
|
92
|
+
const installedIds = new Set(selection.installedIds);
|
|
93
|
+
for (const id of request.packs) {
|
|
94
|
+
if (!installedIds.has(id) && !logical.kept.includes(id)) {
|
|
95
|
+
ownerRoots.set(id, []);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
for (const id of requestedLibraries) {
|
|
99
|
+
if (isRuntimeNpmPackageId(id)) {
|
|
100
|
+
const paths = RUNTIME_NPM_PACKAGES[id].packageNames.map((name) => `node_modules/${name}`).filter((path) => byPath.has(path));
|
|
101
|
+
ownerRoots.set(id, [...new Set([...(ownerRoots.get(id) ?? []), ...paths])]);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const requestedRoots = new Set([...ownerRoots.values()].flat());
|
|
105
|
+
const targetClosure = reachable(requestedRoots, edges);
|
|
106
|
+
const requestedNames = new Set([...requestedRoots].map((path) => path.slice("node_modules/".length)));
|
|
107
|
+
const protectedRoots = new Set(await dependencies(selection.root, selection.mode === "global" ? new Set() : requestedNames));
|
|
108
|
+
if (request.mode.cliRoot !== selection.root) {
|
|
109
|
+
for (const path of await dependencies(request.mode.cliRoot)) {
|
|
110
|
+
protectedRoots.add(path);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
for (const entry of selection.before) {
|
|
114
|
+
const topLevel = !entry.path.slice("node_modules/".length).includes("/node_modules/");
|
|
115
|
+
if (topLevel && !targetClosure.has(entry.path)) {
|
|
116
|
+
protectedRoots.add(entry.path);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
for (const id of logical.remaining) {
|
|
120
|
+
const pack = catalogById.get(id);
|
|
121
|
+
for (const name of [pack.npm.name, ...pack.provides]) {
|
|
122
|
+
const path = `node_modules/${name}`;
|
|
123
|
+
if (byPath.has(path)) {
|
|
124
|
+
protectedRoots.add(path);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
for (const library of pack.runtimeLibraries) {
|
|
128
|
+
if (isRuntimeNpmPackageId(library)) {
|
|
129
|
+
for (const name of RUNTIME_NPM_PACKAGES[library].packageNames) {
|
|
130
|
+
const path = `node_modules/${name}`;
|
|
131
|
+
if (byPath.has(path)) {
|
|
132
|
+
protectedRoots.add(path);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const wantedLibraries = new Set(requestedLibraries);
|
|
139
|
+
for (const id of selection.runtimeLibraries) {
|
|
140
|
+
if (!wantedLibraries.has(id) && isRuntimeNpmPackageId(id)) {
|
|
141
|
+
for (const name of RUNTIME_NPM_PACKAGES[id].packageNames) {
|
|
142
|
+
const path = `node_modules/${name}`;
|
|
143
|
+
if (byPath.has(path)) {
|
|
144
|
+
protectedRoots.add(path);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const kept = new Set(logical.kept);
|
|
150
|
+
let protectedPaths = reachable(protectedRoots, edges);
|
|
151
|
+
while (true) {
|
|
152
|
+
const protectedAncestors = new Set();
|
|
153
|
+
for (const path of protectedPaths) {
|
|
154
|
+
let prefix = "";
|
|
155
|
+
for (const segment of path.split("/")) {
|
|
156
|
+
prefix = prefix ? `${prefix}/${segment}` : segment;
|
|
157
|
+
protectedAncestors.add(prefix);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
let changed = false;
|
|
161
|
+
for (const [id, paths] of ownerRoots) {
|
|
162
|
+
if (kept.has(id)) {
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
if (paths.some((path) => protectedAncestors.has(path))) {
|
|
166
|
+
kept.add(id);
|
|
167
|
+
for (const path of paths) {
|
|
168
|
+
protectedRoots.add(path);
|
|
169
|
+
}
|
|
170
|
+
changed = true;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (!changed) {
|
|
174
|
+
break;
|
|
175
|
+
}
|
|
176
|
+
protectedPaths = reachable(protectedRoots, edges);
|
|
177
|
+
}
|
|
178
|
+
const remove = [...ownerRoots.keys()].filter((id) => !kept.has(id)).sort();
|
|
179
|
+
const removePaths = new Set([...reachable(remove.flatMap((id) => ownerRoots.get(id) ?? []), edges)].filter((path) => !protectedPaths.has(path)));
|
|
180
|
+
const npmNames = [...new Set(remove.flatMap((id) => ownerRoots.get(id) ?? []).map((path) => path.slice("node_modules/".length)))];
|
|
181
|
+
const authorization = { ...selection, packs: [...new Map([...selection.packs, ...request.packs.map((id) => catalogById.get(id)).filter((pack) => pack !== undefined)].map((pack) => [pack.id, pack])).values()],
|
|
182
|
+
runtimeLibraries: [...new Set([...selection.runtimeLibraries, ...requestedLibraries])].sort(), scripts: [], mutationPaths: [...removePaths] };
|
|
183
|
+
return { authorization, remove, kept: [...kept].sort(), removePaths, npmNames,
|
|
184
|
+
remainingPackIds: selection.installedIds.filter((id) => !remove.includes(id)) };
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=removal-selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removal-selection.js","sourceRoot":"","sources":["../../src/packs/removal-selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type InstallAuthorization } from "../commands/pack-install-authorization.js";
|
|
2
|
+
import { type InstallerOperations } from "./installer.js";
|
|
3
|
+
import type { InstallPacksRequest, DesiredPackState } from "./install-selection.js";
|
|
4
|
+
export interface PackRemovalResult {
|
|
5
|
+
readonly desired: DesiredPackState;
|
|
6
|
+
readonly removed: readonly string[];
|
|
7
|
+
readonly kept: readonly string[];
|
|
8
|
+
readonly restartRequired: true;
|
|
9
|
+
}
|
|
10
|
+
/** Explicit removal mutates only packages exclusively owned by its authorized IDs. */
|
|
11
|
+
export declare function removePacks(request: InstallPacksRequest, authorization: InstallAuthorization, operations?: InstallerOperations): Promise<PackRemovalResult>;
|
|
12
|
+
//# sourceMappingURL=removal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"removal.d.ts","sourceRoot":"","sources":["../../src/packs/removal.ts"],"names":[],"mappings":"AAIA,OAAO,EAAmE,KAAK,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACvJ,OAAO,EAAgC,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxF,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAOpF,MAAM,WAAW,iBAAiB;IAAG,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAA;CAAE;AA0BhL,sFAAsF;AACtF,wBAAsB,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,GAAE,mBAAkD,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuE/L"}
|