@davidahmann/mill 0.1.4 → 0.2.1

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 (249) hide show
  1. package/README.md +141 -32
  2. package/dist/audit/repository.d.ts.map +1 -1
  3. package/dist/audit/repository.js +2 -0
  4. package/dist/audit/repository.js.map +1 -1
  5. package/dist/cli-program.d.ts.map +1 -1
  6. package/dist/cli-program.js +189 -0
  7. package/dist/cli-program.js.map +1 -1
  8. package/dist/contracts/schemas.d.ts +467 -2
  9. package/dist/contracts/schemas.d.ts.map +1 -1
  10. package/dist/contracts/schemas.js +211 -1
  11. package/dist/contracts/schemas.js.map +1 -1
  12. package/dist/index.d.ts +7 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +7 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/planning/closure.d.ts +24 -0
  17. package/dist/planning/closure.d.ts.map +1 -0
  18. package/dist/planning/closure.js +68 -0
  19. package/dist/planning/closure.js.map +1 -0
  20. package/dist/planning/outcomes.d.ts +6 -0
  21. package/dist/planning/outcomes.d.ts.map +1 -0
  22. package/dist/planning/outcomes.js +36 -0
  23. package/dist/planning/outcomes.js.map +1 -0
  24. package/dist/planning/tasks.d.ts +32 -0
  25. package/dist/planning/tasks.d.ts.map +1 -0
  26. package/dist/planning/tasks.js +305 -0
  27. package/dist/planning/tasks.js.map +1 -0
  28. package/dist/repository/intelligence.d.ts +78 -0
  29. package/dist/repository/intelligence.d.ts.map +1 -0
  30. package/dist/repository/intelligence.js +537 -0
  31. package/dist/repository/intelligence.js.map +1 -0
  32. package/dist/repository/native-adoption.d.ts +36 -0
  33. package/dist/repository/native-adoption.d.ts.map +1 -0
  34. package/dist/repository/native-adoption.js +146 -0
  35. package/dist/repository/native-adoption.js.map +1 -0
  36. package/dist/repository/scan.d.ts.map +1 -1
  37. package/dist/repository/scan.js +4 -0
  38. package/dist/repository/scan.js.map +1 -1
  39. package/dist/runtime/authority-plans.d.ts +43 -0
  40. package/dist/runtime/authority-plans.d.ts.map +1 -0
  41. package/dist/runtime/authority-plans.js +173 -0
  42. package/dist/runtime/authority-plans.js.map +1 -0
  43. package/dist/runtime/codex.d.ts.map +1 -1
  44. package/dist/runtime/codex.js +24 -5
  45. package/dist/runtime/codex.js.map +1 -1
  46. package/dist/runtime/context.d.ts.map +1 -1
  47. package/dist/runtime/context.js +36 -0
  48. package/dist/runtime/context.js.map +1 -1
  49. package/dist/runtime/delivery.d.ts +8 -1
  50. package/dist/runtime/delivery.d.ts.map +1 -1
  51. package/dist/runtime/delivery.js +187 -74
  52. package/dist/runtime/delivery.js.map +1 -1
  53. package/dist/runtime/effect-boundary.d.ts +38 -0
  54. package/dist/runtime/effect-boundary.d.ts.map +1 -0
  55. package/dist/runtime/effect-boundary.js +59 -0
  56. package/dist/runtime/effect-boundary.js.map +1 -0
  57. package/dist/runtime/github.d.ts +24 -0
  58. package/dist/runtime/github.d.ts.map +1 -1
  59. package/dist/runtime/github.js +117 -2
  60. package/dist/runtime/github.js.map +1 -1
  61. package/dist/runtime/inputs.js.map +1 -1
  62. package/dist/runtime/lifecycle.d.ts +5 -0
  63. package/dist/runtime/lifecycle.d.ts.map +1 -1
  64. package/dist/runtime/lifecycle.js +60 -16
  65. package/dist/runtime/lifecycle.js.map +1 -1
  66. package/dist/runtime/merge.d.ts +73 -0
  67. package/dist/runtime/merge.d.ts.map +1 -0
  68. package/dist/runtime/merge.js +299 -0
  69. package/dist/runtime/merge.js.map +1 -0
  70. package/dist/runtime/public-metadata.d.ts +3 -0
  71. package/dist/runtime/public-metadata.d.ts.map +1 -0
  72. package/dist/runtime/public-metadata.js +15 -0
  73. package/dist/runtime/public-metadata.js.map +1 -0
  74. package/dist/runtime/repair.d.ts +12 -0
  75. package/dist/runtime/repair.d.ts.map +1 -0
  76. package/dist/runtime/repair.js +34 -0
  77. package/dist/runtime/repair.js.map +1 -0
  78. package/dist/runtime/repository.d.ts +18 -0
  79. package/dist/runtime/repository.d.ts.map +1 -1
  80. package/dist/runtime/repository.js +114 -2
  81. package/dist/runtime/repository.js.map +1 -1
  82. package/dist/runtime/state.d.ts +42 -1
  83. package/dist/runtime/state.d.ts.map +1 -1
  84. package/dist/runtime/state.js +324 -11
  85. package/dist/runtime/state.js.map +1 -1
  86. package/dist/runtime/usage.d.ts +12 -0
  87. package/dist/runtime/usage.d.ts.map +1 -0
  88. package/dist/runtime/usage.js +45 -0
  89. package/dist/runtime/usage.js.map +1 -0
  90. package/dist/runtime/verifier.d.ts.map +1 -1
  91. package/dist/runtime/verifier.js +12 -0
  92. package/dist/runtime/verifier.js.map +1 -1
  93. package/dist/runtime/worker.d.ts +1 -0
  94. package/dist/runtime/worker.d.ts.map +1 -1
  95. package/dist/runtime/worker.js.map +1 -1
  96. package/dist/version.d.ts +1 -1
  97. package/dist/version.js +1 -1
  98. package/dist/workflows/founder.d.ts.map +1 -1
  99. package/dist/workflows/founder.js +5 -0
  100. package/dist/workflows/founder.js.map +1 -1
  101. package/node_modules/typescript/LICENSE.txt +55 -0
  102. package/node_modules/typescript/README.md +50 -0
  103. package/node_modules/typescript/SECURITY.md +39 -0
  104. package/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
  105. package/node_modules/typescript/bin/tsc +2 -0
  106. package/node_modules/typescript/bin/tsserver +2 -0
  107. package/node_modules/typescript/lib/_tsc.js +134465 -0
  108. package/node_modules/typescript/lib/_tsserver.js +659 -0
  109. package/node_modules/typescript/lib/_typingsInstaller.js +222 -0
  110. package/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2129 -0
  111. package/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2125 -0
  112. package/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2129 -0
  113. package/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2129 -0
  114. package/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2125 -0
  115. package/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2129 -0
  116. package/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2129 -0
  117. package/node_modules/typescript/lib/lib.d.ts +20 -0
  118. package/node_modules/typescript/lib/lib.decorators.d.ts +382 -0
  119. package/node_modules/typescript/lib/lib.decorators.legacy.d.ts +20 -0
  120. package/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +18 -0
  121. package/node_modules/typescript/lib/lib.dom.d.ts +45125 -0
  122. package/node_modules/typescript/lib/lib.dom.iterable.d.ts +18 -0
  123. package/node_modules/typescript/lib/lib.es2015.collection.d.ts +150 -0
  124. package/node_modules/typescript/lib/lib.es2015.core.d.ts +595 -0
  125. package/node_modules/typescript/lib/lib.es2015.d.ts +26 -0
  126. package/node_modules/typescript/lib/lib.es2015.generator.d.ts +75 -0
  127. package/node_modules/typescript/lib/lib.es2015.iterable.d.ts +603 -0
  128. package/node_modules/typescript/lib/lib.es2015.promise.d.ts +79 -0
  129. package/node_modules/typescript/lib/lib.es2015.proxy.d.ts +126 -0
  130. package/node_modules/typescript/lib/lib.es2015.reflect.d.ts +142 -0
  131. package/node_modules/typescript/lib/lib.es2015.symbol.d.ts +44 -0
  132. package/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +324 -0
  133. package/node_modules/typescript/lib/lib.es2016.array.include.d.ts +114 -0
  134. package/node_modules/typescript/lib/lib.es2016.d.ts +19 -0
  135. package/node_modules/typescript/lib/lib.es2016.full.d.ts +21 -0
  136. package/node_modules/typescript/lib/lib.es2016.intl.d.ts +29 -0
  137. package/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +19 -0
  138. package/node_modules/typescript/lib/lib.es2017.d.ts +24 -0
  139. package/node_modules/typescript/lib/lib.es2017.date.d.ts +29 -0
  140. package/node_modules/typescript/lib/lib.es2017.full.d.ts +21 -0
  141. package/node_modules/typescript/lib/lib.es2017.intl.d.ts +42 -0
  142. package/node_modules/typescript/lib/lib.es2017.object.d.ts +47 -0
  143. package/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +133 -0
  144. package/node_modules/typescript/lib/lib.es2017.string.d.ts +43 -0
  145. package/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +51 -0
  146. package/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +75 -0
  147. package/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +51 -0
  148. package/node_modules/typescript/lib/lib.es2018.d.ts +22 -0
  149. package/node_modules/typescript/lib/lib.es2018.full.d.ts +22 -0
  150. package/node_modules/typescript/lib/lib.es2018.intl.d.ts +81 -0
  151. package/node_modules/typescript/lib/lib.es2018.promise.d.ts +28 -0
  152. package/node_modules/typescript/lib/lib.es2018.regexp.d.ts +35 -0
  153. package/node_modules/typescript/lib/lib.es2019.array.d.ts +77 -0
  154. package/node_modules/typescript/lib/lib.es2019.d.ts +22 -0
  155. package/node_modules/typescript/lib/lib.es2019.full.d.ts +22 -0
  156. package/node_modules/typescript/lib/lib.es2019.intl.d.ts +21 -0
  157. package/node_modules/typescript/lib/lib.es2019.object.d.ts +31 -0
  158. package/node_modules/typescript/lib/lib.es2019.string.d.ts +35 -0
  159. package/node_modules/typescript/lib/lib.es2019.symbol.d.ts +22 -0
  160. package/node_modules/typescript/lib/lib.es2020.bigint.d.ts +763 -0
  161. package/node_modules/typescript/lib/lib.es2020.d.ts +25 -0
  162. package/node_modules/typescript/lib/lib.es2020.date.d.ts +40 -0
  163. package/node_modules/typescript/lib/lib.es2020.full.d.ts +22 -0
  164. package/node_modules/typescript/lib/lib.es2020.intl.d.ts +472 -0
  165. package/node_modules/typescript/lib/lib.es2020.number.d.ts +26 -0
  166. package/node_modules/typescript/lib/lib.es2020.promise.d.ts +45 -0
  167. package/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +97 -0
  168. package/node_modules/typescript/lib/lib.es2020.string.d.ts +42 -0
  169. package/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +39 -0
  170. package/node_modules/typescript/lib/lib.es2021.d.ts +21 -0
  171. package/node_modules/typescript/lib/lib.es2021.full.d.ts +22 -0
  172. package/node_modules/typescript/lib/lib.es2021.intl.d.ts +164 -0
  173. package/node_modules/typescript/lib/lib.es2021.promise.d.ts +46 -0
  174. package/node_modules/typescript/lib/lib.es2021.string.d.ts +31 -0
  175. package/node_modules/typescript/lib/lib.es2021.weakref.d.ts +76 -0
  176. package/node_modules/typescript/lib/lib.es2022.array.d.ts +119 -0
  177. package/node_modules/typescript/lib/lib.es2022.d.ts +23 -0
  178. package/node_modules/typescript/lib/lib.es2022.error.d.ts +73 -0
  179. package/node_modules/typescript/lib/lib.es2022.full.d.ts +22 -0
  180. package/node_modules/typescript/lib/lib.es2022.intl.d.ts +143 -0
  181. package/node_modules/typescript/lib/lib.es2022.object.d.ts +24 -0
  182. package/node_modules/typescript/lib/lib.es2022.regexp.d.ts +37 -0
  183. package/node_modules/typescript/lib/lib.es2022.string.d.ts +23 -0
  184. package/node_modules/typescript/lib/lib.es2023.array.d.ts +922 -0
  185. package/node_modules/typescript/lib/lib.es2023.collection.d.ts +19 -0
  186. package/node_modules/typescript/lib/lib.es2023.d.ts +20 -0
  187. package/node_modules/typescript/lib/lib.es2023.full.d.ts +22 -0
  188. package/node_modules/typescript/lib/lib.es2023.intl.d.ts +62 -0
  189. package/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +63 -0
  190. package/node_modules/typescript/lib/lib.es2024.collection.d.ts +27 -0
  191. package/node_modules/typescript/lib/lib.es2024.d.ts +24 -0
  192. package/node_modules/typescript/lib/lib.es2024.full.d.ts +22 -0
  193. package/node_modules/typescript/lib/lib.es2024.object.d.ts +27 -0
  194. package/node_modules/typescript/lib/lib.es2024.promise.d.ts +33 -0
  195. package/node_modules/typescript/lib/lib.es2024.regexp.d.ts +23 -0
  196. package/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +66 -0
  197. package/node_modules/typescript/lib/lib.es2024.string.d.ts +27 -0
  198. package/node_modules/typescript/lib/lib.es2025.collection.d.ts +94 -0
  199. package/node_modules/typescript/lib/lib.es2025.d.ts +23 -0
  200. package/node_modules/typescript/lib/lib.es2025.float16.d.ts +443 -0
  201. package/node_modules/typescript/lib/lib.es2025.full.d.ts +22 -0
  202. package/node_modules/typescript/lib/lib.es2025.intl.d.ts +200 -0
  203. package/node_modules/typescript/lib/lib.es2025.iterator.d.ts +146 -0
  204. package/node_modules/typescript/lib/lib.es2025.promise.d.ts +32 -0
  205. package/node_modules/typescript/lib/lib.es2025.regexp.d.ts +30 -0
  206. package/node_modules/typescript/lib/lib.es5.d.ts +4599 -0
  207. package/node_modules/typescript/lib/lib.es6.d.ts +21 -0
  208. package/node_modules/typescript/lib/lib.esnext.array.d.ts +33 -0
  209. package/node_modules/typescript/lib/lib.esnext.collection.d.ts +47 -0
  210. package/node_modules/typescript/lib/lib.esnext.d.ts +27 -0
  211. package/node_modules/typescript/lib/lib.esnext.date.d.ts +21 -0
  212. package/node_modules/typescript/lib/lib.esnext.decorators.d.ts +26 -0
  213. package/node_modules/typescript/lib/lib.esnext.disposable.d.ts +191 -0
  214. package/node_modules/typescript/lib/lib.esnext.error.d.ts +22 -0
  215. package/node_modules/typescript/lib/lib.esnext.full.d.ts +22 -0
  216. package/node_modules/typescript/lib/lib.esnext.intl.d.ts +107 -0
  217. package/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +23 -0
  218. package/node_modules/typescript/lib/lib.esnext.temporal.d.ts +485 -0
  219. package/node_modules/typescript/lib/lib.esnext.typedarrays.d.ts +90 -0
  220. package/node_modules/typescript/lib/lib.scripthost.d.ts +320 -0
  221. package/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +18 -0
  222. package/node_modules/typescript/lib/lib.webworker.d.ts +15606 -0
  223. package/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +21 -0
  224. package/node_modules/typescript/lib/lib.webworker.iterable.d.ts +18 -0
  225. package/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2129 -0
  226. package/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2129 -0
  227. package/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2125 -0
  228. package/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2129 -0
  229. package/node_modules/typescript/lib/tsc.js +8 -0
  230. package/node_modules/typescript/lib/tsserver.js +8 -0
  231. package/node_modules/typescript/lib/tsserverlibrary.d.ts +17 -0
  232. package/node_modules/typescript/lib/tsserverlibrary.js +21 -0
  233. package/node_modules/typescript/lib/typesMap.json +497 -0
  234. package/node_modules/typescript/lib/typescript.d.ts +11448 -0
  235. package/node_modules/typescript/lib/typescript.js +201039 -0
  236. package/node_modules/typescript/lib/typingsInstaller.js +8 -0
  237. package/node_modules/typescript/lib/watchGuard.js +53 -0
  238. package/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +2129 -0
  239. package/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +2125 -0
  240. package/node_modules/typescript/package.json +118 -0
  241. package/package.json +7 -4
  242. package/schemas/audit-report.schema.json +1 -0
  243. package/schemas/change-request.schema.json +189 -0
  244. package/schemas/context-manifest.schema.json +50 -0
  245. package/schemas/delivery-record.schema.json +109 -0
  246. package/schemas/mill-config.schema.json +50 -2
  247. package/schemas/repository-intelligence.schema.json +200 -0
  248. package/schemas/review-result.schema.json +21 -0
  249. package/schemas/task-packet.schema.json +12 -0
@@ -0,0 +1,537 @@
1
+ import { execFile } from "node:child_process";
2
+ import { createHash } from "node:crypto";
3
+ import { lstat, opendir, realpath } from "node:fs/promises";
4
+ import path from "node:path";
5
+ import { promisify } from "node:util";
6
+ import ts from "typescript";
7
+ import { canonicalDigest } from "../contracts/canonical.js";
8
+ import { ExitCode, MillError } from "../errors.js";
9
+ import { isWithin, safeReadText } from "../security/safe-path.js";
10
+ import { scanRepository } from "./scan.js";
11
+ const execFileAsync = promisify(execFile);
12
+ const extractorId = "mill.repository-intelligence";
13
+ const extractorVersion = "3";
14
+ const sourceExtensions = new Set([
15
+ ".cjs",
16
+ ".cts",
17
+ ".js",
18
+ ".jsx",
19
+ ".mjs",
20
+ ".mts",
21
+ ".ts",
22
+ ".tsx",
23
+ ]);
24
+ const ignoredDirectories = new Set([
25
+ ".git",
26
+ ".mill",
27
+ "coverage",
28
+ "dist",
29
+ "node_modules",
30
+ "vendor",
31
+ ]);
32
+ const maximumEntries = 5_000;
33
+ const maximumDepth = 16;
34
+ const maximumSourceBytes = 1_024 * 1_024;
35
+ function posixPath(value) {
36
+ return value.split(path.sep).join("/");
37
+ }
38
+ function textDigest(value) {
39
+ return `sha256:${createHash("sha256").update(value, "utf8").digest("hex")}`;
40
+ }
41
+ function gitBlobOid(value) {
42
+ const bytes = Buffer.from(value, "utf8");
43
+ return createHash("sha1")
44
+ .update(`blob ${bytes.byteLength}\0`, "utf8")
45
+ .update(bytes)
46
+ .digest("hex");
47
+ }
48
+ function sourceFileKind(file) {
49
+ switch (path.extname(file).toLowerCase()) {
50
+ case ".tsx":
51
+ return ts.ScriptKind.TSX;
52
+ case ".jsx":
53
+ return ts.ScriptKind.JSX;
54
+ case ".js":
55
+ case ".cjs":
56
+ case ".mjs":
57
+ return ts.ScriptKind.JS;
58
+ default:
59
+ return ts.ScriptKind.TS;
60
+ }
61
+ }
62
+ function sourceLocation(sourceFile, position, file) {
63
+ const location = sourceFile.getLineAndCharacterOfPosition(position);
64
+ return {
65
+ path: file,
66
+ line: location.line + 1,
67
+ column: location.character + 1,
68
+ };
69
+ }
70
+ function assertSafeChangedPath(root, value) {
71
+ if (value.includes("\0") || path.isAbsolute(value)) {
72
+ throw new MillError("INVALID_CHANGED_PATH", "Changed paths must be relative, non-NUL paths inside the discovered repository.", ExitCode.data, { value });
73
+ }
74
+ const normalized = path.posix.normalize(value.replace(/\\/gu, "/"));
75
+ if (normalized === "." ||
76
+ normalized === ".." ||
77
+ normalized.startsWith("../")) {
78
+ throw new MillError("INVALID_CHANGED_PATH", "Changed paths must be relative, non-NUL paths inside the discovered repository.", ExitCode.data, { value });
79
+ }
80
+ const resolved = path.resolve(root, normalized);
81
+ if (!isWithin(root, resolved)) {
82
+ throw new MillError("INVALID_CHANGED_PATH", "Changed paths must be inside the discovered repository.", ExitCode.data, { value });
83
+ }
84
+ return normalized;
85
+ }
86
+ async function listSourceFiles(root, committed) {
87
+ const state = { entries: 0, files: [], truncatedDirectories: [] };
88
+ async function walk(relative, depth) {
89
+ const absolute = path.join(root, relative);
90
+ let directory;
91
+ try {
92
+ directory = await opendir(absolute);
93
+ }
94
+ catch (error) {
95
+ throw new MillError("DISCOVERY_DIRECTORY_UNREADABLE", "Repository directory could not be read during static discovery.", ExitCode.data, { path: relative, cause: String(error) });
96
+ }
97
+ const entries = [];
98
+ for await (const entry of directory) {
99
+ state.entries += 1;
100
+ if (state.entries > maximumEntries) {
101
+ throw new MillError("DISCOVERY_BUDGET_EXCEEDED", `Static discovery exceeded the ${maximumEntries}-entry budget.`, ExitCode.data);
102
+ }
103
+ entries.push(entry);
104
+ }
105
+ for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {
106
+ const child = relative === "." ? entry.name : path.join(relative, entry.name);
107
+ const info = await lstat(path.join(root, child));
108
+ if (info.isSymbolicLink())
109
+ continue;
110
+ if (info.isDirectory()) {
111
+ if (ignoredDirectories.has(entry.name))
112
+ continue;
113
+ if (depth >= maximumDepth) {
114
+ state.truncatedDirectories.push(posixPath(child));
115
+ }
116
+ else {
117
+ await walk(child, depth + 1);
118
+ }
119
+ }
120
+ else if (info.isFile() &&
121
+ sourceExtensions.has(path.extname(entry.name)) &&
122
+ committed.has(posixPath(child))) {
123
+ state.files.push(posixPath(child));
124
+ }
125
+ }
126
+ }
127
+ await walk(".", 0);
128
+ return {
129
+ files: state.files.sort(),
130
+ truncatedDirectories: state.truncatedDirectories.sort(),
131
+ };
132
+ }
133
+ async function gitReadRaw(root, args) {
134
+ try {
135
+ const result = await execFileAsync("git", [
136
+ "-c",
137
+ "core.hooksPath=/dev/null",
138
+ "-c",
139
+ "credential.helper=",
140
+ "-C",
141
+ root,
142
+ ...args,
143
+ ], {
144
+ encoding: "utf8",
145
+ env: {
146
+ ...process.env,
147
+ GIT_CONFIG_GLOBAL: "/dev/null",
148
+ GIT_CONFIG_NOSYSTEM: "1",
149
+ GIT_OPTIONAL_LOCKS: "0",
150
+ GIT_TERMINAL_PROMPT: "0",
151
+ },
152
+ maxBuffer: 1024 * 1024,
153
+ });
154
+ return result.stdout;
155
+ }
156
+ catch (error) {
157
+ throw new MillError("GIT_IDENTITY_UNAVAILABLE", "Static discovery requires a readable Git repository with an exact committed source identity.", ExitCode.data, { cause: String(error) });
158
+ }
159
+ }
160
+ async function gitRead(root, args) {
161
+ return (await gitReadRaw(root, args)).trim();
162
+ }
163
+ async function committedBlobs(root, tree) {
164
+ const output = await gitReadRaw(root, [
165
+ "ls-tree",
166
+ "-r",
167
+ "-z",
168
+ "--full-tree",
169
+ tree,
170
+ ]);
171
+ const entries = output.length === 0 ? [] : output.split("\0").slice(0, -1);
172
+ const blobs = new Map();
173
+ for (const entry of entries) {
174
+ const match = /^(100644|100755) blob ([a-f0-9]{40})\t(.+)$/u.exec(entry);
175
+ if (match === null)
176
+ continue;
177
+ const candidate = match[3] ?? "";
178
+ if (candidate.length === 0 ||
179
+ path.posix.isAbsolute(candidate) ||
180
+ candidate.split("/").includes("..")) {
181
+ throw new MillError("GIT_IDENTITY_UNAVAILABLE", "Static discovery received an unsafe path from the committed Git tree.", ExitCode.data, { path: candidate });
182
+ }
183
+ blobs.set(candidate, { oid: match[2] ?? "" });
184
+ }
185
+ return blobs;
186
+ }
187
+ async function readCapturedSource(root, sourcePath, committed) {
188
+ const blob = committed.get(sourcePath);
189
+ if (blob === undefined) {
190
+ throw new MillError("DISCOVERY_COMMITTED_SOURCE_MISSING", "Discovery refuses source paths that are absent from the captured committed tree.", ExitCode.data, { path: sourcePath });
191
+ }
192
+ const source = await safeReadText(root, sourcePath, maximumSourceBytes);
193
+ if (gitBlobOid(source) !== blob.oid) {
194
+ throw new MillError("DISCOVERY_COMMITTED_SOURCE_MISMATCH", "Discovery refuses physical source bytes that do not match the captured committed tree.", ExitCode.data, { path: sourcePath });
195
+ }
196
+ return source;
197
+ }
198
+ async function readGitIdentity(root) {
199
+ const commit = await gitRead(root, ["rev-parse", "HEAD"]);
200
+ const [topLevel, status, tree] = await Promise.all([
201
+ gitRead(root, ["rev-parse", "--show-toplevel"]),
202
+ gitRead(root, ["status", "--porcelain=v1", "--untracked-files=all"]),
203
+ gitRead(root, ["rev-parse", `${commit}^{tree}`]),
204
+ ]);
205
+ const canonicalTopLevel = await realpath(topLevel);
206
+ if (canonicalTopLevel !== root) {
207
+ throw new MillError("DISCOVERY_ROOT_NOT_GIT_ROOT", "Discovery must target the Git repository root, not a nested directory.", ExitCode.data, { root: topLevel });
208
+ }
209
+ if (status.length > 0) {
210
+ throw new MillError("DISCOVERY_DIRTY_SOURCE", "Static discovery refuses a dirty source tree because it cannot bind one exact committed revision.", ExitCode.data);
211
+ }
212
+ if (!/^[a-f0-9]{40}$/u.test(commit) || !/^[a-f0-9]{40}$/u.test(tree)) {
213
+ throw new MillError("GIT_IDENTITY_UNAVAILABLE", "Static discovery received an invalid Git commit or tree identity.", ExitCode.data);
214
+ }
215
+ return { commit, tree };
216
+ }
217
+ function resolveLocalSpecifier(sourcePath, specifier, sourceFiles) {
218
+ if (!specifier.startsWith(".") && !specifier.startsWith("/"))
219
+ return undefined;
220
+ if (specifier.startsWith("/"))
221
+ return undefined;
222
+ const base = path.posix.normalize(path.posix.join(path.posix.dirname(sourcePath), specifier));
223
+ if (base === ".." || base.startsWith("../"))
224
+ return undefined;
225
+ const extension = path.posix.extname(base);
226
+ const candidates = extension.length > 0
227
+ ? [
228
+ base,
229
+ ...(extension === ".js"
230
+ ? [".ts", ".tsx", ".mts", ".cts"]
231
+ : extension === ".jsx"
232
+ ? [".tsx", ".ts"]
233
+ : extension === ".mjs"
234
+ ? [".mts"]
235
+ : extension === ".cjs"
236
+ ? [".cts"]
237
+ : []).map((candidate) => `${base.slice(0, -extension.length)}${candidate}`),
238
+ ]
239
+ : [
240
+ ...[".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs"].map((candidate) => `${base}${candidate}`),
241
+ ...[
242
+ "index.ts",
243
+ "index.tsx",
244
+ "index.mts",
245
+ "index.cts",
246
+ "index.js",
247
+ "index.jsx",
248
+ "index.mjs",
249
+ "index.cjs",
250
+ ].map((candidate) => path.posix.join(base, candidate)),
251
+ ];
252
+ return candidates.find((candidate) => sourceFiles.has(candidate));
253
+ }
254
+ function isTypeOnly(node) {
255
+ if (ts.isExportDeclaration(node)) {
256
+ return node.isTypeOnly;
257
+ }
258
+ return node.importClause?.phaseModifier === ts.SyntaxKind.TypeKeyword;
259
+ }
260
+ function scriptKindForImport(node) {
261
+ if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {
262
+ return isTypeOnly(node) ? "type" : "static";
263
+ }
264
+ if (ts.isImportEqualsDeclaration(node))
265
+ return "static";
266
+ if (ts.isCallExpression(node) &&
267
+ node.expression.kind === ts.SyntaxKind.ImportKeyword) {
268
+ return "dynamic";
269
+ }
270
+ if (ts.isCallExpression(node) &&
271
+ ts.isIdentifier(node.expression) &&
272
+ node.expression.text === "require") {
273
+ return "require";
274
+ }
275
+ return undefined;
276
+ }
277
+ function moduleSpecifier(node) {
278
+ if (ts.isImportDeclaration(node) || ts.isExportDeclaration(node)) {
279
+ return node.moduleSpecifier !== undefined &&
280
+ ts.isStringLiteralLike(node.moduleSpecifier)
281
+ ? node.moduleSpecifier
282
+ : undefined;
283
+ }
284
+ if (ts.isImportEqualsDeclaration(node)) {
285
+ return ts.isExternalModuleReference(node.moduleReference) &&
286
+ ts.isStringLiteralLike(node.moduleReference.expression)
287
+ ? node.moduleReference.expression
288
+ : undefined;
289
+ }
290
+ if (ts.isCallExpression(node)) {
291
+ const argument = node.arguments[0];
292
+ return argument !== undefined && ts.isStringLiteralLike(argument)
293
+ ? argument
294
+ : undefined;
295
+ }
296
+ return undefined;
297
+ }
298
+ function inspectModule(sourcePath, source, sourceFiles) {
299
+ const parsed = ts.createSourceFile(sourcePath, source, ts.ScriptTarget.Latest, true, sourceFileKind(sourcePath));
300
+ const imports = [];
301
+ function visit(node) {
302
+ const kind = scriptKindForImport(node);
303
+ const specifier = kind === undefined ? undefined : moduleSpecifier(node);
304
+ if (kind !== undefined && specifier === undefined) {
305
+ imports.push({
306
+ kind,
307
+ specifier: "nonliteral_specifier",
308
+ location: sourceLocation(parsed, node.getStart(parsed), sourcePath),
309
+ resolution: "unresolved",
310
+ });
311
+ }
312
+ else if (kind !== undefined && specifier !== undefined) {
313
+ const targetPath = resolveLocalSpecifier(sourcePath, specifier.text, sourceFiles);
314
+ const relative = specifier.text.startsWith(".") || specifier.text.startsWith("/");
315
+ imports.push({
316
+ kind,
317
+ specifier: specifier.text,
318
+ location: sourceLocation(parsed, specifier.getStart(parsed), sourcePath),
319
+ resolution: targetPath === undefined
320
+ ? relative
321
+ ? "unresolved"
322
+ : "external"
323
+ : "resolved_local",
324
+ ...(targetPath === undefined ? {} : { targetPath }),
325
+ });
326
+ }
327
+ ts.forEachChild(node, visit);
328
+ }
329
+ visit(parsed);
330
+ const parseDiagnostics = parsed.parseDiagnostics?.map((diagnostic) => sourceLocation(parsed, diagnostic.start, sourcePath)) ?? [];
331
+ return {
332
+ path: sourcePath,
333
+ digest: textDigest(source),
334
+ imports: imports.sort((left, right) => `${left.location.line}:${left.location.column}:${left.specifier}`.localeCompare(`${right.location.line}:${right.location.column}:${right.specifier}`)),
335
+ parseDiagnostics,
336
+ };
337
+ }
338
+ function isTestPath(file) {
339
+ const basename = path.posix.basename(file);
340
+ return (/(?:^|\.)(?:test|spec)\.[cm]?[jt]sx?$/u.test(basename) ||
341
+ file.split("/").includes("test") ||
342
+ file.split("/").includes("tests"));
343
+ }
344
+ function matchesOneSegmentGlob(candidate, selector) {
345
+ const escaped = selector
346
+ .replace(/[.+^${}()|[\]\\]/gu, "\\$&")
347
+ .replace(/\*/gu, "[^/]*");
348
+ return new RegExp(`^${escaped}$`, "u").test(candidate);
349
+ }
350
+ function declaredTestSelections(packageSource, inventory) {
351
+ if (packageSource === undefined)
352
+ return [];
353
+ let packageJson;
354
+ try {
355
+ packageJson = JSON.parse(packageSource);
356
+ }
357
+ catch {
358
+ return [];
359
+ }
360
+ if (typeof packageJson !== "object" ||
361
+ packageJson === null ||
362
+ !("scripts" in packageJson) ||
363
+ typeof packageJson.scripts !== "object" ||
364
+ packageJson.scripts === null) {
365
+ return [];
366
+ }
367
+ const selections = [];
368
+ for (const [script, command] of Object.entries(packageJson.scripts)) {
369
+ if (typeof command !== "string" ||
370
+ !/(?:^|\s)(?:vitest|jest|mocha|ava|tsx|node|pnpm|npm)(?:\s|$)/u.test(command)) {
371
+ continue;
372
+ }
373
+ const selectors = command.match(/[A-Za-z0-9_./*-]+\.(?:test|spec)\.[cm]?[jt]sx?/gu) ?? [];
374
+ if (/(?:^|\s)--?[A-Za-z]/u.test(command) || selectors.length === 0) {
375
+ selections.push({
376
+ script,
377
+ command,
378
+ selector: "static_selection_unknown",
379
+ matchedInventory: [],
380
+ status: "unknown",
381
+ });
382
+ continue;
383
+ }
384
+ for (const selector of [...new Set(selectors)].sort()) {
385
+ if (selector.includes("**")) {
386
+ selections.push({
387
+ script,
388
+ command,
389
+ selector,
390
+ matchedInventory: [],
391
+ status: "unknown",
392
+ });
393
+ continue;
394
+ }
395
+ selections.push({
396
+ script,
397
+ command,
398
+ selector,
399
+ matchedInventory: inventory
400
+ .map((entry) => entry.path)
401
+ .filter((file) => matchesOneSegmentGlob(file, selector)),
402
+ status: "observed",
403
+ });
404
+ }
405
+ }
406
+ return selections.sort((left, right) => `${left.script}:${left.selector}`.localeCompare(`${right.script}:${right.selector}`));
407
+ }
408
+ function deriveChangeImpact(changedPath, modules) {
409
+ const byPath = new Map(modules.map((module) => [module.path, module]));
410
+ if (!byPath.has(changedPath)) {
411
+ return {
412
+ changedPath,
413
+ leads: [],
414
+ unknowns: ["changed_path_not_observed_no_unaffectedness_claim"],
415
+ };
416
+ }
417
+ const importers = new Map();
418
+ for (const module of modules) {
419
+ for (const relation of module.imports) {
420
+ if (relation.targetPath === undefined)
421
+ continue;
422
+ const current = importers.get(relation.targetPath) ?? [];
423
+ current.push(module.path);
424
+ importers.set(relation.targetPath, current);
425
+ }
426
+ }
427
+ const leads = [{ path: changedPath, relationship: "changed" }];
428
+ const visited = new Set([changedPath]);
429
+ let frontier = [changedPath];
430
+ let depth = 0;
431
+ while (frontier.length > 0) {
432
+ const next = [];
433
+ for (const target of frontier.sort()) {
434
+ for (const importer of [...(importers.get(target) ?? [])].sort()) {
435
+ if (visited.has(importer))
436
+ continue;
437
+ visited.add(importer);
438
+ leads.push({
439
+ path: importer,
440
+ relationship: depth === 0 ? "direct_importer" : "transitive_importer",
441
+ via: target,
442
+ });
443
+ next.push(importer);
444
+ }
445
+ }
446
+ frontier = next;
447
+ depth += 1;
448
+ }
449
+ return { changedPath, leads, unknowns: [] };
450
+ }
451
+ export function assessDiscoveryFreshness(report, current) {
452
+ const reasons = [];
453
+ if (report.extractor.digest !== current.extractor.digest) {
454
+ reasons.push("extractor_identity_changed");
455
+ }
456
+ if (report.source.commit !== current.source.commit)
457
+ reasons.push("source_commit_changed");
458
+ if (report.source.tree !== current.source.tree)
459
+ reasons.push("source_tree_changed");
460
+ return { fresh: reasons.length === 0, reasons };
461
+ }
462
+ export async function discoverRepository(input) {
463
+ const root = await realpath(path.resolve(input.root));
464
+ const scan = await scanRepository(root);
465
+ if (scan.gitConfigHazards.length > 0) {
466
+ throw new MillError("UNSAFE_GIT_CONFIGURATION", "Discovery refuses repositories with executable or ambiguous Git configuration.", ExitCode.data, { hazards: scan.gitConfigHazards });
467
+ }
468
+ if (scan.symlinksSkipped.length > 0 || scan.truncatedDirectories.length > 0) {
469
+ throw new MillError("DISCOVERY_INCOMPLETE_SOURCE", "Discovery refuses source trees with skipped symbolic links or truncated directories.", ExitCode.data, {
470
+ symlinks: scan.symlinksSkipped,
471
+ truncatedDirectories: scan.truncatedDirectories,
472
+ });
473
+ }
474
+ if (scan.secretReferences.length > 0) {
475
+ throw new MillError("DISCOVERY_SENSITIVE_PATH", "Discovery refuses repositories that contain credential-like source paths.", ExitCode.data, { paths: scan.secretReferences });
476
+ }
477
+ const identity = await readGitIdentity(root);
478
+ const committed = await committedBlobs(root, identity.tree);
479
+ const listed = await listSourceFiles(root, committed);
480
+ if (listed.truncatedDirectories.length > 0) {
481
+ throw new MillError("DISCOVERY_INCOMPLETE_SOURCE", "Discovery reached its source-depth limit and cannot claim complete static evidence.", ExitCode.data, { truncatedDirectories: listed.truncatedDirectories });
482
+ }
483
+ const sourceFiles = listed.files;
484
+ const sourceSet = new Set(sourceFiles);
485
+ const modules = [];
486
+ let totalSourceBytes = 0;
487
+ for (const file of sourceFiles) {
488
+ const source = await readCapturedSource(root, file, committed);
489
+ totalSourceBytes += Buffer.byteLength(source, "utf8");
490
+ if (totalSourceBytes > 32 * 1024 * 1024) {
491
+ throw new MillError("DISCOVERY_BYTE_BUDGET_EXCEEDED", "Discovery exceeds its 32 MiB aggregate source budget; no complete map was produced.", ExitCode.data);
492
+ }
493
+ modules.push(inspectModule(file, source, sourceSet));
494
+ }
495
+ const inventory = sourceFiles
496
+ .filter(isTestPath)
497
+ .map((file) => ({ path: file, source: "filename" }));
498
+ let packageSource;
499
+ const packageBlob = committed.get("package.json");
500
+ if (packageBlob !== undefined) {
501
+ packageSource = await readCapturedSource(root, "package.json", committed);
502
+ }
503
+ const changedPaths = [
504
+ ...new Set((input.changedPaths ?? []).map((value) => assertSafeChangedPath(root, value))),
505
+ ].sort();
506
+ const extractor = {
507
+ id: extractorId,
508
+ version: extractorVersion,
509
+ digest: canonicalDigest({ id: extractorId, version: extractorVersion }),
510
+ };
511
+ if ((await gitRead(root, ["rev-parse", "HEAD"])) !== identity.commit) {
512
+ throw new MillError("DISCOVERY_SOURCE_IDENTITY_CHANGED", "Discovery source identity changed while committed inputs were being captured.", ExitCode.data);
513
+ }
514
+ const data = {
515
+ schemaVersion: "1",
516
+ extractor,
517
+ source: { ...identity, root: "." },
518
+ scanDigest: scan.digest,
519
+ sourceFiles,
520
+ modules: modules.sort((left, right) => left.path.localeCompare(right.path)),
521
+ tests: {
522
+ inventory,
523
+ declaredSelection: declaredTestSelections(packageSource, inventory),
524
+ executedCoverage: "unknown",
525
+ },
526
+ changeImpact: changedPaths.map((changedPath) => deriveChangeImpact(changedPath, modules)),
527
+ unknowns: [
528
+ "runtime_behavior_not_executed",
529
+ "executed_test_coverage_not_observed",
530
+ "external_module_semantics_not_resolved",
531
+ "derived_map_does_not_authorize_effects",
532
+ ],
533
+ authority: "derived_read_only",
534
+ };
535
+ return { ...data, digest: canonicalDigest(data) };
536
+ }
537
+ //# sourceMappingURL=intelligence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intelligence.js","sourceRoot":"","sources":["../../src/repository/intelligence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /** Experimental Node/npm adoption preserves all native source and acceptance oracles. */
2
+ export declare function planNativeAdoption(input: {
3
+ root: string;
4
+ configPath: string;
5
+ }): Promise<{
6
+ approvalDigest: string;
7
+ schemaVersion: string;
8
+ status: string;
9
+ repositoryId: string;
10
+ baseCommit: string;
11
+ baseTree: string;
12
+ configDigest: string;
13
+ nativePackageDigest: string;
14
+ nativeLockDigest: string;
15
+ scanDigest: string;
16
+ files: {
17
+ path: string;
18
+ content: string;
19
+ }[];
20
+ qualification: string;
21
+ }>;
22
+ export declare function applyNativeAdoption(input: {
23
+ root: string;
24
+ configPath: string;
25
+ approvalDigest: string;
26
+ attended: boolean;
27
+ }): Promise<{
28
+ status: string;
29
+ approvalDigest: string;
30
+ branch: string;
31
+ worktree: string;
32
+ preservedNativePackageDigest: string;
33
+ preservedNativeLockDigest: string;
34
+ nextAction: string;
35
+ }>;
36
+ //# sourceMappingURL=native-adoption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-adoption.d.ts","sourceRoot":"","sources":["../../src/repository/native-adoption.ts"],"names":[],"mappings":"AAsBA,yFAAyF;AACzF,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;;;;;;;;;;;;;;;;GA8HA;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;;;;;;;;GAkFA"}