@zxyycom/vibe-check 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (767) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +154 -0
  3. package/dist/esm/check/check.mjs +5 -0
  4. package/dist/esm/check/check.mjs.map +1 -0
  5. package/dist/esm/check/descriptor-validation.mjs +37 -0
  6. package/dist/esm/check/descriptor-validation.mjs.map +1 -0
  7. package/dist/esm/check/descriptor.mjs +2 -0
  8. package/dist/esm/check/descriptor.mjs.map +1 -0
  9. package/dist/esm/check/inherited-collection.mjs +62 -0
  10. package/dist/esm/check/inherited-collection.mjs.map +1 -0
  11. package/dist/esm/check/options-snapshot.mjs +75 -0
  12. package/dist/esm/check/options-snapshot.mjs.map +1 -0
  13. package/dist/esm/check-settlement/fact-validation.mjs +216 -0
  14. package/dist/esm/check-settlement/fact-validation.mjs.map +1 -0
  15. package/dist/esm/check-settlement/facts.mjs +2 -0
  16. package/dist/esm/check-settlement/facts.mjs.map +1 -0
  17. package/dist/esm/check-settlement/outcome-normalization.mjs +80 -0
  18. package/dist/esm/check-settlement/outcome-normalization.mjs.map +1 -0
  19. package/dist/esm/check-settlement/record-store.mjs +59 -0
  20. package/dist/esm/check-settlement/record-store.mjs.map +1 -0
  21. package/dist/esm/check-settlement/session.mjs +179 -0
  22. package/dist/esm/check-settlement/session.mjs.map +1 -0
  23. package/dist/esm/data-boundary/canonical-data.mjs +159 -0
  24. package/dist/esm/data-boundary/canonical-data.mjs.map +1 -0
  25. package/dist/esm/data-boundary/canonical-json.mjs +2 -0
  26. package/dist/esm/data-boundary/canonical-json.mjs.map +1 -0
  27. package/dist/esm/data-boundary/closed-values.mjs +98 -0
  28. package/dist/esm/data-boundary/closed-values.mjs.map +1 -0
  29. package/dist/esm/data-boundary/value-shapes.mjs +13 -0
  30. package/dist/esm/data-boundary/value-shapes.mjs.map +1 -0
  31. package/dist/esm/finding-waivers/reconciliation.mjs +84 -0
  32. package/dist/esm/finding-waivers/reconciliation.mjs.map +1 -0
  33. package/dist/esm/index.mjs +26 -0
  34. package/dist/esm/index.mjs.map +1 -0
  35. package/dist/esm/machine-output/v4/atomic-publication.mjs +102 -0
  36. package/dist/esm/machine-output/v4/atomic-publication.mjs.map +1 -0
  37. package/dist/esm/machine-output/v4/freeze-publication-value.mjs +14 -0
  38. package/dist/esm/machine-output/v4/freeze-publication-value.mjs.map +1 -0
  39. package/dist/esm/machine-output/v4/projection.mjs +23 -0
  40. package/dist/esm/machine-output/v4/projection.mjs.map +1 -0
  41. package/dist/esm/machine-output/v4/publication-invariants.mjs +59 -0
  42. package/dist/esm/machine-output/v4/publication-invariants.mjs.map +1 -0
  43. package/dist/esm/machine-output/v4/publication-model.mjs +19 -0
  44. package/dist/esm/machine-output/v4/publication-model.mjs.map +1 -0
  45. package/dist/esm/machine-output/v4/publish.mjs +20 -0
  46. package/dist/esm/machine-output/v4/publish.mjs.map +1 -0
  47. package/dist/esm/machine-output/v4/records-fingerprint.mjs +9 -0
  48. package/dist/esm/machine-output/v4/records-fingerprint.mjs.map +1 -0
  49. package/dist/esm/machine-output/v4/schema-identities.mjs +8 -0
  50. package/dist/esm/machine-output/v4/schema-identities.mjs.map +1 -0
  51. package/dist/esm/machine-output/v4/schema.mjs +50 -0
  52. package/dist/esm/machine-output/v4/schema.mjs.map +1 -0
  53. package/dist/esm/machine-output/v4/serializers.mjs +9 -0
  54. package/dist/esm/machine-output/v4/serializers.mjs.map +1 -0
  55. package/dist/esm/machine-output/v4/validation-result.mjs +16 -0
  56. package/dist/esm/machine-output/v4/validation-result.mjs.map +1 -0
  57. package/dist/esm/machine-output/v4/validation.mjs +131 -0
  58. package/dist/esm/machine-output/v4/validation.mjs.map +1 -0
  59. package/dist/esm/package-checks/code-quality-findings/policy.mjs +49 -0
  60. package/dist/esm/package-checks/code-quality-findings/policy.mjs.map +1 -0
  61. package/dist/esm/package-checks/duplicate-detection/area-policy.mjs +71 -0
  62. package/dist/esm/package-checks/duplicate-detection/area-policy.mjs.map +1 -0
  63. package/dist/esm/package-checks/duplicate-detection/cache/cache-contract.mjs +2 -0
  64. package/dist/esm/package-checks/duplicate-detection/cache/cache-contract.mjs.map +1 -0
  65. package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs +37 -0
  66. package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs.map +1 -0
  67. package/dist/esm/package-checks/duplicate-detection/cache/key.mjs +38 -0
  68. package/dist/esm/package-checks/duplicate-detection/cache/key.mjs.map +1 -0
  69. package/dist/esm/package-checks/duplicate-detection/cache/payload.mjs +47 -0
  70. package/dist/esm/package-checks/duplicate-detection/cache/payload.mjs.map +1 -0
  71. package/dist/esm/package-checks/duplicate-detection/cache/store.mjs +44 -0
  72. package/dist/esm/package-checks/duplicate-detection/cache/store.mjs.map +1 -0
  73. package/dist/esm/package-checks/duplicate-detection/default-check.mjs +39 -0
  74. package/dist/esm/package-checks/duplicate-detection/default-check.mjs.map +1 -0
  75. package/dist/esm/package-checks/duplicate-detection/execution.mjs +124 -0
  76. package/dist/esm/package-checks/duplicate-detection/execution.mjs.map +1 -0
  77. package/dist/esm/package-checks/duplicate-detection/final-data.mjs +6 -0
  78. package/dist/esm/package-checks/duplicate-detection/final-data.mjs.map +1 -0
  79. package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs +77 -0
  80. package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs.map +1 -0
  81. package/dist/esm/package-checks/duplicate-detection/jscpd/command-path.mjs +6 -0
  82. package/dist/esm/package-checks/duplicate-detection/jscpd/command-path.mjs.map +1 -0
  83. package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs +87 -0
  84. package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs.map +1 -0
  85. package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs +94 -0
  86. package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs.map +1 -0
  87. package/dist/esm/package-checks/duplicate-detection/jscpd/scanner-contract.mjs +2 -0
  88. package/dist/esm/package-checks/duplicate-detection/jscpd/scanner-contract.mjs.map +1 -0
  89. package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs +180 -0
  90. package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs.map +1 -0
  91. package/dist/esm/package-checks/duplicate-detection/jscpd/scoped-fragments.mjs +10 -0
  92. package/dist/esm/package-checks/duplicate-detection/jscpd/scoped-fragments.mjs.map +1 -0
  93. package/dist/esm/package-checks/duplicate-detection/measurement-model.mjs +2 -0
  94. package/dist/esm/package-checks/duplicate-detection/measurement-model.mjs.map +1 -0
  95. package/dist/esm/package-checks/duplicate-detection/measurement.mjs +151 -0
  96. package/dist/esm/package-checks/duplicate-detection/measurement.mjs.map +1 -0
  97. package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs +126 -0
  98. package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs.map +1 -0
  99. package/dist/esm/package-checks/duplicate-detection/options-validation.mjs +60 -0
  100. package/dist/esm/package-checks/duplicate-detection/options-validation.mjs.map +1 -0
  101. package/dist/esm/package-checks/duplicate-detection/options.mjs +2 -0
  102. package/dist/esm/package-checks/duplicate-detection/options.mjs.map +1 -0
  103. package/dist/esm/package-checks/duplicate-detection/project-revision.mjs +5 -0
  104. package/dist/esm/package-checks/duplicate-detection/project-revision.mjs.map +1 -0
  105. package/dist/esm/package-checks/duplicate-detection/records.mjs +119 -0
  106. package/dist/esm/package-checks/duplicate-detection/records.mjs.map +1 -0
  107. package/dist/esm/package-checks/file-metrics/constructor.mjs +39 -0
  108. package/dist/esm/package-checks/file-metrics/constructor.mjs.map +1 -0
  109. package/dist/esm/package-checks/file-metrics/execution.mjs +170 -0
  110. package/dist/esm/package-checks/file-metrics/execution.mjs.map +1 -0
  111. package/dist/esm/package-checks/file-metrics/final-data.mjs +6 -0
  112. package/dist/esm/package-checks/file-metrics/final-data.mjs.map +1 -0
  113. package/dist/esm/package-checks/file-metrics/measurement-model.mjs +2 -0
  114. package/dist/esm/package-checks/file-metrics/measurement-model.mjs.map +1 -0
  115. package/dist/esm/package-checks/file-metrics/measurement.mjs +33 -0
  116. package/dist/esm/package-checks/file-metrics/measurement.mjs.map +1 -0
  117. package/dist/esm/package-checks/file-metrics/options-resolution.mjs +171 -0
  118. package/dist/esm/package-checks/file-metrics/options-resolution.mjs.map +1 -0
  119. package/dist/esm/package-checks/file-metrics/options-validation.mjs +82 -0
  120. package/dist/esm/package-checks/file-metrics/options-validation.mjs.map +1 -0
  121. package/dist/esm/package-checks/file-metrics/options.mjs +2 -0
  122. package/dist/esm/package-checks/file-metrics/options.mjs.map +1 -0
  123. package/dist/esm/package-checks/file-metrics/records.mjs +109 -0
  124. package/dist/esm/package-checks/file-metrics/records.mjs.map +1 -0
  125. package/dist/esm/package-checks/file-metrics/scc/availability.mjs +59 -0
  126. package/dist/esm/package-checks/file-metrics/scc/availability.mjs.map +1 -0
  127. package/dist/esm/package-checks/file-metrics/scc/csv.mjs +17 -0
  128. package/dist/esm/package-checks/file-metrics/scc/csv.mjs.map +1 -0
  129. package/dist/esm/package-checks/file-metrics/scc/parser.mjs +145 -0
  130. package/dist/esm/package-checks/file-metrics/scc/parser.mjs.map +1 -0
  131. package/dist/esm/package-checks/file-metrics/scc/scanner.mjs +54 -0
  132. package/dist/esm/package-checks/file-metrics/scc/scanner.mjs.map +1 -0
  133. package/dist/esm/package-checks/final-data-parsing.mjs +35 -0
  134. package/dist/esm/package-checks/final-data-parsing.mjs.map +1 -0
  135. package/dist/esm/package-checks/function-metrics/analysis.mjs +96 -0
  136. package/dist/esm/package-checks/function-metrics/analysis.mjs.map +1 -0
  137. package/dist/esm/package-checks/function-metrics/constructor.mjs +43 -0
  138. package/dist/esm/package-checks/function-metrics/constructor.mjs.map +1 -0
  139. package/dist/esm/package-checks/function-metrics/execution.mjs +178 -0
  140. package/dist/esm/package-checks/function-metrics/execution.mjs.map +1 -0
  141. package/dist/esm/package-checks/function-metrics/final-data.mjs +6 -0
  142. package/dist/esm/package-checks/function-metrics/final-data.mjs.map +1 -0
  143. package/dist/esm/package-checks/function-metrics/lizard/availability.mjs +64 -0
  144. package/dist/esm/package-checks/function-metrics/lizard/availability.mjs.map +1 -0
  145. package/dist/esm/package-checks/function-metrics/lizard/csv.mjs +17 -0
  146. package/dist/esm/package-checks/function-metrics/lizard/csv.mjs.map +1 -0
  147. package/dist/esm/package-checks/function-metrics/lizard/parser.mjs +138 -0
  148. package/dist/esm/package-checks/function-metrics/lizard/parser.mjs.map +1 -0
  149. package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs +35 -0
  150. package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs.map +1 -0
  151. package/dist/esm/package-checks/function-metrics/measurement-model.mjs +2 -0
  152. package/dist/esm/package-checks/function-metrics/measurement-model.mjs.map +1 -0
  153. package/dist/esm/package-checks/function-metrics/measurement.mjs +35 -0
  154. package/dist/esm/package-checks/function-metrics/measurement.mjs.map +1 -0
  155. package/dist/esm/package-checks/function-metrics/options-resolution.mjs +171 -0
  156. package/dist/esm/package-checks/function-metrics/options-resolution.mjs.map +1 -0
  157. package/dist/esm/package-checks/function-metrics/options-validation.mjs +71 -0
  158. package/dist/esm/package-checks/function-metrics/options-validation.mjs.map +1 -0
  159. package/dist/esm/package-checks/function-metrics/options.mjs +2 -0
  160. package/dist/esm/package-checks/function-metrics/options.mjs.map +1 -0
  161. package/dist/esm/package-checks/function-metrics/records.mjs +133 -0
  162. package/dist/esm/package-checks/function-metrics/records.mjs.map +1 -0
  163. package/dist/esm/package-checks/function-metrics/target-files.mjs +75 -0
  164. package/dist/esm/package-checks/function-metrics/target-files.mjs.map +1 -0
  165. package/dist/esm/package-checks/host-environment/error-message.mjs +4 -0
  166. package/dist/esm/package-checks/host-environment/error-message.mjs.map +1 -0
  167. package/dist/esm/package-checks/host-environment/filesystem.mjs +81 -0
  168. package/dist/esm/package-checks/host-environment/filesystem.mjs.map +1 -0
  169. package/dist/esm/package-checks/host-environment/git.mjs +51 -0
  170. package/dist/esm/package-checks/host-environment/git.mjs.map +1 -0
  171. package/dist/esm/package-checks/host-environment/path.mjs +18 -0
  172. package/dist/esm/package-checks/host-environment/path.mjs.map +1 -0
  173. package/dist/esm/package-checks/host-environment/process/command.mjs +13 -0
  174. package/dist/esm/package-checks/host-environment/process/command.mjs.map +1 -0
  175. package/dist/esm/package-checks/host-environment/process/contract.mjs +2 -0
  176. package/dist/esm/package-checks/host-environment/process/contract.mjs.map +1 -0
  177. package/dist/esm/package-checks/host-environment/process/env.mjs +19 -0
  178. package/dist/esm/package-checks/host-environment/process/env.mjs.map +1 -0
  179. package/dist/esm/package-checks/host-environment/process/failure.mjs +34 -0
  180. package/dist/esm/package-checks/host-environment/process/failure.mjs.map +1 -0
  181. package/dist/esm/package-checks/host-environment/process/result.mjs +33 -0
  182. package/dist/esm/package-checks/host-environment/process/result.mjs.map +1 -0
  183. package/dist/esm/package-checks/host-environment/process/runner.mjs +30 -0
  184. package/dist/esm/package-checks/host-environment/process/runner.mjs.map +1 -0
  185. package/dist/esm/package-checks/json-document/strict-document.mjs +163 -0
  186. package/dist/esm/package-checks/json-document/strict-document.mjs.map +1 -0
  187. package/dist/esm/package-checks/json-schema-validation/default-check.mjs +39 -0
  188. package/dist/esm/package-checks/json-schema-validation/default-check.mjs.map +1 -0
  189. package/dist/esm/package-checks/json-schema-validation/execution-stages.mjs +141 -0
  190. package/dist/esm/package-checks/json-schema-validation/execution-stages.mjs.map +1 -0
  191. package/dist/esm/package-checks/json-schema-validation/final-data.mjs +64 -0
  192. package/dist/esm/package-checks/json-schema-validation/final-data.mjs.map +1 -0
  193. package/dist/esm/package-checks/json-schema-validation/issue-collector.mjs +35 -0
  194. package/dist/esm/package-checks/json-schema-validation/issue-collector.mjs.map +1 -0
  195. package/dist/esm/package-checks/json-schema-validation/json-schema-validation.mjs +118 -0
  196. package/dist/esm/package-checks/json-schema-validation/json-schema-validation.mjs.map +1 -0
  197. package/dist/esm/package-checks/json-schema-validation/options-resolution.mjs +45 -0
  198. package/dist/esm/package-checks/json-schema-validation/options-resolution.mjs.map +1 -0
  199. package/dist/esm/package-checks/json-schema-validation/options-validation.mjs +212 -0
  200. package/dist/esm/package-checks/json-schema-validation/options-validation.mjs.map +1 -0
  201. package/dist/esm/package-checks/json-schema-validation/options.mjs +2 -0
  202. package/dist/esm/package-checks/json-schema-validation/options.mjs.map +1 -0
  203. package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs +128 -0
  204. package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs.map +1 -0
  205. package/dist/esm/package-checks/json-schema-validation/remote-response.mjs +71 -0
  206. package/dist/esm/package-checks/json-schema-validation/remote-response.mjs.map +1 -0
  207. package/dist/esm/package-checks/json-schema-validation/schema-engine.mjs +190 -0
  208. package/dist/esm/package-checks/json-schema-validation/schema-engine.mjs.map +1 -0
  209. package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs +234 -0
  210. package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs.map +1 -0
  211. package/dist/esm/package-checks/json-validation/default-check.mjs +39 -0
  212. package/dist/esm/package-checks/json-validation/default-check.mjs.map +1 -0
  213. package/dist/esm/package-checks/json-validation/final-data.mjs +27 -0
  214. package/dist/esm/package-checks/json-validation/final-data.mjs.map +1 -0
  215. package/dist/esm/package-checks/json-validation/json-validation.mjs +138 -0
  216. package/dist/esm/package-checks/json-validation/json-validation.mjs.map +1 -0
  217. package/dist/esm/package-checks/json-validation/options-resolution.mjs +33 -0
  218. package/dist/esm/package-checks/json-validation/options-resolution.mjs.map +1 -0
  219. package/dist/esm/package-checks/json-validation/options-validation.mjs +16 -0
  220. package/dist/esm/package-checks/json-validation/options-validation.mjs.map +1 -0
  221. package/dist/esm/package-checks/json-validation/options.mjs +2 -0
  222. package/dist/esm/package-checks/json-validation/options.mjs.map +1 -0
  223. package/dist/esm/package-checks/maintenance-reminders/assessment-results.mjs +73 -0
  224. package/dist/esm/package-checks/maintenance-reminders/assessment-results.mjs.map +1 -0
  225. package/dist/esm/package-checks/maintenance-reminders/final-data.mjs +153 -0
  226. package/dist/esm/package-checks/maintenance-reminders/final-data.mjs.map +1 -0
  227. package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs +155 -0
  228. package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs.map +1 -0
  229. package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs +58 -0
  230. package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs.map +1 -0
  231. package/dist/esm/package-checks/maintenance-reminders/measurement.mjs +125 -0
  232. package/dist/esm/package-checks/maintenance-reminders/measurement.mjs.map +1 -0
  233. package/dist/esm/package-checks/maintenance-reminders/options-validation.mjs +72 -0
  234. package/dist/esm/package-checks/maintenance-reminders/options-validation.mjs.map +1 -0
  235. package/dist/esm/package-checks/markdown-link-validation/default-check.mjs +55 -0
  236. package/dist/esm/package-checks/markdown-link-validation/default-check.mjs.map +1 -0
  237. package/dist/esm/package-checks/markdown-link-validation/execution.mjs +199 -0
  238. package/dist/esm/package-checks/markdown-link-validation/execution.mjs.map +1 -0
  239. package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs +109 -0
  240. package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs.map +1 -0
  241. package/dist/esm/package-checks/markdown-link-validation/final-data.mjs +28 -0
  242. package/dist/esm/package-checks/markdown-link-validation/final-data.mjs.map +1 -0
  243. package/dist/esm/package-checks/markdown-link-validation/local-resolution.mjs +158 -0
  244. package/dist/esm/package-checks/markdown-link-validation/local-resolution.mjs.map +1 -0
  245. package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs +17 -0
  246. package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs.map +1 -0
  247. package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs +191 -0
  248. package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs.map +1 -0
  249. package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs +83 -0
  250. package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs.map +1 -0
  251. package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs +50 -0
  252. package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs.map +1 -0
  253. package/dist/esm/package-checks/markdown-link-validation/options.mjs +2 -0
  254. package/dist/esm/package-checks/markdown-link-validation/options.mjs.map +1 -0
  255. package/dist/esm/package-checks/markdown-link-validation/records.mjs +32 -0
  256. package/dist/esm/package-checks/markdown-link-validation/records.mjs.map +1 -0
  257. package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs +196 -0
  258. package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs.map +1 -0
  259. package/dist/esm/package-checks/markdown-link-validation/target-descriptor.mjs +23 -0
  260. package/dist/esm/package-checks/markdown-link-validation/target-descriptor.mjs.map +1 -0
  261. package/dist/esm/package-checks/markdown-link-validation/traversal-result.mjs +41 -0
  262. package/dist/esm/package-checks/markdown-link-validation/traversal-result.mjs.map +1 -0
  263. package/dist/esm/package-checks/project-files/collection.mjs +142 -0
  264. package/dist/esm/package-checks/project-files/collection.mjs.map +1 -0
  265. package/dist/esm/package-checks/project-files/config-glob.mjs +11 -0
  266. package/dist/esm/package-checks/project-files/config-glob.mjs.map +1 -0
  267. package/dist/esm/package-checks/project-files/configuration.mjs +104 -0
  268. package/dist/esm/package-checks/project-files/configuration.mjs.map +1 -0
  269. package/dist/esm/package-checks/project-files/exact-input-measurement.mjs +24 -0
  270. package/dist/esm/package-checks/project-files/exact-input-measurement.mjs.map +1 -0
  271. package/dist/esm/package-checks/project-files/file-fingerprint.mjs +36 -0
  272. package/dist/esm/package-checks/project-files/file-fingerprint.mjs.map +1 -0
  273. package/dist/esm/package-checks/project-files/gitlink-revision.mjs +57 -0
  274. package/dist/esm/package-checks/project-files/gitlink-revision.mjs.map +1 -0
  275. package/dist/esm/package-checks/project-files/gitlink-worktree.mjs +72 -0
  276. package/dist/esm/package-checks/project-files/gitlink-worktree.mjs.map +1 -0
  277. package/dist/esm/package-checks/project-files/input-eligibility.mjs +13 -0
  278. package/dist/esm/package-checks/project-files/input-eligibility.mjs.map +1 -0
  279. package/dist/esm/package-checks/project-files/reported-path.mjs +30 -0
  280. package/dist/esm/package-checks/project-files/reported-path.mjs.map +1 -0
  281. package/dist/esm/package-checks/project-files/revision-paths.mjs +19 -0
  282. package/dist/esm/package-checks/project-files/revision-paths.mjs.map +1 -0
  283. package/dist/esm/package-checks/project-files/revision-worktree-files.mjs +102 -0
  284. package/dist/esm/package-checks/project-files/revision-worktree-files.mjs.map +1 -0
  285. package/dist/esm/project-definition/check-tree/authoring.mjs +242 -0
  286. package/dist/esm/project-definition/check-tree/authoring.mjs.map +1 -0
  287. package/dist/esm/project-definition/check-tree/materialization.mjs +50 -0
  288. package/dist/esm/project-definition/check-tree/materialization.mjs.map +1 -0
  289. package/dist/esm/project-definition/check-tree/resolution.mjs +60 -0
  290. package/dist/esm/project-definition/check-tree/resolution.mjs.map +1 -0
  291. package/dist/esm/project-definition/output-defaults.mjs +7 -0
  292. package/dist/esm/project-definition/output-defaults.mjs.map +1 -0
  293. package/dist/esm/project-definition/output-validation.mjs +44 -0
  294. package/dist/esm/project-definition/output-validation.mjs.map +1 -0
  295. package/dist/esm/project-definition/project-definition-validation.mjs +95 -0
  296. package/dist/esm/project-definition/project-definition-validation.mjs.map +1 -0
  297. package/dist/esm/project-definition/project-definition.mjs +92 -0
  298. package/dist/esm/project-definition/project-definition.mjs.map +1 -0
  299. package/dist/esm/project-run/aggregation.mjs +66 -0
  300. package/dist/esm/project-run/aggregation.mjs.map +1 -0
  301. package/dist/esm/project-run/check-execution/callback.mjs +70 -0
  302. package/dist/esm/project-run/check-execution/callback.mjs.map +1 -0
  303. package/dist/esm/project-run/check-execution/dependencies.mjs +50 -0
  304. package/dist/esm/project-run/check-execution/dependencies.mjs.map +1 -0
  305. package/dist/esm/project-run/check-execution/execution-finalization.mjs +103 -0
  306. package/dist/esm/project-run/check-execution/execution-finalization.mjs.map +1 -0
  307. package/dist/esm/project-run/check-execution/execution-settlement.mjs +90 -0
  308. package/dist/esm/project-run/check-execution/execution-settlement.mjs.map +1 -0
  309. package/dist/esm/project-run/check-execution/messages.mjs +38 -0
  310. package/dist/esm/project-run/check-execution/messages.mjs.map +1 -0
  311. package/dist/esm/project-run/check-execution/plan.mjs +35 -0
  312. package/dist/esm/project-run/check-execution/plan.mjs.map +1 -0
  313. package/dist/esm/project-run/check-execution/preflight-result.mjs +83 -0
  314. package/dist/esm/project-run/check-execution/preflight-result.mjs.map +1 -0
  315. package/dist/esm/project-run/check-execution/preflight.mjs +186 -0
  316. package/dist/esm/project-run/check-execution/preflight.mjs.map +1 -0
  317. package/dist/esm/project-run/check-execution/resolved-checks.mjs +168 -0
  318. package/dist/esm/project-run/check-execution/resolved-checks.mjs.map +1 -0
  319. package/dist/esm/project-run/check-execution/terminal-result.mjs +49 -0
  320. package/dist/esm/project-run/check-execution/terminal-result.mjs.map +1 -0
  321. package/dist/esm/project-run/completion.mjs +173 -0
  322. package/dist/esm/project-run/completion.mjs.map +1 -0
  323. package/dist/esm/project-run/controls/contract.mjs +2 -0
  324. package/dist/esm/project-run/controls/contract.mjs.map +1 -0
  325. package/dist/esm/project-run/controls/outputs-override-validation.mjs +61 -0
  326. package/dist/esm/project-run/controls/outputs-override-validation.mjs.map +1 -0
  327. package/dist/esm/project-run/controls/validation-result.mjs +2 -0
  328. package/dist/esm/project-run/controls/validation-result.mjs.map +1 -0
  329. package/dist/esm/project-run/controls/validation.mjs +156 -0
  330. package/dist/esm/project-run/controls/validation.mjs.map +1 -0
  331. package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs +182 -0
  332. package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs.map +1 -0
  333. package/dist/esm/project-run/diagnostic-logging/logger.mjs +242 -0
  334. package/dist/esm/project-run/diagnostic-logging/logger.mjs.map +1 -0
  335. package/dist/esm/project-run/invocation-creation.mjs +111 -0
  336. package/dist/esm/project-run/invocation-creation.mjs.map +1 -0
  337. package/dist/esm/project-run/invocation.mjs +195 -0
  338. package/dist/esm/project-run/invocation.mjs.map +1 -0
  339. package/dist/esm/project-run/machine-publication.mjs +16 -0
  340. package/dist/esm/project-run/machine-publication.mjs.map +1 -0
  341. package/dist/esm/project-run/output-configuration.mjs +17 -0
  342. package/dist/esm/project-run/output-configuration.mjs.map +1 -0
  343. package/dist/esm/project-run/output-status.mjs +43 -0
  344. package/dist/esm/project-run/output-status.mjs.map +1 -0
  345. package/dist/esm/project-run/progress-rendering/presentation.mjs +135 -0
  346. package/dist/esm/project-run/progress-rendering/presentation.mjs.map +1 -0
  347. package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs +100 -0
  348. package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs.map +1 -0
  349. package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs +123 -0
  350. package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs.map +1 -0
  351. package/dist/esm/project-run/progress-rendering/renderer.mjs +12 -0
  352. package/dist/esm/project-run/progress-rendering/renderer.mjs.map +1 -0
  353. package/dist/esm/project-run/project-context.mjs +8 -0
  354. package/dist/esm/project-run/project-context.mjs.map +1 -0
  355. package/dist/esm/project-run/result.mjs +54 -0
  356. package/dist/esm/project-run/result.mjs.map +1 -0
  357. package/dist/esm/project-run/run.mjs +23 -0
  358. package/dist/esm/project-run/run.mjs.map +1 -0
  359. package/dist/esm/project-run/task-scheduler/execution-state.mjs +66 -0
  360. package/dist/esm/project-run/task-scheduler/execution-state.mjs.map +1 -0
  361. package/dist/esm/project-run/task-scheduler/graph-validation.mjs +119 -0
  362. package/dist/esm/project-run/task-scheduler/graph-validation.mjs.map +1 -0
  363. package/dist/esm/project-run/task-scheduler/graph.mjs +116 -0
  364. package/dist/esm/project-run/task-scheduler/graph.mjs.map +1 -0
  365. package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs +82 -0
  366. package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs.map +1 -0
  367. package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs +27 -0
  368. package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs.map +1 -0
  369. package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs +125 -0
  370. package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs.map +1 -0
  371. package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs +45 -0
  372. package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs.map +1 -0
  373. package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs +74 -0
  374. package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs.map +1 -0
  375. package/dist/esm/project-run/task-scheduler/scheduler.mjs +147 -0
  376. package/dist/esm/project-run/task-scheduler/scheduler.mjs.map +1 -0
  377. package/docs/api-mechanics.md +205 -0
  378. package/docs/checks/duplicate-detection.md +195 -0
  379. package/docs/checks/file-metrics.md +229 -0
  380. package/docs/checks/function-metrics.md +222 -0
  381. package/docs/checks/json-schema-validation.md +190 -0
  382. package/docs/checks/json-validation.md +133 -0
  383. package/docs/checks/maintenance-reminders.md +158 -0
  384. package/docs/checks/markdown-link-validation.md +192 -0
  385. package/docs/examples/artifacts/mixed-outcomes/definition.ts +195 -0
  386. package/docs/examples/artifacts/mixed-outcomes/records.ndjson +2 -0
  387. package/docs/examples/artifacts/mixed-outcomes/run.json +70 -0
  388. package/docs/output.md +97 -0
  389. package/docs/schemas/vibe-check-record.schema.json +33 -0
  390. package/docs/schemas/vibe-check-run.schema.json +173 -0
  391. package/index.mjs +1 -0
  392. package/package.json +49 -0
  393. package/src/check/check.ts +497 -0
  394. package/src/check/descriptor-validation.ts +60 -0
  395. package/src/check/descriptor.ts +5 -0
  396. package/src/check/inherited-collection.ts +101 -0
  397. package/src/check/options-snapshot.ts +80 -0
  398. package/src/check-settlement/fact-validation.ts +289 -0
  399. package/src/check-settlement/facts.ts +27 -0
  400. package/src/check-settlement/outcome-normalization.ts +118 -0
  401. package/src/check-settlement/record-store.ts +73 -0
  402. package/src/check-settlement/session.ts +257 -0
  403. package/src/data-boundary/canonical-data.ts +188 -0
  404. package/src/data-boundary/canonical-json.ts +11 -0
  405. package/src/data-boundary/closed-values.ts +126 -0
  406. package/src/data-boundary/value-shapes.ts +15 -0
  407. package/src/finding-waivers/reconciliation.ts +176 -0
  408. package/src/index.ts +123 -0
  409. package/src/machine-output/v4/atomic-publication.ts +123 -0
  410. package/src/machine-output/v4/freeze-publication-value.ts +12 -0
  411. package/src/machine-output/v4/projection.ts +36 -0
  412. package/src/machine-output/v4/publication-invariants.ts +89 -0
  413. package/src/machine-output/v4/publication-model.ts +38 -0
  414. package/src/machine-output/v4/publish.ts +23 -0
  415. package/src/machine-output/v4/records-fingerprint.ts +12 -0
  416. package/src/machine-output/v4/schema-identities.ts +8 -0
  417. package/src/machine-output/v4/schema.ts +97 -0
  418. package/src/machine-output/v4/serializers.ts +18 -0
  419. package/src/machine-output/v4/validation-result.ts +59 -0
  420. package/src/machine-output/v4/validation.ts +166 -0
  421. package/src/package-checks/code-quality-findings/policy.ts +85 -0
  422. package/src/package-checks/duplicate-detection/area-policy.ts +103 -0
  423. package/src/package-checks/duplicate-detection/cache/cache-contract.ts +49 -0
  424. package/src/package-checks/duplicate-detection/cache/identity.ts +61 -0
  425. package/src/package-checks/duplicate-detection/cache/key.ts +46 -0
  426. package/src/package-checks/duplicate-detection/cache/payload.ts +78 -0
  427. package/src/package-checks/duplicate-detection/cache/store.ts +77 -0
  428. package/src/package-checks/duplicate-detection/default-check.ts +50 -0
  429. package/src/package-checks/duplicate-detection/execution.ts +168 -0
  430. package/src/package-checks/duplicate-detection/final-data.ts +10 -0
  431. package/src/package-checks/duplicate-detection/jscpd/availability.ts +137 -0
  432. package/src/package-checks/duplicate-detection/jscpd/command-path.ts +8 -0
  433. package/src/package-checks/duplicate-detection/jscpd/command-resolution.ts +112 -0
  434. package/src/package-checks/duplicate-detection/jscpd/json-report.ts +137 -0
  435. package/src/package-checks/duplicate-detection/jscpd/scanner-contract.ts +18 -0
  436. package/src/package-checks/duplicate-detection/jscpd/scanner.ts +257 -0
  437. package/src/package-checks/duplicate-detection/jscpd/scoped-fragments.ts +17 -0
  438. package/src/package-checks/duplicate-detection/measurement-model.ts +44 -0
  439. package/src/package-checks/duplicate-detection/measurement.ts +223 -0
  440. package/src/package-checks/duplicate-detection/options-resolution.ts +162 -0
  441. package/src/package-checks/duplicate-detection/options-validation.ts +75 -0
  442. package/src/package-checks/duplicate-detection/options.ts +72 -0
  443. package/src/package-checks/duplicate-detection/project-revision.ts +5 -0
  444. package/src/package-checks/duplicate-detection/records.ts +171 -0
  445. package/src/package-checks/file-metrics/constructor.ts +46 -0
  446. package/src/package-checks/file-metrics/execution.ts +233 -0
  447. package/src/package-checks/file-metrics/final-data.ts +10 -0
  448. package/src/package-checks/file-metrics/measurement-model.ts +10 -0
  449. package/src/package-checks/file-metrics/measurement.ts +52 -0
  450. package/src/package-checks/file-metrics/options-resolution.ts +213 -0
  451. package/src/package-checks/file-metrics/options-validation.ts +104 -0
  452. package/src/package-checks/file-metrics/options.ts +91 -0
  453. package/src/package-checks/file-metrics/records.ts +182 -0
  454. package/src/package-checks/file-metrics/scc/availability.ts +100 -0
  455. package/src/package-checks/file-metrics/scc/csv.ts +20 -0
  456. package/src/package-checks/file-metrics/scc/parser.ts +223 -0
  457. package/src/package-checks/file-metrics/scc/scanner.ts +68 -0
  458. package/src/package-checks/final-data-parsing.ts +49 -0
  459. package/src/package-checks/function-metrics/analysis.ts +138 -0
  460. package/src/package-checks/function-metrics/constructor.ts +55 -0
  461. package/src/package-checks/function-metrics/execution.ts +263 -0
  462. package/src/package-checks/function-metrics/final-data.ts +10 -0
  463. package/src/package-checks/function-metrics/lizard/availability.ts +90 -0
  464. package/src/package-checks/function-metrics/lizard/csv.ts +20 -0
  465. package/src/package-checks/function-metrics/lizard/parser.ts +179 -0
  466. package/src/package-checks/function-metrics/lizard/scanner.ts +62 -0
  467. package/src/package-checks/function-metrics/measurement-model.ts +30 -0
  468. package/src/package-checks/function-metrics/measurement.ts +57 -0
  469. package/src/package-checks/function-metrics/options-resolution.ts +215 -0
  470. package/src/package-checks/function-metrics/options-validation.ts +89 -0
  471. package/src/package-checks/function-metrics/options.ts +84 -0
  472. package/src/package-checks/function-metrics/records.ts +254 -0
  473. package/src/package-checks/function-metrics/target-files.ts +85 -0
  474. package/src/package-checks/host-environment/error-message.ts +3 -0
  475. package/src/package-checks/host-environment/filesystem.ts +110 -0
  476. package/src/package-checks/host-environment/git.ts +68 -0
  477. package/src/package-checks/host-environment/path.ts +20 -0
  478. package/src/package-checks/host-environment/process/command.ts +21 -0
  479. package/src/package-checks/host-environment/process/contract.ts +56 -0
  480. package/src/package-checks/host-environment/process/env.ts +25 -0
  481. package/src/package-checks/host-environment/process/failure.ts +40 -0
  482. package/src/package-checks/host-environment/process/result.ts +39 -0
  483. package/src/package-checks/host-environment/process/runner.ts +47 -0
  484. package/src/package-checks/json-document/strict-document.ts +209 -0
  485. package/src/package-checks/json-schema-validation/default-check.ts +54 -0
  486. package/src/package-checks/json-schema-validation/execution-stages.ts +230 -0
  487. package/src/package-checks/json-schema-validation/final-data.ts +115 -0
  488. package/src/package-checks/json-schema-validation/issue-collector.ts +43 -0
  489. package/src/package-checks/json-schema-validation/json-schema-validation.ts +191 -0
  490. package/src/package-checks/json-schema-validation/options-resolution.ts +61 -0
  491. package/src/package-checks/json-schema-validation/options-validation.ts +256 -0
  492. package/src/package-checks/json-schema-validation/options.ts +66 -0
  493. package/src/package-checks/json-schema-validation/reference-resolver.ts +165 -0
  494. package/src/package-checks/json-schema-validation/remote-response.ts +84 -0
  495. package/src/package-checks/json-schema-validation/schema-engine.ts +263 -0
  496. package/src/package-checks/json-schema-validation/schema-policy.ts +275 -0
  497. package/src/package-checks/json-validation/default-check.ts +48 -0
  498. package/src/package-checks/json-validation/final-data.ts +46 -0
  499. package/src/package-checks/json-validation/json-validation.ts +212 -0
  500. package/src/package-checks/json-validation/options-resolution.ts +50 -0
  501. package/src/package-checks/json-validation/options-validation.ts +27 -0
  502. package/src/package-checks/json-validation/options.ts +18 -0
  503. package/src/package-checks/maintenance-reminders/assessment-results.ts +117 -0
  504. package/src/package-checks/maintenance-reminders/final-data.ts +239 -0
  505. package/src/package-checks/maintenance-reminders/maintenance-reminders.ts +264 -0
  506. package/src/package-checks/maintenance-reminders/maintenance-support.ts +67 -0
  507. package/src/package-checks/maintenance-reminders/measurement.ts +183 -0
  508. package/src/package-checks/maintenance-reminders/options-validation.ts +88 -0
  509. package/src/package-checks/markdown-link-validation/default-check.ts +70 -0
  510. package/src/package-checks/markdown-link-validation/execution.ts +325 -0
  511. package/src/package-checks/markdown-link-validation/filesystem-probes.ts +127 -0
  512. package/src/package-checks/markdown-link-validation/final-data.ts +47 -0
  513. package/src/package-checks/markdown-link-validation/local-resolution.ts +306 -0
  514. package/src/package-checks/markdown-link-validation/local-resolver.ts +51 -0
  515. package/src/package-checks/markdown-link-validation/markdown-parser.ts +302 -0
  516. package/src/package-checks/markdown-link-validation/options-resolution.ts +114 -0
  517. package/src/package-checks/markdown-link-validation/options-validation.ts +72 -0
  518. package/src/package-checks/markdown-link-validation/options.ts +50 -0
  519. package/src/package-checks/markdown-link-validation/records.ts +77 -0
  520. package/src/package-checks/markdown-link-validation/resolver-engine.ts +276 -0
  521. package/src/package-checks/markdown-link-validation/target-descriptor.ts +34 -0
  522. package/src/package-checks/markdown-link-validation/traversal-result.ts +58 -0
  523. package/src/package-checks/project-files/collection.ts +199 -0
  524. package/src/package-checks/project-files/config-glob.ts +17 -0
  525. package/src/package-checks/project-files/configuration.ts +152 -0
  526. package/src/package-checks/project-files/exact-input-measurement.ts +38 -0
  527. package/src/package-checks/project-files/file-fingerprint.ts +46 -0
  528. package/src/package-checks/project-files/gitlink-revision.ts +82 -0
  529. package/src/package-checks/project-files/gitlink-worktree.ts +106 -0
  530. package/src/package-checks/project-files/input-eligibility.ts +21 -0
  531. package/src/package-checks/project-files/reported-path.ts +35 -0
  532. package/src/package-checks/project-files/revision-paths.ts +34 -0
  533. package/src/package-checks/project-files/revision-worktree-files.ts +148 -0
  534. package/src/project-definition/check-tree/authoring.ts +332 -0
  535. package/src/project-definition/check-tree/materialization.ts +56 -0
  536. package/src/project-definition/check-tree/resolution.ts +108 -0
  537. package/src/project-definition/output-defaults.ts +6 -0
  538. package/src/project-definition/output-validation.ts +54 -0
  539. package/src/project-definition/project-definition-validation.ts +123 -0
  540. package/src/project-definition/project-definition.ts +184 -0
  541. package/src/project-run/aggregation.ts +90 -0
  542. package/src/project-run/check-execution/callback.ts +106 -0
  543. package/src/project-run/check-execution/dependencies.ts +70 -0
  544. package/src/project-run/check-execution/execution-finalization.ts +177 -0
  545. package/src/project-run/check-execution/execution-settlement.ts +147 -0
  546. package/src/project-run/check-execution/messages.ts +46 -0
  547. package/src/project-run/check-execution/plan.ts +46 -0
  548. package/src/project-run/check-execution/preflight-result.ts +131 -0
  549. package/src/project-run/check-execution/preflight.ts +321 -0
  550. package/src/project-run/check-execution/resolved-checks.ts +285 -0
  551. package/src/project-run/check-execution/terminal-result.ts +74 -0
  552. package/src/project-run/completion.ts +263 -0
  553. package/src/project-run/controls/contract.ts +24 -0
  554. package/src/project-run/controls/outputs-override-validation.ts +86 -0
  555. package/src/project-run/controls/validation-result.ts +12 -0
  556. package/src/project-run/controls/validation.ts +176 -0
  557. package/src/project-run/diagnostic-logging/diagnostic-detail-rendering.ts +223 -0
  558. package/src/project-run/diagnostic-logging/logger.ts +325 -0
  559. package/src/project-run/invocation-creation.ts +160 -0
  560. package/src/project-run/invocation.ts +303 -0
  561. package/src/project-run/machine-publication.ts +23 -0
  562. package/src/project-run/output-configuration.ts +24 -0
  563. package/src/project-run/output-status.ts +69 -0
  564. package/src/project-run/progress-rendering/presentation.ts +189 -0
  565. package/src/project-run/progress-rendering/renderer-formatting.ts +141 -0
  566. package/src/project-run/progress-rendering/renderer-lifecycle.ts +152 -0
  567. package/src/project-run/progress-rendering/renderer.ts +68 -0
  568. package/src/project-run/project-context.ts +11 -0
  569. package/src/project-run/result.ts +175 -0
  570. package/src/project-run/run.ts +50 -0
  571. package/src/project-run/task-scheduler/execution-state.ts +153 -0
  572. package/src/project-run/task-scheduler/graph-validation.ts +176 -0
  573. package/src/project-run/task-scheduler/graph.ts +185 -0
  574. package/src/project-run/task-scheduler/scheduler-admission-decision.ts +177 -0
  575. package/src/project-run/task-scheduler/scheduler-blocker-summary.ts +42 -0
  576. package/src/project-run/task-scheduler/scheduler-decision-inspection.ts +199 -0
  577. package/src/project-run/task-scheduler/scheduler-decision-model.ts +158 -0
  578. package/src/project-run/task-scheduler/scheduler-decision.ts +103 -0
  579. package/src/project-run/task-scheduler/scheduler.ts +228 -0
  580. package/third-party-licenses/momoa-3.3.12-LICENSE +201 -0
  581. package/types/check/check.d.ts +350 -0
  582. package/types/check/descriptor-validation.d.ts +18 -0
  583. package/types/check/descriptor.d.ts +5 -0
  584. package/types/check/inherited-collection.d.ts +35 -0
  585. package/types/check/options-snapshot.d.ts +2 -0
  586. package/types/check-settlement/fact-validation.d.ts +14 -0
  587. package/types/check-settlement/facts.d.ts +19 -0
  588. package/types/check-settlement/outcome-normalization.d.ts +9 -0
  589. package/types/check-settlement/record-store.d.ts +14 -0
  590. package/types/check-settlement/session.d.ts +41 -0
  591. package/types/data-boundary/canonical-data.d.ts +13 -0
  592. package/types/data-boundary/canonical-json.d.ts +6 -0
  593. package/types/data-boundary/closed-values.d.ts +8 -0
  594. package/types/data-boundary/value-shapes.d.ts +4 -0
  595. package/types/finding-waivers/reconciliation.d.ts +66 -0
  596. package/types/index.d.ts +57 -0
  597. package/types/machine-output/v4/atomic-publication.d.ts +9 -0
  598. package/types/machine-output/v4/freeze-publication-value.d.ts +6 -0
  599. package/types/machine-output/v4/projection.d.ts +7 -0
  600. package/types/machine-output/v4/publication-invariants.d.ts +3 -0
  601. package/types/machine-output/v4/publication-model.d.ts +15 -0
  602. package/types/machine-output/v4/publish.d.ts +7 -0
  603. package/types/machine-output/v4/records-fingerprint.d.ts +4 -0
  604. package/types/machine-output/v4/schema-identities.d.ts +7 -0
  605. package/types/machine-output/v4/schema.d.ts +44 -0
  606. package/types/machine-output/v4/serializers.d.ts +6 -0
  607. package/types/machine-output/v4/validation-result.d.ts +26 -0
  608. package/types/machine-output/v4/validation.d.ts +6 -0
  609. package/types/package-checks/code-quality-findings/policy.d.ts +20 -0
  610. package/types/package-checks/duplicate-detection/area-policy.d.ts +3 -0
  611. package/types/package-checks/duplicate-detection/cache/cache-contract.d.ts +48 -0
  612. package/types/package-checks/duplicate-detection/cache/identity.d.ts +17 -0
  613. package/types/package-checks/duplicate-detection/cache/key.d.ts +4 -0
  614. package/types/package-checks/duplicate-detection/cache/payload.d.ts +4 -0
  615. package/types/package-checks/duplicate-detection/cache/store.d.ts +18 -0
  616. package/types/package-checks/duplicate-detection/default-check.d.ts +11 -0
  617. package/types/package-checks/duplicate-detection/execution.d.ts +11 -0
  618. package/types/package-checks/duplicate-detection/final-data.d.ts +5 -0
  619. package/types/package-checks/duplicate-detection/jscpd/availability.d.ts +19 -0
  620. package/types/package-checks/duplicate-detection/jscpd/command-path.d.ts +1 -0
  621. package/types/package-checks/duplicate-detection/jscpd/command-resolution.d.ts +23 -0
  622. package/types/package-checks/duplicate-detection/jscpd/json-report.d.ts +2 -0
  623. package/types/package-checks/duplicate-detection/jscpd/scanner-contract.d.ts +11 -0
  624. package/types/package-checks/duplicate-detection/jscpd/scanner.d.ts +21 -0
  625. package/types/package-checks/duplicate-detection/jscpd/scoped-fragments.d.ts +4 -0
  626. package/types/package-checks/duplicate-detection/measurement-model.d.ts +36 -0
  627. package/types/package-checks/duplicate-detection/measurement.d.ts +14 -0
  628. package/types/package-checks/duplicate-detection/options-resolution.d.ts +3 -0
  629. package/types/package-checks/duplicate-detection/options-validation.d.ts +1 -0
  630. package/types/package-checks/duplicate-detection/options.d.ts +65 -0
  631. package/types/package-checks/duplicate-detection/project-revision.d.ts +1 -0
  632. package/types/package-checks/duplicate-detection/records.d.ts +22 -0
  633. package/types/package-checks/file-metrics/constructor.d.ts +11 -0
  634. package/types/package-checks/file-metrics/execution.d.ts +11 -0
  635. package/types/package-checks/file-metrics/final-data.d.ts +5 -0
  636. package/types/package-checks/file-metrics/measurement-model.d.ts +12 -0
  637. package/types/package-checks/file-metrics/measurement.d.ts +13 -0
  638. package/types/package-checks/file-metrics/options-resolution.d.ts +3 -0
  639. package/types/package-checks/file-metrics/options-validation.d.ts +3 -0
  640. package/types/package-checks/file-metrics/options.d.ts +75 -0
  641. package/types/package-checks/file-metrics/records.d.ts +43 -0
  642. package/types/package-checks/file-metrics/scc/availability.d.ts +18 -0
  643. package/types/package-checks/file-metrics/scc/csv.d.ts +1 -0
  644. package/types/package-checks/file-metrics/scc/parser.d.ts +25 -0
  645. package/types/package-checks/file-metrics/scc/scanner.d.ts +14 -0
  646. package/types/package-checks/final-data-parsing.d.ts +9 -0
  647. package/types/package-checks/function-metrics/analysis.d.ts +10 -0
  648. package/types/package-checks/function-metrics/constructor.d.ts +11 -0
  649. package/types/package-checks/function-metrics/execution.d.ts +7 -0
  650. package/types/package-checks/function-metrics/final-data.d.ts +5 -0
  651. package/types/package-checks/function-metrics/lizard/availability.d.ts +11 -0
  652. package/types/package-checks/function-metrics/lizard/csv.d.ts +1 -0
  653. package/types/package-checks/function-metrics/lizard/parser.d.ts +17 -0
  654. package/types/package-checks/function-metrics/lizard/scanner.d.ts +15 -0
  655. package/types/package-checks/function-metrics/measurement-model.d.ts +26 -0
  656. package/types/package-checks/function-metrics/measurement.d.ts +21 -0
  657. package/types/package-checks/function-metrics/options-resolution.d.ts +3 -0
  658. package/types/package-checks/function-metrics/options-validation.d.ts +3 -0
  659. package/types/package-checks/function-metrics/options.d.ts +76 -0
  660. package/types/package-checks/function-metrics/records.d.ts +37 -0
  661. package/types/package-checks/function-metrics/target-files.d.ts +3 -0
  662. package/types/package-checks/host-environment/error-message.d.ts +1 -0
  663. package/types/package-checks/host-environment/filesystem.d.ts +19 -0
  664. package/types/package-checks/host-environment/git.d.ts +13 -0
  665. package/types/package-checks/host-environment/path.d.ts +3 -0
  666. package/types/package-checks/host-environment/process/command.d.ts +7 -0
  667. package/types/package-checks/host-environment/process/contract.d.ts +50 -0
  668. package/types/package-checks/host-environment/process/env.d.ts +16 -0
  669. package/types/package-checks/host-environment/process/failure.d.ts +4 -0
  670. package/types/package-checks/host-environment/process/result.d.ts +2 -0
  671. package/types/package-checks/host-environment/process/runner.d.ts +3 -0
  672. package/types/package-checks/json-document/strict-document.d.ts +35 -0
  673. package/types/package-checks/json-schema-validation/default-check.d.ts +11 -0
  674. package/types/package-checks/json-schema-validation/execution-stages.d.ts +27 -0
  675. package/types/package-checks/json-schema-validation/final-data.d.ts +15 -0
  676. package/types/package-checks/json-schema-validation/issue-collector.d.ts +12 -0
  677. package/types/package-checks/json-schema-validation/json-schema-validation.d.ts +42 -0
  678. package/types/package-checks/json-schema-validation/options-resolution.d.ts +3 -0
  679. package/types/package-checks/json-schema-validation/options-validation.d.ts +2 -0
  680. package/types/package-checks/json-schema-validation/options.d.ts +53 -0
  681. package/types/package-checks/json-schema-validation/reference-resolver.d.ts +23 -0
  682. package/types/package-checks/json-schema-validation/remote-response.d.ts +2 -0
  683. package/types/package-checks/json-schema-validation/schema-engine.d.ts +33 -0
  684. package/types/package-checks/json-schema-validation/schema-policy.d.ts +17 -0
  685. package/types/package-checks/json-validation/default-check.d.ts +11 -0
  686. package/types/package-checks/json-validation/final-data.d.ts +10 -0
  687. package/types/package-checks/json-validation/json-validation.d.ts +28 -0
  688. package/types/package-checks/json-validation/options-resolution.d.ts +3 -0
  689. package/types/package-checks/json-validation/options-validation.d.ts +2 -0
  690. package/types/package-checks/json-validation/options.d.ts +13 -0
  691. package/types/package-checks/maintenance-reminders/assessment-results.d.ts +10 -0
  692. package/types/package-checks/maintenance-reminders/final-data.d.ts +47 -0
  693. package/types/package-checks/maintenance-reminders/maintenance-reminders.d.ts +111 -0
  694. package/types/package-checks/maintenance-reminders/maintenance-support.d.ts +7 -0
  695. package/types/package-checks/maintenance-reminders/measurement.d.ts +10 -0
  696. package/types/package-checks/maintenance-reminders/options-validation.d.ts +3 -0
  697. package/types/package-checks/markdown-link-validation/default-check.d.ts +27 -0
  698. package/types/package-checks/markdown-link-validation/execution.d.ts +12 -0
  699. package/types/package-checks/markdown-link-validation/filesystem-probes.d.ts +10 -0
  700. package/types/package-checks/markdown-link-validation/final-data.d.ts +10 -0
  701. package/types/package-checks/markdown-link-validation/local-resolution.d.ts +92 -0
  702. package/types/package-checks/markdown-link-validation/local-resolver.d.ts +5 -0
  703. package/types/package-checks/markdown-link-validation/markdown-parser.d.ts +37 -0
  704. package/types/package-checks/markdown-link-validation/options-resolution.d.ts +3 -0
  705. package/types/package-checks/markdown-link-validation/options-validation.d.ts +2 -0
  706. package/types/package-checks/markdown-link-validation/options.d.ts +43 -0
  707. package/types/package-checks/markdown-link-validation/records.d.ts +37 -0
  708. package/types/package-checks/markdown-link-validation/resolver-engine.d.ts +15 -0
  709. package/types/package-checks/markdown-link-validation/target-descriptor.d.ts +5 -0
  710. package/types/package-checks/markdown-link-validation/traversal-result.d.ts +12 -0
  711. package/types/package-checks/project-files/collection.d.ts +9 -0
  712. package/types/package-checks/project-files/config-glob.d.ts +5 -0
  713. package/types/package-checks/project-files/configuration.d.ts +31 -0
  714. package/types/package-checks/project-files/exact-input-measurement.d.ts +12 -0
  715. package/types/package-checks/project-files/file-fingerprint.d.ts +7 -0
  716. package/types/package-checks/project-files/gitlink-revision.d.ts +9 -0
  717. package/types/package-checks/project-files/gitlink-worktree.d.ts +26 -0
  718. package/types/package-checks/project-files/input-eligibility.d.ts +7 -0
  719. package/types/package-checks/project-files/reported-path.d.ts +1 -0
  720. package/types/package-checks/project-files/revision-paths.d.ts +12 -0
  721. package/types/package-checks/project-files/revision-worktree-files.d.ts +5 -0
  722. package/types/project-definition/check-tree/authoring.d.ts +41 -0
  723. package/types/project-definition/check-tree/materialization.d.ts +4 -0
  724. package/types/project-definition/check-tree/resolution.d.ts +25 -0
  725. package/types/project-definition/output-defaults.d.ts +14 -0
  726. package/types/project-definition/output-validation.d.ts +3 -0
  727. package/types/project-definition/project-definition-validation.d.ts +6 -0
  728. package/types/project-definition/project-definition.d.ts +88 -0
  729. package/types/project-run/aggregation.d.ts +7 -0
  730. package/types/project-run/check-execution/callback.d.ts +24 -0
  731. package/types/project-run/check-execution/dependencies.d.ts +9 -0
  732. package/types/project-run/check-execution/execution-finalization.d.ts +18 -0
  733. package/types/project-run/check-execution/execution-settlement.d.ts +41 -0
  734. package/types/project-run/check-execution/messages.d.ts +3 -0
  735. package/types/project-run/check-execution/plan.d.ts +10 -0
  736. package/types/project-run/check-execution/preflight-result.d.ts +23 -0
  737. package/types/project-run/check-execution/preflight.d.ts +27 -0
  738. package/types/project-run/check-execution/resolved-checks.d.ts +51 -0
  739. package/types/project-run/check-execution/terminal-result.d.ts +27 -0
  740. package/types/project-run/completion.d.ts +14 -0
  741. package/types/project-run/controls/contract.d.ts +24 -0
  742. package/types/project-run/controls/outputs-override-validation.d.ts +3 -0
  743. package/types/project-run/controls/validation-result.d.ts +14 -0
  744. package/types/project-run/controls/validation.d.ts +3 -0
  745. package/types/project-run/diagnostic-logging/diagnostic-detail-rendering.d.ts +11 -0
  746. package/types/project-run/diagnostic-logging/logger.d.ts +33 -0
  747. package/types/project-run/invocation-creation.d.ts +12 -0
  748. package/types/project-run/invocation.d.ts +34 -0
  749. package/types/project-run/machine-publication.d.ts +10 -0
  750. package/types/project-run/output-configuration.d.ts +3 -0
  751. package/types/project-run/output-status.d.ts +21 -0
  752. package/types/project-run/progress-rendering/presentation.d.ts +28 -0
  753. package/types/project-run/progress-rendering/renderer-formatting.d.ts +23 -0
  754. package/types/project-run/progress-rendering/renderer-lifecycle.d.ts +24 -0
  755. package/types/project-run/progress-rendering/renderer.d.ts +44 -0
  756. package/types/project-run/project-context.d.ts +7 -0
  757. package/types/project-run/result.d.ts +99 -0
  758. package/types/project-run/run.d.ts +18 -0
  759. package/types/project-run/task-scheduler/execution-state.d.ts +67 -0
  760. package/types/project-run/task-scheduler/graph-validation.d.ts +11 -0
  761. package/types/project-run/task-scheduler/graph.d.ts +40 -0
  762. package/types/project-run/task-scheduler/scheduler-admission-decision.d.ts +8 -0
  763. package/types/project-run/task-scheduler/scheduler-blocker-summary.d.ts +4 -0
  764. package/types/project-run/task-scheduler/scheduler-decision-inspection.d.ts +24 -0
  765. package/types/project-run/task-scheduler/scheduler-decision-model.d.ts +94 -0
  766. package/types/project-run/task-scheduler/scheduler-decision.d.ts +8 -0
  767. package/types/project-run/task-scheduler/scheduler.d.ts +3 -0
@@ -0,0 +1,103 @@
1
+ import { CheckExecutionInvariantFailure, recordSettledCheck } from "./execution-settlement.mjs";
2
+ const EMPTY_MESSAGES = Object.freeze([]);
3
+ /** Closes the task graph, lifecycle facts, and canonical Check summaries as one Run boundary. */
4
+ export function closeResolvedChecks(input) {
5
+ try {
6
+ assertNoTaskEngineFailures(input.graphRun.settlements);
7
+ if (input.graphRun.cancelled) {
8
+ return closeCancelledExecution({
9
+ normalizedChecks: input.allChecks,
10
+ preparedChecks: input.readyChecks,
11
+ state: input.state
12
+ });
13
+ }
14
+ assertEveryCheckClosed(input.readyChecks, input.graphRun.settlements);
15
+ return resolvedExecution("completed", input.state.session.freeze(), input.state);
16
+ }
17
+ catch (error) {
18
+ throw trustedFailure(error);
19
+ }
20
+ }
21
+ export function closeCancelledExecution(input) {
22
+ input.state.session.closeUnresolvedAsCancelled();
23
+ const snapshot = input.state.session.freeze();
24
+ settleUnstartedCancelledChecks({ ...input, snapshot });
25
+ return resolvedExecution("cancelled", snapshot, input.state);
26
+ }
27
+ export function checkIdentity(check) {
28
+ return Object.freeze({
29
+ checkId: check.definition.checkId,
30
+ displayName: check.definition.displayName,
31
+ visibility: check.visibility
32
+ });
33
+ }
34
+ export function trustedFailure(error) {
35
+ return error instanceof CheckExecutionInvariantFailure
36
+ ? error
37
+ : new CheckExecutionInvariantFailure("Check execution adapter escaped its contained failure boundary");
38
+ }
39
+ function resolvedExecution(kind, snapshot, state) {
40
+ return Object.freeze({
41
+ kind,
42
+ ...checkRunSummaries(snapshot, state.settledFactsByCheckId),
43
+ snapshot
44
+ });
45
+ }
46
+ function settleUnstartedCancelledChecks(input) {
47
+ const normalizedByCheckId = new Map(input.normalizedChecks.map((check) => [check.definition.checkId, check]));
48
+ const preparedByCheckId = new Map(input.preparedChecks.map((check) => [check.definition.checkId, check]));
49
+ for (const check of input.snapshot.checks) {
50
+ if (input.state.settledFactsByCheckId.has(check.checkId))
51
+ continue;
52
+ const normalized = normalizedByCheckId.get(check.checkId);
53
+ if (normalized === undefined) {
54
+ throw new CheckExecutionInvariantFailure("Cancelled Check does not identify a normalized Check");
55
+ }
56
+ recordSettledCheck({
57
+ check: checkIdentity(normalized),
58
+ durationMs: null,
59
+ messages: preparedByCheckId.get(check.checkId)?.preflightMessages ?? EMPTY_MESSAGES,
60
+ outcome: check.outcome,
61
+ phase: "execution",
62
+ state: input.state
63
+ });
64
+ }
65
+ }
66
+ function checkRunSummaries(snapshot, settledFactsByCheckId) {
67
+ if (snapshot.checks.length !== settledFactsByCheckId.size) {
68
+ throw new CheckExecutionInvariantFailure("Check settled facts do not close every Check");
69
+ }
70
+ const checkDurations = [];
71
+ const messages = [];
72
+ for (const check of snapshot.checks) {
73
+ const settledFacts = settledFactsByCheckId.get(check.checkId);
74
+ if (settledFacts === undefined) {
75
+ throw new CheckExecutionInvariantFailure("Check settled facts are missing a Check");
76
+ }
77
+ checkDurations.push(Object.freeze({ checkId: check.checkId, durationMs: settledFacts.durationMs }));
78
+ messages.push(...settledFacts.messages.map((message) => Object.freeze({ checkId: check.checkId, ...message })));
79
+ }
80
+ return Object.freeze({
81
+ checkDurations: Object.freeze(checkDurations),
82
+ checkMessages: messages.length === 0 ? Object.freeze([]) : Object.freeze(messages)
83
+ });
84
+ }
85
+ function assertNoTaskEngineFailures(settlements) {
86
+ for (const settled of settlements) {
87
+ if (settled.settlement.kind === "failed") {
88
+ throw new CheckExecutionInvariantFailure("Task engine received an unexpected execution failure");
89
+ }
90
+ if (settled.settlement.kind === "blocked") {
91
+ throw new CheckExecutionInvariantFailure("Task engine blocked a Product Check");
92
+ }
93
+ }
94
+ }
95
+ function assertEveryCheckClosed(checks, settlements) {
96
+ if (settlements.some((settled) => settled.settlement.kind === "cancelled-before-start")) {
97
+ throw new CheckExecutionInvariantFailure("Non-cancelled Task graph left a Check unstarted");
98
+ }
99
+ if (checks.length !== settlements.length) {
100
+ throw new CheckExecutionInvariantFailure("Task graph does not have one Task per executable Check");
101
+ }
102
+ }
103
+ //# sourceMappingURL=execution-finalization.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-finalization.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/execution-finalization.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CheckMessage } from \"../../check/check.ts\";\nimport type { CoreSnapshot } from \"../../check-settlement/facts.ts\";\nimport type { NormalizedCheck } from \"../../project-definition/project-definition.ts\";\nimport type { SettledTask } from \"../task-scheduler/scheduler.ts\";\nimport type { CheckDuration, CheckRunMessage } from \"../result.ts\";\nimport {\n CheckExecutionInvariantFailure,\n recordSettledCheck,\n type CheckIdentity,\n type SettledCheckFacts\n} from \"./execution-settlement.ts\";\nimport type { PreparedCheck } from \"./preflight.ts\";\nimport type { CheckExecutionState, ResolvedCheckExecution } from \"./resolved-checks.ts\";\n\nconst EMPTY_MESSAGES: readonly CheckMessage[] = Object.freeze([]);\n\n/** Closes the task graph, lifecycle facts, and canonical Check summaries as one Run boundary. */\nexport function closeResolvedChecks(\n input: Readonly<{\n readonly allChecks: readonly NormalizedCheck[];\n readonly graphRun: Awaited<\n ReturnType<typeof import(\"../task-scheduler/scheduler.ts\").runTaskGraph<void>>\n >;\n readonly readyChecks: readonly PreparedCheck[];\n readonly state: CheckExecutionState;\n }>\n): ResolvedCheckExecution {\n try {\n assertNoTaskEngineFailures(input.graphRun.settlements);\n if (input.graphRun.cancelled) {\n return closeCancelledExecution({\n normalizedChecks: input.allChecks,\n preparedChecks: input.readyChecks,\n state: input.state\n });\n }\n assertEveryCheckClosed(input.readyChecks, input.graphRun.settlements);\n return resolvedExecution(\"completed\", input.state.session.freeze(), input.state);\n } catch (error) {\n throw trustedFailure(error);\n }\n}\n\nexport function closeCancelledExecution(\n input: Readonly<{\n readonly normalizedChecks: readonly NormalizedCheck[];\n readonly preparedChecks: readonly PreparedCheck[];\n readonly state: CheckExecutionState;\n }>\n): ResolvedCheckExecution {\n input.state.session.closeUnresolvedAsCancelled();\n const snapshot = input.state.session.freeze();\n settleUnstartedCancelledChecks({ ...input, snapshot });\n return resolvedExecution(\"cancelled\", snapshot, input.state);\n}\n\nexport function checkIdentity(\n check: Pick<NormalizedCheck, \"definition\" | \"visibility\">\n): CheckIdentity {\n return Object.freeze({\n checkId: check.definition.checkId,\n displayName: check.definition.displayName,\n visibility: check.visibility\n });\n}\n\nexport function trustedFailure(error: unknown): CheckExecutionInvariantFailure {\n return error instanceof CheckExecutionInvariantFailure\n ? error\n : new CheckExecutionInvariantFailure(\n \"Check execution adapter escaped its contained failure boundary\"\n );\n}\n\nfunction resolvedExecution(\n kind: ResolvedCheckExecution[\"kind\"],\n snapshot: CoreSnapshot,\n state: CheckExecutionState\n): ResolvedCheckExecution {\n return Object.freeze({\n kind,\n ...checkRunSummaries(snapshot, state.settledFactsByCheckId),\n snapshot\n });\n}\n\nfunction settleUnstartedCancelledChecks(\n input: Readonly<{\n readonly normalizedChecks: readonly NormalizedCheck[];\n readonly preparedChecks: readonly PreparedCheck[];\n readonly snapshot: CoreSnapshot;\n readonly state: CheckExecutionState;\n }>\n): void {\n const normalizedByCheckId = new Map(\n input.normalizedChecks.map((check) => [check.definition.checkId, check])\n );\n const preparedByCheckId = new Map(\n input.preparedChecks.map((check) => [check.definition.checkId, check])\n );\n for (const check of input.snapshot.checks) {\n if (input.state.settledFactsByCheckId.has(check.checkId)) continue;\n const normalized = normalizedByCheckId.get(check.checkId);\n if (normalized === undefined) {\n throw new CheckExecutionInvariantFailure(\n \"Cancelled Check does not identify a normalized Check\"\n );\n }\n recordSettledCheck({\n check: checkIdentity(normalized),\n durationMs: null,\n messages: preparedByCheckId.get(check.checkId)?.preflightMessages ?? EMPTY_MESSAGES,\n outcome: check.outcome,\n phase: \"execution\",\n state: input.state\n });\n }\n}\n\nfunction checkRunSummaries(\n snapshot: CoreSnapshot,\n settledFactsByCheckId: ReadonlyMap<string, SettledCheckFacts>\n): Readonly<{\n readonly checkDurations: readonly CheckDuration[];\n readonly checkMessages: readonly CheckRunMessage[];\n}> {\n if (snapshot.checks.length !== settledFactsByCheckId.size) {\n throw new CheckExecutionInvariantFailure(\"Check settled facts do not close every Check\");\n }\n const checkDurations: CheckDuration[] = [];\n const messages: CheckRunMessage[] = [];\n for (const check of snapshot.checks) {\n const settledFacts = settledFactsByCheckId.get(check.checkId);\n if (settledFacts === undefined) {\n throw new CheckExecutionInvariantFailure(\"Check settled facts are missing a Check\");\n }\n checkDurations.push(\n Object.freeze({ checkId: check.checkId, durationMs: settledFacts.durationMs })\n );\n messages.push(\n ...settledFacts.messages.map((message) =>\n Object.freeze({ checkId: check.checkId, ...message })\n )\n );\n }\n return Object.freeze({\n checkDurations: Object.freeze(checkDurations),\n checkMessages: messages.length === 0 ? Object.freeze([]) : Object.freeze(messages)\n });\n}\n\nfunction assertNoTaskEngineFailures(settlements: readonly SettledTask<void>[]): void {\n for (const settled of settlements) {\n if (settled.settlement.kind === \"failed\") {\n throw new CheckExecutionInvariantFailure(\n \"Task engine received an unexpected execution failure\"\n );\n }\n if (settled.settlement.kind === \"blocked\") {\n throw new CheckExecutionInvariantFailure(\"Task engine blocked a Product Check\");\n }\n }\n}\n\nfunction assertEveryCheckClosed(\n checks: readonly NormalizedCheck[],\n settlements: readonly SettledTask<void>[]\n): void {\n if (settlements.some((settled) => settled.settlement.kind === \"cancelled-before-start\")) {\n throw new CheckExecutionInvariantFailure(\"Non-cancelled Task graph left a Check unstarted\");\n }\n if (checks.length !== settlements.length) {\n throw new CheckExecutionInvariantFailure(\n \"Task graph does not have one Task per executable Check\"\n );\n }\n}\n"]}
@@ -0,0 +1,90 @@
1
+ import { diagnosticTags, summarizeDiagnosticValue } from "../diagnostic-logging/logger.mjs";
2
+ import { parseCheckTerminalResult } from "./terminal-result.mjs";
3
+ export class CheckExecutionInvariantFailure extends Error {
4
+ constructor(message) {
5
+ super(message);
6
+ this.name = "CheckExecutionInvariantFailure";
7
+ }
8
+ }
9
+ export function settleCallback(input) {
10
+ const executionTags = diagnosticTags(`CHECK:${input.checkId}`, "EXECUTION");
11
+ const { callback } = input;
12
+ if (callback.source === "product") {
13
+ const outcome = input.scope.settleProduct(callback.result);
14
+ return Object.freeze({ messages: input.preflightMessages, outcome });
15
+ }
16
+ const terminal = parseCheckTerminalResult(callback.result);
17
+ if (terminal === undefined) {
18
+ input.diagnosticLogger?.observe({
19
+ event: "callback.malformed",
20
+ tags: diagnosticTags(...executionTags, "MALFORMED"),
21
+ details: { result: callback.result }
22
+ });
23
+ }
24
+ const settlement = input.scope.settle(terminal?.result ?? callback.result);
25
+ if (terminal !== undefined && !settlement.authorResultAccepted) {
26
+ input.diagnosticLogger?.observe({
27
+ event: "check.contained",
28
+ tags: diagnosticTags(...executionTags, "CONTAINED"),
29
+ details: { outcome: diagnosticOutcome(settlement.outcome), raw: callback.result }
30
+ });
31
+ }
32
+ return Object.freeze({
33
+ messages: terminal !== undefined && settlement.authorResultAccepted
34
+ ? Object.freeze([...input.preflightMessages, ...terminal.messages])
35
+ : input.preflightMessages,
36
+ outcome: settlement.outcome
37
+ });
38
+ }
39
+ /** Records one terminal Check lifecycle fact after its owning Core scope has closed. */
40
+ export function recordSettledCheck(input) {
41
+ if (input.state.settledFactsByCheckId.has(input.check.checkId)) {
42
+ throw new CheckExecutionInvariantFailure("Check lifecycle settled more than once");
43
+ }
44
+ input.state.settledFactsByCheckId.set(input.check.checkId, Object.freeze({ durationMs: input.durationMs, messages: input.messages }));
45
+ input.state.diagnosticLogger?.observe({
46
+ event: "check.finished",
47
+ tags: diagnosticTags(`CHECK:${input.check.checkId}`, input.phase.toUpperCase(), "FINISHED", input.outcome.status.toUpperCase()),
48
+ details: {
49
+ durationMs: input.durationMs,
50
+ ...(input.messages.length === 0 ? {} : { messages: input.messages }),
51
+ ...diagnosticSettledOutcome(input.outcome)
52
+ }
53
+ });
54
+ input.state.lifecycle?.settled(Object.freeze({
55
+ checkId: input.check.checkId,
56
+ displayName: input.check.displayName,
57
+ outcome: input.outcome,
58
+ durationMs: input.durationMs,
59
+ messages: input.messages,
60
+ visibility: input.check.visibility
61
+ }));
62
+ }
63
+ function diagnosticSettledOutcome(outcome) {
64
+ switch (outcome.status) {
65
+ case "passed":
66
+ case "failed":
67
+ return Object.freeze({ data: summarizeDiagnosticValue(outcome.data) });
68
+ case "not-applicable":
69
+ return outcome.reason === undefined
70
+ ? Object.freeze({})
71
+ : Object.freeze({ reason: outcome.reason });
72
+ case "unavailable":
73
+ return Object.freeze({ reason: outcome.reason });
74
+ }
75
+ }
76
+ function diagnosticOutcome(outcome) {
77
+ switch (outcome.status) {
78
+ case "passed":
79
+ case "failed":
80
+ return Object.freeze({
81
+ data: summarizeDiagnosticValue(outcome.data),
82
+ status: outcome.status
83
+ });
84
+ case "not-applicable":
85
+ return Object.freeze({ reason: outcome.reason ?? null, status: outcome.status });
86
+ case "unavailable":
87
+ return Object.freeze({ reason: outcome.reason, status: outcome.status });
88
+ }
89
+ }
90
+ //# sourceMappingURL=execution-settlement.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-settlement.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/execution-settlement.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CheckMessage, CheckOutcome, CheckVisibility } from \"../../check/check.ts\";\nimport type { CoreCheckSession } from \"../../check-settlement/session.ts\";\nimport {\n diagnosticTags,\n summarizeDiagnosticValue,\n type DiagnosticLogger\n} from \"../diagnostic-logging/logger.ts\";\nimport { parseCheckTerminalResult } from \"./terminal-result.ts\";\nimport type { CheckExecutionLifecycle } from \"./resolved-checks.ts\";\nimport type { executeCheckCallback } from \"./callback.ts\";\n\nexport type CheckIdentity = Readonly<{\n readonly checkId: string;\n readonly displayName: string;\n readonly visibility: CheckVisibility;\n}>;\n\nexport interface SettledCheckFacts {\n readonly durationMs: number | null;\n readonly messages: readonly CheckMessage[];\n}\n\nexport type CheckExecutionSettlementState = Readonly<{\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly lifecycle: CheckExecutionLifecycle | undefined;\n readonly settledFactsByCheckId: Map<string, SettledCheckFacts>;\n}>;\n\nexport class CheckExecutionInvariantFailure extends Error {\n public constructor(message: string) {\n super(message);\n this.name = \"CheckExecutionInvariantFailure\";\n }\n}\n\nexport function settleCallback(\n input: Readonly<{\n readonly callback: Awaited<ReturnType<typeof executeCheckCallback>>;\n readonly checkId: string;\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly preflightMessages: readonly CheckMessage[];\n readonly scope: ReturnType<CoreCheckSession[\"openCheckScope\"]>;\n }>\n): Readonly<{ readonly messages: readonly CheckMessage[]; readonly outcome: CheckOutcome }> {\n const executionTags = diagnosticTags(`CHECK:${input.checkId}`, \"EXECUTION\");\n const { callback } = input;\n if (callback.source === \"product\") {\n const outcome = input.scope.settleProduct(callback.result);\n return Object.freeze({ messages: input.preflightMessages, outcome });\n }\n const terminal = parseCheckTerminalResult(callback.result);\n if (terminal === undefined) {\n input.diagnosticLogger?.observe({\n event: \"callback.malformed\",\n tags: diagnosticTags(...executionTags, \"MALFORMED\"),\n details: { result: callback.result }\n });\n }\n const settlement = input.scope.settle(terminal?.result ?? callback.result);\n if (terminal !== undefined && !settlement.authorResultAccepted) {\n input.diagnosticLogger?.observe({\n event: \"check.contained\",\n tags: diagnosticTags(...executionTags, \"CONTAINED\"),\n details: { outcome: diagnosticOutcome(settlement.outcome), raw: callback.result }\n });\n }\n return Object.freeze({\n messages:\n terminal !== undefined && settlement.authorResultAccepted\n ? Object.freeze([...input.preflightMessages, ...terminal.messages])\n : input.preflightMessages,\n outcome: settlement.outcome\n });\n}\n\n/** Records one terminal Check lifecycle fact after its owning Core scope has closed. */\nexport function recordSettledCheck(\n input: Readonly<{\n readonly check: CheckIdentity;\n readonly durationMs: number | null;\n readonly messages: readonly CheckMessage[];\n readonly outcome: CheckOutcome;\n readonly phase: \"execution\" | \"preflight\";\n readonly state: CheckExecutionSettlementState;\n }>\n): void {\n if (input.state.settledFactsByCheckId.has(input.check.checkId)) {\n throw new CheckExecutionInvariantFailure(\"Check lifecycle settled more than once\");\n }\n input.state.settledFactsByCheckId.set(\n input.check.checkId,\n Object.freeze({ durationMs: input.durationMs, messages: input.messages })\n );\n input.state.diagnosticLogger?.observe({\n event: \"check.finished\",\n tags: diagnosticTags(\n `CHECK:${input.check.checkId}`,\n input.phase.toUpperCase(),\n \"FINISHED\",\n input.outcome.status.toUpperCase()\n ),\n details: {\n durationMs: input.durationMs,\n ...(input.messages.length === 0 ? {} : { messages: input.messages }),\n ...diagnosticSettledOutcome(input.outcome)\n }\n });\n input.state.lifecycle?.settled(\n Object.freeze({\n checkId: input.check.checkId,\n displayName: input.check.displayName,\n outcome: input.outcome,\n durationMs: input.durationMs,\n messages: input.messages,\n visibility: input.check.visibility\n })\n );\n}\n\nfunction diagnosticSettledOutcome(outcome: CheckOutcome): Readonly<Record<string, unknown>> {\n switch (outcome.status) {\n case \"passed\":\n case \"failed\":\n return Object.freeze({ data: summarizeDiagnosticValue(outcome.data) });\n case \"not-applicable\":\n return outcome.reason === undefined\n ? Object.freeze({})\n : Object.freeze({ reason: outcome.reason });\n case \"unavailable\":\n return Object.freeze({ reason: outcome.reason });\n }\n}\n\nfunction diagnosticOutcome(outcome: CheckOutcome): Readonly<Record<string, unknown>> {\n switch (outcome.status) {\n case \"passed\":\n case \"failed\":\n return Object.freeze({\n data: summarizeDiagnosticValue(outcome.data),\n status: outcome.status\n });\n case \"not-applicable\":\n return Object.freeze({ reason: outcome.reason ?? null, status: outcome.status });\n case \"unavailable\":\n return Object.freeze({ reason: outcome.reason, status: outcome.status });\n }\n}\n"]}
@@ -0,0 +1,38 @@
1
+ import { hasRequiredAndOptionalRecordKeys, snapshotClosedArray, snapshotClosedRecord } from "../../data-boundary/closed-values.mjs";
2
+ const EMPTY_MESSAGES = Object.freeze([]);
3
+ /** Parses the shared closed Check-message attachment without retaining author input. */
4
+ export function parseCheckMessages(value) {
5
+ if (value === undefined)
6
+ return EMPTY_MESSAGES;
7
+ const authoredMessages = snapshotClosedArray(value);
8
+ if (authoredMessages === undefined)
9
+ return undefined;
10
+ const messages = [];
11
+ for (const authoredMessage of authoredMessages) {
12
+ const message = detachedMessage(authoredMessage);
13
+ if (message === undefined)
14
+ return undefined;
15
+ messages.push(message);
16
+ }
17
+ return messages.length === 0 ? EMPTY_MESSAGES : Object.freeze(messages);
18
+ }
19
+ function detachedMessage(value) {
20
+ const message = snapshotClosedRecord(value);
21
+ if (message === undefined ||
22
+ !hasRequiredAndOptionalRecordKeys(message, {
23
+ required: ["level", "code", "message"],
24
+ optional: []
25
+ }) ||
26
+ !isCheckMessageLevel(message.level) ||
27
+ typeof message.code !== "string" ||
28
+ message.code.length === 0 ||
29
+ typeof message.message !== "string" ||
30
+ message.message.length === 0) {
31
+ return undefined;
32
+ }
33
+ return Object.freeze({ code: message.code, level: message.level, message: message.message });
34
+ }
35
+ function isCheckMessageLevel(value) {
36
+ return value === "info" || value === "warning" || value === "error";
37
+ }
38
+ //# sourceMappingURL=messages.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/messages.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gCAAgC,EAChC,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,sCAAsC,CAAC;AAE9C,MAAM,cAAc,GAA4B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAElE,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAC,KAAc;IAC/C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC;IAC/C,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,gBAAgB,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAErD,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;QAC/C,MAAM,OAAO,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,OAAO,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC5C,IACE,OAAO,KAAK,SAAS;QACrB,CAAC,gCAAgC,CAAC,OAAO,EAAE;YACzC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC;YACtC,QAAQ,EAAE,EAAE;SACb,CAAC;QACF,CAAC,mBAAmB,CAAC,OAAO,CAAC,KAAK,CAAC;QACnC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ;QAChC,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACzB,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ;QACnC,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAC5B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO,CAAC;AACtE,CAAC","sourcesContent":["import type { CheckMessage } from \"../../check/check.ts\";\nimport {\n hasRequiredAndOptionalRecordKeys,\n snapshotClosedArray,\n snapshotClosedRecord\n} from \"../../data-boundary/closed-values.ts\";\n\nconst EMPTY_MESSAGES: readonly CheckMessage[] = Object.freeze([]);\n\n/** Parses the shared closed Check-message attachment without retaining author input. */\nexport function parseCheckMessages(value: unknown): readonly CheckMessage[] | undefined {\n if (value === undefined) return EMPTY_MESSAGES;\n const authoredMessages = snapshotClosedArray(value);\n if (authoredMessages === undefined) return undefined;\n\n const messages: CheckMessage[] = [];\n for (const authoredMessage of authoredMessages) {\n const message = detachedMessage(authoredMessage);\n if (message === undefined) return undefined;\n messages.push(message);\n }\n return messages.length === 0 ? EMPTY_MESSAGES : Object.freeze(messages);\n}\n\nfunction detachedMessage(value: unknown): CheckMessage | undefined {\n const message = snapshotClosedRecord(value);\n if (\n message === undefined ||\n !hasRequiredAndOptionalRecordKeys(message, {\n required: [\"level\", \"code\", \"message\"],\n optional: []\n }) ||\n !isCheckMessageLevel(message.level) ||\n typeof message.code !== \"string\" ||\n message.code.length === 0 ||\n typeof message.message !== \"string\" ||\n message.message.length === 0\n ) {\n return undefined;\n }\n return Object.freeze({ code: message.code, level: message.level, message: message.message });\n}\n\nfunction isCheckMessageLevel(value: unknown): value is CheckMessage[\"level\"] {\n return value === \"info\" || value === \"warning\" || value === \"error\";\n}\n"]}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Pure executable-Check projection. Check ids are the only scheduler Task
3
+ * identities: containment has already been resolved by Definition and has no
4
+ * runtime alias or completion semantics here.
5
+ */
6
+ export function planStaticCheckGraph(checks, options = {}) {
7
+ const alreadySettledCheckIds = options.alreadySettledCheckIds ?? new Set();
8
+ const tasks = checks.map((check) => taskForCheck(check, alreadySettledCheckIds));
9
+ const scopes = checks.map(scopeForCheck);
10
+ return Object.freeze({
11
+ tasks: Object.freeze(tasks),
12
+ scopes: Object.freeze(scopes)
13
+ });
14
+ }
15
+ function taskForCheck(check, alreadySettledCheckIds) {
16
+ return Object.freeze({
17
+ dependsOn: check.dependsOn.filter((checkId) => !alreadySettledCheckIds.has(checkId)),
18
+ id: check.definition.checkId,
19
+ mutex: check.mutex,
20
+ scopeId: scopeIdFor(check)
21
+ });
22
+ }
23
+ function scopeForCheck(check) {
24
+ const taskId = check.definition.checkId;
25
+ return Object.freeze({
26
+ activationTaskIds: Object.freeze([taskId]),
27
+ id: scopeIdFor(check),
28
+ maxParallel: check.maxParallel,
29
+ terminalTaskId: taskId
30
+ });
31
+ }
32
+ function scopeIdFor(check) {
33
+ return `check/${check.definition.checkId}`;
34
+ }
35
+ //# sourceMappingURL=plan.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/plan.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAkC,EAClC,OAAO,GAAwE,EAAE;IAEjF,MAAM,sBAAsB,GAAG,OAAO,CAAC,sBAAsB,IAAI,IAAI,GAAG,EAAU,CAAC;IACnF,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,YAAY,CACnB,KAAsB,EACtB,sBAA2C;IAE3C,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACpF,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,OAAO;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,KAAsB;IAC3C,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;IACxC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC;QAC1C,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC;QACrB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,cAAc,EAAE,MAAM;KACvB,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,KAAsB;IACxC,OAAO,SAAS,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;AAC7C,CAAC","sourcesContent":["import type { TaskGraph, TaskNode, TaskScope } from \"../task-scheduler/graph.ts\";\nimport type { NormalizedCheck } from \"../../project-definition/project-definition.ts\";\n\n/**\n * Pure executable-Check projection. Check ids are the only scheduler Task\n * identities: containment has already been resolved by Definition and has no\n * runtime alias or completion semantics here.\n */\nexport function planStaticCheckGraph(\n checks: readonly NormalizedCheck[],\n options: Readonly<{ readonly alreadySettledCheckIds?: ReadonlySet<string> }> = {}\n): TaskGraph {\n const alreadySettledCheckIds = options.alreadySettledCheckIds ?? new Set<string>();\n const tasks = checks.map((check) => taskForCheck(check, alreadySettledCheckIds));\n const scopes = checks.map(scopeForCheck);\n return Object.freeze({\n tasks: Object.freeze(tasks),\n scopes: Object.freeze(scopes)\n });\n}\n\nfunction taskForCheck(\n check: NormalizedCheck,\n alreadySettledCheckIds: ReadonlySet<string>\n): TaskNode {\n return Object.freeze({\n dependsOn: check.dependsOn.filter((checkId) => !alreadySettledCheckIds.has(checkId)),\n id: check.definition.checkId,\n mutex: check.mutex,\n scopeId: scopeIdFor(check)\n });\n}\n\nfunction scopeForCheck(check: NormalizedCheck): TaskScope {\n const taskId = check.definition.checkId;\n return Object.freeze({\n activationTaskIds: Object.freeze([taskId]),\n id: scopeIdFor(check),\n maxParallel: check.maxParallel,\n terminalTaskId: taskId\n });\n}\n\nfunction scopeIdFor(check: NormalizedCheck): string {\n return `check/${check.definition.checkId}`;\n}\n"]}
@@ -0,0 +1,83 @@
1
+ import { hasRequiredAndOptionalRecordKeys, snapshotClosedRecord } from "../../data-boundary/closed-values.mjs";
2
+ import { parseCheckMessages } from "./messages.mjs";
3
+ /** Parses the closed result vocabulary returned by one trusted Check preflight. */
4
+ export function parseCheckPreflightResult(value) {
5
+ const preflightResult = snapshotClosedRecord(value);
6
+ if (preflightResult === undefined) {
7
+ return undefined;
8
+ }
9
+ const messages = parseCheckMessages(preflightResult.messages);
10
+ if (messages === undefined)
11
+ return undefined;
12
+ switch (preflightResult.status) {
13
+ case "success":
14
+ return parseSuccessfulPreflight(preflightResult, messages);
15
+ case "failure":
16
+ return parseFailedPreflight(preflightResult, messages);
17
+ default:
18
+ return undefined;
19
+ }
20
+ }
21
+ function parseSuccessfulPreflight(preflightResult, messages) {
22
+ if (!hasRequiredAndOptionalRecordKeys(preflightResult, {
23
+ optional: ["messages"],
24
+ required: ["status", "preparedOptions"]
25
+ })) {
26
+ return undefined;
27
+ }
28
+ return Object.freeze({
29
+ status: "success",
30
+ preparedOptions: preflightResult.preparedOptions,
31
+ messages
32
+ });
33
+ }
34
+ function parseFailedPreflight(preflightResult, messages) {
35
+ if (typeof preflightResult.action !== "string")
36
+ return undefined;
37
+ const reason = parsePreflightReason(preflightResult.reason);
38
+ if (reason === undefined)
39
+ return undefined;
40
+ switch (preflightResult.action) {
41
+ case "block":
42
+ return parseBlockedPreflight(preflightResult, reason, messages);
43
+ case "continue":
44
+ return parseContinuedPreflight(preflightResult, reason, messages);
45
+ default:
46
+ return undefined;
47
+ }
48
+ }
49
+ function parseBlockedPreflight(preflightResult, reason, messages) {
50
+ if (!hasRequiredAndOptionalRecordKeys(preflightResult, {
51
+ optional: ["messages"],
52
+ required: ["status", "action", "reason"]
53
+ })) {
54
+ return undefined;
55
+ }
56
+ return Object.freeze({ status: "failure", action: "block", reason, messages });
57
+ }
58
+ function parseContinuedPreflight(preflightResult, reason, messages) {
59
+ if (!hasRequiredAndOptionalRecordKeys(preflightResult, {
60
+ optional: ["messages"],
61
+ required: ["status", "action", "fallback", "reason"]
62
+ })) {
63
+ return undefined;
64
+ }
65
+ return Object.freeze({
66
+ status: "failure",
67
+ action: "continue",
68
+ fallback: preflightResult.fallback,
69
+ reason,
70
+ messages
71
+ });
72
+ }
73
+ function parsePreflightReason(value) {
74
+ const reason = snapshotClosedRecord(value);
75
+ if (reason === undefined ||
76
+ Object.keys(reason).length !== 1 ||
77
+ typeof reason.code !== "string" ||
78
+ reason.code.length === 0) {
79
+ return undefined;
80
+ }
81
+ return Object.freeze({ code: reason.code });
82
+ }
83
+ //# sourceMappingURL=preflight-result.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight-result.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/preflight-result.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gCAAgC,EAChC,oBAAoB,EACrB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAsBnD,mFAAmF;AACnF,MAAM,UAAU,yBAAyB,CAAC,KAAc;IACtD,MAAM,eAAe,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC9D,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC7C,QAAQ,eAAe,CAAC,MAAM,EAAE,CAAC;QAC/B,KAAK,SAAS;YACZ,OAAO,wBAAwB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAC7D,KAAK,SAAS;YACZ,OAAO,oBAAoB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QACzD;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,wBAAwB,CAC/B,eAAkD,EAClD,QAAiC;IAEjC,IACE,CAAC,gCAAgC,CAAC,eAAe,EAAE;QACjD,QAAQ,EAAE,CAAC,UAAU,CAAC;QACtB,QAAQ,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;KACxC,CAAC,EACF,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,SAAS;QACjB,eAAe,EAAE,eAAe,CAAC,eAAe;QAChD,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAC3B,eAAkD,EAClD,QAAiC;IAEjC,IAAI,OAAO,eAAe,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACjE,MAAM,MAAM,GAAG,oBAAoB,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,QAAQ,eAAe,CAAC,MAAM,EAAE,CAAC;QAC/B,KAAK,OAAO;YACV,OAAO,qBAAqB,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClE,KAAK,UAAU;YACb,OAAO,uBAAuB,CAAC,eAAe,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpE;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,eAAkD,EAClD,MAA2C,EAC3C,QAAiC;IAEjC,IACE,CAAC,gCAAgC,CAAC,eAAe,EAAE;QACjD,QAAQ,EAAE,CAAC,UAAU,CAAC;QACtB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;KACzC,CAAC,EACF,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,SAAS,uBAAuB,CAC9B,eAAkD,EAClD,MAA2C,EAC3C,QAAiC;IAEjC,IACE,CAAC,gCAAgC,CAAC,eAAe,EAAE;QACjD,QAAQ,EAAE,CAAC,UAAU,CAAC;QACtB,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC;KACrD,CAAC,EACF,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,UAAmB;QAC3B,QAAQ,EAAE,eAAe,CAAC,QAAQ;QAClC,MAAM;QACN,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC3C,IACE,MAAM,KAAK,SAAS;QACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC;QAChC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC/B,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EACxB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9C,CAAC","sourcesContent":["import {\n hasRequiredAndOptionalRecordKeys,\n snapshotClosedRecord\n} from \"../../data-boundary/closed-values.ts\";\nimport type { CheckMessage } from \"../../check/check.ts\";\nimport { parseCheckMessages } from \"./messages.ts\";\n\nexport type ParsedCheckPreflightResult =\n | Readonly<{\n readonly status: \"success\";\n readonly preparedOptions: unknown;\n readonly messages: readonly CheckMessage[];\n }>\n | Readonly<{\n readonly status: \"failure\";\n readonly action: \"block\";\n readonly reason: { readonly code: string };\n readonly messages: readonly CheckMessage[];\n }>\n | Readonly<{\n readonly status: \"failure\";\n readonly action: \"continue\";\n readonly fallback: unknown;\n readonly reason: { readonly code: string };\n readonly messages: readonly CheckMessage[];\n }>;\n\n/** Parses the closed result vocabulary returned by one trusted Check preflight. */\nexport function parseCheckPreflightResult(value: unknown): ParsedCheckPreflightResult | undefined {\n const preflightResult = snapshotClosedRecord(value);\n if (preflightResult === undefined) {\n return undefined;\n }\n const messages = parseCheckMessages(preflightResult.messages);\n if (messages === undefined) return undefined;\n switch (preflightResult.status) {\n case \"success\":\n return parseSuccessfulPreflight(preflightResult, messages);\n case \"failure\":\n return parseFailedPreflight(preflightResult, messages);\n default:\n return undefined;\n }\n}\n\nfunction parseSuccessfulPreflight(\n preflightResult: Readonly<Record<string, unknown>>,\n messages: readonly CheckMessage[]\n): ParsedCheckPreflightResult | undefined {\n if (\n !hasRequiredAndOptionalRecordKeys(preflightResult, {\n optional: [\"messages\"],\n required: [\"status\", \"preparedOptions\"]\n })\n ) {\n return undefined;\n }\n return Object.freeze({\n status: \"success\",\n preparedOptions: preflightResult.preparedOptions,\n messages\n });\n}\n\nfunction parseFailedPreflight(\n preflightResult: Readonly<Record<string, unknown>>,\n messages: readonly CheckMessage[]\n): ParsedCheckPreflightResult | undefined {\n if (typeof preflightResult.action !== \"string\") return undefined;\n const reason = parsePreflightReason(preflightResult.reason);\n if (reason === undefined) return undefined;\n switch (preflightResult.action) {\n case \"block\":\n return parseBlockedPreflight(preflightResult, reason, messages);\n case \"continue\":\n return parseContinuedPreflight(preflightResult, reason, messages);\n default:\n return undefined;\n }\n}\n\nfunction parseBlockedPreflight(\n preflightResult: Readonly<Record<string, unknown>>,\n reason: Readonly<{ readonly code: string }>,\n messages: readonly CheckMessage[]\n): ParsedCheckPreflightResult | undefined {\n if (\n !hasRequiredAndOptionalRecordKeys(preflightResult, {\n optional: [\"messages\"],\n required: [\"status\", \"action\", \"reason\"]\n })\n ) {\n return undefined;\n }\n return Object.freeze({ status: \"failure\", action: \"block\", reason, messages });\n}\n\nfunction parseContinuedPreflight(\n preflightResult: Readonly<Record<string, unknown>>,\n reason: Readonly<{ readonly code: string }>,\n messages: readonly CheckMessage[]\n): ParsedCheckPreflightResult | undefined {\n if (\n !hasRequiredAndOptionalRecordKeys(preflightResult, {\n optional: [\"messages\"],\n required: [\"status\", \"action\", \"fallback\", \"reason\"]\n })\n ) {\n return undefined;\n }\n return Object.freeze({\n status: \"failure\",\n action: \"continue\" as const,\n fallback: preflightResult.fallback,\n reason,\n messages\n });\n}\n\nfunction parsePreflightReason(value: unknown): Readonly<{ readonly code: string }> | undefined {\n const reason = snapshotClosedRecord(value);\n if (\n reason === undefined ||\n Object.keys(reason).length !== 1 ||\n typeof reason.code !== \"string\" ||\n reason.code.length === 0\n ) {\n return undefined;\n }\n return Object.freeze({ code: reason.code });\n}\n"]}
@@ -0,0 +1,186 @@
1
+ import { snapshotJsonObject } from "../../check/options-snapshot.mjs";
2
+ import { diagnosticTags, summarizeDiagnosticValue } from "../diagnostic-logging/logger.mjs";
3
+ import { parseCheckPreflightResult } from "./preflight-result.mjs";
4
+ const EMPTY_MESSAGES = Object.freeze([]);
5
+ const INERT_SIGNAL = new AbortController().signal;
6
+ /** Completes the sequential invocation-wide barrier before any Check enters the Task graph. */
7
+ export async function prepareChecks(input) {
8
+ const resolutions = [];
9
+ for (const check of input.checks) {
10
+ resolutions.push(await prepareCheck({
11
+ check,
12
+ diagnosticLogger: input.diagnosticLogger,
13
+ signal: input.signal
14
+ }));
15
+ }
16
+ return Object.freeze(resolutions);
17
+ }
18
+ async function prepareCheck(input) {
19
+ if (input.signal?.aborted) {
20
+ return observeBlockedPreflight({
21
+ check: input.check,
22
+ diagnosticLogger: input.diagnosticLogger,
23
+ details: {},
24
+ result: "cancelled-before-callback",
25
+ reasonCode: "execution-cancelled"
26
+ });
27
+ }
28
+ if (input.check.preflight === undefined) {
29
+ return resolveAuthoredOptions(input);
30
+ }
31
+ return resolvePreflightInvocation(input, await invokePreflight(input.check, input.signal));
32
+ }
33
+ function resolveAuthoredOptions(input) {
34
+ const resolution = readyResolution({
35
+ authoredCheck: input.check,
36
+ messages: EMPTY_MESSAGES,
37
+ preparedOptions: input.check.options
38
+ });
39
+ observeReadyOrMalformedResolution(input.diagnosticLogger, input.check.definition.checkId, resolution, "skipped", { source: "authored" });
40
+ return resolution;
41
+ }
42
+ function resolvePreflightInvocation(input, invocation) {
43
+ if (invocation.kind === "threw") {
44
+ return observeBlockedPreflight({
45
+ check: input.check,
46
+ diagnosticLogger: input.diagnosticLogger,
47
+ details: { error: invocation.error },
48
+ result: input.signal?.aborted ? "cancelled-after-throw" : "threw",
49
+ reasonCode: input.signal?.aborted ? "execution-cancelled" : "preflight-threw"
50
+ });
51
+ }
52
+ return resolveReturnedPreflight(input, invocation.output);
53
+ }
54
+ function resolveReturnedPreflight(input, preflightOutput) {
55
+ if (input.signal?.aborted) {
56
+ return observeBlockedPreflight({
57
+ check: input.check,
58
+ diagnosticLogger: input.diagnosticLogger,
59
+ details: { raw: preflightOutput },
60
+ result: "cancelled-after-callback",
61
+ reasonCode: "execution-cancelled"
62
+ });
63
+ }
64
+ const preflightResult = parseCheckPreflightResult(preflightOutput);
65
+ if (preflightResult === undefined) {
66
+ return observeBlockedPreflight({
67
+ check: input.check,
68
+ diagnosticLogger: input.diagnosticLogger,
69
+ details: { raw: preflightOutput },
70
+ result: "malformed",
71
+ reasonCode: "invalid-preflight-result"
72
+ });
73
+ }
74
+ if (preflightResult.status === "failure" && preflightResult.action === "block") {
75
+ return resolveBlockedPreflightResult(input, preflightResult);
76
+ }
77
+ return resolveReadyPreflightResult(input, preflightOutput, preflightResult);
78
+ }
79
+ function resolveBlockedPreflightResult(input, preflightResult) {
80
+ const resolution = blockedResolution({
81
+ check: input.check,
82
+ messages: preflightResult.messages,
83
+ reasonCode: preflightResult.reason.code
84
+ });
85
+ observePreflightResolution(input.diagnosticLogger, input.check.definition.checkId, resolution, "blocked", {
86
+ ...(preflightResult.messages.length === 0 ? {} : { messages: preflightResult.messages }),
87
+ reason: preflightResult.reason
88
+ });
89
+ return resolution;
90
+ }
91
+ function resolveReadyPreflightResult(input, preflightOutput, preflightResult) {
92
+ const checkId = input.check.definition.checkId;
93
+ const result = preflightResult.status === "success" ? "prepared" : "continued";
94
+ const resolution = readyResolution({
95
+ authoredCheck: input.check,
96
+ messages: preflightResult.messages,
97
+ preparedOptions: preflightResult.status === "success"
98
+ ? preflightResult.preparedOptions
99
+ : preflightResult.fallback
100
+ });
101
+ observeReadyOrMalformedResolution(input.diagnosticLogger, checkId, resolution, result, {
102
+ messages: preflightResult.messages,
103
+ ...(preflightResult.status === "success" ? {} : { reason: preflightResult.reason }),
104
+ raw: preflightOutput
105
+ });
106
+ return resolution;
107
+ }
108
+ async function invokePreflight(check, signal) {
109
+ try {
110
+ return Object.freeze({
111
+ kind: "returned",
112
+ output: await check.preflight(check.options, signal ?? INERT_SIGNAL)
113
+ });
114
+ }
115
+ catch (error) {
116
+ return Object.freeze({ kind: "threw", error });
117
+ }
118
+ }
119
+ function observeBlockedPreflight(input) {
120
+ const resolution = blockedResolution({
121
+ check: input.check,
122
+ messages: EMPTY_MESSAGES,
123
+ reasonCode: input.reasonCode
124
+ });
125
+ observePreflightResolution(input.diagnosticLogger, input.check.definition.checkId, resolution, input.result, input.details);
126
+ return resolution;
127
+ }
128
+ function observeReadyOrMalformedResolution(diagnosticLogger, checkId, resolution, result, details) {
129
+ if (resolution.kind === "blocked") {
130
+ observePreflightResolution(diagnosticLogger, checkId, resolution, "malformed", {
131
+ raw: "raw" in details ? details.raw : summarizeDiagnosticValue(details)
132
+ });
133
+ return;
134
+ }
135
+ const messages = "messages" in details ? details.messages : EMPTY_MESSAGES;
136
+ observePreflightResolution(diagnosticLogger, checkId, resolution, result, {
137
+ ...(Array.isArray(messages) && messages.length > 0 ? { messages } : {}),
138
+ options: summarizeDiagnosticValue(resolution.check.options),
139
+ ...("reason" in details ? { reason: details.reason } : {}),
140
+ ...("source" in details ? { source: details.source } : {})
141
+ });
142
+ }
143
+ function observePreflightResolution(diagnosticLogger, checkId, resolution, result, details) {
144
+ diagnosticLogger?.observe({
145
+ event: "preflight.resolved",
146
+ tags: diagnosticTags(`CHECK:${checkId}`, "PREFLIGHT", result.toUpperCase()),
147
+ details: {
148
+ ...details,
149
+ ...(resolution.kind === "blocked" ? { outcome: resolution.outcome } : {})
150
+ }
151
+ });
152
+ }
153
+ function readyResolution(input) {
154
+ const preparedOptions = snapshotJsonObject(input.preparedOptions);
155
+ if (preparedOptions === undefined) {
156
+ return blockedResolution({
157
+ check: input.authoredCheck,
158
+ messages: EMPTY_MESSAGES,
159
+ reasonCode: "invalid-preflight-result"
160
+ });
161
+ }
162
+ const { preflight: _preflight, ...check } = input.authoredCheck;
163
+ return Object.freeze({
164
+ kind: "ready",
165
+ check: Object.freeze({
166
+ ...check,
167
+ options: preparedOptions,
168
+ preflightMessages: input.messages
169
+ })
170
+ });
171
+ }
172
+ function blockedResolution(input) {
173
+ return Object.freeze({
174
+ kind: "blocked",
175
+ check: Object.freeze({
176
+ definition: input.check.definition,
177
+ preflightMessages: input.messages,
178
+ visibility: input.check.visibility
179
+ }),
180
+ outcome: Object.freeze({
181
+ status: "unavailable",
182
+ reason: Object.freeze({ code: input.reasonCode })
183
+ })
184
+ });
185
+ }
186
+ //# sourceMappingURL=preflight.mjs.map