@davidahmann/mill 0.1.4

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 (184) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +335 -0
  3. package/dist/audit/repository.d.ts +8 -0
  4. package/dist/audit/repository.d.ts.map +1 -0
  5. package/dist/audit/repository.js +232 -0
  6. package/dist/audit/repository.js.map +1 -0
  7. package/dist/cli-program.d.ts +12 -0
  8. package/dist/cli-program.d.ts.map +1 -0
  9. package/dist/cli-program.js +1020 -0
  10. package/dist/cli-program.js.map +1 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +7 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/config/lock.d.ts +12 -0
  16. package/dist/config/lock.d.ts.map +1 -0
  17. package/dist/config/lock.js +83 -0
  18. package/dist/config/lock.js.map +1 -0
  19. package/dist/contracts/canonical.d.ts +7 -0
  20. package/dist/contracts/canonical.d.ts.map +1 -0
  21. package/dist/contracts/canonical.js +30 -0
  22. package/dist/contracts/canonical.js.map +1 -0
  23. package/dist/contracts/schemas.d.ts +2705 -0
  24. package/dist/contracts/schemas.d.ts.map +1 -0
  25. package/dist/contracts/schemas.js +988 -0
  26. package/dist/contracts/schemas.js.map +1 -0
  27. package/dist/doctor.d.ts +21 -0
  28. package/dist/doctor.d.ts.map +1 -0
  29. package/dist/doctor.js +138 -0
  30. package/dist/doctor.js.map +1 -0
  31. package/dist/errors.d.ts +18 -0
  32. package/dist/errors.d.ts.map +1 -0
  33. package/dist/errors.js +31 -0
  34. package/dist/errors.js.map +1 -0
  35. package/dist/index.d.ts +20 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +20 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/intake/prd.d.ts +14 -0
  40. package/dist/intake/prd.d.ts.map +1 -0
  41. package/dist/intake/prd.js +39 -0
  42. package/dist/intake/prd.js.map +1 -0
  43. package/dist/planning/impact.d.ts +59 -0
  44. package/dist/planning/impact.d.ts.map +1 -0
  45. package/dist/planning/impact.js +400 -0
  46. package/dist/planning/impact.js.map +1 -0
  47. package/dist/planning/specification.d.ts +42 -0
  48. package/dist/planning/specification.d.ts.map +1 -0
  49. package/dist/planning/specification.js +235 -0
  50. package/dist/planning/specification.js.map +1 -0
  51. package/dist/qualification/public-alpha.d.ts +16 -0
  52. package/dist/qualification/public-alpha.d.ts.map +1 -0
  53. package/dist/qualification/public-alpha.js +128 -0
  54. package/dist/qualification/public-alpha.js.map +1 -0
  55. package/dist/recipes/node-typescript-next-web.d.ts +19 -0
  56. package/dist/recipes/node-typescript-next-web.d.ts.map +1 -0
  57. package/dist/recipes/node-typescript-next-web.js +136 -0
  58. package/dist/recipes/node-typescript-next-web.js.map +1 -0
  59. package/dist/repository/integration.d.ts +58 -0
  60. package/dist/repository/integration.d.ts.map +1 -0
  61. package/dist/repository/integration.js +1385 -0
  62. package/dist/repository/integration.js.map +1 -0
  63. package/dist/repository/scan.d.ts +27 -0
  64. package/dist/repository/scan.d.ts.map +1 -0
  65. package/dist/repository/scan.js +388 -0
  66. package/dist/repository/scan.js.map +1 -0
  67. package/dist/result.d.ts +23 -0
  68. package/dist/result.d.ts.map +1 -0
  69. package/dist/result.js +24 -0
  70. package/dist/result.js.map +1 -0
  71. package/dist/runtime/codex.d.ts +28 -0
  72. package/dist/runtime/codex.d.ts.map +1 -0
  73. package/dist/runtime/codex.js +439 -0
  74. package/dist/runtime/codex.js.map +1 -0
  75. package/dist/runtime/context.d.ts +10 -0
  76. package/dist/runtime/context.d.ts.map +1 -0
  77. package/dist/runtime/context.js +151 -0
  78. package/dist/runtime/context.js.map +1 -0
  79. package/dist/runtime/delivery.d.ts +58 -0
  80. package/dist/runtime/delivery.d.ts.map +1 -0
  81. package/dist/runtime/delivery.js +1073 -0
  82. package/dist/runtime/delivery.js.map +1 -0
  83. package/dist/runtime/dependencies.d.ts +19 -0
  84. package/dist/runtime/dependencies.d.ts.map +1 -0
  85. package/dist/runtime/dependencies.js +495 -0
  86. package/dist/runtime/dependencies.js.map +1 -0
  87. package/dist/runtime/github.d.ts +112 -0
  88. package/dist/runtime/github.d.ts.map +1 -0
  89. package/dist/runtime/github.js +510 -0
  90. package/dist/runtime/github.js.map +1 -0
  91. package/dist/runtime/inputs.d.ts +24 -0
  92. package/dist/runtime/inputs.d.ts.map +1 -0
  93. package/dist/runtime/inputs.js +237 -0
  94. package/dist/runtime/inputs.js.map +1 -0
  95. package/dist/runtime/lease.d.ts +11 -0
  96. package/dist/runtime/lease.d.ts.map +1 -0
  97. package/dist/runtime/lease.js +52 -0
  98. package/dist/runtime/lease.js.map +1 -0
  99. package/dist/runtime/lifecycle.d.ts +87 -0
  100. package/dist/runtime/lifecycle.d.ts.map +1 -0
  101. package/dist/runtime/lifecycle.js +1024 -0
  102. package/dist/runtime/lifecycle.js.map +1 -0
  103. package/dist/runtime/process.d.ts +39 -0
  104. package/dist/runtime/process.d.ts.map +1 -0
  105. package/dist/runtime/process.js +304 -0
  106. package/dist/runtime/process.js.map +1 -0
  107. package/dist/runtime/repository.d.ts +36 -0
  108. package/dist/runtime/repository.d.ts.map +1 -0
  109. package/dist/runtime/repository.js +458 -0
  110. package/dist/runtime/repository.js.map +1 -0
  111. package/dist/runtime/state.d.ts +121 -0
  112. package/dist/runtime/state.d.ts.map +1 -0
  113. package/dist/runtime/state.js +1017 -0
  114. package/dist/runtime/state.js.map +1 -0
  115. package/dist/runtime/verifier.d.ts +31 -0
  116. package/dist/runtime/verifier.d.ts.map +1 -0
  117. package/dist/runtime/verifier.js +478 -0
  118. package/dist/runtime/verifier.js.map +1 -0
  119. package/dist/runtime/worker.d.ts +67 -0
  120. package/dist/runtime/worker.d.ts.map +1 -0
  121. package/dist/runtime/worker.js +34 -0
  122. package/dist/runtime/worker.js.map +1 -0
  123. package/dist/security/safe-path.d.ts +3 -0
  124. package/dist/security/safe-path.d.ts.map +1 -0
  125. package/dist/security/safe-path.js +102 -0
  126. package/dist/security/safe-path.js.map +1 -0
  127. package/dist/version.d.ts +4 -0
  128. package/dist/version.d.ts.map +1 -0
  129. package/dist/version.js +4 -0
  130. package/dist/version.js.map +1 -0
  131. package/dist/workflows/founder.d.ts +33 -0
  132. package/dist/workflows/founder.d.ts.map +1 -0
  133. package/dist/workflows/founder.js +422 -0
  134. package/dist/workflows/founder.js.map +1 -0
  135. package/package.json +79 -0
  136. package/recipes/node-typescript-next-web/.github/workflows/ci.yml +34 -0
  137. package/recipes/node-typescript-next-web/.node-version +1 -0
  138. package/recipes/node-typescript-next-web/.tool-versions +1 -0
  139. package/recipes/node-typescript-next-web/AGENTS.md +44 -0
  140. package/recipes/node-typescript-next-web/README.md +16 -0
  141. package/recipes/node-typescript-next-web/WORKFLOW.md +6 -0
  142. package/recipes/node-typescript-next-web/app/api/health/route.ts +5 -0
  143. package/recipes/node-typescript-next-web/app/layout.tsx +19 -0
  144. package/recipes/node-typescript-next-web/app/page.tsx +12 -0
  145. package/recipes/node-typescript-next-web/app/styles.css +21 -0
  146. package/recipes/node-typescript-next-web/docs/development.md +16 -0
  147. package/recipes/node-typescript-next-web/eslint.config.mjs +9 -0
  148. package/recipes/node-typescript-next-web/gitignore.template +5 -0
  149. package/recipes/node-typescript-next-web/next-env.d.ts +7 -0
  150. package/recipes/node-typescript-next-web/next.config.ts +11 -0
  151. package/recipes/node-typescript-next-web/package-lock.json +7540 -0
  152. package/recipes/node-typescript-next-web/package.json +39 -0
  153. package/recipes/node-typescript-next-web/playwright.config.ts +23 -0
  154. package/recipes/node-typescript-next-web/recipe.yaml +71 -0
  155. package/recipes/node-typescript-next-web/scripts/check-package.mjs +3 -0
  156. package/recipes/node-typescript-next-web/src/health.ts +3 -0
  157. package/recipes/node-typescript-next-web/test/browser/home.spec.ts +14 -0
  158. package/recipes/node-typescript-next-web/test/integration/health-route.test.ts +11 -0
  159. package/recipes/node-typescript-next-web/test/unit/health.test.ts +9 -0
  160. package/recipes/node-typescript-next-web/tsconfig.json +33 -0
  161. package/schemas/README.md +64 -0
  162. package/schemas/audit-report.schema.json +59 -0
  163. package/schemas/blueprint.schema.json +34 -0
  164. package/schemas/context-manifest.schema.json +88 -0
  165. package/schemas/delivery-record.schema.json +266 -0
  166. package/schemas/impact-manifest.schema.json +146 -0
  167. package/schemas/managed-repository.schema.json +36 -0
  168. package/schemas/mill-config.schema.json +212 -0
  169. package/schemas/mill-lock.schema.json +96 -0
  170. package/schemas/outcome-plan.schema.json +51 -0
  171. package/schemas/product-contract.schema.json +181 -0
  172. package/schemas/public-alpha-qualification.schema.json +391 -0
  173. package/schemas/recipe-manifest.schema.json +187 -0
  174. package/schemas/release-evidence.schema.json +170 -0
  175. package/schemas/repository-integration-plan.schema.json +156 -0
  176. package/schemas/review-result.schema.json +57 -0
  177. package/schemas/scenario-set.schema.json +84 -0
  178. package/schemas/source-manifest.schema.json +96 -0
  179. package/schemas/specification-proposal.schema.json +406 -0
  180. package/schemas/support-tuple.schema.json +107 -0
  181. package/schemas/task-packet.schema.json +395 -0
  182. package/schemas/validation-evidence.schema.json +125 -0
  183. package/schemas/worker-invocation.schema.json +119 -0
  184. package/schemas/worker-profile.schema.json +53 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../src/runtime/delivery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { MillConfig } from "./inputs.js";
2
+ export interface DependencyPreparationResult {
3
+ directory: string;
4
+ reused: boolean;
5
+ network: string;
6
+ }
7
+ export declare function dependencySnapshotDirectory(input: {
8
+ root: string;
9
+ stateDirectory: string;
10
+ config: MillConfig;
11
+ }): Promise<string | undefined>;
12
+ export declare function prepareDependencySnapshot(input: {
13
+ root: string;
14
+ stateDirectory: string;
15
+ config: MillConfig;
16
+ attended: boolean;
17
+ signal?: AbortSignal;
18
+ }): Promise<DependencyPreparationResult>;
19
+ //# sourceMappingURL=dependencies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../src/runtime/dependencies.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAqB9C,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAkXD,wBAAsB,2BAA2B,CAAC,KAAK,EAAE;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;CACpB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAiB9B;AA+TD,wBAAsB,yBAAyB,CAAC,KAAK,EAAE;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAUvC"}
@@ -0,0 +1,495 @@
1
+ import { constants } from "node:fs";
2
+ import { createHash, randomUUID } from "node:crypto";
3
+ import { chmod, copyFile, lstat, mkdir, mkdtemp, open, opendir, readFile, readlink, realpath, rename, rm, stat, symlink, writeFile, } from "node:fs/promises";
4
+ import { tmpdir } from "node:os";
5
+ import path from "node:path";
6
+ import { findTrustedExecutable } from "../doctor.js";
7
+ import { ExitCode, MillError } from "../errors.js";
8
+ import { isWithin } from "../security/safe-path.js";
9
+ import { processCancellationScope, runProcess, } from "./process.js";
10
+ import { acquireExclusiveLease } from "./lease.js";
11
+ function digest(value) {
12
+ return `sha256:${createHash("sha256").update(value).digest("hex")}`;
13
+ }
14
+ function validSha512Integrity(value) {
15
+ if (typeof value !== "string")
16
+ return false;
17
+ const match = /^sha512-([A-Za-z0-9+/]+={0,2})$/u.exec(value);
18
+ const encoded = match?.[1];
19
+ if (encoded === undefined)
20
+ return false;
21
+ const decoded = Buffer.from(encoded, "base64");
22
+ return (decoded.byteLength === 64 &&
23
+ decoded.toString("base64").replace(/=+$/u, "") ===
24
+ encoded.replace(/=+$/u, ""));
25
+ }
26
+ async function dependencyIdentity(root, config) {
27
+ const dependencies = config.verifier?.dependencies;
28
+ if (dependencies === undefined || config.verifier === undefined) {
29
+ throw new MillError("VERIFIER_DEPENDENCIES_NOT_CONFIGURED", "This repository does not declare a verifier dependency snapshot.", ExitCode.configuration);
30
+ }
31
+ const canonicalRoot = await realpath(root);
32
+ const locks = await Promise.all(dependencies.lockPaths.map(async (relative) => {
33
+ let absolute;
34
+ try {
35
+ absolute = await realpath(path.resolve(canonicalRoot, relative));
36
+ }
37
+ catch (error) {
38
+ throw new MillError("VERIFIER_DEPENDENCY_LOCK_INVALID", "A dependency lock input is missing or inaccessible.", ExitCode.configuration, { path: relative, cause: String(error) });
39
+ }
40
+ if (!isWithin(canonicalRoot, absolute) ||
41
+ !(await stat(absolute)).isFile()) {
42
+ throw new MillError("VERIFIER_DEPENDENCY_LOCK_INVALID", "A dependency lock input is not a regular in-repository file.", ExitCode.configuration, { path: relative });
43
+ }
44
+ return { path: relative, digest: digest(await readFile(absolute)) };
45
+ }));
46
+ const marker = {
47
+ schemaVersion: "1",
48
+ image: config.verifier.image,
49
+ manager: dependencies.manager,
50
+ registry: dependencies.registry,
51
+ targetPath: dependencies.targetPath,
52
+ locks,
53
+ };
54
+ const key = createHash("sha256")
55
+ .update(JSON.stringify(marker), "utf8")
56
+ .digest("hex");
57
+ return { key, marker };
58
+ }
59
+ const maximumDependencyEntries = 250_000;
60
+ function sameFileIdentity(left, right) {
61
+ return (left.dev === right.dev &&
62
+ left.ino === right.ino &&
63
+ left.size === right.size &&
64
+ left.mtimeMs === right.mtimeMs &&
65
+ left.ctimeMs === right.ctimeMs);
66
+ }
67
+ async function regularFileDigest(file) {
68
+ const before = await lstat(file);
69
+ if (!before.isFile() || before.isSymbolicLink()) {
70
+ throw new MillError("DEPENDENCY_TREE_INVALID", "The dependency tree contains an unsafe file type.", ExitCode.data);
71
+ }
72
+ const handle = await open(file, constants.O_RDONLY | constants.O_NOFOLLOW);
73
+ try {
74
+ const opened = await handle.stat();
75
+ if (!sameFileIdentity(before, opened)) {
76
+ throw new MillError("DEPENDENCY_TREE_CHANGED", "The dependency tree changed while it was inspected.", ExitCode.temporary);
77
+ }
78
+ const hash = createHash("sha256");
79
+ const buffer = Buffer.allocUnsafe(64 * 1024);
80
+ let position = 0;
81
+ for (;;) {
82
+ const { bytesRead } = await handle.read(buffer, 0, buffer.byteLength, position);
83
+ if (bytesRead === 0)
84
+ break;
85
+ hash.update(buffer.subarray(0, bytesRead));
86
+ position += bytesRead;
87
+ }
88
+ const after = await handle.stat();
89
+ if (!sameFileIdentity(opened, after)) {
90
+ throw new MillError("DEPENDENCY_TREE_CHANGED", "The dependency tree changed while it was inspected.", ExitCode.temporary);
91
+ }
92
+ return `sha256:${hash.digest("hex")}`;
93
+ }
94
+ finally {
95
+ await handle.close();
96
+ }
97
+ }
98
+ async function dependencyTreeDigest(directory) {
99
+ const canonicalRoot = await realpath(directory);
100
+ const aggregate = createHash("sha256");
101
+ let entriesVisited = 0;
102
+ const record = (value) => {
103
+ aggregate.update(JSON.stringify(value), "utf8");
104
+ aggregate.update("\n", "utf8");
105
+ };
106
+ const walk = async (relative) => {
107
+ const absolute = path.join(canonicalRoot, relative);
108
+ const before = await lstat(absolute);
109
+ if (!before.isDirectory() || before.isSymbolicLink()) {
110
+ throw new MillError("DEPENDENCY_TREE_INVALID", "The dependency tree contains an unsafe directory type.", ExitCode.data, { path: relative });
111
+ }
112
+ record(["directory", relative, before.mode & 0o111]);
113
+ const handle = await opendir(absolute);
114
+ const entries = [];
115
+ for await (const entry of handle)
116
+ entries.push(entry);
117
+ entries.sort((left, right) => Buffer.compare(Buffer.from(left.name), Buffer.from(right.name)));
118
+ for (const entry of entries) {
119
+ entriesVisited += 1;
120
+ if (entriesVisited > maximumDependencyEntries) {
121
+ throw new MillError("DEPENDENCY_TREE_TOO_LARGE", "The dependency tree exceeds its bounded entry budget.", ExitCode.data, { maximumEntries: maximumDependencyEntries });
122
+ }
123
+ const child = relative === "" ? entry.name : path.join(relative, entry.name);
124
+ const childAbsolute = path.join(canonicalRoot, child);
125
+ const information = await lstat(childAbsolute);
126
+ if (information.isDirectory() && !information.isSymbolicLink()) {
127
+ await walk(child);
128
+ }
129
+ else if (information.isFile() && !information.isSymbolicLink()) {
130
+ record([
131
+ "file",
132
+ child,
133
+ information.mode & 0o111,
134
+ information.size,
135
+ await regularFileDigest(childAbsolute),
136
+ ]);
137
+ }
138
+ else if (information.isSymbolicLink()) {
139
+ const target = await readlink(childAbsolute);
140
+ const resolvedTarget = path.resolve(path.dirname(childAbsolute), target);
141
+ if (path.isAbsolute(target) ||
142
+ !isWithin(canonicalRoot, resolvedTarget) ||
143
+ !isWithin(canonicalRoot, await realpath(childAbsolute))) {
144
+ throw new MillError("DEPENDENCY_TREE_INVALID", "The dependency tree contains a symbolic link outside its root.", ExitCode.data, { path: child });
145
+ }
146
+ record(["symlink", child, target]);
147
+ }
148
+ else {
149
+ throw new MillError("DEPENDENCY_TREE_INVALID", "The dependency tree contains an unsupported filesystem entry.", ExitCode.data, { path: child });
150
+ }
151
+ }
152
+ const after = await lstat(absolute);
153
+ if (!sameFileIdentity(before, after)) {
154
+ throw new MillError("DEPENDENCY_TREE_CHANGED", "The dependency tree changed while it was inspected.", ExitCode.temporary, { path: relative });
155
+ }
156
+ };
157
+ await walk("");
158
+ return `sha256:${aggregate.digest("hex")}`;
159
+ }
160
+ async function markerMatches(directory, expected) {
161
+ try {
162
+ const [source, modules] = await Promise.all([
163
+ readFile(path.join(directory, "marker.json"), "utf8"),
164
+ lstat(path.join(directory, "node_modules")),
165
+ ]);
166
+ if (!modules.isDirectory() || modules.isSymbolicLink())
167
+ return false;
168
+ const parsed = JSON.parse(source);
169
+ if (parsed.schemaVersion !== "1" ||
170
+ typeof parsed.image !== "string" ||
171
+ parsed.manager !== "npm" ||
172
+ parsed.registry !== "https://registry.npmjs.org" ||
173
+ typeof parsed.targetPath !== "string" ||
174
+ !Array.isArray(parsed.locks) ||
175
+ !/^sha256:[0-9a-f]{64}$/u.test(parsed.treeDigest ?? "")) {
176
+ return false;
177
+ }
178
+ const claimedIdentity = {
179
+ schemaVersion: parsed.schemaVersion,
180
+ image: parsed.image,
181
+ manager: parsed.manager,
182
+ registry: parsed.registry,
183
+ targetPath: parsed.targetPath,
184
+ locks: parsed.locks,
185
+ };
186
+ return (JSON.stringify(claimedIdentity) === JSON.stringify(expected) &&
187
+ parsed.treeDigest ===
188
+ (await dependencyTreeDigest(path.join(directory, "node_modules"))));
189
+ }
190
+ catch {
191
+ return false;
192
+ }
193
+ }
194
+ async function validateNpmLock(root, lockPaths) {
195
+ const lockPath = "package-lock.json";
196
+ if (!lockPaths.includes(lockPath)) {
197
+ throw new MillError("NPM_LOCK_REQUIRED", "npm dependency preparation requires the root package-lock.json consumed by npm ci as a bound lock input.", ExitCode.configuration);
198
+ }
199
+ let parsed;
200
+ try {
201
+ parsed = JSON.parse(await readFile(path.join(root, lockPath), "utf8"));
202
+ }
203
+ catch (error) {
204
+ throw new MillError("NPM_LOCK_INVALID", "The bound package-lock.json is not valid JSON.", ExitCode.configuration, { path: lockPath, cause: String(error) });
205
+ }
206
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
207
+ throw new MillError("NPM_LOCK_INVALID", "The bound package-lock.json must be an object.", ExitCode.configuration, { path: lockPath });
208
+ }
209
+ const packages = parsed.packages;
210
+ if (typeof packages !== "object" ||
211
+ packages === null ||
212
+ Array.isArray(packages)) {
213
+ throw new MillError("NPM_LOCK_INVALID", "The bound package-lock.json must contain a packages object.", ExitCode.configuration, { path: lockPath });
214
+ }
215
+ for (const [packagePath, value] of Object.entries(packages)) {
216
+ if (packagePath === "")
217
+ continue;
218
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
219
+ throw new MillError("NPM_LOCK_SOURCE_UNTRUSTED", "Every installable npm lock entry must be a structured integrity-bound source.", ExitCode.configuration, { packagePath });
220
+ }
221
+ const entry = value;
222
+ if (entry.link === true ||
223
+ typeof entry.resolved !== "string" ||
224
+ !validSha512Integrity(entry.integrity)) {
225
+ throw new MillError("NPM_LOCK_SOURCE_UNTRUSTED", "Every installable npm package must include one SHA-512-bound HTTPS registry source; links and workspaces are unsupported.", ExitCode.configuration, { packagePath });
226
+ }
227
+ let resolved;
228
+ try {
229
+ resolved = new URL(entry.resolved);
230
+ }
231
+ catch {
232
+ throw new MillError("NPM_LOCK_SOURCE_UNTRUSTED", "An npm lock entry has an invalid resolved source URL.", ExitCode.configuration, { packagePath });
233
+ }
234
+ if (resolved.protocol !== "https:" ||
235
+ resolved.origin !== "https://registry.npmjs.org" ||
236
+ resolved.username !== "" ||
237
+ resolved.password !== "" ||
238
+ resolved.search !== "" ||
239
+ resolved.hash !== "") {
240
+ throw new MillError("NPM_LOCK_SOURCE_UNTRUSTED", "npm dependency preparation permits only credential-free, query-free, integrity-bound registry.npmjs.org sources.", ExitCode.configuration, { packagePath, origin: resolved.origin });
241
+ }
242
+ }
243
+ }
244
+ export async function dependencySnapshotDirectory(input) {
245
+ if (input.config.verifier?.dependencies === undefined)
246
+ return undefined;
247
+ const identity = await dependencyIdentity(input.root, input.config);
248
+ const directory = path.join(input.stateDirectory, "dependencies", identity.key);
249
+ if (!(await markerMatches(directory, identity.marker))) {
250
+ throw new MillError("VERIFIER_DEPENDENCIES_UNAVAILABLE", "The exact dependency snapshot is absent. Run millctl dependencies prepare --attended.", ExitCode.unavailable, { snapshot: identity.key });
251
+ }
252
+ return directory;
253
+ }
254
+ async function mountSource(root) {
255
+ if (!root.includes(",")) {
256
+ return { source: root, dispose: () => Promise.resolve() };
257
+ }
258
+ const parent = await mkdtemp(path.join(tmpdir(), "mill-deps-bind-"));
259
+ await chmod(parent, 0o700);
260
+ const source = path.join(parent, "workspace");
261
+ await symlink(root, source, "dir");
262
+ if ((await realpath(source)) !== root) {
263
+ await rm(parent, { recursive: true, force: true });
264
+ throw new MillError("DEPENDENCY_MOUNT_ALIAS_INVALID", "The dependency preparation bind alias is not exact.", ExitCode.configuration);
265
+ }
266
+ return {
267
+ source,
268
+ dispose: () => rm(parent, { recursive: true, force: true }),
269
+ };
270
+ }
271
+ async function removeContainer(docker, root, containerName) {
272
+ const result = await runProcess({
273
+ executable: docker,
274
+ args: ["rm", "--force", "--volumes", containerName],
275
+ cwd: root,
276
+ env: { HOME: process.env.HOME, PATH: "/usr/bin:/bin:/usr/sbin:/sbin" },
277
+ deadlineMs: Date.now() + 15_000,
278
+ maxOutputBytes: 128 * 1024,
279
+ });
280
+ if (result.timedOut ||
281
+ result.outputExceeded ||
282
+ result.cancelled ||
283
+ (result.exitCode !== 0 && !/no such container/iu.test(result.stderr))) {
284
+ throw new MillError("DEPENDENCY_CONTAINER_CLEANUP_FAILED", "Mill could not remove the exact dependency-preparation container.", ExitCode.temporary, { containerName });
285
+ }
286
+ }
287
+ async function prepareDependencySnapshotWithSignal(input) {
288
+ if (!input.attended) {
289
+ throw new MillError("ATTENDANCE_REQUIRED", "Dependency preparation requires attended approval for registry network access.", ExitCode.configuration);
290
+ }
291
+ if (input.config.trustCeiling === "inspect") {
292
+ throw new MillError("BUILD_NOT_AUTHORIZED", "mill.yaml trust ceiling does not authorize dependency preparation.", ExitCode.configuration);
293
+ }
294
+ const dependencies = input.config.verifier?.dependencies;
295
+ const image = input.config.verifier?.image;
296
+ if (dependencies === undefined || image === undefined) {
297
+ throw new MillError("VERIFIER_DEPENDENCIES_NOT_CONFIGURED", "This repository does not declare a verifier dependency snapshot.", ExitCode.configuration);
298
+ }
299
+ if (input.signal.aborted) {
300
+ throw new MillError("DEPENDENCY_PREPARATION_CANCELLED", "Dependency preparation was cancelled before execution.", ExitCode.temporary);
301
+ }
302
+ const parent = path.join(input.stateDirectory, "dependencies");
303
+ await mkdir(parent, { recursive: true, mode: 0o700 });
304
+ await chmod(parent, 0o700);
305
+ const temporary = await mkdtemp(path.join(parent, ".prepare-"));
306
+ await chmod(temporary, 0o700);
307
+ let preparationLease;
308
+ try {
309
+ const canonicalRoot = await realpath(input.root);
310
+ for (const relative of dependencies.lockPaths) {
311
+ const sourceFile = await realpath(path.resolve(canonicalRoot, relative));
312
+ if (!isWithin(canonicalRoot, sourceFile) ||
313
+ !(await stat(sourceFile)).isFile()) {
314
+ throw new MillError("VERIFIER_DEPENDENCY_LOCK_INVALID", "A dependency lock input is not a regular in-repository file.", ExitCode.configuration, { path: relative });
315
+ }
316
+ const destinationFile = path.join(temporary, relative);
317
+ await mkdir(path.dirname(destinationFile), {
318
+ recursive: true,
319
+ mode: 0o700,
320
+ });
321
+ await copyFile(sourceFile, destinationFile);
322
+ }
323
+ const identity = await dependencyIdentity(temporary, input.config);
324
+ await validateNpmLock(temporary, dependencies.lockPaths);
325
+ const destination = path.join(parent, identity.key);
326
+ preparationLease = await acquireExclusiveLease({
327
+ path: `${destination}.lease.sqlite3`,
328
+ activeCode: "DEPENDENCY_PREPARATION_ACTIVE",
329
+ activeMessage: "Another process owns preparation of this exact dependency snapshot.",
330
+ unavailableCode: "DEPENDENCY_PREPARATION_LEASE_UNAVAILABLE",
331
+ unavailableMessage: "The exact dependency snapshot lease could not be acquired safely.",
332
+ });
333
+ if (await markerMatches(destination, identity.marker)) {
334
+ return {
335
+ directory: destination,
336
+ reused: true,
337
+ network: "none; exact dependency snapshot already present",
338
+ };
339
+ }
340
+ const staleDestination = await lstat(destination).catch((error) => {
341
+ if (error instanceof Error &&
342
+ "code" in error &&
343
+ error.code === "ENOENT") {
344
+ return undefined;
345
+ }
346
+ throw error;
347
+ });
348
+ if (staleDestination !== undefined) {
349
+ await rm(destination, { recursive: true, force: true });
350
+ }
351
+ const docker = await findTrustedExecutable("docker", input.root);
352
+ if (docker === undefined) {
353
+ throw new MillError("OCI_RUNTIME_UNAVAILABLE", "A trusted Docker executable is required to prepare recipe dependencies.", ExitCode.unavailable);
354
+ }
355
+ const inspection = await runProcess({
356
+ executable: docker,
357
+ args: ["image", "inspect", image],
358
+ cwd: input.root,
359
+ env: { HOME: process.env.HOME, PATH: "/usr/bin:/bin:/usr/sbin:/sbin" },
360
+ deadlineMs: Date.now() + 15_000,
361
+ maxOutputBytes: 256 * 1024,
362
+ signal: input.signal,
363
+ });
364
+ if (inspection.exitCode !== 0) {
365
+ throw new MillError("VERIFIER_IMAGE_UNAVAILABLE", "The exact verifier image is not local; Mill will not pull it implicitly.", ExitCode.unavailable, { image });
366
+ }
367
+ const canonicalTemporary = await realpath(temporary);
368
+ const mount = await mountSource(canonicalTemporary);
369
+ const containerName = `mill-deps-${randomUUID()}`;
370
+ const uid = process.getuid?.() ?? 1000;
371
+ const gid = process.getgid?.() ?? 1000;
372
+ let result;
373
+ try {
374
+ result = await runProcess({
375
+ executable: docker,
376
+ args: [
377
+ "run",
378
+ "--pull",
379
+ "never",
380
+ "--name",
381
+ containerName,
382
+ "--label",
383
+ "dev.mill.owner=dependency-preparation",
384
+ "--network",
385
+ "bridge",
386
+ "--read-only",
387
+ "--cap-drop",
388
+ "ALL",
389
+ "--security-opt",
390
+ "no-new-privileges",
391
+ "--pids-limit",
392
+ "256",
393
+ "--memory",
394
+ "2g",
395
+ "--cpus",
396
+ "2",
397
+ "--tmpfs",
398
+ "/tmp:rw,nosuid,nodev,size=512m",
399
+ "--mount",
400
+ `type=bind,source=${mount.source},target=/workspace`,
401
+ "--workdir",
402
+ "/workspace",
403
+ "--user",
404
+ `${uid}:${gid}`,
405
+ "--env",
406
+ "HOME=/tmp",
407
+ "--env",
408
+ `npm_config_registry=${dependencies.registry}`,
409
+ "--env",
410
+ "npm_config_ignore_scripts=true",
411
+ "--env",
412
+ "npm_config_audit=false",
413
+ "--env",
414
+ "npm_config_fund=false",
415
+ "--entrypoint",
416
+ "npm",
417
+ image,
418
+ "ci",
419
+ "--ignore-scripts",
420
+ "--audit=false",
421
+ "--fund=false",
422
+ ],
423
+ cwd: input.root,
424
+ env: { HOME: process.env.HOME, PATH: "/usr/bin:/bin:/usr/sbin:/sbin" },
425
+ deadlineMs: Date.now() + 10 * 60_000,
426
+ maxOutputBytes: 2 * 1024 * 1024,
427
+ signal: input.signal,
428
+ });
429
+ }
430
+ finally {
431
+ try {
432
+ await removeContainer(docker, input.root, containerName);
433
+ }
434
+ finally {
435
+ await mount.dispose();
436
+ }
437
+ }
438
+ if (result.exitCode !== 0 ||
439
+ result.timedOut ||
440
+ result.outputExceeded ||
441
+ result.cancelled) {
442
+ throw new MillError("DEPENDENCY_PREPARATION_FAILED", "The exact dependency snapshot could not be prepared.", ExitCode.unavailable, { exitCode: result.exitCode, stderr: result.stderr.slice(0, 2_000) });
443
+ }
444
+ const modules = await lstat(path.join(temporary, "node_modules")).catch(() => undefined);
445
+ if (modules === undefined ||
446
+ !modules.isDirectory() ||
447
+ modules.isSymbolicLink()) {
448
+ throw new MillError("DEPENDENCY_OUTPUT_INVALID", "Dependency preparation completed without a regular node_modules directory.", ExitCode.unavailable);
449
+ }
450
+ const completedIdentity = await dependencyIdentity(temporary, input.config);
451
+ if (completedIdentity.key !== identity.key ||
452
+ JSON.stringify(completedIdentity.marker) !==
453
+ JSON.stringify(identity.marker)) {
454
+ throw new MillError("VERIFIER_DEPENDENCY_LOCK_DRIFT", "Frozen dependency lock inputs changed during preparation.", ExitCode.configuration);
455
+ }
456
+ const marker = {
457
+ ...identity.marker,
458
+ treeDigest: await dependencyTreeDigest(path.join(temporary, "node_modules")),
459
+ };
460
+ await writeFile(path.join(temporary, "marker.json"), `${JSON.stringify(marker)}\n`, { encoding: "utf8", flag: "wx", mode: 0o600 });
461
+ try {
462
+ await rename(temporary, destination);
463
+ }
464
+ catch (error) {
465
+ if (!(await markerMatches(destination, identity.marker)))
466
+ throw error;
467
+ }
468
+ return {
469
+ directory: destination,
470
+ reused: false,
471
+ network: "HTTPS to https://registry.npmjs.org through the exact verifier image; lifecycle scripts disabled",
472
+ };
473
+ }
474
+ finally {
475
+ try {
476
+ await rm(temporary, { recursive: true, force: true });
477
+ }
478
+ finally {
479
+ await preparationLease?.release();
480
+ }
481
+ }
482
+ }
483
+ export async function prepareDependencySnapshot(input) {
484
+ const signals = processCancellationScope(input.signal);
485
+ try {
486
+ return await prepareDependencySnapshotWithSignal({
487
+ ...input,
488
+ signal: signals.signal,
489
+ });
490
+ }
491
+ finally {
492
+ signals.dispose();
493
+ }
494
+ }
495
+ //# sourceMappingURL=dependencies.js.map