@nodetool-ai/pack-manager 0.0.0-stage → 0.8.9-bootstrap.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 (127) hide show
  1. package/README.md +4 -2
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/child-exit.d.ts +3 -0
  4. package/dist/child-exit.d.ts.map +1 -0
  5. package/dist/child-exit.js +17 -0
  6. package/dist/child-exit.js.map +1 -0
  7. package/dist/cli-feature.d.ts +30 -0
  8. package/dist/cli-feature.d.ts.map +1 -0
  9. package/dist/cli-feature.js +89 -0
  10. package/dist/cli-feature.js.map +1 -0
  11. package/dist/command-errors.d.ts +8 -0
  12. package/dist/command-errors.d.ts.map +1 -0
  13. package/dist/command-errors.js +49 -0
  14. package/dist/command-errors.js.map +1 -0
  15. package/dist/commands/authorized-pack-install.d.ts +7 -0
  16. package/dist/commands/authorized-pack-install.d.ts.map +1 -0
  17. package/dist/commands/authorized-pack-install.js +20 -0
  18. package/dist/commands/authorized-pack-install.js.map +1 -0
  19. package/dist/commands/output.d.ts +32 -0
  20. package/dist/commands/output.d.ts.map +1 -0
  21. package/dist/commands/output.js +150 -0
  22. package/dist/commands/output.js.map +1 -0
  23. package/dist/commands/pack-install-authorization.d.ts +40 -0
  24. package/dist/commands/pack-install-authorization.d.ts.map +1 -0
  25. package/dist/commands/pack-install-authorization.js +132 -0
  26. package/dist/commands/pack-install-authorization.js.map +1 -0
  27. package/dist/commands/pack-management.d.ts +26 -0
  28. package/dist/commands/pack-management.d.ts.map +1 -0
  29. package/dist/commands/pack-management.js +74 -0
  30. package/dist/commands/pack-management.js.map +1 -0
  31. package/dist/commands/packs.d.ts +5 -0
  32. package/dist/commands/packs.d.ts.map +1 -0
  33. package/dist/commands/packs.js +12 -0
  34. package/dist/commands/packs.js.map +1 -0
  35. package/dist/index.d.ts +5 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +5 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/install-lock.d.ts +12 -0
  40. package/dist/install-lock.d.ts.map +1 -0
  41. package/dist/install-lock.js +139 -0
  42. package/dist/install-lock.js.map +1 -0
  43. package/dist/npm-runner.d.ts +23 -0
  44. package/dist/npm-runner.d.ts.map +1 -0
  45. package/dist/npm-runner.js +160 -0
  46. package/dist/npm-runner.js.map +1 -0
  47. package/dist/packs/command-service.d.ts +16 -0
  48. package/dist/packs/command-service.d.ts.map +1 -0
  49. package/dist/packs/command-service.js +184 -0
  50. package/dist/packs/command-service.js.map +1 -0
  51. package/dist/packs/doctor-lock.d.ts +8 -0
  52. package/dist/packs/doctor-lock.d.ts.map +1 -0
  53. package/dist/packs/doctor-lock.js +50 -0
  54. package/dist/packs/doctor-lock.js.map +1 -0
  55. package/dist/packs/doctor.d.ts +25 -0
  56. package/dist/packs/doctor.d.ts.map +1 -0
  57. package/dist/packs/doctor.js +12 -0
  58. package/dist/packs/doctor.js.map +1 -0
  59. package/dist/packs/global-bootstrap.d.ts +11 -0
  60. package/dist/packs/global-bootstrap.d.ts.map +1 -0
  61. package/dist/packs/global-bootstrap.js +72 -0
  62. package/dist/packs/global-bootstrap.js.map +1 -0
  63. package/dist/packs/host.d.ts +12 -0
  64. package/dist/packs/host.d.ts.map +1 -0
  65. package/dist/packs/host.js +69 -0
  66. package/dist/packs/host.js.map +1 -0
  67. package/dist/packs/install-manifests.d.ts +2 -0
  68. package/dist/packs/install-manifests.d.ts.map +1 -0
  69. package/dist/packs/install-manifests.js +30 -0
  70. package/dist/packs/install-manifests.js.map +1 -0
  71. package/dist/packs/install-process.d.ts +4 -0
  72. package/dist/packs/install-process.d.ts.map +1 -0
  73. package/dist/packs/install-process.js +11 -0
  74. package/dist/packs/install-process.js.map +1 -0
  75. package/dist/packs/install-selection.d.ts +39 -0
  76. package/dist/packs/install-selection.d.ts.map +1 -0
  77. package/dist/packs/install-selection.js +67 -0
  78. package/dist/packs/install-selection.js.map +1 -0
  79. package/dist/packs/install-state.d.ts +25 -0
  80. package/dist/packs/install-state.d.ts.map +1 -0
  81. package/dist/packs/install-state.js +45 -0
  82. package/dist/packs/install-state.js.map +1 -0
  83. package/dist/packs/install-tree.d.ts +35 -0
  84. package/dist/packs/install-tree.d.ts.map +1 -0
  85. package/dist/packs/install-tree.js +253 -0
  86. package/dist/packs/install-tree.js.map +1 -0
  87. package/dist/packs/install-verification.d.ts +12 -0
  88. package/dist/packs/install-verification.d.ts.map +1 -0
  89. package/dist/packs/install-verification.js +75 -0
  90. package/dist/packs/install-verification.js.map +1 -0
  91. package/dist/packs/installed.d.ts +36 -0
  92. package/dist/packs/installed.d.ts.map +1 -0
  93. package/dist/packs/installed.js +87 -0
  94. package/dist/packs/installed.js.map +1 -0
  95. package/dist/packs/installer-load-check.d.ts +5 -0
  96. package/dist/packs/installer-load-check.d.ts.map +1 -0
  97. package/dist/packs/installer-load-check.js +98 -0
  98. package/dist/packs/installer-load-check.js.map +1 -0
  99. package/dist/packs/installer.d.ts +16 -0
  100. package/dist/packs/installer.d.ts.map +1 -0
  101. package/dist/packs/installer.js +149 -0
  102. package/dist/packs/installer.js.map +1 -0
  103. package/dist/packs/management.d.ts +51 -0
  104. package/dist/packs/management.d.ts.map +1 -0
  105. package/dist/packs/management.js +78 -0
  106. package/dist/packs/management.js.map +1 -0
  107. package/dist/packs/mode.d.ts +48 -0
  108. package/dist/packs/mode.d.ts.map +1 -0
  109. package/dist/packs/mode.js +251 -0
  110. package/dist/packs/mode.js.map +1 -0
  111. package/dist/packs/owned-replay-plan.d.ts +5 -0
  112. package/dist/packs/owned-replay-plan.d.ts.map +1 -0
  113. package/dist/packs/owned-replay-plan.js +65 -0
  114. package/dist/packs/owned-replay-plan.js.map +1 -0
  115. package/dist/packs/removal-selection.d.ts +12 -0
  116. package/dist/packs/removal-selection.d.ts.map +1 -0
  117. package/dist/packs/removal-selection.js +186 -0
  118. package/dist/packs/removal-selection.js.map +1 -0
  119. package/dist/packs/removal.d.ts +12 -0
  120. package/dist/packs/removal.d.ts.map +1 -0
  121. package/dist/packs/removal.js +144 -0
  122. package/dist/packs/removal.js.map +1 -0
  123. package/dist/packs/repair.d.ts +2 -0
  124. package/dist/packs/repair.d.ts.map +1 -0
  125. package/dist/packs/repair.js +2 -0
  126. package/dist/packs/repair.js.map +1 -0
  127. package/package.json +51 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer-load-check.js","sourceRoot":"","sources":["../../src/packs/installer-load-check.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { installerNpmVersion, runInstallerNpm } from "../npm-runner.js";
2
+ import { type InstallPacksRequest, type DesiredPackState } from "./install-selection.js";
3
+ import { type InstallAuthorization } from "../commands/pack-install-authorization.js";
4
+ import type { InstallMode } from "./mode.js";
5
+ export type { DesiredPackState, InstallPacksRequest } from "./install-selection.js";
6
+ export interface InstallerOperations {
7
+ readonly npmVersion: typeof installerNpmVersion;
8
+ readonly npm: typeof runInstallerNpm;
9
+ readonly loadCheck: (mode: InstallMode, packs: readonly string[], signal?: AbortSignal) => Promise<void>;
10
+ }
11
+ export declare const DEFAULT_INSTALLER_OPERATIONS: InstallerOperations;
12
+ /** Additive install transaction. Requires a live command authorization. */
13
+ export declare function installPacks(request: InstallPacksRequest, authorization: InstallAuthorization, operations?: InstallerOperations): Promise<DesiredPackState>;
14
+ /** Repair verifies the current pinned cohort and explicitly restores missing desired entries. */
15
+ export declare function repairPackInstallation(request: InstallPacksRequest, authorization: InstallAuthorization, operations?: InstallerOperations): Promise<DesiredPackState>;
16
+ //# sourceMappingURL=installer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../src/packs/installer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAA+C,KAAK,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AACtI,OAAO,EAAmE,KAAK,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAMvJ,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAG7C,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACpF,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,UAAU,EAAE,OAAO,mBAAmB,CAAC;IAChD,QAAQ,CAAC,GAAG,EAAE,OAAO,eAAe,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1G;AAiBD,eAAO,MAAM,4BAA4B,EAAE,mBAE1C,CAAC;AAEF,2EAA2E;AAC3E,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,GAAE,mBAAkD,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAE/L;AAED,iGAAiG;AACjG,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,GAAE,mBAAkD,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAEzM"}
@@ -0,0 +1,149 @@
1
+ import { spawn } from "node:child_process";
2
+ import { fileURLToPath } from "node:url";
3
+ import { acquireInstallLock } from "../install-lock.js";
4
+ import { installerNpmVersion, runInstallerNpm } from "../npm-runner.js";
5
+ import { prepareInstallSelection, expandCatalogPacks } from "./install-selection.js";
6
+ import { assertLiveInstallAuthorization, assertInstallAuthorizationScope } from "../commands/pack-install-authorization.js";
7
+ import { prepareTreeVerification } from "./install-verification.js";
8
+ import { captureInstallManifests } from "./install-manifests.js";
9
+ import { normalizeGlobalBootstrap } from "./global-bootstrap.js";
10
+ import { normalizeOwnedPackReplay } from "./owned-replay-plan.js";
11
+ import { writeDesiredState } from "./install-state.js";
12
+ import { snapshotInstallTree, installTreeRestored, parseInstallPlan, assertAdditivePlan, assertTreePins, assertSharedIdentities, removeSnapshotAdditions } from "./install-tree.js";
13
+ function childLoadCheck(mode, packs, signal) {
14
+ if (mode.kind !== "global" && mode.kind !== "local") {
15
+ throw new Error(mode.reason);
16
+ }
17
+ const entry = fileURLToPath(new URL("./installer-load-check.js", import.meta.url));
18
+ return new Promise((resolve, reject) => {
19
+ const child = spawn(process.execPath, [entry, mode.cliRoot, mode.installRoot, ...packs], {
20
+ shell: false, stdio: ["ignore", "pipe", "pipe"], signal
21
+ });
22
+ let output = "";
23
+ child.stdout.on("data", (chunk) => { output += chunk.toString(); });
24
+ child.stderr.on("data", (chunk) => { output += chunk.toString(); });
25
+ child.on("error", reject);
26
+ child.on("close", (code) => { if (code === 0) {
27
+ resolve();
28
+ }
29
+ else {
30
+ reject(new Error(`Pack load check failed (${String(code)}): ${output.trim()}`));
31
+ } });
32
+ });
33
+ }
34
+ export const DEFAULT_INSTALLER_OPERATIONS = {
35
+ npmVersion: installerNpmVersion, npm: runInstallerNpm, loadCheck: childLoadCheck
36
+ };
37
+ /** Additive install transaction. Requires a live command authorization. */
38
+ export async function installPacks(request, authorization, operations = DEFAULT_INSTALLER_OPERATIONS) {
39
+ return installPacksTransaction(request, authorization, operations, "install");
40
+ }
41
+ /** Repair verifies the current pinned cohort and explicitly restores missing desired entries. */
42
+ export async function repairPackInstallation(request, authorization, operations = DEFAULT_INSTALLER_OPERATIONS) {
43
+ return installPacksTransaction(request, authorization, operations, "repair");
44
+ }
45
+ async function installPacksTransaction(request, authorization, operations, operation) {
46
+ const { mode } = request;
47
+ if (mode.kind !== "global" && mode.kind !== "local") {
48
+ throw new Error(mode.reason);
49
+ }
50
+ assertLiveInstallAuthorization(authorization);
51
+ const selectionOptions = operation === "repair" ? { allowDirty: true, restoreDesired: true } : {};
52
+ const initial = await prepareInstallSelection(request, selectionOptions);
53
+ assertInstallAuthorizationScope(authorization, initial, operation, request);
54
+ const root = initial.root;
55
+ const release = await acquireInstallLock(mode.nodeModulesRoot, ".nodetool-packs.lock", { signal: request.signal });
56
+ try {
57
+ const selection = await prepareInstallSelection(request, selectionOptions);
58
+ assertInstallAuthorizationScope(authorization, selection, operation, request);
59
+ const { previous, before, installedIds, packs, catalog, replayLibraries, initialGlobalLockMissing } = selection;
60
+ const libraries = selection.runtimeLibraries;
61
+ const version = await operations.npmVersion(root, request.signal, request.onWarning);
62
+ const { pins: selectedPins, provided, runtimePins, shared, coreNames, libraryPins, pinByFolder } = await prepareTreeVerification(selection, mode.cliRoot);
63
+ const bootstrap = selection.bootstrap ?? [];
64
+ const pins = [...selectedPins, ...bootstrap];
65
+ const spec = (pin) => pin.installName && pin.installName !== pin.name
66
+ ? `${pin.installName}@npm:${pin.name}@${pin.version}` : `${pin.name}@${pin.version}`;
67
+ const specs = [...new Set([...packs.map((pack) => spec(pack.npm)), ...provided.map(spec), ...runtimePins.map(spec), ...bootstrap.map(spec)])];
68
+ const alreadyComplete = operation === "repair" && !initialGlobalLockMissing && pins.every((pin) => before.some((entry) => entry.name === pin.name && entry.version === pin.version && entry.integrity === pin.integrity));
69
+ const plan = alreadyComplete ? { add: [], change: [], remove: [] } :
70
+ parseInstallPlan(await operations.npm(root, ["install", ...specs, ...(Number(version.split(".")[0]) >= 11 ? ["--json"] : [])], { mode: mode.kind, dryRun: true, signal: request.signal, onWarning: request.onWarning }), version);
71
+ assertAdditivePlan(normalizeGlobalBootstrap(normalizeOwnedPackReplay(plan, before, catalog, coreNames), bootstrap), before, coreNames, shared, mode.coreVersion);
72
+ const requestedPacks = [...new Set([...(previous.requestedPacks ?? previous.packs), ...request.packs])].sort();
73
+ const installed = new Set(installedIds);
74
+ const managedPacks = [...new Set([...(previous.managedPacks ?? []), ...packs.filter(pack => !installed.has(pack.id)).map(pack => pack.id)])].sort();
75
+ let desired = { root, coreVersion: mode.coreVersion, packs: [...new Set([...previous.packs, ...packs.map((pack) => pack.id)])].sort(), runtimeLibraries: [...new Set([...previous.runtimeLibraries, ...libraries])].sort(), requestedPacks, managedPacks };
76
+ if (operation === "repair") {
77
+ desired = { ...desired, dirty: false };
78
+ }
79
+ const restoreSavedFiles = await captureInstallManifests(root);
80
+ try {
81
+ if (!alreadyComplete) {
82
+ await operations.npm(root, ["install", ...specs], { mode: mode.kind, signal: request.signal, onWarning: request.onWarning });
83
+ }
84
+ const after = await snapshotInstallTree(root);
85
+ const afterNames = new Set(after.map(entry => entry.name));
86
+ const beforeNames = new Set(before.map(entry => entry.name));
87
+ desired = { ...desired, managedPacks: [...new Set([...managedPacks,
88
+ ...catalog.packs.filter(pack => afterNames.has(pack.npm.name) && !beforeNames.has(pack.npm.name)).map(pack => pack.id)])].sort() };
89
+ const installedShared = shared.filter((pin) => after.some((entry) => entry.name === pin.name));
90
+ assertTreePins(before, after, [...pins, ...installedShared], coreNames, mode.coreVersion, initialGlobalLockMissing);
91
+ if (mode.kind === "global" && after.some((entry) => entry.name === "@nodetool-ai/cli")) {
92
+ throw new Error("Install added another CLI core package");
93
+ }
94
+ await assertSharedIdentities(after, installedShared);
95
+ for (const pin of new Map(packs.flatMap((pack) => pack.scriptAllowlist).map((pin) => [pin.name, pin])).values()) {
96
+ if (operation === "repair" || !before.some((entry) => entry.name === pin.name && entry.version === pin.version && entry.integrity === pin.integrity)) {
97
+ await operations.npm(root, ["rebuild", pin.name], { mode: mode.kind, rebuild: true, signal: request.signal, onWarning: request.onWarning });
98
+ }
99
+ }
100
+ await operations.loadCheck(mode, packs.map((pack) => pack.id), request.signal);
101
+ await writeDesiredState(request.stateFile, desired);
102
+ return desired;
103
+ }
104
+ catch (cause) {
105
+ let restored = false;
106
+ try {
107
+ const oldPacks = expandCatalogPacks(catalog, installedIds);
108
+ const oldSpecs = [...bootstrap.map(spec), ...oldPacks.map((pack) => spec(pack.npm)), ...oldPacks.flatMap((pack) => pack.provides.map((name) => {
109
+ const pin = pinByFolder.get(name);
110
+ if (!pin) {
111
+ throw new Error(`Provided package ${name} has no rollback integrity pin`);
112
+ }
113
+ return spec(pin);
114
+ })), ...replayLibraries.flatMap((id) => libraryPins(id).map(spec))];
115
+ const oldNames = new Set(before.map((entry) => entry.name));
116
+ const additions = [...new Set(plan.add.filter((entry) => !oldNames.has(entry.name)).map((entry) => entry.name))];
117
+ // npm uninstall --no-save retains extraneous no-save additions. The
118
+ // saving removal is confined to rollback and manifests are restored below.
119
+ if (additions.length) {
120
+ await operations.npm(root, ["uninstall", ...additions], { mode: "local", onWarning: request.onWarning });
121
+ }
122
+ if (mode.kind === "global") {
123
+ await removeSnapshotAdditions(root, mode.nodeModulesRoot, before);
124
+ await restoreSavedFiles();
125
+ await operations.npm(root, ["install", ...oldSpecs], { mode: mode.kind });
126
+ }
127
+ restored = installTreeRestored(before, await snapshotInstallTree(root), initialGlobalLockMissing);
128
+ if (restored) {
129
+ await restoreSavedFiles();
130
+ }
131
+ }
132
+ catch {
133
+ restored = false;
134
+ }
135
+ if (!restored) {
136
+ await writeDesiredState(request.stateFile, { ...previous, dirty: true });
137
+ throw new Error("Pack install failed and rollback did not restore the tree. Run nodetool packs doctor --repair.", { cause });
138
+ }
139
+ if (operation === "repair") {
140
+ await writeDesiredState(request.stateFile, { ...previous, dirty: true });
141
+ }
142
+ throw cause;
143
+ }
144
+ }
145
+ finally {
146
+ await release();
147
+ }
148
+ }
149
+ //# sourceMappingURL=installer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/packs/installer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { NodeCatalogIndex } from "@nodetool-ai/pack-core";
2
+ import type { DesiredPackState } from "./install-selection.js";
3
+ import type { InstalledPackSnapshot } from "./installed.js";
4
+ export interface PackListRow {
5
+ readonly id: string;
6
+ readonly kind: "core" | "node-pack" | "cli-feature" | "runtime-library";
7
+ readonly installed: boolean;
8
+ readonly version: string | null;
9
+ readonly installBytes: number | null;
10
+ readonly nodeCount: number | null;
11
+ readonly requiredBy: readonly string[];
12
+ }
13
+ export declare function requestedInstallIds(catalog: NodeCatalogIndex, ids: readonly string[]): {
14
+ packs: string[];
15
+ runtimeLibraries: string[];
16
+ };
17
+ /** The installed tree decides availability. Desired intent never makes a package installed. */
18
+ export declare function listPackRows(catalog: NodeCatalogIndex, snapshot: InstalledPackSnapshot, installedRuntimeIds?: ReadonlySet<string>): PackListRow[];
19
+ export declare function explainPack(catalog: NodeCatalogIndex, snapshot: InstalledPackSnapshot, target: string, installedRuntimeIds?: ReadonlySet<string>): {
20
+ target: string;
21
+ id: "email-imap" | "esbuild" | "fabric" | "imaging" | "node-llama-cpp" | "office-documents" | "pdf-js" | "playwright" | "rapier" | "tensorflow-js" | "tesseract-ocr" | "tokenizer" | "tracing" | "transformers-js" | "typescript" | "whisper-cpp";
22
+ kind: string;
23
+ installed: boolean;
24
+ packages: readonly ["@dimforge/rapier3d-compat@0.19.3"] | readonly ["@fugood/whisper.node@1.1.3"] | readonly ["esbuild@0.28.1"] | readonly ["fabric@7.4.0"] | readonly ["js-tiktoken@1.0.21"] | readonly ["node-llama-cpp@3.19.1"] | readonly ["playwright@1.60.0"] | readonly ["tesseract.js@7.0.0"] | readonly ["typescript@npm:@typescript/typescript6@6.0.2"] | readonly ["@huggingface/transformers@3.8.1", "kokoro-js@1.2.1"] | readonly ["imapflow@1.7.1", "mailparser@3.9.15"] | readonly ["sharp@0.35.5", "@napi-rs/canvas@0.1.100"] | readonly ["@llamaindex/liteparse@1.5.3", "pdf-parse@2.4.5", "pdf-lib@1.17.1"] | readonly ["@opentelemetry/core@2.12.0", "@opentelemetry/resources@2.12.0", "@opentelemetry/sdk-trace-base@2.12.0"] | readonly ["@tensorflow/tfjs@4.22.0", "@tensorflow-models/mobilenet@2.1.1", "@tensorflow-models/coco-ssd@2.2.3", "@tensorflow-models/qna@1.0.2"] | readonly ["exceljs@4.4.0", "docx@9.7.1", "mammoth@1.12.1", "pptxgenjs@4.0.1", "office-text-extractor@4.0.0", "epub2@3.0.2"];
25
+ requiredBy: string[];
26
+ npm?: undefined;
27
+ version?: undefined;
28
+ requires?: undefined;
29
+ runtimeLibraries?: undefined;
30
+ } | {
31
+ packages?: undefined;
32
+ target: string;
33
+ id: string;
34
+ kind: "cli-feature" | "core" | "node-pack";
35
+ npm: string;
36
+ version: string;
37
+ installed: boolean;
38
+ requires: string[];
39
+ runtimeLibraries: readonly string[];
40
+ requiredBy: string[];
41
+ };
42
+ export declare function restoreWarning(snapshot: InstalledPackSnapshot, desired: DesiredPackState | undefined): string | null;
43
+ /** Removal retains any requested pack still required by another installed pack. */
44
+ export declare function planPackRemoval(catalog: NodeCatalogIndex, installedIds: readonly string[], requestedIds: readonly string[]): {
45
+ remove: string[];
46
+ kept: string[];
47
+ remaining: string[];
48
+ runtimeLibraries: string[];
49
+ };
50
+ export declare function restartNotice(ids: readonly string[]): string;
51
+ //# sourceMappingURL=management.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"management.d.ts","sourceRoot":"","sources":["../../src/packs/management.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE5D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,aAAa,GAAG,iBAAiB,CAAC;IACxE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,gBAAgB,EAAE,MAAM,EAAE,CAAA;CAAE,CActI;AAED,+FAA+F;AAC/F,wBAAgB,YAAY,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,mBAAmB,GAAE,WAAW,CAAC,MAAM,CAAa,GAAG,WAAW,EAAE,CAc5J;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAE,WAAW,CAAC,MAAM,CAAa;;;;;;;;;;;;;;;;;;;;;;EAc3J;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,qBAAqB,EAAE,OAAO,EAAE,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAUpH;AAED,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE,EAAE,YAAY,EAAE,SAAS,MAAM,EAAE;;;;;EAW1H;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAE5D"}
@@ -0,0 +1,78 @@
1
+ import { RUNTIME_NPM_PACKAGES, isRuntimeNpmPackageId } from "@nodetool-ai/protocol/runtime-npm-packages";
2
+ import { expandCatalogPacks } from "./install-selection.js";
3
+ export function requestedInstallIds(catalog, ids) {
4
+ const packs = [];
5
+ const runtimeLibraries = [];
6
+ for (const id of new Set(ids)) {
7
+ const pack = catalog.packs.find(entry => entry.id === id);
8
+ if (pack) {
9
+ packs.push(id);
10
+ }
11
+ else if (isRuntimeNpmPackageId(id)) {
12
+ runtimeLibraries.push(id);
13
+ }
14
+ else {
15
+ throw new Error(`Unknown node pack or runtime library: ${id}`);
16
+ }
17
+ }
18
+ return { packs: packs.sort(), runtimeLibraries: runtimeLibraries.sort() };
19
+ }
20
+ /** The installed tree decides availability. Desired intent never makes a package installed. */
21
+ export function listPackRows(catalog, snapshot, installedRuntimeIds = new Set()) {
22
+ const installed = new Map(snapshot.packs.map(pack => [pack.id, pack.version]));
23
+ const rows = catalog.packs.map(pack => ({
24
+ id: pack.id, kind: pack.kind, installed: installed.has(pack.id), version: installed.get(pack.id) ?? null,
25
+ installBytes: pack.installBytes, nodeCount: pack.nodeCount,
26
+ requiredBy: catalog.packs.filter(candidate => installed.has(candidate.id) && candidate.requires.includes(pack.id)).map(candidate => candidate.id).sort()
27
+ }));
28
+ for (const [id, runtime] of Object.entries(RUNTIME_NPM_PACKAGES)) {
29
+ rows.push({ id, kind: "runtime-library", installed: installedRuntimeIds.has(id),
30
+ version: installedRuntimeIds.has(id) ? runtime.npmPackages.join(", ") : null,
31
+ installBytes: null, nodeCount: null,
32
+ requiredBy: catalog.packs.filter(pack => installed.has(pack.id) && pack.runtimeLibraries.includes(id)).map(pack => pack.id).sort() });
33
+ }
34
+ return rows.sort((a, b) => a.id.localeCompare(b.id) || a.kind.localeCompare(b.kind));
35
+ }
36
+ export function explainPack(catalog, snapshot, target, installedRuntimeIds = new Set()) {
37
+ const id = catalog.owners[target] ?? target;
38
+ const pack = catalog.packs.find(entry => entry.id === id);
39
+ if (!pack) {
40
+ if (!isRuntimeNpmPackageId(id)) {
41
+ throw new Error(`Unknown node type, pack or runtime library: ${target}`);
42
+ }
43
+ return { target, id, kind: "runtime-library", installed: installedRuntimeIds.has(id), packages: RUNTIME_NPM_PACKAGES[id].npmPackages,
44
+ requiredBy: catalog.packs.filter(entry => entry.runtimeLibraries.includes(id)).map(entry => entry.id).sort() };
45
+ }
46
+ return { target, id, kind: pack.kind, npm: pack.npm.name, version: pack.npm.version,
47
+ installed: snapshot.packs.some(entry => entry.id === id),
48
+ requires: expandCatalogPacks(catalog, pack.requires).map(entry => entry.id), runtimeLibraries: pack.runtimeLibraries,
49
+ requiredBy: catalog.packs.filter(entry => entry.requires.includes(id)).map(entry => entry.id).sort() };
50
+ }
51
+ export function restoreWarning(snapshot, desired) {
52
+ if (!desired || desired.coreVersion === snapshot.mode.coreVersion) {
53
+ return null;
54
+ }
55
+ const installed = new Set(snapshot.packs.map(pack => pack.id));
56
+ const missing = [...new Set(desired.packs)].filter(id => !installed.has(id)).sort();
57
+ if (missing.length === 0) {
58
+ return null;
59
+ }
60
+ return `${missing.length} pack${missing.length === 1 ? "" : "s"} from ${desired.coreVersion} ${missing.length === 1 ? "is" : "are"} not installed for ${snapshot.mode.coreVersion}: ${missing.join(", ")}. Run "nodetool packs add --restore".`;
61
+ }
62
+ /** Removal retains any requested pack still required by another installed pack. */
63
+ export function planPackRemoval(catalog, installedIds, requestedIds) {
64
+ const requested = requestedInstallIds(catalog, requestedIds);
65
+ const installed = new Set(installedIds);
66
+ const wanted = new Set(requested.packs);
67
+ const other = installedIds.filter(id => !wanted.has(id));
68
+ const needed = new Set(expandCatalogPacks(catalog, other).map(pack => pack.id));
69
+ const remove = requested.packs.filter(id => installed.has(id) && !needed.has(id));
70
+ const kept = requested.packs.filter(id => needed.has(id));
71
+ const removed = new Set(remove);
72
+ const remaining = installedIds.filter(id => !removed.has(id));
73
+ return { remove, kept, remaining, runtimeLibraries: requested.runtimeLibraries };
74
+ }
75
+ export function restartNotice(ids) {
76
+ return `Restart running "nodetool serve" and "nodetool mcp serve" processes to load ${[...new Set(ids)].sort().join(", ")}.`;
77
+ }
78
+ //# sourceMappingURL=management.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"management.js","sourceRoot":"","sources":["../../src/packs/management.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import type { MissingPackInstall, NodeCatalogIndex } from "@nodetool-ai/pack-core";
2
+ export type InstallPathStyle = "posix" | "win32";
3
+ interface InstallIdentity {
4
+ readonly cliRoot: string;
5
+ readonly coreVersion: string;
6
+ readonly pathStyle: InstallPathStyle;
7
+ }
8
+ export type InstallMode = InstallIdentity & ({
9
+ readonly kind: "global";
10
+ readonly installRoot: string;
11
+ readonly nodeModulesRoot: string;
12
+ } | {
13
+ readonly kind: "local";
14
+ readonly installRoot: string;
15
+ readonly nodeModulesRoot: string;
16
+ } | {
17
+ readonly kind: "npx" | "dev" | "unsupported";
18
+ readonly reason: string;
19
+ readonly nodeModulesRoot: string | null;
20
+ });
21
+ export interface InstallLayout {
22
+ readonly cliRoot: string;
23
+ readonly coreVersion: string;
24
+ readonly pathStyle?: InstallPathStyle;
25
+ readonly globalNodeModulesRoots?: readonly string[];
26
+ readonly projectHasCli?: boolean;
27
+ readonly yarnPnp?: boolean;
28
+ readonly bunGlobalRoots?: readonly string[];
29
+ readonly workspaceRoot?: string;
30
+ }
31
+ export interface InstallModeOptions {
32
+ readonly globalNodeModulesRoots?: readonly string[];
33
+ readonly bunGlobalRoots?: readonly string[];
34
+ }
35
+ export declare class CliRootNotFoundError extends Error {
36
+ readonly name = "CliRootNotFoundError";
37
+ constructor(entry: string);
38
+ }
39
+ /** Classify a known package root without filesystem reads or npm subprocesses. */
40
+ export declare function classifyInstallLayout(layout: InstallLayout): InstallMode;
41
+ /** Resolve the real CLI entry and inspect its layout only when the host requests it. */
42
+ export declare function detectInstallMode(entryPath: string, options?: InstallModeOptions): InstallMode;
43
+ /** A standalone command feature may read its installed dependencies without owning a pack installer. */
44
+ export declare function detectStandaloneFeatureMode(entryPath: string, catalog: NodeCatalogIndex): InstallMode;
45
+ /** The catalog factory supplies the concrete closure when no ids are available yet. */
46
+ export declare function installDetailsForMode(mode: InstallMode, ids?: readonly string[]): MissingPackInstall;
47
+ export {};
48
+ //# sourceMappingURL=mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode.d.ts","sourceRoot":"","sources":["../../src/packs/mode.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEnF,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjD,UAAU,eAAe;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;CACtC;AAED,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,CACxC;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAC3F;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GAC1F;IAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,aAAa,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CACrH,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpD,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAID,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,SAAkB,IAAI,0BAA0B;IAChD,YAAY,KAAK,EAAE,MAAM,EAAsE;CAChG;AAkBD,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,WAAW,CAmCxE;AAiHD,wFAAwF;AACxF,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,WAAW,CAkClG;AAED,wGAAwG;AACxG,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,WAAW,CA4BrG;AAED,uFAAuF;AACvF,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,GAAE,SAAS,MAAM,EAAO,GAAG,kBAAkB,CAKxG"}