@virune/compiler 1.1.0-rc.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 (300) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +2 -0
  3. package/dist/src/analysis/control-flow.d.ts +9 -0
  4. package/dist/src/analysis/control-flow.d.ts.map +1 -0
  5. package/dist/src/analysis/control-flow.js +47 -0
  6. package/dist/src/analysis/control-flow.js.map +1 -0
  7. package/dist/src/ast/nodes.d.ts +495 -0
  8. package/dist/src/ast/nodes.d.ts.map +1 -0
  9. package/dist/src/ast/nodes.js +2 -0
  10. package/dist/src/ast/nodes.js.map +1 -0
  11. package/dist/src/binder/symbols.d.ts +36 -0
  12. package/dist/src/binder/symbols.d.ts.map +1 -0
  13. package/dist/src/binder/symbols.js +30 -0
  14. package/dist/src/binder/symbols.js.map +1 -0
  15. package/dist/src/checker/builtin-members.d.ts +4 -0
  16. package/dist/src/checker/builtin-members.d.ts.map +1 -0
  17. package/dist/src/checker/builtin-members.js +175 -0
  18. package/dist/src/checker/builtin-members.js.map +1 -0
  19. package/dist/src/checker/checker.d.ts +148 -0
  20. package/dist/src/checker/checker.d.ts.map +1 -0
  21. package/dist/src/checker/checker.js +2985 -0
  22. package/dist/src/checker/checker.js.map +1 -0
  23. package/dist/src/checker/effect-registry.d.ts +14 -0
  24. package/dist/src/checker/effect-registry.d.ts.map +1 -0
  25. package/dist/src/checker/effect-registry.js +11 -0
  26. package/dist/src/checker/effect-registry.js.map +1 -0
  27. package/dist/src/checker/type-operations.d.ts +27 -0
  28. package/dist/src/checker/type-operations.d.ts.map +1 -0
  29. package/dist/src/checker/type-operations.js +268 -0
  30. package/dist/src/checker/type-operations.js.map +1 -0
  31. package/dist/src/codegen/emitter.d.ts +83 -0
  32. package/dist/src/codegen/emitter.d.ts.map +1 -0
  33. package/dist/src/codegen/emitter.js +1029 -0
  34. package/dist/src/codegen/emitter.js.map +1 -0
  35. package/dist/src/codegen/helpers.d.ts +7 -0
  36. package/dist/src/codegen/helpers.d.ts.map +1 -0
  37. package/dist/src/codegen/helpers.js +48 -0
  38. package/dist/src/codegen/helpers.js.map +1 -0
  39. package/dist/src/codegen/runtime-imports.d.ts +6 -0
  40. package/dist/src/codegen/runtime-imports.d.ts.map +1 -0
  41. package/dist/src/codegen/runtime-imports.js +45 -0
  42. package/dist/src/codegen/runtime-imports.js.map +1 -0
  43. package/dist/src/codegen/writer.d.ts +14 -0
  44. package/dist/src/codegen/writer.d.ts.map +1 -0
  45. package/dist/src/codegen/writer.js +56 -0
  46. package/dist/src/codegen/writer.js.map +1 -0
  47. package/dist/src/compiler.d.ts +24 -0
  48. package/dist/src/compiler.d.ts.map +1 -0
  49. package/dist/src/compiler.js +97 -0
  50. package/dist/src/compiler.js.map +1 -0
  51. package/dist/src/diagnostics/codes.d.ts +18 -0
  52. package/dist/src/diagnostics/codes.d.ts.map +1 -0
  53. package/dist/src/diagnostics/codes.js +43 -0
  54. package/dist/src/diagnostics/codes.js.map +1 -0
  55. package/dist/src/diagnostics/diagnostic.d.ts +41 -0
  56. package/dist/src/diagnostics/diagnostic.d.ts.map +1 -0
  57. package/dist/src/diagnostics/diagnostic.js +50 -0
  58. package/dist/src/diagnostics/diagnostic.js.map +1 -0
  59. package/dist/src/diagnostics/render.d.ts +44 -0
  60. package/dist/src/diagnostics/render.d.ts.map +1 -0
  61. package/dist/src/diagnostics/render.js +44 -0
  62. package/dist/src/diagnostics/render.js.map +1 -0
  63. package/dist/src/experimental-api.d.ts +19 -0
  64. package/dist/src/experimental-api.d.ts.map +1 -0
  65. package/dist/src/experimental-api.js +17 -0
  66. package/dist/src/experimental-api.js.map +1 -0
  67. package/dist/src/hir/lower.d.ts +6 -0
  68. package/dist/src/hir/lower.d.ts.map +1 -0
  69. package/dist/src/hir/lower.js +124 -0
  70. package/dist/src/hir/lower.js.map +1 -0
  71. package/dist/src/hir/nodes.d.ts +12 -0
  72. package/dist/src/hir/nodes.d.ts.map +1 -0
  73. package/dist/src/hir/nodes.js +2 -0
  74. package/dist/src/hir/nodes.js.map +1 -0
  75. package/dist/src/index.d.ts +2 -0
  76. package/dist/src/index.d.ts.map +1 -0
  77. package/dist/src/index.js +2 -0
  78. package/dist/src/index.js.map +1 -0
  79. package/dist/src/interop/checked-api.d.ts +21 -0
  80. package/dist/src/interop/checked-api.d.ts.map +1 -0
  81. package/dist/src/interop/checked-api.js +46 -0
  82. package/dist/src/interop/checked-api.js.map +1 -0
  83. package/dist/src/interop/decision.d.ts +24 -0
  84. package/dist/src/interop/decision.d.ts.map +1 -0
  85. package/dist/src/interop/decision.js +96 -0
  86. package/dist/src/interop/decision.js.map +1 -0
  87. package/dist/src/interop/frontend-component-emission.d.ts +17 -0
  88. package/dist/src/interop/frontend-component-emission.d.ts.map +1 -0
  89. package/dist/src/interop/frontend-component-emission.js +271 -0
  90. package/dist/src/interop/frontend-component-emission.js.map +1 -0
  91. package/dist/src/interop/jsx-view-validation.d.ts +20 -0
  92. package/dist/src/interop/jsx-view-validation.d.ts.map +1 -0
  93. package/dist/src/interop/jsx-view-validation.js +847 -0
  94. package/dist/src/interop/jsx-view-validation.js.map +1 -0
  95. package/dist/src/interop/operation-api.d.ts +32 -0
  96. package/dist/src/interop/operation-api.d.ts.map +1 -0
  97. package/dist/src/interop/operation-api.js +61 -0
  98. package/dist/src/interop/operation-api.js.map +1 -0
  99. package/dist/src/interop/operation.d.ts +136 -0
  100. package/dist/src/interop/operation.d.ts.map +1 -0
  101. package/dist/src/interop/operation.js +575 -0
  102. package/dist/src/interop/operation.js.map +1 -0
  103. package/dist/src/interop/repetition-host-locator.d.ts +25 -0
  104. package/dist/src/interop/repetition-host-locator.d.ts.map +1 -0
  105. package/dist/src/interop/repetition-host-locator.js +61 -0
  106. package/dist/src/interop/repetition-host-locator.js.map +1 -0
  107. package/dist/src/interop/repetition-host-usage-validation.d.ts +11 -0
  108. package/dist/src/interop/repetition-host-usage-validation.d.ts.map +1 -0
  109. package/dist/src/interop/repetition-host-usage-validation.js +89 -0
  110. package/dist/src/interop/repetition-host-usage-validation.js.map +1 -0
  111. package/dist/src/interop/types.d.ts +365 -0
  112. package/dist/src/interop/types.d.ts.map +1 -0
  113. package/dist/src/interop/types.js +2 -0
  114. package/dist/src/interop/types.js.map +1 -0
  115. package/dist/src/mir/lower.d.ts +4 -0
  116. package/dist/src/mir/lower.d.ts.map +1 -0
  117. package/dist/src/mir/lower.js +131 -0
  118. package/dist/src/mir/lower.js.map +1 -0
  119. package/dist/src/mir/nodes.d.ts +36 -0
  120. package/dist/src/mir/nodes.d.ts.map +1 -0
  121. package/dist/src/mir/nodes.js +2 -0
  122. package/dist/src/mir/nodes.js.map +1 -0
  123. package/dist/src/project/incremental.d.ts +9 -0
  124. package/dist/src/project/incremental.d.ts.map +1 -0
  125. package/dist/src/project/incremental.js +15 -0
  126. package/dist/src/project/incremental.js.map +1 -0
  127. package/dist/src/project/project.d.ts +98 -0
  128. package/dist/src/project/project.d.ts.map +1 -0
  129. package/dist/src/project/project.js +884 -0
  130. package/dist/src/project/project.js.map +1 -0
  131. package/dist/src/public-api.d.ts +45 -0
  132. package/dist/src/public-api.d.ts.map +1 -0
  133. package/dist/src/public-api.js +37 -0
  134. package/dist/src/public-api.js.map +1 -0
  135. package/dist/src/reference/evaluator.d.ts +13 -0
  136. package/dist/src/reference/evaluator.d.ts.map +1 -0
  137. package/dist/src/reference/evaluator.js +304 -0
  138. package/dist/src/reference/evaluator.js.map +1 -0
  139. package/dist/src/selfhost/bootstrap-artifact-normalizer.d.ts +65 -0
  140. package/dist/src/selfhost/bootstrap-artifact-normalizer.d.ts.map +1 -0
  141. package/dist/src/selfhost/bootstrap-artifact-normalizer.js +226 -0
  142. package/dist/src/selfhost/bootstrap-artifact-normalizer.js.map +1 -0
  143. package/dist/src/selfhost/bootstrap-artifact-snapshot.d.ts +23 -0
  144. package/dist/src/selfhost/bootstrap-artifact-snapshot.d.ts.map +1 -0
  145. package/dist/src/selfhost/bootstrap-artifact-snapshot.js +122 -0
  146. package/dist/src/selfhost/bootstrap-artifact-snapshot.js.map +1 -0
  147. package/dist/src/selfhost/bootstrap-compiler-selection.d.ts +36 -0
  148. package/dist/src/selfhost/bootstrap-compiler-selection.d.ts.map +1 -0
  149. package/dist/src/selfhost/bootstrap-compiler-selection.js +52 -0
  150. package/dist/src/selfhost/bootstrap-compiler-selection.js.map +1 -0
  151. package/dist/src/selfhost/bootstrap-execution-probe.d.ts +42 -0
  152. package/dist/src/selfhost/bootstrap-execution-probe.d.ts.map +1 -0
  153. package/dist/src/selfhost/bootstrap-execution-probe.js +115 -0
  154. package/dist/src/selfhost/bootstrap-execution-probe.js.map +1 -0
  155. package/dist/src/selfhost/bootstrap-rollback-decision.d.ts +40 -0
  156. package/dist/src/selfhost/bootstrap-rollback-decision.d.ts.map +1 -0
  157. package/dist/src/selfhost/bootstrap-rollback-decision.js +144 -0
  158. package/dist/src/selfhost/bootstrap-rollback-decision.js.map +1 -0
  159. package/dist/src/selfhost/bootstrap-shadow-history.d.ts +49 -0
  160. package/dist/src/selfhost/bootstrap-shadow-history.d.ts.map +1 -0
  161. package/dist/src/selfhost/bootstrap-shadow-history.js +348 -0
  162. package/dist/src/selfhost/bootstrap-shadow-history.js.map +1 -0
  163. package/dist/src/selfhost/bootstrap-shadow-report.d.ts +43 -0
  164. package/dist/src/selfhost/bootstrap-shadow-report.d.ts.map +1 -0
  165. package/dist/src/selfhost/bootstrap-shadow-report.js +94 -0
  166. package/dist/src/selfhost/bootstrap-shadow-report.js.map +1 -0
  167. package/dist/src/selfhost/bootstrap-stage-executor.d.ts +53 -0
  168. package/dist/src/selfhost/bootstrap-stage-executor.d.ts.map +1 -0
  169. package/dist/src/selfhost/bootstrap-stage-executor.js +159 -0
  170. package/dist/src/selfhost/bootstrap-stage-executor.js.map +1 -0
  171. package/dist/src/selfhost/bootstrap-stage-loader.d.ts +14 -0
  172. package/dist/src/selfhost/bootstrap-stage-loader.d.ts.map +1 -0
  173. package/dist/src/selfhost/bootstrap-stage-loader.js +112 -0
  174. package/dist/src/selfhost/bootstrap-stage-loader.js.map +1 -0
  175. package/dist/src/selfhost/bootstrap-stage-pipeline.d.ts +8 -0
  176. package/dist/src/selfhost/bootstrap-stage-pipeline.d.ts.map +1 -0
  177. package/dist/src/selfhost/bootstrap-stage-pipeline.js +85 -0
  178. package/dist/src/selfhost/bootstrap-stage-pipeline.js.map +1 -0
  179. package/dist/src/selfhost/bootstrap-stage-runner.d.ts +47 -0
  180. package/dist/src/selfhost/bootstrap-stage-runner.d.ts.map +1 -0
  181. package/dist/src/selfhost/bootstrap-stage-runner.js +106 -0
  182. package/dist/src/selfhost/bootstrap-stage-runner.js.map +1 -0
  183. package/dist/src/selfhost/clean-bootstrap-evidence.d.ts +83 -0
  184. package/dist/src/selfhost/clean-bootstrap-evidence.d.ts.map +1 -0
  185. package/dist/src/selfhost/clean-bootstrap-evidence.js +233 -0
  186. package/dist/src/selfhost/clean-bootstrap-evidence.js.map +1 -0
  187. package/dist/src/selfhost/compiler-facade.d.ts +33 -0
  188. package/dist/src/selfhost/compiler-facade.d.ts.map +1 -0
  189. package/dist/src/selfhost/compiler-facade.js +65 -0
  190. package/dist/src/selfhost/compiler-facade.js.map +1 -0
  191. package/dist/src/selfhost/contract.d.ts +151 -0
  192. package/dist/src/selfhost/contract.d.ts.map +1 -0
  193. package/dist/src/selfhost/contract.js +335 -0
  194. package/dist/src/selfhost/contract.js.map +1 -0
  195. package/dist/src/selfhost/differential-artifacts.d.ts +8 -0
  196. package/dist/src/selfhost/differential-artifacts.d.ts.map +1 -0
  197. package/dist/src/selfhost/differential-artifacts.js +50 -0
  198. package/dist/src/selfhost/differential-artifacts.js.map +1 -0
  199. package/dist/src/selfhost/differential-harness.d.ts +91 -0
  200. package/dist/src/selfhost/differential-harness.d.ts.map +1 -0
  201. package/dist/src/selfhost/differential-harness.js +246 -0
  202. package/dist/src/selfhost/differential-harness.js.map +1 -0
  203. package/dist/src/selfhost/full-language-inventory-runner.d.ts +49 -0
  204. package/dist/src/selfhost/full-language-inventory-runner.d.ts.map +1 -0
  205. package/dist/src/selfhost/full-language-inventory-runner.js +225 -0
  206. package/dist/src/selfhost/full-language-inventory-runner.js.map +1 -0
  207. package/dist/src/selfhost/full-language-inventory.d.ts +42 -0
  208. package/dist/src/selfhost/full-language-inventory.d.ts.map +1 -0
  209. package/dist/src/selfhost/full-language-inventory.js +163 -0
  210. package/dist/src/selfhost/full-language-inventory.js.map +1 -0
  211. package/dist/src/selfhost/interop-resolution-witness.d.ts +35 -0
  212. package/dist/src/selfhost/interop-resolution-witness.d.ts.map +1 -0
  213. package/dist/src/selfhost/interop-resolution-witness.js +186 -0
  214. package/dist/src/selfhost/interop-resolution-witness.js.map +1 -0
  215. package/dist/src/selfhost/kernel-model-host-adapter.d.ts +28 -0
  216. package/dist/src/selfhost/kernel-model-host-adapter.d.ts.map +1 -0
  217. package/dist/src/selfhost/kernel-model-host-adapter.js +36 -0
  218. package/dist/src/selfhost/kernel-model-host-adapter.js.map +1 -0
  219. package/dist/src/selfhost/legacy-adapter.d.ts +8 -0
  220. package/dist/src/selfhost/legacy-adapter.d.ts.map +1 -0
  221. package/dist/src/selfhost/legacy-adapter.js +186 -0
  222. package/dist/src/selfhost/legacy-adapter.js.map +1 -0
  223. package/dist/src/selfhost/module-graph.d.ts +57 -0
  224. package/dist/src/selfhost/module-graph.d.ts.map +1 -0
  225. package/dist/src/selfhost/module-graph.js +267 -0
  226. package/dist/src/selfhost/module-graph.js.map +1 -0
  227. package/dist/src/selfhost/mvp-adapter.d.ts +19 -0
  228. package/dist/src/selfhost/mvp-adapter.d.ts.map +1 -0
  229. package/dist/src/selfhost/mvp-adapter.js +186 -0
  230. package/dist/src/selfhost/mvp-adapter.js.map +1 -0
  231. package/dist/src/selfhost/node-executor.d.ts +6 -0
  232. package/dist/src/selfhost/node-executor.d.ts.map +1 -0
  233. package/dist/src/selfhost/node-executor.js +138 -0
  234. package/dist/src/selfhost/node-executor.js.map +1 -0
  235. package/dist/src/selfhost/project-compiler-adapter.d.ts +77 -0
  236. package/dist/src/selfhost/project-compiler-adapter.d.ts.map +1 -0
  237. package/dist/src/selfhost/project-compiler-adapter.js +358 -0
  238. package/dist/src/selfhost/project-compiler-adapter.js.map +1 -0
  239. package/dist/src/selfhost/project-differential-adapter.d.ts +15 -0
  240. package/dist/src/selfhost/project-differential-adapter.d.ts.map +1 -0
  241. package/dist/src/selfhost/project-differential-adapter.js +65 -0
  242. package/dist/src/selfhost/project-differential-adapter.js.map +1 -0
  243. package/dist/src/selfhost/promotion-evidence.d.ts +62 -0
  244. package/dist/src/selfhost/promotion-evidence.d.ts.map +1 -0
  245. package/dist/src/selfhost/promotion-evidence.js +332 -0
  246. package/dist/src/selfhost/promotion-evidence.js.map +1 -0
  247. package/dist/src/selfhost/promotion-policy-replay-v2.d.ts +54 -0
  248. package/dist/src/selfhost/promotion-policy-replay-v2.d.ts.map +1 -0
  249. package/dist/src/selfhost/promotion-policy-replay-v2.js +343 -0
  250. package/dist/src/selfhost/promotion-policy-replay-v2.js.map +1 -0
  251. package/dist/src/selfhost/promotion-shadow-history-v2.d.ts +55 -0
  252. package/dist/src/selfhost/promotion-shadow-history-v2.d.ts.map +1 -0
  253. package/dist/src/selfhost/promotion-shadow-history-v2.js +227 -0
  254. package/dist/src/selfhost/promotion-shadow-history-v2.js.map +1 -0
  255. package/dist/src/selfhost/promotion-subject.d.ts +34 -0
  256. package/dist/src/selfhost/promotion-subject.d.ts.map +1 -0
  257. package/dist/src/selfhost/promotion-subject.js +141 -0
  258. package/dist/src/selfhost/promotion-subject.js.map +1 -0
  259. package/dist/src/selfhost/source-manifest.d.ts +31 -0
  260. package/dist/src/selfhost/source-manifest.d.ts.map +1 -0
  261. package/dist/src/selfhost/source-manifest.js +194 -0
  262. package/dist/src/selfhost/source-manifest.js.map +1 -0
  263. package/dist/src/selfhost/stage-compiler-facade.d.ts +25 -0
  264. package/dist/src/selfhost/stage-compiler-facade.d.ts.map +1 -0
  265. package/dist/src/selfhost/stage-compiler-facade.js +100 -0
  266. package/dist/src/selfhost/stage-compiler-facade.js.map +1 -0
  267. package/dist/src/semantic-evidence/snapshot.d.ts +114 -0
  268. package/dist/src/semantic-evidence/snapshot.d.ts.map +1 -0
  269. package/dist/src/semantic-evidence/snapshot.js +336 -0
  270. package/dist/src/semantic-evidence/snapshot.js.map +1 -0
  271. package/dist/src/source.d.ts +25 -0
  272. package/dist/src/source.d.ts.map +1 -0
  273. package/dist/src/source.js +10 -0
  274. package/dist/src/source.js.map +1 -0
  275. package/dist/src/syntax/cst-to-ast.d.ts +108 -0
  276. package/dist/src/syntax/cst-to-ast.d.ts.map +1 -0
  277. package/dist/src/syntax/cst-to-ast.js +383 -0
  278. package/dist/src/syntax/cst-to-ast.js.map +1 -0
  279. package/dist/src/syntax/documentation.d.ts +11 -0
  280. package/dist/src/syntax/documentation.d.ts.map +1 -0
  281. package/dist/src/syntax/documentation.js +261 -0
  282. package/dist/src/syntax/documentation.js.map +1 -0
  283. package/dist/src/syntax/parser.d.ts +114 -0
  284. package/dist/src/syntax/parser.d.ts.map +1 -0
  285. package/dist/src/syntax/parser.js +970 -0
  286. package/dist/src/syntax/parser.js.map +1 -0
  287. package/dist/src/syntax/syntax-metadata.d.ts +8 -0
  288. package/dist/src/syntax/syntax-metadata.d.ts.map +1 -0
  289. package/dist/src/syntax/syntax-metadata.js +14 -0
  290. package/dist/src/syntax/syntax-metadata.js.map +1 -0
  291. package/dist/src/syntax/tokens.d.ts +96 -0
  292. package/dist/src/syntax/tokens.d.ts.map +1 -0
  293. package/dist/src/syntax/tokens.js +260 -0
  294. package/dist/src/syntax/tokens.js.map +1 -0
  295. package/dist/src/types/types.d.ts +97 -0
  296. package/dist/src/types/types.d.ts.map +1 -0
  297. package/dist/src/types/types.js +105 -0
  298. package/dist/src/types/types.js.map +1 -0
  299. package/package.json +47 -0
  300. package/schema/diagnostics-v1.schema.json +75 -0
@@ -0,0 +1,83 @@
1
+ export declare const CLEAN_BOOTSTRAP_EVIDENCE_VERSION: 2;
2
+ export declare const REQUIRED_CLEAN_BOOTSTRAP_COMMANDS: readonly ["install", "seed-verify", "bootstrap"];
3
+ export type CleanBootstrapCommandName = typeof REQUIRED_CLEAN_BOOTSTRAP_COMMANDS[number];
4
+ export type CleanBootstrapEnvironmentProfile = 'baseline' | 'perturbed';
5
+ export type CleanBootstrapFailureCode = 'CANDIDATE_MISMATCH' | 'COMMAND_FAILED' | 'DEPENDENCIES_NOT_OFFLINE' | 'DIRTY_WORKTREE' | 'FIXED_POINT_MISMATCH' | 'MISSING_COMMAND' | 'SEED_MISMATCH' | 'SEED_NOT_VERIFIED';
6
+ export interface CleanBootstrapCommandInput {
7
+ readonly name: CleanBootstrapCommandName;
8
+ readonly exitCode: number;
9
+ readonly stdoutSha256: string;
10
+ readonly stderrSha256: string;
11
+ }
12
+ export interface CleanBootstrapEnvironmentInput {
13
+ readonly profile: CleanBootstrapEnvironmentProfile;
14
+ readonly timezone: string;
15
+ readonly locale: string;
16
+ readonly homeVariant: string;
17
+ readonly tempVariant: string;
18
+ }
19
+ export interface CleanBootstrapEvidenceInput {
20
+ readonly version: typeof CLEAN_BOOTSTRAP_EVIDENCE_VERSION;
21
+ readonly candidateSha256: string;
22
+ readonly repositoryCommit: string;
23
+ readonly checkedAt: string;
24
+ readonly workingTreeClean: boolean;
25
+ readonly dependencyMode: 'offline' | 'online';
26
+ readonly environment: CleanBootstrapEnvironmentInput;
27
+ readonly lockfileSha256: string;
28
+ readonly seed: {
29
+ readonly manifestSha256: string;
30
+ readonly artifactSha256: string;
31
+ readonly verified: boolean;
32
+ };
33
+ readonly bootstrap: {
34
+ readonly seedSha256: string;
35
+ readonly stage1Sha256: string;
36
+ readonly stage2Sha256: string;
37
+ readonly stage3Sha256: string;
38
+ readonly fixedPointEquivalent: boolean;
39
+ readonly fixedPointDifferenceCount: number;
40
+ };
41
+ readonly commands: readonly CleanBootstrapCommandInput[];
42
+ }
43
+ export interface CleanBootstrapFailure {
44
+ readonly code: CleanBootstrapFailureCode;
45
+ readonly path: string;
46
+ readonly message: string;
47
+ }
48
+ export interface CleanBootstrapEvidenceReport {
49
+ readonly version: typeof CLEAN_BOOTSTRAP_EVIDENCE_VERSION;
50
+ readonly candidateSha256: string;
51
+ readonly repositoryCommit: string;
52
+ readonly checkedAt: string;
53
+ readonly status: 'pass' | 'fail';
54
+ readonly failures: readonly CleanBootstrapFailure[];
55
+ readonly workingTreeClean: boolean;
56
+ readonly dependencyMode: 'offline' | 'online';
57
+ readonly environment: CleanBootstrapEnvironmentInput;
58
+ readonly lockfileSha256: string;
59
+ readonly seed: CleanBootstrapEvidenceInput['seed'];
60
+ readonly bootstrap: CleanBootstrapEvidenceInput['bootstrap'];
61
+ readonly commands: readonly CleanBootstrapCommandInput[];
62
+ }
63
+ export interface CleanBootstrapGateEvidence {
64
+ readonly name: 'clean-bootstrap';
65
+ readonly candidateSha256: string;
66
+ readonly checkedAt: string;
67
+ readonly status: 'pass' | 'fail';
68
+ readonly evidenceSha256: string;
69
+ }
70
+ export interface CleanBootstrapEvidenceResult {
71
+ readonly report: CleanBootstrapEvidenceReport;
72
+ readonly serialized: string;
73
+ readonly sha256: string;
74
+ readonly gate: CleanBootstrapGateEvidence;
75
+ }
76
+ /**
77
+ * Validate host-collected clean-clone execution facts and produce a candidate-
78
+ * bound bootstrap witness. The host proves fresh-checkout execution and forces
79
+ * dependency tooling into offline mode. This evaluator deliberately does not
80
+ * claim OS-level network isolation; that would require a separate host proof.
81
+ */
82
+ export declare function evaluateCleanBootstrapEvidence(value: unknown): CleanBootstrapEvidenceResult;
83
+ //# sourceMappingURL=clean-bootstrap-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean-bootstrap-evidence.d.ts","sourceRoot":"","sources":["../../../src/selfhost/clean-bootstrap-evidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,233 @@
1
+ import { createHash } from 'node:crypto';
2
+ export const CLEAN_BOOTSTRAP_EVIDENCE_VERSION = 2;
3
+ export const REQUIRED_CLEAN_BOOTSTRAP_COMMANDS = [
4
+ 'install',
5
+ 'seed-verify',
6
+ 'bootstrap',
7
+ ];
8
+ /**
9
+ * Validate host-collected clean-clone execution facts and produce a candidate-
10
+ * bound bootstrap witness. The host proves fresh-checkout execution and forces
11
+ * dependency tooling into offline mode. This evaluator deliberately does not
12
+ * claim OS-level network isolation; that would require a separate host proof.
13
+ */
14
+ export function evaluateCleanBootstrapEvidence(value) {
15
+ const input = validateInput(value);
16
+ const failures = [];
17
+ if (!input.workingTreeClean) {
18
+ fail(failures, 'DIRTY_WORKTREE', '$.workingTreeClean', 'The bootstrap checkout is not clean');
19
+ }
20
+ if (input.dependencyMode !== 'offline') {
21
+ fail(failures, 'DEPENDENCIES_NOT_OFFLINE', '$.dependencyMode', 'Dependency tooling was not forced into offline mode');
22
+ }
23
+ if (!input.seed.verified) {
24
+ fail(failures, 'SEED_NOT_VERIFIED', '$.seed.verified', 'The fixed Stage 0 seed was not verified');
25
+ }
26
+ if (input.seed.artifactSha256 !== input.bootstrap.seedSha256) {
27
+ fail(failures, 'SEED_MISMATCH', '$.bootstrap.seedSha256', 'The bootstrap run did not use the verified Stage 0 seed artifact');
28
+ }
29
+ if (!input.bootstrap.fixedPointEquivalent
30
+ || input.bootstrap.fixedPointDifferenceCount !== 0
31
+ || input.bootstrap.stage2Sha256 !== input.bootstrap.stage3Sha256) {
32
+ fail(failures, 'FIXED_POINT_MISMATCH', '$.bootstrap', 'Stage 2 and Stage 3 did not reach an exact bootstrap fixed point');
33
+ }
34
+ if (input.candidateSha256 !== input.bootstrap.stage3Sha256) {
35
+ fail(failures, 'CANDIDATE_MISMATCH', '$.candidateSha256', 'The clean bootstrap Stage 3 artifact does not match the candidate');
36
+ }
37
+ const commandByName = new Map(input.commands.map(command => [command.name, command]));
38
+ for (const name of REQUIRED_CLEAN_BOOTSTRAP_COMMANDS) {
39
+ const command = commandByName.get(name);
40
+ if (command === undefined) {
41
+ fail(failures, 'MISSING_COMMAND', `$.commands.${name}`, `Required command ${name} is missing`);
42
+ }
43
+ else if (command.exitCode !== 0) {
44
+ fail(failures, 'COMMAND_FAILED', `$.commands.${name}.exitCode`, `Required command ${name} failed`);
45
+ }
46
+ }
47
+ const sortedFailures = failures.sort(compareFailure);
48
+ const report = {
49
+ version: CLEAN_BOOTSTRAP_EVIDENCE_VERSION,
50
+ candidateSha256: input.candidateSha256,
51
+ repositoryCommit: input.repositoryCommit,
52
+ checkedAt: input.checkedAt,
53
+ status: sortedFailures.length === 0 ? 'pass' : 'fail',
54
+ failures: sortedFailures,
55
+ workingTreeClean: input.workingTreeClean,
56
+ dependencyMode: input.dependencyMode,
57
+ environment: input.environment,
58
+ lockfileSha256: input.lockfileSha256,
59
+ seed: input.seed,
60
+ bootstrap: input.bootstrap,
61
+ commands: input.commands,
62
+ };
63
+ const serialized = JSON.stringify(report);
64
+ const sha256 = hash(serialized);
65
+ return {
66
+ report,
67
+ serialized,
68
+ sha256,
69
+ gate: {
70
+ name: 'clean-bootstrap',
71
+ candidateSha256: input.candidateSha256,
72
+ checkedAt: input.checkedAt,
73
+ status: report.status,
74
+ evidenceSha256: sha256,
75
+ },
76
+ };
77
+ }
78
+ function validateInput(value) {
79
+ const input = record(value, '$');
80
+ exactKeys(input, [
81
+ 'version',
82
+ 'candidateSha256',
83
+ 'repositoryCommit',
84
+ 'checkedAt',
85
+ 'workingTreeClean',
86
+ 'dependencyMode',
87
+ 'environment',
88
+ 'lockfileSha256',
89
+ 'seed',
90
+ 'bootstrap',
91
+ 'commands',
92
+ ], '$');
93
+ if (input.version !== CLEAN_BOOTSTRAP_EVIDENCE_VERSION)
94
+ throw new Error('$.version is invalid');
95
+ const candidateSha256 = sha256Value(input.candidateSha256, '$.candidateSha256');
96
+ const repositoryCommit = sha1Value(input.repositoryCommit, '$.repositoryCommit');
97
+ const checkedAt = timestamp(input.checkedAt, '$.checkedAt');
98
+ const workingTreeClean = boolean(input.workingTreeClean, '$.workingTreeClean');
99
+ if (input.dependencyMode !== 'offline' && input.dependencyMode !== 'online') {
100
+ throw new Error('$.dependencyMode must be offline or online');
101
+ }
102
+ const environmentValue = record(input.environment, '$.environment');
103
+ exactKeys(environmentValue, ['profile', 'timezone', 'locale', 'homeVariant', 'tempVariant'], '$.environment');
104
+ if (environmentValue.profile !== 'baseline' && environmentValue.profile !== 'perturbed') {
105
+ throw new Error('$.environment.profile must be baseline or perturbed');
106
+ }
107
+ const environment = {
108
+ profile: environmentValue.profile,
109
+ timezone: nonEmptyString(environmentValue.timezone, '$.environment.timezone'),
110
+ locale: nonEmptyString(environmentValue.locale, '$.environment.locale'),
111
+ homeVariant: nonEmptyString(environmentValue.homeVariant, '$.environment.homeVariant'),
112
+ tempVariant: nonEmptyString(environmentValue.tempVariant, '$.environment.tempVariant'),
113
+ };
114
+ const lockfileSha256 = sha256Value(input.lockfileSha256, '$.lockfileSha256');
115
+ const seedValue = record(input.seed, '$.seed');
116
+ exactKeys(seedValue, ['manifestSha256', 'artifactSha256', 'verified'], '$.seed');
117
+ const seed = {
118
+ manifestSha256: sha256Value(seedValue.manifestSha256, '$.seed.manifestSha256'),
119
+ artifactSha256: sha256Value(seedValue.artifactSha256, '$.seed.artifactSha256'),
120
+ verified: boolean(seedValue.verified, '$.seed.verified'),
121
+ };
122
+ const bootstrapValue = record(input.bootstrap, '$.bootstrap');
123
+ exactKeys(bootstrapValue, ['seedSha256', 'stage1Sha256', 'stage2Sha256', 'stage3Sha256', 'fixedPointEquivalent', 'fixedPointDifferenceCount'], '$.bootstrap');
124
+ const bootstrap = {
125
+ seedSha256: sha256Value(bootstrapValue.seedSha256, '$.bootstrap.seedSha256'),
126
+ stage1Sha256: sha256Value(bootstrapValue.stage1Sha256, '$.bootstrap.stage1Sha256'),
127
+ stage2Sha256: sha256Value(bootstrapValue.stage2Sha256, '$.bootstrap.stage2Sha256'),
128
+ stage3Sha256: sha256Value(bootstrapValue.stage3Sha256, '$.bootstrap.stage3Sha256'),
129
+ fixedPointEquivalent: boolean(bootstrapValue.fixedPointEquivalent, '$.bootstrap.fixedPointEquivalent'),
130
+ fixedPointDifferenceCount: nonNegativeSafeInteger(bootstrapValue.fixedPointDifferenceCount, '$.bootstrap.fixedPointDifferenceCount'),
131
+ };
132
+ if (!Array.isArray(input.commands))
133
+ throw new Error('$.commands must be an array');
134
+ const seen = new Set();
135
+ const commands = input.commands.map((command, index) => {
136
+ const path = `$.commands[${index}]`;
137
+ const item = record(command, path);
138
+ exactKeys(item, ['name', 'exitCode', 'stdoutSha256', 'stderrSha256'], path);
139
+ if (!REQUIRED_CLEAN_BOOTSTRAP_COMMANDS.includes(item.name)) {
140
+ throw new Error(`${path}.name is invalid`);
141
+ }
142
+ const name = item.name;
143
+ if (seen.has(name))
144
+ throw new Error(`${path}.name is duplicated`);
145
+ seen.add(name);
146
+ return {
147
+ name,
148
+ exitCode: nonNegativeSafeInteger(item.exitCode, `${path}.exitCode`),
149
+ stdoutSha256: sha256Value(item.stdoutSha256, `${path}.stdoutSha256`),
150
+ stderrSha256: sha256Value(item.stderrSha256, `${path}.stderrSha256`),
151
+ };
152
+ }).sort((left, right) => compareText(left.name, right.name));
153
+ return {
154
+ version: CLEAN_BOOTSTRAP_EVIDENCE_VERSION,
155
+ candidateSha256,
156
+ repositoryCommit,
157
+ checkedAt,
158
+ workingTreeClean,
159
+ dependencyMode: input.dependencyMode,
160
+ environment,
161
+ lockfileSha256,
162
+ seed,
163
+ bootstrap,
164
+ commands,
165
+ };
166
+ }
167
+ function fail(failures, code, path, message) {
168
+ failures.push({ code, path, message });
169
+ }
170
+ function record(value, path) {
171
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
172
+ throw new Error(`${path} must be a plain object`);
173
+ const prototype = Object.getPrototypeOf(value);
174
+ if (prototype !== Object.prototype && prototype !== null)
175
+ throw new Error(`${path} must be a plain object`);
176
+ return value;
177
+ }
178
+ function exactKeys(value, keys, path) {
179
+ const expected = new Set(keys);
180
+ for (const key of Object.keys(value))
181
+ if (!expected.has(key))
182
+ throw new Error(`${path}.${key} is unknown`);
183
+ for (const key of keys)
184
+ if (!Object.hasOwn(value, key))
185
+ throw new Error(`${path}.${key} is missing`);
186
+ }
187
+ function boolean(value, path) {
188
+ if (typeof value !== 'boolean')
189
+ throw new Error(`${path} must be a boolean`);
190
+ return value;
191
+ }
192
+ function nonEmptyString(value, path) {
193
+ if (typeof value !== 'string' || value.trim() === '')
194
+ throw new Error(`${path} must be a non-empty string`);
195
+ return value;
196
+ }
197
+ function nonNegativeSafeInteger(value, path) {
198
+ if (typeof value !== 'number' || !Number.isSafeInteger(value) || value < 0) {
199
+ throw new Error(`${path} must be a non-negative safe integer`);
200
+ }
201
+ return value;
202
+ }
203
+ function sha1Value(value, path) {
204
+ if (typeof value !== 'string' || !/^[0-9a-f]{40}$/u.test(value)) {
205
+ throw new Error(`${path} must be a lowercase Git commit SHA`);
206
+ }
207
+ return value;
208
+ }
209
+ function sha256Value(value, path) {
210
+ if (typeof value !== 'string' || !/^[0-9a-f]{64}$/u.test(value)) {
211
+ throw new Error(`${path} must be a lowercase SHA-256`);
212
+ }
213
+ return value;
214
+ }
215
+ function timestamp(value, path) {
216
+ if (typeof value !== 'string')
217
+ throw new Error(`${path} must be a canonical UTC ISO timestamp`);
218
+ const parsed = new Date(value);
219
+ if (Number.isNaN(parsed.getTime()) || parsed.toISOString() !== value) {
220
+ throw new Error(`${path} must be a canonical UTC ISO timestamp`);
221
+ }
222
+ return value;
223
+ }
224
+ function compareFailure(left, right) {
225
+ return compareText(left.code, right.code) || compareText(left.path, right.path);
226
+ }
227
+ function compareText(left, right) {
228
+ return left < right ? -1 : left > right ? 1 : 0;
229
+ }
230
+ function hash(value) {
231
+ return createHash('sha256').update(value, 'utf8').digest('hex');
232
+ }
233
+ //# sourceMappingURL=clean-bootstrap-evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clean-bootstrap-evidence.js","sourceRoot":"","sources":["../../../src/selfhost/clean-bootstrap-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAU,CAAC;AAC3D,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAChD,SAAS;IACT,aAAa;IACb,WAAW;CACF,CAAC;AA2FX;;;;;GAKG;AACH,MAAM,UAAU,8BAA8B,CAAC,KAAc;IAC5D,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC7B,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,qCAAqC,CAAC,CAAC;IAC/F,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACxC,IAAI,CAAC,QAAQ,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,qDAAqD,CAAC,CAAC;IACvH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC1B,IAAI,CAAC,QAAQ,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,yCAAyC,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC9D,IAAI,CACH,QAAQ,EACR,eAAe,EACf,wBAAwB,EACxB,kEAAkE,CAClE,CAAC;IACH,CAAC;IACD,IACC,CAAC,KAAK,CAAC,SAAS,CAAC,oBAAoB;WAClC,KAAK,CAAC,SAAS,CAAC,yBAAyB,KAAK,CAAC;WAC/C,KAAK,CAAC,SAAS,CAAC,YAAY,KAAK,KAAK,CAAC,SAAS,CAAC,YAAY,EAC/D,CAAC;QACF,IAAI,CACH,QAAQ,EACR,sBAAsB,EACtB,aAAa,EACb,kEAAkE,CAClE,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,KAAK,KAAK,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;QAC5D,IAAI,CACH,QAAQ,EACR,oBAAoB,EACpB,mBAAmB,EACnB,mEAAmE,CACnE,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAU,CAAC,CAAC,CAAC;IAC/F,KAAK,MAAM,IAAI,IAAI,iCAAiC,EAAE,CAAC;QACtD,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,EAAE,iBAAiB,EAAE,cAAc,IAAI,EAAE,EAAE,oBAAoB,IAAI,aAAa,CAAC,CAAC;QAChG,CAAC;aAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE,cAAc,IAAI,WAAW,EAAE,oBAAoB,IAAI,SAAS,CAAC,CAAC;QACpG,CAAC;IACF,CAAC;IACD,MAAM,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACrD,MAAM,MAAM,GAAiC;QAC5C,OAAO,EAAE,gCAAgC;QACzC,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;QACrD,QAAQ,EAAE,cAAc;QACxB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACxB,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,OAAO;QACN,MAAM;QACN,UAAU;QACV,MAAM;QACN,IAAI,EAAE;YACL,IAAI,EAAE,iBAAiB;YACvB,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,cAAc,EAAE,MAAM;SACtB;KACD,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACpC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACjC,SAAS,CAAC,KAAK,EAAE;QAChB,SAAS;QACT,iBAAiB;QACjB,kBAAkB;QAClB,WAAW;QACX,kBAAkB;QAClB,gBAAgB;QAChB,aAAa;QACb,gBAAgB;QAChB,MAAM;QACN,WAAW;QACX,UAAU;KACV,EAAE,GAAG,CAAC,CAAC;IACR,IAAI,KAAK,CAAC,OAAO,KAAK,gCAAgC;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAChG,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;IAChF,MAAM,gBAAgB,GAAG,SAAS,CAAC,KAAK,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;IACjF,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC5D,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;IAC/E,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,IAAI,KAAK,CAAC,cAAc,KAAK,QAAQ,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACpE,SAAS,CAAC,gBAAgB,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,eAAe,CAAC,CAAC;IAC9G,IAAI,gBAAgB,CAAC,OAAO,KAAK,UAAU,IAAI,gBAAgB,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACxE,CAAC;IACD,MAAM,WAAW,GAAmC;QACnD,OAAO,EAAE,gBAAgB,CAAC,OAAO;QACjC,QAAQ,EAAE,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,wBAAwB,CAAC;QAC7E,MAAM,EAAE,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,CAAC;QACvE,WAAW,EAAE,cAAc,CAAC,gBAAgB,CAAC,WAAW,EAAE,2BAA2B,CAAC;QACtF,WAAW,EAAE,cAAc,CAAC,gBAAgB,CAAC,WAAW,EAAE,2BAA2B,CAAC;KACtF,CAAC;IACF,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAC7E,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,SAAS,CAAC,SAAS,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG;QACZ,cAAc,EAAE,WAAW,CAAC,SAAS,CAAC,cAAc,EAAE,uBAAuB,CAAC;QAC9E,cAAc,EAAE,WAAW,CAAC,SAAS,CAAC,cAAc,EAAE,uBAAuB,CAAC;QAC9E,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,iBAAiB,CAAC;KACxD,CAAC;IACF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC9D,SAAS,CACR,cAAc,EACd,CAAC,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,sBAAsB,EAAE,2BAA2B,CAAC,EACnH,aAAa,CACb,CAAC;IACF,MAAM,SAAS,GAAG;QACjB,UAAU,EAAE,WAAW,CAAC,cAAc,CAAC,UAAU,EAAE,wBAAwB,CAAC;QAC5E,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,YAAY,EAAE,0BAA0B,CAAC;QAClF,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,YAAY,EAAE,0BAA0B,CAAC;QAClF,YAAY,EAAE,WAAW,CAAC,cAAc,CAAC,YAAY,EAAE,0BAA0B,CAAC;QAClF,oBAAoB,EAAE,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,kCAAkC,CAAC;QACtG,yBAAyB,EAAE,sBAAsB,CAChD,cAAc,CAAC,yBAAyB,EACxC,uCAAuC,CACvC;KACD,CAAC;IACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,IAAI,GAAG,EAA6B,CAAC;IAClD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QACtD,MAAM,IAAI,GAAG,cAAc,KAAK,GAAG,CAAC;QACpC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACnC,SAAS,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5E,IAAI,CAAC,iCAAiC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAiC,CAAC,EAAE,CAAC;YACzF,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,kBAAkB,CAAC,CAAC;QAC5C,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAiC,CAAC;QACpD,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,qBAAqB,CAAC,CAAC;QAClE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,OAAO;YACN,IAAI;YACJ,QAAQ,EAAE,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,WAAW,CAAC;YACnE,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,eAAe,CAAC;YACpE,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,IAAI,eAAe,CAAC;SACpE,CAAC;IACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,OAAO;QACN,OAAO,EAAE,gCAAgC;QACzC,eAAe;QACf,gBAAgB;QAChB,SAAS;QACT,gBAAgB;QAChB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,WAAW;QACX,cAAc;QACd,IAAI;QACJ,SAAS;QACT,QAAQ;KACR,CAAC;AACH,CAAC;AAED,SAAS,IAAI,CACZ,QAAiC,EACjC,IAA+B,EAC/B,IAAY,EACZ,OAAe;IAEf,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,MAAM,CAAC,KAAc,EAAE,IAAY;IAC3C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,yBAAyB,CAAC,CAAC;IAC3H,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,yBAAyB,CAAC,CAAC;IAC5G,OAAO,KAAgC,CAAC;AACzC,CAAC;AAED,SAAS,SAAS,CAAC,KAA8B,EAAE,IAAuB,EAAE,IAAY;IACvF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,GAAG,aAAa,CAAC,CAAC;IAC3G,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,IAAI,GAAG,aAAa,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,OAAO,CAAC,KAAc,EAAE,IAAY;IAC5C,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC;IAC7E,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,IAAY;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,6BAA6B,CAAC,CAAC;IAC5G,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAc,EAAE,IAAY;IAC3D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,sCAAsC,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,IAAY;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,qCAAqC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,KAAc,EAAE,IAAY;IAChD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,IAAY;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,wCAAwC,CAAC,CAAC;IAChG,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,CAAC;QACtE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,wCAAwC,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,IAA2B,EAAE,KAA4B;IAChF,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,KAAa;IAC/C,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,IAAI,CAAC,KAAa;IAC1B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjE,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { type KernelInputV1, type KernelOutputV1 } from './contract.js';
2
+ export declare const INTERNAL_COMPILER_FACADE_VERSION: 1;
3
+ export declare const INTERNAL_COMPILER_DEFAULT_SELECTION: "legacy";
4
+ export type InternalCompilerSelection = 'legacy' | 'self-host';
5
+ export type InternalKernelCompiler = (input: KernelInputV1) => KernelOutputV1 | Promise<KernelOutputV1>;
6
+ export interface InternalCompilerFacadeDependencies {
7
+ readonly legacyCompiler?: InternalKernelCompiler;
8
+ readonly selfHostCompiler?: InternalKernelCompiler;
9
+ }
10
+ export interface InternalCompilerFacadeOptions {
11
+ readonly selection?: InternalCompilerSelection;
12
+ }
13
+ export interface InternalCompilerFacade {
14
+ readonly version: typeof INTERNAL_COMPILER_FACADE_VERSION;
15
+ readonly defaultSelection: typeof INTERNAL_COMPILER_DEFAULT_SELECTION;
16
+ readonly selfHostAvailable: boolean;
17
+ readonly compile: (input: unknown, options?: InternalCompilerFacadeOptions) => Promise<KernelOutputV1>;
18
+ }
19
+ export declare class InternalCompilerFacadeError extends Error {
20
+ readonly path: string;
21
+ readonly name = "InternalCompilerFacadeError";
22
+ constructor(path: string, message: string);
23
+ }
24
+ /**
25
+ * Create the internal compiler selection boundary.
26
+ *
27
+ * The production default is intentionally fixed to Legacy. Self-host execution
28
+ * is available only when a caller supplies a compiler dependency and selects it
29
+ * explicitly for one invocation. This boundary does not read environment
30
+ * variables, persist selection, or mutate the public compiler API.
31
+ */
32
+ export declare function createInternalCompilerFacade(dependencies?: InternalCompilerFacadeDependencies): InternalCompilerFacade;
33
+ //# sourceMappingURL=compiler-facade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler-facade.d.ts","sourceRoot":"","sources":["../../../src/selfhost/compiler-facade.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,MAAM,eAAe,CAAC;AAGvB,eAAO,MAAM,gCAAgC,EAAG,CAAU,CAAC;AAC3D,eAAO,MAAM,mCAAmC,EAAG,QAAiB,CAAC;AAErE,MAAM,MAAM,yBAAyB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAC/D,MAAM,MAAM,sBAAsB,GAAG,CACpC,KAAK,EAAE,aAAa,KAChB,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AAE9C,MAAM,WAAW,kCAAkC;IAClD,QAAQ,CAAC,cAAc,CAAC,EAAE,sBAAsB,CAAC;IACjD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;CACnD;AAED,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,yBAAyB,CAAC;CAC/C;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,gCAAgC,CAAC;IAC1D,QAAQ,CAAC,gBAAgB,EAAE,OAAO,mCAAmC,CAAC;IACtE,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,CACjB,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,6BAA6B,KACnC,OAAO,CAAC,cAAc,CAAC,CAAC;CAC7B;AAED,qBAAa,2BAA4B,SAAQ,KAAK;aAElB,IAAI,EAAE,MAAM;IAD/C,SAAyB,IAAI,iCAAiC;gBAC3B,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAGhE;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC3C,YAAY,GAAE,kCAAuC,GACnD,sBAAsB,CAmBxB"}
@@ -0,0 +1,65 @@
1
+ import { validateKernelInput, validateKernelOutput, } from './contract.js';
2
+ import { compileWithLegacyKernel } from './legacy-adapter.js';
3
+ export const INTERNAL_COMPILER_FACADE_VERSION = 1;
4
+ export const INTERNAL_COMPILER_DEFAULT_SELECTION = 'legacy';
5
+ export class InternalCompilerFacadeError extends Error {
6
+ path;
7
+ name = 'InternalCompilerFacadeError';
8
+ constructor(path, message) {
9
+ super(`${path}: ${message}`);
10
+ this.path = path;
11
+ }
12
+ }
13
+ /**
14
+ * Create the internal compiler selection boundary.
15
+ *
16
+ * The production default is intentionally fixed to Legacy. Self-host execution
17
+ * is available only when a caller supplies a compiler dependency and selects it
18
+ * explicitly for one invocation. This boundary does not read environment
19
+ * variables, persist selection, or mutate the public compiler API.
20
+ */
21
+ export function createInternalCompilerFacade(dependencies = {}) {
22
+ const legacyCompiler = dependencies.legacyCompiler ?? compileWithLegacyKernel;
23
+ const selfHostCompiler = dependencies.selfHostCompiler;
24
+ return Object.freeze({
25
+ version: INTERNAL_COMPILER_FACADE_VERSION,
26
+ defaultSelection: INTERNAL_COMPILER_DEFAULT_SELECTION,
27
+ selfHostAvailable: selfHostCompiler !== undefined,
28
+ async compile(value, options = {}) {
29
+ const input = validateKernelInput(value);
30
+ const selection = parseSelection(options);
31
+ const compiler = selection === 'legacy'
32
+ ? legacyCompiler
33
+ : requireSelfHostCompiler(selfHostCompiler);
34
+ return validateKernelOutput(await compiler(input));
35
+ },
36
+ });
37
+ }
38
+ function parseSelection(value) {
39
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
40
+ throw new InternalCompilerFacadeError('options', 'expected a plain object');
41
+ }
42
+ const prototype = Object.getPrototypeOf(value);
43
+ if (prototype !== Object.prototype && prototype !== null) {
44
+ throw new InternalCompilerFacadeError('options', 'expected a plain object');
45
+ }
46
+ const options = value;
47
+ for (const key of Object.keys(options)) {
48
+ if (key !== 'selection')
49
+ throw new InternalCompilerFacadeError(`options.${key}`, 'unknown property');
50
+ }
51
+ if (!Object.hasOwn(options, 'selection') || options.selection === undefined) {
52
+ return INTERNAL_COMPILER_DEFAULT_SELECTION;
53
+ }
54
+ if (options.selection !== 'legacy' && options.selection !== 'self-host') {
55
+ throw new InternalCompilerFacadeError('options.selection', 'expected legacy or self-host');
56
+ }
57
+ return options.selection;
58
+ }
59
+ function requireSelfHostCompiler(compiler) {
60
+ if (compiler === undefined) {
61
+ throw new InternalCompilerFacadeError('options.selection', 'self-host was selected but no self-host compiler is available');
62
+ }
63
+ return compiler;
64
+ }
65
+ //# sourceMappingURL=compiler-facade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiler-facade.js","sourceRoot":"","sources":["../../../src/selfhost/compiler-facade.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,mBAAmB,EACnB,oBAAoB,GAGpB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAU,CAAC;AAC3D,MAAM,CAAC,MAAM,mCAAmC,GAAG,QAAiB,CAAC;AA0BrE,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAElB;IADV,IAAI,GAAG,6BAA6B,CAAC;IAC9D,YAAmC,IAAY,EAAE,OAAe;QAC/D,KAAK,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QADK,SAAI,GAAJ,IAAI,CAAQ;IAE/C,CAAC;CACD;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAC3C,eAAmD,EAAE;IAErD,MAAM,cAAc,GAAG,YAAY,CAAC,cAAc,IAAI,uBAAuB,CAAC;IAC9E,MAAM,gBAAgB,GAAG,YAAY,CAAC,gBAAgB,CAAC;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC;QACpB,OAAO,EAAE,gCAAgC;QACzC,gBAAgB,EAAE,mCAAmC;QACrD,iBAAiB,EAAE,gBAAgB,KAAK,SAAS;QACjD,KAAK,CAAC,OAAO,CACZ,KAAc,EACd,UAAyC,EAAE;YAE3C,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,SAAS,KAAK,QAAQ;gBACtC,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,CAAC;YAC7C,OAAO,oBAAoB,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QACpD,CAAC;KACD,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,2BAA2B,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QAC1D,MAAM,IAAI,2BAA2B,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAC;IAC7E,CAAC;IACD,MAAM,OAAO,GAAG,KAAgC,CAAC;IACjD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,IAAI,GAAG,KAAK,WAAW;YAAE,MAAM,IAAI,2BAA2B,CAAC,WAAW,GAAG,EAAE,EAAE,kBAAkB,CAAC,CAAC;IACtG,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAC7E,OAAO,mCAAmC,CAAC;IAC5C,CAAC;IACD,IAAI,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;QACzE,MAAM,IAAI,2BAA2B,CACpC,mBAAmB,EACnB,8BAA8B,CAC9B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,SAAS,CAAC;AAC1B,CAAC;AAED,SAAS,uBAAuB,CAC/B,QAA4C;IAE5C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,2BAA2B,CACpC,mBAAmB,EACnB,+DAA+D,CAC/D,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC"}
@@ -0,0 +1,151 @@
1
+ export declare const KERNEL_CONTRACT_VERSION: "1";
2
+ export declare const KERNEL_LANGUAGE_VERSION: "1.0";
3
+ export declare const KERNEL_INTEROP_MANIFEST_VERSION: "1";
4
+ export type JsonPrimitive = string | number | boolean | null;
5
+ export type JsonValue = JsonPrimitive | JsonObject | readonly JsonValue[];
6
+ export interface JsonObject {
7
+ readonly [key: string]: JsonValue;
8
+ }
9
+ export type KernelPlatform = 'node' | 'browser' | 'neutral';
10
+ export type KernelInteropImportKind = 'named' | 'default' | 'namespace' | 'type-only' | 'side-effect';
11
+ export type KernelRuntimeFormat = 'esm' | 'commonjs' | 'builtin' | 'bundler' | 'unknown';
12
+ export interface KernelSourceV1 {
13
+ readonly path: string;
14
+ readonly text: string;
15
+ }
16
+ export interface KernelInteropImportV1 extends JsonObject {
17
+ readonly kind: KernelInteropImportKind;
18
+ readonly importedName?: string;
19
+ }
20
+ export interface KernelModuleResolutionWitnessV1 extends JsonObject {
21
+ readonly moduleSpecifier: string;
22
+ readonly packageName?: string;
23
+ readonly packageVersion?: string;
24
+ readonly declarationPackageName?: string;
25
+ readonly declarationPackageVersion?: string;
26
+ readonly declarationEntry?: string;
27
+ readonly runtimeEntry?: string;
28
+ readonly runtimeFormat?: KernelRuntimeFormat;
29
+ readonly conditions: readonly string[];
30
+ readonly platform: KernelPlatform;
31
+ readonly providerVersion: string;
32
+ readonly declarationGraphHash?: string;
33
+ readonly packageJsonHash?: string;
34
+ readonly declarationPackageJsonHash?: string;
35
+ }
36
+ export interface KernelInteropMetadataV1 extends JsonObject {
37
+ readonly imports?: readonly KernelInteropImportV1[];
38
+ readonly resolutionWitness?: KernelModuleResolutionWitnessV1;
39
+ }
40
+ export interface KernelInteropModuleV1 {
41
+ readonly specifier: string;
42
+ readonly metadata: KernelInteropMetadataV1;
43
+ }
44
+ export interface KernelInteropManifestV1 {
45
+ readonly version: typeof KERNEL_INTEROP_MANIFEST_VERSION;
46
+ readonly modules: readonly KernelInteropModuleV1[];
47
+ }
48
+ export interface KernelEmitOptionsV1 {
49
+ readonly target: 'es2022';
50
+ readonly sourceMap: boolean;
51
+ readonly sourcesContent: boolean;
52
+ }
53
+ export interface KernelInputV1 {
54
+ readonly contractVersion: typeof KERNEL_CONTRACT_VERSION;
55
+ readonly languageVersion: typeof KERNEL_LANGUAGE_VERSION;
56
+ readonly platform: KernelPlatform;
57
+ readonly entryPath: string;
58
+ readonly sources: readonly KernelSourceV1[];
59
+ readonly interopManifest: KernelInteropManifestV1;
60
+ readonly emit: KernelEmitOptionsV1;
61
+ }
62
+ export interface KernelPositionV1 {
63
+ readonly offset: number;
64
+ readonly line: number;
65
+ readonly column: number;
66
+ }
67
+ export interface KernelSpanV1 {
68
+ readonly start: KernelPositionV1;
69
+ readonly end: KernelPositionV1;
70
+ }
71
+ export interface KernelRelatedDiagnosticV1 {
72
+ readonly message: string;
73
+ readonly sourcePath?: string;
74
+ readonly span: KernelSpanV1;
75
+ }
76
+ export interface KernelDiagnosticFixV1 {
77
+ readonly id?: string;
78
+ readonly title: string;
79
+ readonly kind: 'insert' | 'replace' | 'remove' | 'rewrite';
80
+ readonly sourcePath?: string;
81
+ readonly span?: KernelSpanV1;
82
+ readonly text?: string;
83
+ }
84
+ export interface KernelDiagnosticCauseV1 {
85
+ readonly kind: 'unknown' | 'internal';
86
+ readonly message: string;
87
+ readonly name?: string;
88
+ readonly stack?: string;
89
+ }
90
+ export interface KernelDiagnosticV1 {
91
+ readonly code: string;
92
+ readonly severity: 'error' | 'warning' | 'information' | 'hint';
93
+ readonly message: string;
94
+ readonly sourcePath?: string;
95
+ readonly span: KernelSpanV1;
96
+ readonly related?: readonly KernelRelatedDiagnosticV1[];
97
+ readonly help?: string;
98
+ readonly fixes?: readonly KernelDiagnosticFixV1[];
99
+ readonly cause?: KernelDiagnosticCauseV1;
100
+ }
101
+ export interface KernelEmittedModuleV1 {
102
+ readonly sourcePath: string;
103
+ readonly outputPath: string;
104
+ readonly code: string;
105
+ readonly sourceMap: string;
106
+ }
107
+ export interface KernelDependencyV1 {
108
+ readonly modulePath: string;
109
+ readonly sourceKind: 'virune' | 'javascript';
110
+ readonly specifier: string;
111
+ readonly resolvedPath?: string;
112
+ readonly typeOnly: boolean;
113
+ readonly public: boolean;
114
+ }
115
+ export interface KernelExportedSymbolV1 {
116
+ readonly modulePath: string;
117
+ readonly name: string;
118
+ readonly declarationKind: string;
119
+ }
120
+ export interface KernelCompilationStatsV1 {
121
+ readonly parsedModules: number;
122
+ readonly reusedParsedModules: number;
123
+ readonly checkedModules: number;
124
+ readonly reusedCheckedModules: number;
125
+ readonly emittedModules: number;
126
+ readonly reusedEmittedModules: number;
127
+ readonly invalidatedModules: number;
128
+ }
129
+ export interface KernelOutputV1 {
130
+ readonly contractVersion: typeof KERNEL_CONTRACT_VERSION;
131
+ readonly languageVersion: typeof KERNEL_LANGUAGE_VERSION;
132
+ readonly platform: KernelPlatform;
133
+ readonly entryPath: string;
134
+ readonly accepted: boolean;
135
+ readonly diagnostics: readonly KernelDiagnosticV1[];
136
+ readonly emittedModules: readonly KernelEmittedModuleV1[];
137
+ readonly dependencies: readonly KernelDependencyV1[];
138
+ readonly exportedSymbols: readonly KernelExportedSymbolV1[];
139
+ readonly stats: KernelCompilationStatsV1;
140
+ }
141
+ export declare class KernelContractError extends Error {
142
+ readonly path: string;
143
+ readonly name = "KernelContractError";
144
+ constructor(path: string, message: string);
145
+ }
146
+ export declare function normalizeKernelPath(value: string, path?: string): string;
147
+ export declare function validateKernelInput(value: unknown): KernelInputV1;
148
+ export declare function validateKernelOutput(value: unknown): KernelOutputV1;
149
+ export declare function roundTripKernelInput(value: KernelInputV1): KernelInputV1;
150
+ export declare function roundTripKernelOutput(value: KernelOutputV1): KernelOutputV1;
151
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../src/selfhost/contract.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,EAAG,GAAY,CAAC;AACpD,eAAO,MAAM,uBAAuB,EAAG,KAAc,CAAC;AACtD,eAAO,MAAM,+BAA+B,EAAG,GAAY,CAAC;AAE5D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAC7D,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,UAAU,GAAG,SAAS,SAAS,EAAE,CAAC;AAC1E,MAAM,WAAW,UAAU;IAAG,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CAAE;AAElE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAC5D,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,aAAa,CAAC;AACtG,MAAM,MAAM,mBAAmB,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzF,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACxD,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,+BAAgC,SAAQ,UAAU;IAClE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,0BAA0B,CAAC,EAAE,MAAM,CAAC;CAC7C;AAED,MAAM,WAAW,uBAAwB,SAAQ,UAAU;IAC1D,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACpD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,+BAA+B,CAAC;CAC7D;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;CAC3C;AAED,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,OAAO,EAAE,OAAO,+BAA+B,CAAC;IACzD,QAAQ,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,eAAe,EAAE,OAAO,uBAAuB,CAAC;IACzD,QAAQ,CAAC,eAAe,EAAE,OAAO,uBAAuB,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,eAAe,EAAE,uBAAuB,CAAC;IAClD,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;CAC/B;AAED,MAAM,WAAW,yBAAyB;IACzC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;CAC5B;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,UAAU,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,CAAC;IAChE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAClD,QAAQ,CAAC,KAAK,CAAC,EAAE,uBAAuB,CAAC;CACzC;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,QAAQ,GAAG,YAAY,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,eAAe,EAAE,OAAO,uBAAuB,CAAC;IACzD,QAAQ,CAAC,eAAe,EAAE,OAAO,uBAAuB,CAAC;IACzD,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,EAAE,SAAS,qBAAqB,EAAE,CAAC;IAC1D,QAAQ,CAAC,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACrD,QAAQ,CAAC,eAAe,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC5D,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;CACzC;AAED,qBAAa,mBAAoB,SAAQ,KAAK;aAEV,IAAI,EAAE,MAAM;IAD/C,SAAyB,IAAI,yBAAyB;gBACnB,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAGhE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,SAAM,GAAG,MAAM,CAiBrE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CA2BjE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAenE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa,CAExE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,cAAc,CAE3E"}