@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,186 @@
1
+ import { BASE_RUNTIME_IMPORT_LINE } from '../codegen/runtime-imports.js';
2
+ import { KERNEL_CONTRACT_VERSION, KERNEL_LANGUAGE_VERSION, validateKernelInput, validateKernelOutput, } from './contract.js';
3
+ import { compileWithLegacyKernel } from './legacy-adapter.js';
4
+ export class SelfhostMvpError extends Error {
5
+ details;
6
+ name = 'SelfhostMvpError';
7
+ constructor(message, details) {
8
+ super(message);
9
+ this.details = details;
10
+ }
11
+ }
12
+ export function createSelfhostMvpKernel(module) {
13
+ return {
14
+ name: 'selfhost-mvp',
15
+ compile: input => compileWithSelfhostMvp(module, input),
16
+ };
17
+ }
18
+ export const legacyMvpKernel = {
19
+ name: 'legacy-mvp',
20
+ compile: compileWithLegacyMvp,
21
+ };
22
+ export async function compileWithLegacyMvp(value) {
23
+ const input = validateMvpInput(value);
24
+ const output = await compileWithLegacyKernel(input);
25
+ return validateKernelOutput({
26
+ ...output,
27
+ emittedModules: output.emittedModules.map(module => ({ ...module, sourceMap: '' })),
28
+ });
29
+ }
30
+ export async function compileWithSelfhostMvp(module, value) {
31
+ const input = validateMvpInput(value);
32
+ const source = input.sources[0];
33
+ const encoded = unwrapResult(module.compileMvp(source.text), 'Virune MVP compilation failed');
34
+ const compilation = validateCompilation(JSON.parse(encoded));
35
+ const diagnostics = compilation.diagnostics.map(diagnostic => ({
36
+ code: diagnostic.code,
37
+ severity: validateSeverity(diagnostic.severity),
38
+ message: diagnostic.message,
39
+ sourcePath: source.path,
40
+ span: normalizeLegacyDiagnosticSpan(diagnostic.span),
41
+ }));
42
+ const accepted = compilation.accepted && !diagnostics.some(diagnostic => diagnostic.severity === 'error');
43
+ const outputPath = `.selfhost-output/${source.path.replace(/\.virune$/u, '.js')}`;
44
+ const output = {
45
+ contractVersion: KERNEL_CONTRACT_VERSION,
46
+ languageVersion: KERNEL_LANGUAGE_VERSION,
47
+ platform: input.platform,
48
+ entryPath: input.entryPath,
49
+ accepted,
50
+ diagnostics,
51
+ emittedModules: accepted ? [{
52
+ sourcePath: source.path,
53
+ outputPath,
54
+ code: `${BASE_RUNTIME_IMPORT_LINE}\n\n${compilation.codeBody}`,
55
+ sourceMap: '',
56
+ }] : [],
57
+ dependencies: [],
58
+ exportedSymbols: compilation.exports.map(item => ({
59
+ modulePath: source.path,
60
+ name: item.name,
61
+ declarationKind: item.declarationKind,
62
+ })),
63
+ stats: {
64
+ parsedModules: 1,
65
+ reusedParsedModules: 0,
66
+ checkedModules: 1,
67
+ reusedCheckedModules: 0,
68
+ emittedModules: accepted ? 1 : 0,
69
+ reusedEmittedModules: 0,
70
+ invalidatedModules: 0,
71
+ },
72
+ };
73
+ return validateKernelOutput(output);
74
+ }
75
+ /**
76
+ * The production parser preserves Chevrotain's inclusive endOffset while its
77
+ * line and column values denote the exclusive cursor position. The Virune MVP
78
+ * uses exclusive offsets internally, so the Host adapts only this historical
79
+ * contract quirk before differential comparison.
80
+ */
81
+ function normalizeLegacyDiagnosticSpan(span) {
82
+ return {
83
+ start: span.start,
84
+ end: {
85
+ ...span.end,
86
+ offset: span.end.offset > span.start.offset ? span.end.offset - 1 : span.end.offset,
87
+ },
88
+ };
89
+ }
90
+ function validateMvpInput(value) {
91
+ const input = validateKernelInput(value);
92
+ if (input.sources.length !== 1)
93
+ throw new SelfhostMvpError('MVP supports exactly one source module');
94
+ if (input.entryPath !== input.sources[0]?.path)
95
+ throw new SelfhostMvpError('MVP entry must be the only source module');
96
+ if (input.interopManifest.modules.length !== 0)
97
+ throw new SelfhostMvpError('MVP does not support JavaScript interop');
98
+ if (input.platform !== 'node')
99
+ throw new SelfhostMvpError('MVP differential runtime currently requires the node platform');
100
+ if (input.emit.sourceMap)
101
+ throw new SelfhostMvpError('MVP delegates source-map encoding to the Host; differential fixtures must disable source maps');
102
+ return input;
103
+ }
104
+ function unwrapResult(result, message) {
105
+ const value = result.$values[0];
106
+ if (result.$tag === 'Ok')
107
+ return value;
108
+ throw new SelfhostMvpError(message, value);
109
+ }
110
+ function validateCompilation(value) {
111
+ const record = object(value, '$');
112
+ exactKeys(record, ['accepted', 'diagnostics', 'codeBody', 'exports'], '$');
113
+ if (typeof record.accepted !== 'boolean')
114
+ throw new SelfhostMvpError('$.accepted must be boolean');
115
+ if (typeof record.codeBody !== 'string')
116
+ throw new SelfhostMvpError('$.codeBody must be string');
117
+ if (!Array.isArray(record.diagnostics))
118
+ throw new SelfhostMvpError('$.diagnostics must be an array');
119
+ if (!Array.isArray(record.exports))
120
+ throw new SelfhostMvpError('$.exports must be an array');
121
+ return {
122
+ accepted: record.accepted,
123
+ codeBody: record.codeBody,
124
+ diagnostics: record.diagnostics.map((item, index) => validateDiagnostic(item, `$.diagnostics[${index}]`)),
125
+ exports: record.exports.map((item, index) => validateExport(item, `$.exports[${index}]`)),
126
+ };
127
+ }
128
+ function validateDiagnostic(value, path) {
129
+ const record = object(value, path);
130
+ exactKeys(record, ['code', 'severity', 'message', 'span'], path);
131
+ return {
132
+ code: text(record.code, `${path}.code`),
133
+ severity: text(record.severity, `${path}.severity`),
134
+ message: text(record.message, `${path}.message`),
135
+ span: validateSpan(record.span, `${path}.span`),
136
+ };
137
+ }
138
+ function validateExport(value, path) {
139
+ const record = object(value, path);
140
+ exactKeys(record, ['name', 'declarationKind'], path);
141
+ return {
142
+ name: text(record.name, `${path}.name`),
143
+ declarationKind: text(record.declarationKind, `${path}.declarationKind`),
144
+ };
145
+ }
146
+ function validateSpan(value, path) {
147
+ const record = object(value, path);
148
+ exactKeys(record, ['start', 'end'], path);
149
+ return { start: validatePosition(record.start, `${path}.start`), end: validatePosition(record.end, `${path}.end`) };
150
+ }
151
+ function validatePosition(value, path) {
152
+ const record = object(value, path);
153
+ exactKeys(record, ['offset', 'line', 'column'], path);
154
+ return {
155
+ offset: integer(record.offset, `${path}.offset`, 0),
156
+ line: integer(record.line, `${path}.line`, 1),
157
+ column: integer(record.column, `${path}.column`, 1),
158
+ };
159
+ }
160
+ function validateSeverity(value) {
161
+ if (value === 'error' || value === 'warning' || value === 'information' || value === 'hint')
162
+ return value;
163
+ throw new SelfhostMvpError(`Unsupported diagnostic severity ${value}`);
164
+ }
165
+ function object(value, path) {
166
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
167
+ throw new SelfhostMvpError(`${path} must be an object`);
168
+ return value;
169
+ }
170
+ function text(value, path) {
171
+ if (typeof value !== 'string')
172
+ throw new SelfhostMvpError(`${path} must be string`);
173
+ return value;
174
+ }
175
+ function integer(value, path, minimum) {
176
+ if (!Number.isInteger(value) || value < minimum)
177
+ throw new SelfhostMvpError(`${path} must be an integer >= ${minimum}`);
178
+ return value;
179
+ }
180
+ function exactKeys(value, keys, path) {
181
+ const expected = [...keys].sort();
182
+ const actual = Object.keys(value).sort();
183
+ if (JSON.stringify(actual) !== JSON.stringify(expected))
184
+ throw new SelfhostMvpError(`${path} keys must be exactly ${expected.join(', ')}`);
185
+ }
186
+ //# sourceMappingURL=mvp-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mvp-adapter.js","sourceRoot":"","sources":["../../../src/selfhost/mvp-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { type KernelInputV1, type KernelOutputV1 } from './contract.js';
2
+ import { type DifferentialExecutionV1 } from './differential-harness.js';
3
+ export declare function executeKernelOutputWithNode(input: KernelInputV1, output: KernelOutputV1, { timeoutMs }?: {
4
+ readonly timeoutMs?: number;
5
+ }): Promise<DifferentialExecutionV1>;
6
+ //# sourceMappingURL=node-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-executor.d.ts","sourceRoot":"","sources":["../../../src/selfhost/node-executor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuC,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAC7G,OAAO,EAA2B,KAAK,uBAAuB,EAA4B,MAAM,2BAA2B,CAAC;AAI5H,wBAAsB,2BAA2B,CAChD,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,EAAE,SAAkB,EAAE,GAAE;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1D,OAAO,CAAC,uBAAuB,CAAC,CA+ClC"}
@@ -0,0 +1,138 @@
1
+ import { spawnSync } from 'node:child_process';
2
+ import { mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
3
+ import { dirname, relative, resolve, sep } from 'node:path';
4
+ import { fileURLToPath, pathToFileURL } from 'node:url';
5
+ import { normalizeKernelPath } from './contract.js';
6
+ import { DifferentialPolicyError } from './differential-harness.js';
7
+ const repositoryRoot = resolve(fileURLToPath(new URL('../../../../..', import.meta.url)));
8
+ export async function executeKernelOutputWithNode(input, output, { timeoutMs = 10_000 } = {}) {
9
+ if (!output.accepted)
10
+ return emptyExecution();
11
+ const cacheRoot = resolve(repositoryRoot, '.cache');
12
+ await mkdir(cacheRoot, { recursive: true });
13
+ const runtimeRoot = await mkdtemp(resolve(cacheRoot, 'selfhost-differential-runtime-'));
14
+ try {
15
+ for (const module of output.emittedModules) {
16
+ const path = containedPath(runtimeRoot, module.outputPath);
17
+ await mkdir(dirname(path), { recursive: true });
18
+ await writeFile(path, module.code, 'utf8');
19
+ if (module.sourceMap !== '')
20
+ await writeFile(`${path}.map`, module.sourceMap, 'utf8');
21
+ }
22
+ const entry = output.emittedModules.find(module => module.sourcePath === input.entryPath);
23
+ if (entry === undefined)
24
+ return executionFailure('EntryOutputMissing', `No emitted module for ${input.entryPath}`, '', '', 1, null);
25
+ const resultPath = resolve(runtimeRoot, 'result.json');
26
+ const wrapperPath = resolve(runtimeRoot, 'run.mjs');
27
+ const entryUrl = pathToFileURL(containedPath(runtimeRoot, entry.outputPath)).href;
28
+ await writeFile(resolve(runtimeRoot, 'package.json'), '{"type":"module"}\n', 'utf8');
29
+ await writeFile(wrapperPath, runtimeWrapper(entryUrl, resultPath), 'utf8');
30
+ const result = spawnSync(process.execPath, [wrapperPath], {
31
+ cwd: repositoryRoot,
32
+ encoding: 'utf8',
33
+ timeout: timeoutMs,
34
+ maxBuffer: 64 * 1024 * 1024,
35
+ });
36
+ const stdout = normalizeText(result.stdout ?? '');
37
+ const stderr = normalizeText(result.stderr ?? '');
38
+ let runtimeResult = null;
39
+ try {
40
+ runtimeResult = JSON.parse(await readFile(resultPath, 'utf8'));
41
+ }
42
+ catch { /* A hard process failure may prevent the result file from being written. */ }
43
+ const panic = runtimeResult?.panic === null
44
+ ? null
45
+ : runtimeResult?.panic === undefined
46
+ ? panicFromProcess(result.error, stderr, runtimeRoot)
47
+ : normalizePanic(runtimeResult.panic, runtimeRoot);
48
+ return {
49
+ returnValue: canonicalJson(runtimeResult?.returnValue ?? null),
50
+ stdout,
51
+ stderr,
52
+ exitCode: result.status ?? (panic === null ? 0 : 1),
53
+ signal: result.signal,
54
+ panic,
55
+ events: eventTrace(stdout),
56
+ };
57
+ }
58
+ finally {
59
+ await rm(runtimeRoot, { recursive: true, force: true });
60
+ }
61
+ }
62
+ function emptyExecution() {
63
+ return { returnValue: null, stdout: '', stderr: '', exitCode: 0, signal: null, panic: null, events: [] };
64
+ }
65
+ function executionFailure(name, message, stdout, stderr, exitCode, signal) {
66
+ return { returnValue: null, stdout, stderr, exitCode, signal, panic: { name, message, stack: null }, events: eventTrace(stdout) };
67
+ }
68
+ function panicFromProcess(error, stderr, runtimeRoot) {
69
+ if (error !== undefined)
70
+ return normalizePanic({ name: error.name, message: error.message, stack: error.stack ?? null }, runtimeRoot);
71
+ if (stderr.trim() !== '')
72
+ return normalizePanic({ name: 'RuntimeProcessError', message: stderr.trim(), stack: null }, runtimeRoot);
73
+ return null;
74
+ }
75
+ function normalizePanic(panic, runtimeRoot) {
76
+ const normalize = (value) => {
77
+ let output = normalizeText(value);
78
+ for (const candidate of [runtimeRoot, runtimeRoot.split(sep).join('/')])
79
+ output = output.replaceAll(candidate, '<runtime-root>');
80
+ return output;
81
+ };
82
+ return { name: panic.name, message: normalize(panic.message), stack: panic.stack === null ? null : normalize(panic.stack) };
83
+ }
84
+ function eventTrace(stdout) {
85
+ return normalizeText(stdout).split('\n').filter(line => line.length > 0);
86
+ }
87
+ function containedPath(root, path) {
88
+ const normalized = normalizeKernelPath(path);
89
+ const absolute = resolve(root, ...normalized.split('/'));
90
+ const relation = relative(root, absolute);
91
+ if (relation === '..' || relation.startsWith(`..${sep}`))
92
+ throw new DifferentialPolicyError(`output path escapes runtime root: ${path}`);
93
+ return absolute;
94
+ }
95
+ function canonicalJson(value) {
96
+ if (value === null || typeof value === 'string' || typeof value === 'boolean')
97
+ return value;
98
+ if (typeof value === 'number')
99
+ return Number.isFinite(value) ? value : String(value);
100
+ if (typeof value === 'bigint')
101
+ return { $type: 'bigint', value: value.toString() };
102
+ if (value === undefined)
103
+ return { $type: 'undefined' };
104
+ if (Array.isArray(value))
105
+ return value.map(canonicalJson);
106
+ if (typeof value !== 'object')
107
+ return { $type: typeof value, value: String(value) };
108
+ const record = value;
109
+ const output = {};
110
+ for (const key of Object.keys(record).sort())
111
+ output[key] = canonicalJson(record[key]);
112
+ return output;
113
+ }
114
+ function normalizeText(value) {
115
+ return value.replaceAll('\r\n', '\n').replaceAll('\r', '\n');
116
+ }
117
+ function runtimeWrapper(entryUrl, resultPath) {
118
+ return `import { writeFile } from 'node:fs/promises';\n` +
119
+ `const resultPath = ${JSON.stringify(resultPath)};\n` +
120
+ `const normalize = value => {\n` +
121
+ `\tif (value === undefined) return { $type: 'undefined' };\n` +
122
+ `\tif (typeof value === 'bigint') return { $type: 'bigint', value: value.toString() };\n` +
123
+ `\tif (typeof value === 'number' && !Number.isFinite(value)) return String(value);\n` +
124
+ `\tif (Array.isArray(value)) return value.map(normalize);\n` +
125
+ `\tif (value !== null && typeof value === 'object') return Object.fromEntries(Object.keys(value).sort().map(key => [key, normalize(value[key])]));\n` +
126
+ `\treturn value;\n` +
127
+ `};\n` +
128
+ `try {\n` +
129
+ `\tconst module = await import(${JSON.stringify(entryUrl)});\n` +
130
+ `\tconst value = typeof module.main === 'function' ? await module.main() : null;\n` +
131
+ `\tawait writeFile(resultPath, JSON.stringify({ returnValue: normalize(value), panic: null }));\n` +
132
+ `} catch (error) {\n` +
133
+ `\tconst panic = error instanceof Error ? { name: error.name, message: error.message, stack: error.stack ?? null } : { name: 'UnknownPanic', message: String(error), stack: null };\n` +
134
+ `\tawait writeFile(resultPath, JSON.stringify({ returnValue: null, panic }));\n` +
135
+ `\tprocess.exitCode = 1;\n` +
136
+ `}\n`;
137
+ }
138
+ //# sourceMappingURL=node-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-executor.js","sourceRoot":"","sources":["../../../src/selfhost/node-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import { KERNEL_LANGUAGE_VERSION } from './contract.js';
2
+ import { type SelfhostMvpModule, type ViruneResultValue } from './mvp-adapter.js';
3
+ export declare const PROJECT_COMPILER_CONTRACT_VERSION: "1";
4
+ export declare const PROJECT_COMPILER_REQUEST_SCHEMA: "virune.selfhost.project-compiler.request.v1";
5
+ export declare const PROJECT_COMPILER_RESULT_SCHEMA: "virune.selfhost.project-compiler.result.v2";
6
+ export interface SelfhostProjectCompilerModule extends SelfhostMvpModule {
7
+ readonly projectCompilerCapability: () => ViruneResultValue<string>;
8
+ readonly compileProjectMvp: (request: string) => ViruneResultValue<string>;
9
+ }
10
+ export interface ProjectCompilerCapabilityV1 {
11
+ readonly contractVersion: typeof PROJECT_COMPILER_CONTRACT_VERSION;
12
+ readonly ready: boolean;
13
+ readonly requestSchema: typeof PROJECT_COMPILER_REQUEST_SCHEMA;
14
+ readonly resultSchema: typeof PROJECT_COMPILER_RESULT_SCHEMA;
15
+ readonly blockers: readonly string[];
16
+ }
17
+ export interface ProjectCompilerPositionV1 {
18
+ readonly offset: number;
19
+ readonly line: number;
20
+ readonly column: number;
21
+ }
22
+ export interface ProjectCompilerSpanV1 {
23
+ readonly start: ProjectCompilerPositionV1;
24
+ readonly end: ProjectCompilerPositionV1;
25
+ }
26
+ export interface ProjectCompilerDiagnosticV1 {
27
+ readonly code: string;
28
+ readonly severity: 'error';
29
+ readonly message: string;
30
+ readonly sourcePath: string | null;
31
+ readonly span: ProjectCompilerSpanV1;
32
+ readonly notes: readonly string[];
33
+ }
34
+ export interface ProjectCompilerEmittedModuleV1 {
35
+ readonly sourcePath: string;
36
+ readonly outputPath: string;
37
+ readonly code: string;
38
+ readonly sourceMap: string;
39
+ }
40
+ export interface ProjectCompilerDependencyV1 {
41
+ readonly modulePath: string;
42
+ readonly sourceKind: 'virune' | 'javascript';
43
+ readonly specifier: string;
44
+ readonly resolvedPath: string | null;
45
+ readonly typeOnly: boolean;
46
+ readonly public: boolean;
47
+ }
48
+ export interface ProjectCompilerExportedSymbolV1 {
49
+ readonly modulePath: string;
50
+ readonly name: string;
51
+ readonly declarationKind: string;
52
+ }
53
+ export interface ProjectCompilerStatsV1 {
54
+ readonly parsedModules: number;
55
+ readonly reusedParsedModules: number;
56
+ readonly checkedModules: number;
57
+ readonly reusedCheckedModules: number;
58
+ readonly emittedModules: number;
59
+ readonly reusedEmittedModules: number;
60
+ readonly invalidatedModules: number;
61
+ }
62
+ export interface ProjectCompilerResultV1 {
63
+ readonly contractVersion: typeof PROJECT_COMPILER_CONTRACT_VERSION;
64
+ readonly languageVersion: typeof KERNEL_LANGUAGE_VERSION;
65
+ readonly platform: 'node';
66
+ readonly entryPath: string;
67
+ readonly accepted: boolean;
68
+ readonly diagnostics: readonly ProjectCompilerDiagnosticV1[];
69
+ readonly emittedModules: readonly ProjectCompilerEmittedModuleV1[];
70
+ readonly dependencies: readonly ProjectCompilerDependencyV1[];
71
+ readonly exportedSymbols: readonly ProjectCompilerExportedSymbolV1[];
72
+ readonly stats: ProjectCompilerStatsV1;
73
+ }
74
+ export declare function hasSelfhostProjectCompilerExports(module: SelfhostMvpModule): module is SelfhostProjectCompilerModule;
75
+ export declare function readProjectCompilerCapability(module: SelfhostMvpModule): ProjectCompilerCapabilityV1 | null;
76
+ export declare function compileWithProjectCompilerBoundary(module: SelfhostMvpModule, value: unknown): ProjectCompilerResultV1;
77
+ //# sourceMappingURL=project-compiler-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-compiler-adapter.d.ts","sourceRoot":"","sources":["../../../src/selfhost/project-compiler-adapter.ts"],"names":[],"mappings":"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"}