@zxyycom/vibe-check 0.0.1 → 0.0.2

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 (950) hide show
  1. package/README.md +47 -74
  2. package/dist/esm/cache/cache-json-by-key.mjs +189 -0
  3. package/dist/esm/cache/cache-json-by-key.mjs.map +1 -0
  4. package/dist/esm/check/check.mjs.map +1 -1
  5. package/dist/esm/check/finding-presentation.mjs +40 -0
  6. package/dist/esm/check/finding-presentation.mjs.map +1 -0
  7. package/dist/esm/check/inherited-collection.mjs +1 -1
  8. package/dist/esm/check/inherited-collection.mjs.map +1 -1
  9. package/dist/esm/check-settlement/fact-validation.mjs +17 -23
  10. package/dist/esm/check-settlement/fact-validation.mjs.map +1 -1
  11. package/dist/esm/check-settlement/outcome-normalization.mjs +9 -19
  12. package/dist/esm/check-settlement/outcome-normalization.mjs.map +1 -1
  13. package/dist/esm/check-settlement/reason-shape.mjs +12 -0
  14. package/dist/esm/check-settlement/reason-shape.mjs.map +1 -0
  15. package/dist/esm/check-settlement/record-store.mjs +14 -17
  16. package/dist/esm/check-settlement/record-store.mjs.map +1 -1
  17. package/dist/esm/check-settlement/session.mjs +8 -2
  18. package/dist/esm/check-settlement/session.mjs.map +1 -1
  19. package/dist/esm/data-boundary/closed-values.mjs +16 -0
  20. package/dist/esm/data-boundary/closed-values.mjs.map +1 -1
  21. package/dist/esm/data-boundary/value-shapes.mjs +9 -0
  22. package/dist/esm/data-boundary/value-shapes.mjs.map +1 -1
  23. package/dist/esm/index.mjs +9 -2
  24. package/dist/esm/index.mjs.map +1 -1
  25. package/dist/esm/learned-critical-path/duration-model/bounded-history.mjs +56 -0
  26. package/dist/esm/learned-critical-path/duration-model/bounded-history.mjs.map +1 -0
  27. package/dist/esm/learned-critical-path/duration-model/prediction.mjs +122 -0
  28. package/dist/esm/learned-critical-path/duration-model/prediction.mjs.map +1 -0
  29. package/dist/esm/learned-critical-path/duration-model/preparation.mjs +41 -0
  30. package/dist/esm/learned-critical-path/duration-model/preparation.mjs.map +1 -0
  31. package/dist/esm/learned-critical-path/duration-model/recording.mjs +109 -0
  32. package/dist/esm/learned-critical-path/duration-model/recording.mjs.map +1 -0
  33. package/dist/esm/learned-critical-path/duration-model/storage.mjs +187 -0
  34. package/dist/esm/learned-critical-path/duration-model/storage.mjs.map +1 -0
  35. package/dist/esm/learned-critical-path/selection-layers.mjs +28 -0
  36. package/dist/esm/learned-critical-path/selection-layers.mjs.map +1 -0
  37. package/dist/esm/learned-critical-path/static-decision.mjs +55 -0
  38. package/dist/esm/learned-critical-path/static-decision.mjs.map +1 -0
  39. package/dist/esm/learned-critical-path/strategy.mjs +179 -0
  40. package/dist/esm/learned-critical-path/strategy.mjs.map +1 -0
  41. package/dist/esm/machine-output/v4/atomic-publication.mjs +1 -15
  42. package/dist/esm/machine-output/v4/atomic-publication.mjs.map +1 -1
  43. package/dist/esm/package-checks/code-quality-findings/finding-waiver-authoring.mjs +40 -0
  44. package/dist/esm/package-checks/code-quality-findings/finding-waiver-authoring.mjs.map +1 -0
  45. package/dist/esm/package-checks/code-quality-findings/finding-waiver-evidence.mjs +48 -0
  46. package/dist/esm/package-checks/code-quality-findings/finding-waiver-evidence.mjs.map +1 -0
  47. package/dist/esm/package-checks/code-quality-findings/policy.mjs +20 -0
  48. package/dist/esm/package-checks/code-quality-findings/policy.mjs.map +1 -1
  49. package/dist/esm/package-checks/duplicate-detection/area-policy.mjs +15 -7
  50. package/dist/esm/package-checks/duplicate-detection/area-policy.mjs.map +1 -1
  51. package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs +1 -1
  52. package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs.map +1 -1
  53. package/dist/esm/package-checks/duplicate-detection/default-check.mjs +1 -1
  54. package/dist/esm/package-checks/duplicate-detection/default-check.mjs.map +1 -1
  55. package/dist/esm/package-checks/duplicate-detection/execution.mjs +44 -18
  56. package/dist/esm/package-checks/duplicate-detection/execution.mjs.map +1 -1
  57. package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs +59 -0
  58. package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs.map +1 -0
  59. package/dist/esm/package-checks/duplicate-detection/finding-waiver-identity.mjs +55 -0
  60. package/dist/esm/package-checks/duplicate-detection/finding-waiver-identity.mjs.map +1 -0
  61. package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs +1 -1
  62. package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs.map +1 -1
  63. package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs +1 -1
  64. package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs.map +1 -1
  65. package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs +15 -5
  66. package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs.map +1 -1
  67. package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs +5 -4
  68. package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs.map +1 -1
  69. package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs +22 -47
  70. package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs.map +1 -1
  71. package/dist/esm/package-checks/duplicate-detection/options-validation.mjs +20 -25
  72. package/dist/esm/package-checks/duplicate-detection/options-validation.mjs.map +1 -1
  73. package/dist/esm/package-checks/duplicate-detection/options.mjs.map +1 -1
  74. package/dist/esm/package-checks/duplicate-detection/records.mjs +27 -6
  75. package/dist/esm/package-checks/duplicate-detection/records.mjs.map +1 -1
  76. package/dist/esm/package-checks/file-metrics/execution.mjs +10 -17
  77. package/dist/esm/package-checks/file-metrics/execution.mjs.map +1 -1
  78. package/dist/esm/package-checks/file-metrics/finding-messages.mjs +22 -0
  79. package/dist/esm/package-checks/file-metrics/finding-messages.mjs.map +1 -0
  80. package/dist/esm/package-checks/file-metrics/options-resolution.mjs +11 -43
  81. package/dist/esm/package-checks/file-metrics/options-resolution.mjs.map +1 -1
  82. package/dist/esm/package-checks/file-metrics/options-validation.mjs +15 -25
  83. package/dist/esm/package-checks/file-metrics/options-validation.mjs.map +1 -1
  84. package/dist/esm/package-checks/file-metrics/records.mjs +2 -9
  85. package/dist/esm/package-checks/file-metrics/records.mjs.map +1 -1
  86. package/dist/esm/package-checks/file-metrics/scc/availability.mjs +1 -1
  87. package/dist/esm/package-checks/file-metrics/scc/availability.mjs.map +1 -1
  88. package/dist/esm/package-checks/file-metrics/scc/parser.mjs +4 -4
  89. package/dist/esm/package-checks/file-metrics/scc/parser.mjs.map +1 -1
  90. package/dist/esm/package-checks/file-metrics/scc/scanner.mjs +2 -2
  91. package/dist/esm/package-checks/file-metrics/scc/scanner.mjs.map +1 -1
  92. package/dist/esm/package-checks/function-metrics/analysis.mjs +56 -15
  93. package/dist/esm/package-checks/function-metrics/analysis.mjs.map +1 -1
  94. package/dist/esm/package-checks/function-metrics/analyzer/analysis-context.mjs +550 -0
  95. package/dist/esm/package-checks/function-metrics/analyzer/analysis-context.mjs.map +1 -0
  96. package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs +332 -0
  97. package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs.map +1 -0
  98. package/dist/esm/package-checks/function-metrics/analyzer/contracts.mjs +7 -0
  99. package/dist/esm/package-checks/function-metrics/analyzer/contracts.mjs.map +1 -0
  100. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs +24 -0
  101. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs.map +1 -0
  102. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardnd.mjs +113 -0
  103. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardnd.mjs.map +1 -0
  104. package/dist/esm/package-checks/function-metrics/analyzer/extensions/protocol.mjs +180 -0
  105. package/dist/esm/package-checks/function-metrics/analyzer/extensions/protocol.mjs.map +1 -0
  106. package/dist/esm/package-checks/function-metrics/analyzer/extensions/registry.mjs +121 -0
  107. package/dist/esm/package-checks/function-metrics/analyzer/extensions/registry.mjs.map +1 -0
  108. package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs +217 -0
  109. package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs.map +1 -0
  110. package/dist/esm/package-checks/function-metrics/analyzer/port-facade.mjs +96 -0
  111. package/dist/esm/package-checks/function-metrics/analyzer/port-facade.mjs.map +1 -0
  112. package/dist/esm/package-checks/function-metrics/analyzer/reader-registry.mjs +76 -0
  113. package/dist/esm/package-checks/function-metrics/analyzer/reader-registry.mjs.map +1 -0
  114. package/dist/esm/package-checks/function-metrics/analyzer/readers/csharp.mjs +88 -0
  115. package/dist/esm/package-checks/function-metrics/analyzer/readers/csharp.mjs.map +1 -0
  116. package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs +466 -0
  117. package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs.map +1 -0
  118. package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs +289 -0
  119. package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs.map +1 -0
  120. package/dist/esm/package-checks/function-metrics/analyzer/readers/gdscript.mjs +38 -0
  121. package/dist/esm/package-checks/function-metrics/analyzer/readers/gdscript.mjs.map +1 -0
  122. package/dist/esm/package-checks/function-metrics/analyzer/readers/go.mjs +44 -0
  123. package/dist/esm/package-checks/function-metrics/analyzer/readers/go.mjs.map +1 -0
  124. package/dist/esm/package-checks/function-metrics/analyzer/readers/java-body-states.mjs +113 -0
  125. package/dist/esm/package-checks/function-metrics/analyzer/readers/java-body-states.mjs.map +1 -0
  126. package/dist/esm/package-checks/function-metrics/analyzer/readers/java.mjs +247 -0
  127. package/dist/esm/package-checks/function-metrics/analyzer/readers/java.mjs.map +1 -0
  128. package/dist/esm/package-checks/function-metrics/analyzer/readers/javascript.mjs +16 -0
  129. package/dist/esm/package-checks/function-metrics/analyzer/readers/javascript.mjs.map +1 -0
  130. package/dist/esm/package-checks/function-metrics/analyzer/readers/kotlin.mjs +103 -0
  131. package/dist/esm/package-checks/function-metrics/analyzer/readers/kotlin.mjs.map +1 -0
  132. package/dist/esm/package-checks/function-metrics/analyzer/readers/lua.mjs +55 -0
  133. package/dist/esm/package-checks/function-metrics/analyzer/readers/lua.mjs.map +1 -0
  134. package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs +100 -0
  135. package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs.map +1 -0
  136. package/dist/esm/package-checks/function-metrics/analyzer/readers/perl.mjs +367 -0
  137. package/dist/esm/package-checks/function-metrics/analyzer/readers/perl.mjs.map +1 -0
  138. package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs +260 -0
  139. package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs.map +1 -0
  140. package/dist/esm/package-checks/function-metrics/analyzer/readers/php.mjs +53 -0
  141. package/dist/esm/package-checks/function-metrics/analyzer/readers/php.mjs.map +1 -0
  142. package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs +306 -0
  143. package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs.map +1 -0
  144. package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs +402 -0
  145. package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs.map +1 -0
  146. package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs +214 -0
  147. package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs.map +1 -0
  148. package/dist/esm/package-checks/function-metrics/analyzer/readers/ruby.mjs +75 -0
  149. package/dist/esm/package-checks/function-metrics/analyzer/readers/ruby.mjs.map +1 -0
  150. package/dist/esm/package-checks/function-metrics/analyzer/readers/rust.mjs +32 -0
  151. package/dist/esm/package-checks/function-metrics/analyzer/readers/rust.mjs.map +1 -0
  152. package/dist/esm/package-checks/function-metrics/analyzer/readers/scala.mjs +47 -0
  153. package/dist/esm/package-checks/function-metrics/analyzer/readers/scala.mjs.map +1 -0
  154. package/dist/esm/package-checks/function-metrics/analyzer/readers/solidity.mjs +22 -0
  155. package/dist/esm/package-checks/function-metrics/analyzer/readers/solidity.mjs.map +1 -0
  156. package/dist/esm/package-checks/function-metrics/analyzer/readers/st.mjs +142 -0
  157. package/dist/esm/package-checks/function-metrics/analyzer/readers/st.mjs.map +1 -0
  158. package/dist/esm/package-checks/function-metrics/analyzer/readers/swift.mjs +94 -0
  159. package/dist/esm/package-checks/function-metrics/analyzer/readers/swift.mjs.map +1 -0
  160. package/dist/esm/package-checks/function-metrics/analyzer/readers/tsx.mjs +149 -0
  161. package/dist/esm/package-checks/function-metrics/analyzer/readers/tsx.mjs.map +1 -0
  162. package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs +79 -0
  163. package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs.map +1 -0
  164. package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs +606 -0
  165. package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs.map +1 -0
  166. package/dist/esm/package-checks/function-metrics/analyzer/readers/vue.mjs +31 -0
  167. package/dist/esm/package-checks/function-metrics/analyzer/readers/vue.mjs.map +1 -0
  168. package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs +23 -0
  169. package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs.map +1 -0
  170. package/dist/esm/package-checks/function-metrics/analyzer/shared/clike.mjs +492 -0
  171. package/dist/esm/package-checks/function-metrics/analyzer/shared/clike.mjs.map +1 -0
  172. package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs +542 -0
  173. package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs.map +1 -0
  174. package/dist/esm/package-checks/function-metrics/analyzer/shared/golike.mjs +141 -0
  175. package/dist/esm/package-checks/function-metrics/analyzer/shared/golike.mjs.map +1 -0
  176. package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs +62 -0
  177. package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs.map +1 -0
  178. package/dist/esm/package-checks/function-metrics/analyzer/shared/rubylike.mjs +154 -0
  179. package/dist/esm/package-checks/function-metrics/analyzer/shared/rubylike.mjs.map +1 -0
  180. package/dist/esm/package-checks/function-metrics/analyzer/shared/script-language.mjs +36 -0
  181. package/dist/esm/package-checks/function-metrics/analyzer/shared/script-language.mjs.map +1 -0
  182. package/dist/esm/package-checks/function-metrics/analyzer-adapter.mjs +56 -0
  183. package/dist/esm/package-checks/function-metrics/analyzer-adapter.mjs.map +1 -0
  184. package/dist/esm/package-checks/function-metrics/analyzer-worker-contract.mjs +2 -0
  185. package/dist/esm/package-checks/function-metrics/analyzer-worker-contract.mjs.map +1 -0
  186. package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs +108 -0
  187. package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs.map +1 -0
  188. package/dist/esm/package-checks/function-metrics/analyzer-worker.mjs +24 -0
  189. package/dist/esm/package-checks/function-metrics/analyzer-worker.mjs.map +1 -0
  190. package/dist/esm/package-checks/function-metrics/constructor.mjs +2 -2
  191. package/dist/esm/package-checks/function-metrics/constructor.mjs.map +1 -1
  192. package/dist/esm/package-checks/function-metrics/execution.mjs +51 -33
  193. package/dist/esm/package-checks/function-metrics/execution.mjs.map +1 -1
  194. package/dist/esm/package-checks/function-metrics/finding-messages.mjs +75 -0
  195. package/dist/esm/package-checks/function-metrics/finding-messages.mjs.map +1 -0
  196. package/dist/esm/package-checks/function-metrics/finding-waiver-identity.mjs +28 -0
  197. package/dist/esm/package-checks/function-metrics/finding-waiver-identity.mjs.map +1 -0
  198. package/dist/esm/package-checks/function-metrics/measurement-model.mjs.map +1 -1
  199. package/dist/esm/package-checks/function-metrics/measurement.mjs +161 -26
  200. package/dist/esm/package-checks/function-metrics/measurement.mjs.map +1 -1
  201. package/dist/esm/package-checks/function-metrics/options-resolution.mjs +30 -63
  202. package/dist/esm/package-checks/function-metrics/options-resolution.mjs.map +1 -1
  203. package/dist/esm/package-checks/function-metrics/options-validation.mjs +27 -32
  204. package/dist/esm/package-checks/function-metrics/options-validation.mjs.map +1 -1
  205. package/dist/esm/package-checks/function-metrics/options.mjs.map +1 -1
  206. package/dist/esm/package-checks/function-metrics/records.mjs +31 -1
  207. package/dist/esm/package-checks/function-metrics/records.mjs.map +1 -1
  208. package/dist/esm/package-checks/function-metrics/target-files.mjs +6 -67
  209. package/dist/esm/package-checks/function-metrics/target-files.mjs.map +1 -1
  210. package/dist/esm/package-checks/{file-metrics/scc → host-environment}/csv.mjs +1 -0
  211. package/dist/esm/package-checks/host-environment/csv.mjs.map +1 -0
  212. package/dist/esm/package-checks/host-environment/git.mjs +1 -1
  213. package/dist/esm/package-checks/host-environment/git.mjs.map +1 -1
  214. package/dist/esm/package-checks/host-environment/process.mjs +5 -0
  215. package/dist/esm/package-checks/host-environment/process.mjs.map +1 -0
  216. package/dist/esm/package-checks/json-schema-validation/final-data.mjs.map +1 -1
  217. package/dist/esm/package-checks/json-schema-validation/options-validation.mjs +15 -17
  218. package/dist/esm/package-checks/json-schema-validation/options-validation.mjs.map +1 -1
  219. package/dist/esm/package-checks/json-schema-validation/options.mjs.map +1 -1
  220. package/dist/esm/package-checks/json-validation/final-data.mjs.map +1 -1
  221. package/dist/esm/package-checks/json-validation/options-validation.mjs +4 -10
  222. package/dist/esm/package-checks/json-validation/options-validation.mjs.map +1 -1
  223. package/dist/esm/package-checks/maintenance-reminders/final-data.mjs.map +1 -1
  224. package/dist/esm/package-checks/markdown-link-validation/default-check.mjs +9 -3
  225. package/dist/esm/package-checks/markdown-link-validation/default-check.mjs.map +1 -1
  226. package/dist/esm/package-checks/markdown-link-validation/execution.mjs +27 -24
  227. package/dist/esm/package-checks/markdown-link-validation/execution.mjs.map +1 -1
  228. package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs +82 -53
  229. package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs.map +1 -1
  230. package/dist/esm/package-checks/markdown-link-validation/final-data.mjs.map +1 -1
  231. package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs +36 -0
  232. package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs.map +1 -0
  233. package/dist/esm/package-checks/markdown-link-validation/local-resolution.mjs.map +1 -1
  234. package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs +2 -2
  235. package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs.map +1 -1
  236. package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs +26 -4
  237. package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs.map +1 -1
  238. package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs +24 -11
  239. package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs.map +1 -1
  240. package/dist/esm/package-checks/markdown-link-validation/options.mjs.map +1 -1
  241. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs +185 -0
  242. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs.map +1 -0
  243. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache.mjs +131 -0
  244. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache.mjs.map +1 -0
  245. package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs +58 -57
  246. package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs.map +1 -1
  247. package/dist/esm/package-checks/markdown-link-validation/source-reader.mjs +54 -0
  248. package/dist/esm/package-checks/markdown-link-validation/source-reader.mjs.map +1 -0
  249. package/dist/esm/package-checks/markdown-link-validation/unavailable-reasons.mjs +16 -0
  250. package/dist/esm/package-checks/markdown-link-validation/unavailable-reasons.mjs.map +1 -0
  251. package/dist/esm/package-checks/project-files/collection.mjs +1 -1
  252. package/dist/esm/package-checks/project-files/collection.mjs.map +1 -1
  253. package/dist/esm/package-checks/project-files/configuration.mjs +2 -10
  254. package/dist/esm/package-checks/project-files/configuration.mjs.map +1 -1
  255. package/dist/esm/package-checks/project-files/gitlink-revision.mjs +1 -1
  256. package/dist/esm/package-checks/project-files/gitlink-revision.mjs.map +1 -1
  257. package/dist/esm/package-checks/project-files/gitlink-worktree.mjs +1 -1
  258. package/dist/esm/package-checks/project-files/gitlink-worktree.mjs.map +1 -1
  259. package/dist/esm/package-checks/project-files/public-collection.mjs +56 -0
  260. package/dist/esm/package-checks/project-files/public-collection.mjs.map +1 -0
  261. package/dist/esm/package-checks/project-files/revision-worktree-files.mjs +1 -1
  262. package/dist/esm/package-checks/project-files/revision-worktree-files.mjs.map +1 -1
  263. package/dist/esm/package-checks/secret-detection/classification.mjs +15 -0
  264. package/dist/esm/package-checks/secret-detection/classification.mjs.map +1 -0
  265. package/dist/esm/package-checks/secret-detection/default-check.mjs +39 -0
  266. package/dist/esm/package-checks/secret-detection/default-check.mjs.map +1 -0
  267. package/dist/esm/package-checks/secret-detection/execution.mjs +172 -0
  268. package/dist/esm/package-checks/secret-detection/execution.mjs.map +1 -0
  269. package/dist/esm/package-checks/secret-detection/final-data.mjs +33 -0
  270. package/dist/esm/package-checks/secret-detection/final-data.mjs.map +1 -0
  271. package/dist/esm/package-checks/secret-detection/finding-waiver-identity.mjs +30 -0
  272. package/dist/esm/package-checks/secret-detection/finding-waiver-identity.mjs.map +1 -0
  273. package/dist/esm/package-checks/secret-detection/input-preparation.mjs +153 -0
  274. package/dist/esm/package-checks/secret-detection/input-preparation.mjs.map +1 -0
  275. package/dist/esm/package-checks/secret-detection/options-resolution.mjs +40 -0
  276. package/dist/esm/package-checks/secret-detection/options-resolution.mjs.map +1 -0
  277. package/dist/esm/package-checks/secret-detection/options-validation.mjs +22 -0
  278. package/dist/esm/package-checks/secret-detection/options-validation.mjs.map +1 -0
  279. package/dist/esm/package-checks/secret-detection/options.mjs +2 -0
  280. package/dist/esm/package-checks/secret-detection/options.mjs.map +1 -0
  281. package/dist/esm/package-checks/secret-detection/records.mjs +31 -0
  282. package/dist/esm/package-checks/secret-detection/records.mjs.map +1 -0
  283. package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs +85 -0
  284. package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs.map +1 -0
  285. package/dist/esm/project-definition/check-tree/authoring.mjs +12 -172
  286. package/dist/esm/project-definition/check-tree/authoring.mjs.map +1 -1
  287. package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs +171 -0
  288. package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs.map +1 -0
  289. package/dist/esm/project-definition/check-tree/collection-authoring.mjs +16 -0
  290. package/dist/esm/project-definition/check-tree/collection-authoring.mjs.map +1 -0
  291. package/dist/esm/project-definition/check-tree/materialization.mjs +9 -1
  292. package/dist/esm/project-definition/check-tree/materialization.mjs.map +1 -1
  293. package/dist/esm/project-definition/check-tree/resolution.mjs +45 -13
  294. package/dist/esm/project-definition/check-tree/resolution.mjs.map +1 -1
  295. package/dist/esm/project-definition/check-tree/scheduling-authoring.mjs +73 -0
  296. package/dist/esm/project-definition/check-tree/scheduling-authoring.mjs.map +1 -0
  297. package/dist/esm/project-definition/declarative-snapshot.mjs +73 -0
  298. package/dist/esm/project-definition/declarative-snapshot.mjs.map +1 -0
  299. package/dist/esm/project-definition/output-defaults.mjs +18 -1
  300. package/dist/esm/project-definition/output-defaults.mjs.map +1 -1
  301. package/dist/esm/project-definition/output-validation.mjs +15 -15
  302. package/dist/esm/project-definition/output-validation.mjs.map +1 -1
  303. package/dist/esm/project-definition/progress-rendering-output.mjs +52 -0
  304. package/dist/esm/project-definition/progress-rendering-output.mjs.map +1 -0
  305. package/dist/esm/project-definition/project-definition-validation.mjs +100 -16
  306. package/dist/esm/project-definition/project-definition-validation.mjs.map +1 -1
  307. package/dist/esm/project-definition/project-definition.mjs +52 -47
  308. package/dist/esm/project-definition/project-definition.mjs.map +1 -1
  309. package/dist/esm/project-definition/resource-unit-mapping.mjs +21 -0
  310. package/dist/esm/project-definition/resource-unit-mapping.mjs.map +1 -0
  311. package/dist/esm/project-definition/scheduler-policy.mjs +2 -0
  312. package/dist/esm/project-definition/scheduler-policy.mjs.map +1 -0
  313. package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs +54 -0
  314. package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs.map +1 -0
  315. package/dist/esm/project-run/admission-strategy-provider/prepared-admission-strategy.mjs +2 -0
  316. package/dist/esm/project-run/admission-strategy-provider/prepared-admission-strategy.mjs.map +1 -0
  317. package/dist/esm/project-run/admission-strategy-provider/provider.mjs +23 -0
  318. package/dist/esm/project-run/admission-strategy-provider/provider.mjs.map +1 -0
  319. package/dist/esm/project-run/aggregation.mjs +7 -5
  320. package/dist/esm/project-run/aggregation.mjs.map +1 -1
  321. package/dist/esm/project-run/check-execution/callback.mjs +35 -8
  322. package/dist/esm/project-run/check-execution/callback.mjs.map +1 -1
  323. package/dist/esm/project-run/check-execution/console-capture.mjs +220 -0
  324. package/dist/esm/project-run/check-execution/console-capture.mjs.map +1 -0
  325. package/dist/esm/project-run/check-execution/dependencies.mjs +21 -3
  326. package/dist/esm/project-run/check-execution/dependencies.mjs.map +1 -1
  327. package/dist/esm/project-run/check-execution/execution-finalization.mjs +54 -13
  328. package/dist/esm/project-run/check-execution/execution-finalization.mjs.map +1 -1
  329. package/dist/esm/project-run/check-execution/execution-settlement.mjs +13 -9
  330. package/dist/esm/project-run/check-execution/execution-settlement.mjs.map +1 -1
  331. package/dist/esm/project-run/check-execution/flag-controls.mjs +87 -0
  332. package/dist/esm/project-run/check-execution/flag-controls.mjs.map +1 -0
  333. package/dist/esm/project-run/check-execution/lifecycle.mjs +2 -0
  334. package/dist/esm/project-run/check-execution/lifecycle.mjs.map +1 -0
  335. package/dist/esm/project-run/check-execution/messages.mjs +5 -0
  336. package/dist/esm/project-run/check-execution/messages.mjs.map +1 -1
  337. package/dist/esm/project-run/check-execution/plan.mjs +9 -5
  338. package/dist/esm/project-run/check-execution/plan.mjs.map +1 -1
  339. package/dist/esm/project-run/check-execution/preflight.mjs +18 -32
  340. package/dist/esm/project-run/check-execution/preflight.mjs.map +1 -1
  341. package/dist/esm/project-run/check-execution/resolved-checks.mjs +100 -58
  342. package/dist/esm/project-run/check-execution/resolved-checks.mjs.map +1 -1
  343. package/dist/esm/project-run/check-execution/resolved-execution-result.mjs +2 -0
  344. package/dist/esm/project-run/check-execution/resolved-execution-result.mjs.map +1 -0
  345. package/dist/esm/project-run/{completion.mjs → completion/completion.mjs} +16 -38
  346. package/dist/esm/project-run/completion/completion.mjs.map +1 -0
  347. package/dist/esm/project-run/{machine-publication.mjs → completion/machine-publication.mjs} +1 -1
  348. package/dist/esm/project-run/completion/machine-publication.mjs.map +1 -0
  349. package/dist/esm/project-run/completion/result-resolver.mjs +36 -0
  350. package/dist/esm/project-run/completion/result-resolver.mjs.map +1 -0
  351. package/dist/esm/project-run/controls/contract.mjs.map +1 -1
  352. package/dist/esm/project-run/controls/outputs-override-validation.mjs +67 -47
  353. package/dist/esm/project-run/controls/outputs-override-validation.mjs.map +1 -1
  354. package/dist/esm/project-run/controls/validation-result.mjs.map +1 -1
  355. package/dist/esm/project-run/controls/validation.mjs +75 -11
  356. package/dist/esm/project-run/controls/validation.mjs.map +1 -1
  357. package/dist/esm/project-run/diagnostic-logging/logger.mjs +100 -161
  358. package/dist/esm/project-run/diagnostic-logging/logger.mjs.map +1 -1
  359. package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs +159 -0
  360. package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs.map +1 -0
  361. package/dist/esm/project-run/invocation/candidate.mjs +61 -0
  362. package/dist/esm/project-run/invocation/candidate.mjs.map +1 -0
  363. package/dist/esm/project-run/invocation/creation.mjs +79 -0
  364. package/dist/esm/project-run/invocation/creation.mjs.map +1 -0
  365. package/dist/esm/project-run/invocation/paths.mjs +77 -0
  366. package/dist/esm/project-run/invocation/paths.mjs.map +1 -0
  367. package/dist/esm/project-run/invocation/progress.mjs +30 -0
  368. package/dist/esm/project-run/invocation/progress.mjs.map +1 -0
  369. package/dist/esm/project-run/{invocation.mjs → invocation/run.mjs} +78 -92
  370. package/dist/esm/project-run/invocation/run.mjs.map +1 -0
  371. package/dist/esm/project-run/invocation/scheduler.mjs +57 -0
  372. package/dist/esm/project-run/invocation/scheduler.mjs.map +1 -0
  373. package/dist/esm/project-run/{output-configuration.mjs → outputs/configuration.mjs} +3 -2
  374. package/dist/esm/project-run/outputs/configuration.mjs.map +1 -0
  375. package/dist/esm/project-run/outputs/status.mjs +105 -0
  376. package/dist/esm/project-run/outputs/status.mjs.map +1 -0
  377. package/dist/esm/project-run/progress-rendering/presentation.mjs +112 -18
  378. package/dist/esm/project-run/progress-rendering/presentation.mjs.map +1 -1
  379. package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs +108 -19
  380. package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs.map +1 -1
  381. package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs +30 -4
  382. package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs.map +1 -1
  383. package/dist/esm/project-run/progress-rendering/renderer.mjs +5 -2
  384. package/dist/esm/project-run/progress-rendering/renderer.mjs.map +1 -1
  385. package/dist/esm/project-run/project-context.mjs +1 -1
  386. package/dist/esm/project-run/project-context.mjs.map +1 -1
  387. package/dist/esm/project-run/result.mjs +2 -0
  388. package/dist/esm/project-run/result.mjs.map +1 -1
  389. package/dist/esm/project-run/run.mjs +1 -1
  390. package/dist/esm/project-run/run.mjs.map +1 -1
  391. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs +166 -0
  392. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs.map +1 -0
  393. package/dist/esm/project-run/task-scheduler/admission-core/core.mjs +163 -0
  394. package/dist/esm/project-run/task-scheduler/admission-core/core.mjs.map +1 -0
  395. package/dist/esm/project-run/task-scheduler/admission-core/input.mjs +119 -0
  396. package/dist/esm/project-run/task-scheduler/admission-core/input.mjs.map +1 -0
  397. package/dist/esm/project-run/task-scheduler/admission-core/projection.mjs +124 -0
  398. package/dist/esm/project-run/task-scheduler/admission-core/projection.mjs.map +1 -0
  399. package/dist/esm/project-run/task-scheduler/admission-core/selection-index.mjs +99 -0
  400. package/dist/esm/project-run/task-scheduler/admission-core/selection-index.mjs.map +1 -0
  401. package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs +198 -0
  402. package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs.map +1 -0
  403. package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs +151 -0
  404. package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs.map +1 -0
  405. package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs +121 -0
  406. package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs.map +1 -0
  407. package/dist/esm/project-run/task-scheduler/admission-core/selection.mjs +65 -0
  408. package/dist/esm/project-run/task-scheduler/admission-core/selection.mjs.map +1 -0
  409. package/dist/esm/project-run/task-scheduler/admission-scope-layers.mjs +25 -0
  410. package/dist/esm/project-run/task-scheduler/admission-scope-layers.mjs.map +1 -0
  411. package/dist/esm/project-run/task-scheduler/admission-selection-policy.mjs +55 -0
  412. package/dist/esm/project-run/task-scheduler/admission-selection-policy.mjs.map +1 -0
  413. package/dist/esm/project-run/task-scheduler/critical-path-ranking.mjs +46 -0
  414. package/dist/esm/project-run/task-scheduler/critical-path-ranking.mjs.map +1 -0
  415. package/dist/esm/project-run/task-scheduler/custom-admission-policy.mjs +110 -0
  416. package/dist/esm/project-run/task-scheduler/custom-admission-policy.mjs.map +1 -0
  417. package/dist/esm/project-run/task-scheduler/execution-state.mjs +34 -5
  418. package/dist/esm/project-run/task-scheduler/execution-state.mjs.map +1 -1
  419. package/dist/esm/project-run/task-scheduler/forced-block-effect-replay.mjs +46 -0
  420. package/dist/esm/project-run/task-scheduler/forced-block-effect-replay.mjs.map +1 -0
  421. package/dist/esm/project-run/task-scheduler/graph-validation.mjs +54 -26
  422. package/dist/esm/project-run/task-scheduler/graph-validation.mjs.map +1 -1
  423. package/dist/esm/project-run/task-scheduler/graph.mjs +79 -3
  424. package/dist/esm/project-run/task-scheduler/graph.mjs.map +1 -1
  425. package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs +207 -0
  426. package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs.map +1 -0
  427. package/dist/esm/project-run/task-scheduler/measurement/integrals.mjs +116 -0
  428. package/dist/esm/project-run/task-scheduler/measurement/integrals.mjs.map +1 -0
  429. package/dist/esm/project-run/task-scheduler/measurement/policy.mjs +67 -0
  430. package/dist/esm/project-run/task-scheduler/measurement/policy.mjs.map +1 -0
  431. package/dist/esm/project-run/task-scheduler/measurement/summary.mjs +123 -0
  432. package/dist/esm/project-run/task-scheduler/measurement/summary.mjs.map +1 -0
  433. package/dist/esm/project-run/task-scheduler/measurement/timing.mjs +158 -0
  434. package/dist/esm/project-run/task-scheduler/measurement/timing.mjs.map +1 -0
  435. package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs +90 -62
  436. package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs.map +1 -1
  437. package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs +20 -6
  438. package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs.map +1 -1
  439. package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs +5 -105
  440. package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs.map +1 -1
  441. package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs +0 -9
  442. package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs.map +1 -1
  443. package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs +48 -28
  444. package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs.map +1 -1
  445. package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs +89 -0
  446. package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs.map +1 -0
  447. package/dist/esm/project-run/task-scheduler/scheduler-task-lifecycle.mjs +94 -0
  448. package/dist/esm/project-run/task-scheduler/scheduler-task-lifecycle.mjs.map +1 -0
  449. package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs +66 -0
  450. package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs.map +1 -0
  451. package/dist/esm/project-run/task-scheduler/scheduler.mjs +171 -114
  452. package/dist/esm/project-run/task-scheduler/scheduler.mjs.map +1 -1
  453. package/docs/api-mechanics.md +64 -137
  454. package/docs/changelog.md +157 -0
  455. package/docs/checks/duplicate-detection.md +111 -59
  456. package/docs/checks/file-metrics.md +46 -43
  457. package/docs/checks/function-metrics.md +100 -163
  458. package/docs/checks/json-schema-validation.md +43 -36
  459. package/docs/checks/json-validation.md +38 -25
  460. package/docs/checks/maintenance-reminders.md +41 -29
  461. package/docs/checks/markdown-link-validation.md +82 -54
  462. package/docs/checks/secret-detection.md +129 -0
  463. package/docs/examples/artifacts/mixed-outcomes/definition.ts +5 -5
  464. package/docs/guides/cache-results.md +63 -0
  465. package/docs/guides/callbacks.md +34 -0
  466. package/docs/guides/check-dependencies.md +121 -0
  467. package/docs/guides/collecting-project-files.md +59 -0
  468. package/docs/guides/extending-check-lifecycle.md +112 -0
  469. package/docs/guides/finding-waivers.md +45 -0
  470. package/docs/guides/learned-scheduling.md +83 -0
  471. package/docs/guides/presenting-findings.md +54 -0
  472. package/docs/guides/run-outputs.md +145 -0
  473. package/docs/guides/scheduling.md +208 -0
  474. package/docs/guides/simulating-admission.md +55 -0
  475. package/docs/output.md +11 -20
  476. package/licenses/Lizard-1.24.0-MIT.txt +30 -0
  477. package/{third-party-licenses/momoa-3.3.12-LICENSE → licenses/Lizard-1.24.0-lizard.py-Apache-2.0.txt} +1 -0
  478. package/licenses/Pygments-2.18.0-BSD-2-Clause.txt +25 -0
  479. package/licenses/analyzer-translations-NOTICE.md +24 -0
  480. package/licenses/lizard-1.24.0-provenance.json +957 -0
  481. package/package.json +18 -6
  482. package/src/cache/cache-json-by-key.ts +304 -0
  483. package/src/check/check.ts +67 -17
  484. package/src/check/finding-presentation.ts +67 -0
  485. package/src/check/inherited-collection.ts +1 -1
  486. package/src/check-settlement/fact-validation.ts +29 -39
  487. package/src/check-settlement/outcome-normalization.ts +17 -35
  488. package/src/check-settlement/reason-shape.ts +20 -0
  489. package/src/check-settlement/record-store.ts +18 -15
  490. package/src/check-settlement/session.ts +12 -3
  491. package/src/data-boundary/closed-values.ts +29 -0
  492. package/src/data-boundary/value-shapes.ts +12 -0
  493. package/src/index.ts +70 -2
  494. package/src/learned-critical-path/duration-model/bounded-history.ts +108 -0
  495. package/src/learned-critical-path/duration-model/prediction.ts +181 -0
  496. package/src/learned-critical-path/duration-model/preparation.ts +77 -0
  497. package/src/learned-critical-path/duration-model/recording.ts +208 -0
  498. package/src/learned-critical-path/duration-model/storage.ts +252 -0
  499. package/src/learned-critical-path/selection-layers.ts +72 -0
  500. package/src/learned-critical-path/static-decision.ts +105 -0
  501. package/src/learned-critical-path/strategy.ts +299 -0
  502. package/src/machine-output/v4/atomic-publication.ts +1 -16
  503. package/src/package-checks/code-quality-findings/finding-waiver-authoring.ts +46 -0
  504. package/src/package-checks/code-quality-findings/finding-waiver-evidence.ts +95 -0
  505. package/src/package-checks/code-quality-findings/policy.ts +23 -0
  506. package/src/package-checks/duplicate-detection/area-policy.ts +24 -13
  507. package/src/package-checks/duplicate-detection/cache/identity.ts +1 -1
  508. package/src/package-checks/duplicate-detection/default-check.ts +1 -1
  509. package/src/package-checks/duplicate-detection/execution.ts +82 -22
  510. package/src/package-checks/duplicate-detection/finding-messages.ts +75 -0
  511. package/src/package-checks/duplicate-detection/finding-waiver-identity.ts +68 -0
  512. package/src/package-checks/duplicate-detection/jscpd/availability.ts +1 -1
  513. package/src/package-checks/duplicate-detection/jscpd/command-resolution.ts +1 -1
  514. package/src/package-checks/duplicate-detection/jscpd/json-report.ts +24 -5
  515. package/src/package-checks/duplicate-detection/jscpd/scanner.ts +6 -7
  516. package/src/package-checks/duplicate-detection/options-resolution.ts +32 -57
  517. package/src/package-checks/duplicate-detection/options-validation.ts +23 -31
  518. package/src/package-checks/duplicate-detection/options.ts +21 -1
  519. package/src/package-checks/duplicate-detection/records.ts +65 -12
  520. package/src/package-checks/file-metrics/execution.ts +16 -17
  521. package/src/package-checks/file-metrics/finding-messages.ts +29 -0
  522. package/src/package-checks/file-metrics/options-resolution.ts +19 -52
  523. package/src/package-checks/file-metrics/options-validation.ts +23 -32
  524. package/src/package-checks/file-metrics/records.ts +11 -23
  525. package/src/package-checks/file-metrics/scc/availability.ts +1 -1
  526. package/src/package-checks/file-metrics/scc/parser.ts +4 -4
  527. package/src/package-checks/file-metrics/scc/scanner.ts +2 -2
  528. package/src/package-checks/function-metrics/analysis.ts +76 -21
  529. package/src/package-checks/function-metrics/analyzer/analysis-context.ts +749 -0
  530. package/src/package-checks/function-metrics/analyzer/analysis-model.ts +421 -0
  531. package/src/package-checks/function-metrics/analyzer/contracts.ts +54 -0
  532. package/src/package-checks/function-metrics/analyzer/extension-output.ts +261 -0
  533. package/src/package-checks/function-metrics/analyzer/extensions/extension-base.ts +33 -0
  534. package/src/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.ts +27 -0
  535. package/src/package-checks/function-metrics/analyzer/extensions/lizardnd.ts +144 -0
  536. package/src/package-checks/function-metrics/analyzer/extensions/protocol.ts +345 -0
  537. package/src/package-checks/function-metrics/analyzer/extensions/registry.ts +157 -0
  538. package/src/package-checks/function-metrics/analyzer/pipeline.ts +311 -0
  539. package/src/package-checks/function-metrics/analyzer/port-facade.ts +142 -0
  540. package/src/package-checks/function-metrics/analyzer/reader-registry.ts +84 -0
  541. package/src/package-checks/function-metrics/analyzer/readers/csharp.ts +110 -0
  542. package/src/package-checks/function-metrics/analyzer/readers/erlang.ts +501 -0
  543. package/src/package-checks/function-metrics/analyzer/readers/fortran.ts +294 -0
  544. package/src/package-checks/function-metrics/analyzer/readers/gdscript.ts +42 -0
  545. package/src/package-checks/function-metrics/analyzer/readers/go.ts +53 -0
  546. package/src/package-checks/function-metrics/analyzer/readers/java-body-states.ts +141 -0
  547. package/src/package-checks/function-metrics/analyzer/readers/java.ts +270 -0
  548. package/src/package-checks/function-metrics/analyzer/readers/javascript.ts +19 -0
  549. package/src/package-checks/function-metrics/analyzer/readers/kotlin.ts +120 -0
  550. package/src/package-checks/function-metrics/analyzer/readers/lua.ts +68 -0
  551. package/src/package-checks/function-metrics/analyzer/readers/objc.ts +107 -0
  552. package/src/package-checks/function-metrics/analyzer/readers/perl.ts +340 -0
  553. package/src/package-checks/function-metrics/analyzer/readers/php-states.ts +246 -0
  554. package/src/package-checks/function-metrics/analyzer/readers/php.ts +63 -0
  555. package/src/package-checks/function-metrics/analyzer/readers/plsql.ts +306 -0
  556. package/src/package-checks/function-metrics/analyzer/readers/python.ts +431 -0
  557. package/src/package-checks/function-metrics/analyzer/readers/r.ts +234 -0
  558. package/src/package-checks/function-metrics/analyzer/readers/ruby.ts +88 -0
  559. package/src/package-checks/function-metrics/analyzer/readers/rust.ts +47 -0
  560. package/src/package-checks/function-metrics/analyzer/readers/scala.ts +60 -0
  561. package/src/package-checks/function-metrics/analyzer/readers/solidity.ts +32 -0
  562. package/src/package-checks/function-metrics/analyzer/readers/st.ts +161 -0
  563. package/src/package-checks/function-metrics/analyzer/readers/swift.ts +116 -0
  564. package/src/package-checks/function-metrics/analyzer/readers/tsx.ts +165 -0
  565. package/src/package-checks/function-metrics/analyzer/readers/ttcn.ts +90 -0
  566. package/src/package-checks/function-metrics/analyzer/readers/typescript.ts +593 -0
  567. package/src/package-checks/function-metrics/analyzer/readers/vue.ts +43 -0
  568. package/src/package-checks/function-metrics/analyzer/readers/zig.ts +35 -0
  569. package/src/package-checks/function-metrics/analyzer/shared/clike.ts +541 -0
  570. package/src/package-checks/function-metrics/analyzer/shared/code-reader.ts +682 -0
  571. package/src/package-checks/function-metrics/analyzer/shared/golike.ts +143 -0
  572. package/src/package-checks/function-metrics/analyzer/shared/js-style-regex.ts +75 -0
  573. package/src/package-checks/function-metrics/analyzer/shared/rubylike.ts +161 -0
  574. package/src/package-checks/function-metrics/analyzer/shared/script-language.ts +50 -0
  575. package/src/package-checks/function-metrics/analyzer-adapter.ts +84 -0
  576. package/src/package-checks/function-metrics/analyzer-worker-contract.ts +10 -0
  577. package/src/package-checks/function-metrics/analyzer-worker-port.ts +150 -0
  578. package/src/package-checks/function-metrics/analyzer-worker.ts +31 -0
  579. package/src/package-checks/function-metrics/constructor.ts +2 -2
  580. package/src/package-checks/function-metrics/execution.ts +94 -39
  581. package/src/package-checks/function-metrics/finding-messages.ts +95 -0
  582. package/src/package-checks/function-metrics/finding-waiver-identity.ts +36 -0
  583. package/src/package-checks/function-metrics/measurement-model.ts +15 -1
  584. package/src/package-checks/function-metrics/measurement.ts +221 -36
  585. package/src/package-checks/function-metrics/options-resolution.ts +39 -75
  586. package/src/package-checks/function-metrics/options-validation.ts +30 -39
  587. package/src/package-checks/function-metrics/options.ts +27 -11
  588. package/src/package-checks/function-metrics/records.ts +73 -7
  589. package/src/package-checks/function-metrics/target-files.ts +10 -70
  590. package/src/package-checks/{file-metrics/scc → host-environment}/csv.ts +1 -2
  591. package/src/package-checks/host-environment/git.ts +2 -2
  592. package/src/package-checks/host-environment/process.ts +10 -0
  593. package/src/package-checks/json-schema-validation/final-data.ts +8 -0
  594. package/src/package-checks/json-schema-validation/options-validation.ts +16 -23
  595. package/src/package-checks/json-schema-validation/options.ts +23 -0
  596. package/src/package-checks/json-validation/final-data.ts +5 -0
  597. package/src/package-checks/json-validation/options-validation.ts +4 -18
  598. package/src/package-checks/maintenance-reminders/final-data.ts +18 -0
  599. package/src/package-checks/markdown-link-validation/default-check.ts +9 -3
  600. package/src/package-checks/markdown-link-validation/execution.ts +51 -57
  601. package/src/package-checks/markdown-link-validation/filesystem-probes.ts +108 -51
  602. package/src/package-checks/markdown-link-validation/final-data.ts +5 -0
  603. package/src/package-checks/markdown-link-validation/finding-messages.ts +48 -0
  604. package/src/package-checks/markdown-link-validation/local-resolution.ts +17 -9
  605. package/src/package-checks/markdown-link-validation/local-resolver.ts +5 -2
  606. package/src/package-checks/markdown-link-validation/options-resolution.ts +31 -3
  607. package/src/package-checks/markdown-link-validation/options-validation.ts +27 -19
  608. package/src/package-checks/markdown-link-validation/options.ts +15 -0
  609. package/src/package-checks/markdown-link-validation/parse-facts-cache-payload.ts +246 -0
  610. package/src/package-checks/markdown-link-validation/parse-facts-cache.ts +154 -0
  611. package/src/package-checks/markdown-link-validation/resolver-engine.ts +75 -65
  612. package/src/package-checks/markdown-link-validation/source-reader.ts +86 -0
  613. package/src/package-checks/markdown-link-validation/unavailable-reasons.ts +42 -0
  614. package/src/package-checks/project-files/collection.ts +1 -1
  615. package/src/package-checks/project-files/configuration.ts +3 -14
  616. package/src/package-checks/project-files/gitlink-revision.ts +1 -1
  617. package/src/package-checks/project-files/gitlink-worktree.ts +1 -1
  618. package/src/package-checks/project-files/public-collection.ts +92 -0
  619. package/src/package-checks/project-files/revision-worktree-files.ts +1 -1
  620. package/src/package-checks/secret-detection/classification.ts +30 -0
  621. package/src/package-checks/secret-detection/default-check.ts +50 -0
  622. package/src/package-checks/secret-detection/execution.ts +247 -0
  623. package/src/package-checks/secret-detection/final-data.ts +57 -0
  624. package/src/package-checks/secret-detection/finding-waiver-identity.ts +37 -0
  625. package/src/package-checks/secret-detection/input-preparation.ts +233 -0
  626. package/src/package-checks/secret-detection/options-resolution.ts +65 -0
  627. package/src/package-checks/secret-detection/options-validation.ts +27 -0
  628. package/src/package-checks/secret-detection/options.ts +36 -0
  629. package/src/package-checks/secret-detection/records.ts +77 -0
  630. package/src/package-checks/secret-detection/secretlint/adapter.ts +123 -0
  631. package/src/project-definition/check-tree/authoring.ts +29 -230
  632. package/src/project-definition/check-tree/check-fields-authoring.ts +227 -0
  633. package/src/project-definition/check-tree/collection-authoring.ts +13 -0
  634. package/src/project-definition/check-tree/materialization.ts +9 -1
  635. package/src/project-definition/check-tree/resolution.ts +80 -22
  636. package/src/project-definition/check-tree/scheduling-authoring.ts +114 -0
  637. package/src/project-definition/declarative-snapshot.ts +87 -0
  638. package/src/project-definition/output-defaults.ts +32 -1
  639. package/src/project-definition/output-validation.ts +15 -15
  640. package/src/project-definition/progress-rendering-output.ts +121 -0
  641. package/src/project-definition/project-definition-validation.ts +117 -18
  642. package/src/project-definition/project-definition.ts +198 -61
  643. package/src/project-definition/resource-unit-mapping.ts +25 -0
  644. package/src/project-definition/scheduler-policy.ts +553 -0
  645. package/src/project-run/admission-strategy-provider/custom-strategy-preparation.ts +80 -0
  646. package/src/project-run/admission-strategy-provider/prepared-admission-strategy.ts +27 -0
  647. package/src/project-run/admission-strategy-provider/provider.ts +45 -0
  648. package/src/project-run/aggregation.ts +10 -5
  649. package/src/project-run/check-execution/callback.ts +50 -8
  650. package/src/project-run/check-execution/console-capture.ts +262 -0
  651. package/src/project-run/check-execution/dependencies.ts +43 -6
  652. package/src/project-run/check-execution/execution-finalization.ts +99 -25
  653. package/src/project-run/check-execution/execution-settlement.ts +19 -11
  654. package/src/project-run/check-execution/flag-controls.ts +132 -0
  655. package/src/project-run/check-execution/lifecycle.ts +21 -0
  656. package/src/project-run/check-execution/messages.ts +8 -0
  657. package/src/project-run/check-execution/plan.ts +12 -8
  658. package/src/project-run/check-execution/preflight.ts +23 -43
  659. package/src/project-run/check-execution/resolved-checks.ts +165 -126
  660. package/src/project-run/check-execution/resolved-execution-result.ts +22 -0
  661. package/src/project-run/{completion.ts → completion/completion.ts} +17 -57
  662. package/src/project-run/{machine-publication.ts → completion/machine-publication.ts} +4 -4
  663. package/src/project-run/completion/result-resolver.ts +60 -0
  664. package/src/project-run/controls/contract.ts +25 -2
  665. package/src/project-run/controls/outputs-override-validation.ts +83 -60
  666. package/src/project-run/controls/validation-result.ts +17 -6
  667. package/src/project-run/controls/validation.ts +107 -12
  668. package/src/project-run/diagnostic-logging/logger.ts +132 -207
  669. package/src/project-run/diagnostic-logging/observation-rendering.ts +203 -0
  670. package/src/project-run/invocation/candidate.ts +86 -0
  671. package/src/project-run/invocation/creation.ts +116 -0
  672. package/src/project-run/invocation/paths.ts +154 -0
  673. package/src/project-run/invocation/progress.ts +38 -0
  674. package/src/project-run/{invocation.ts → invocation/run.ts} +125 -120
  675. package/src/project-run/invocation/scheduler.ts +75 -0
  676. package/src/project-run/{output-configuration.ts → outputs/configuration.ts} +6 -5
  677. package/src/project-run/outputs/status.ts +161 -0
  678. package/src/project-run/progress-rendering/presentation.ts +118 -26
  679. package/src/project-run/progress-rendering/renderer-formatting.ts +166 -19
  680. package/src/project-run/progress-rendering/renderer-lifecycle.ts +38 -3
  681. package/src/project-run/progress-rendering/renderer.ts +13 -2
  682. package/src/project-run/project-context.ts +3 -2
  683. package/src/project-run/result.ts +49 -3
  684. package/src/project-run/run.ts +7 -6
  685. package/src/project-run/task-scheduler/admission-core/compiled-graph.ts +316 -0
  686. package/src/project-run/task-scheduler/admission-core/core.ts +278 -0
  687. package/src/project-run/task-scheduler/admission-core/input.ts +138 -0
  688. package/src/project-run/task-scheduler/admission-core/projection.ts +164 -0
  689. package/src/project-run/task-scheduler/admission-core/selection-index.ts +165 -0
  690. package/src/project-run/task-scheduler/admission-core/selection-query.ts +295 -0
  691. package/src/project-run/task-scheduler/admission-core/selection-seed.ts +252 -0
  692. package/src/project-run/task-scheduler/admission-core/selection-transition.ts +236 -0
  693. package/src/project-run/task-scheduler/admission-core/selection.ts +140 -0
  694. package/src/project-run/task-scheduler/admission-core/trace.ts +177 -0
  695. package/src/project-run/task-scheduler/admission-scope-layers.ts +44 -0
  696. package/src/project-run/task-scheduler/admission-selection-policy.ts +116 -0
  697. package/src/project-run/task-scheduler/critical-path-ranking.ts +76 -0
  698. package/src/project-run/task-scheduler/custom-admission-policy.ts +128 -0
  699. package/src/project-run/task-scheduler/execution-state.ts +97 -6
  700. package/src/project-run/task-scheduler/forced-block-effect-replay.ts +68 -0
  701. package/src/project-run/task-scheduler/graph-validation.ts +77 -31
  702. package/src/project-run/task-scheduler/graph.ts +111 -3
  703. package/src/project-run/task-scheduler/measurement/diagnostics.ts +261 -0
  704. package/src/project-run/task-scheduler/measurement/integrals.ts +177 -0
  705. package/src/project-run/task-scheduler/measurement/policy.ts +105 -0
  706. package/src/project-run/task-scheduler/measurement/summary.ts +175 -0
  707. package/src/project-run/task-scheduler/measurement/timing.ts +190 -0
  708. package/src/project-run/task-scheduler/scheduler-admission-decision.ts +143 -134
  709. package/src/project-run/task-scheduler/scheduler-blocker-summary.ts +34 -9
  710. package/src/project-run/task-scheduler/scheduler-decision-inspection.ts +28 -170
  711. package/src/project-run/task-scheduler/scheduler-decision-model.ts +36 -40
  712. package/src/project-run/task-scheduler/scheduler-decision.ts +68 -36
  713. package/src/project-run/task-scheduler/scheduler-observation.ts +124 -0
  714. package/src/project-run/task-scheduler/scheduler-task-lifecycle.ts +150 -0
  715. package/src/project-run/task-scheduler/scheduler-terminal-measurement.ts +95 -0
  716. package/src/project-run/task-scheduler/scheduler.ts +216 -171
  717. package/types/cache/cache-json-by-key.d.ts +53 -0
  718. package/types/check/check.d.ts +62 -17
  719. package/types/check/finding-presentation.d.ts +25 -0
  720. package/types/check/inherited-collection.d.ts +1 -1
  721. package/types/check-settlement/reason-shape.d.ts +5 -0
  722. package/types/check-settlement/record-store.d.ts +2 -2
  723. package/types/check-settlement/session.d.ts +3 -1
  724. package/types/data-boundary/closed-values.d.ts +8 -0
  725. package/types/data-boundary/value-shapes.d.ts +3 -0
  726. package/types/index.d.ts +22 -7
  727. package/types/learned-critical-path/duration-model/bounded-history.d.ts +34 -0
  728. package/types/learned-critical-path/duration-model/prediction.d.ts +32 -0
  729. package/types/learned-critical-path/duration-model/preparation.d.ts +28 -0
  730. package/types/learned-critical-path/duration-model/recording.d.ts +28 -0
  731. package/types/learned-critical-path/duration-model/storage.d.ts +12 -0
  732. package/types/learned-critical-path/selection-layers.d.ts +14 -0
  733. package/types/learned-critical-path/static-decision.d.ts +3 -0
  734. package/types/learned-critical-path/strategy.d.ts +35 -0
  735. package/types/package-checks/code-quality-findings/finding-waiver-authoring.d.ts +7 -0
  736. package/types/package-checks/code-quality-findings/finding-waiver-evidence.d.ts +34 -0
  737. package/types/package-checks/code-quality-findings/policy.d.ts +4 -0
  738. package/types/package-checks/duplicate-detection/area-policy.d.ts +1 -1
  739. package/types/package-checks/duplicate-detection/finding-messages.d.ts +7 -0
  740. package/types/package-checks/duplicate-detection/finding-waiver-identity.d.ts +3 -0
  741. package/types/package-checks/duplicate-detection/jscpd/command-resolution.d.ts +1 -1
  742. package/types/package-checks/duplicate-detection/options.d.ts +18 -1
  743. package/types/package-checks/duplicate-detection/records.d.ts +20 -3
  744. package/types/package-checks/file-metrics/finding-messages.d.ts +4 -0
  745. package/types/package-checks/file-metrics/records.d.ts +5 -10
  746. package/types/package-checks/file-metrics/scc/parser.d.ts +4 -4
  747. package/types/package-checks/function-metrics/analysis.d.ts +1 -1
  748. package/types/package-checks/function-metrics/analyzer/analysis-context.d.ts +174 -0
  749. package/types/package-checks/function-metrics/analyzer/analysis-model.d.ts +135 -0
  750. package/types/package-checks/function-metrics/analyzer/contracts.d.ts +48 -0
  751. package/types/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.d.ts +13 -0
  752. package/types/package-checks/function-metrics/analyzer/extensions/lizardnd.d.ts +28 -0
  753. package/types/package-checks/function-metrics/analyzer/extensions/protocol.d.ts +99 -0
  754. package/types/package-checks/function-metrics/analyzer/extensions/registry.d.ts +34 -0
  755. package/types/package-checks/function-metrics/analyzer/pipeline.d.ts +67 -0
  756. package/types/package-checks/function-metrics/analyzer/port-facade.d.ts +38 -0
  757. package/types/package-checks/function-metrics/analyzer/reader-registry.d.ts +18 -0
  758. package/types/package-checks/function-metrics/analyzer/readers/csharp.d.ts +22 -0
  759. package/types/package-checks/function-metrics/analyzer/readers/erlang.d.ts +22 -0
  760. package/types/package-checks/function-metrics/analyzer/readers/fortran.d.ts +29 -0
  761. package/types/package-checks/function-metrics/analyzer/readers/gdscript.d.ts +18 -0
  762. package/types/package-checks/function-metrics/analyzer/readers/go.d.ts +18 -0
  763. package/types/package-checks/function-metrics/analyzer/readers/java-body-states.d.ts +18 -0
  764. package/types/package-checks/function-metrics/analyzer/readers/java.d.ts +44 -0
  765. package/types/package-checks/function-metrics/analyzer/readers/javascript.d.ts +14 -0
  766. package/types/package-checks/function-metrics/analyzer/readers/kotlin.d.ts +23 -0
  767. package/types/package-checks/function-metrics/analyzer/readers/lua.d.ts +16 -0
  768. package/types/package-checks/function-metrics/analyzer/readers/objc.d.ts +18 -0
  769. package/types/package-checks/function-metrics/analyzer/readers/perl.d.ts +28 -0
  770. package/types/package-checks/function-metrics/analyzer/readers/php-states.d.ts +41 -0
  771. package/types/package-checks/function-metrics/analyzer/readers/php.d.ts +22 -0
  772. package/types/package-checks/function-metrics/analyzer/readers/plsql.d.ts +24 -0
  773. package/types/package-checks/function-metrics/analyzer/readers/python.d.ts +50 -0
  774. package/types/package-checks/function-metrics/analyzer/readers/r.d.ts +22 -0
  775. package/types/package-checks/function-metrics/analyzer/readers/ruby.d.ts +16 -0
  776. package/types/package-checks/function-metrics/analyzer/readers/rust.d.ts +20 -0
  777. package/types/package-checks/function-metrics/analyzer/readers/scala.d.ts +20 -0
  778. package/types/package-checks/function-metrics/analyzer/readers/solidity.d.ts +19 -0
  779. package/types/package-checks/function-metrics/analyzer/readers/st.d.ts +37 -0
  780. package/types/package-checks/function-metrics/analyzer/readers/swift.d.ts +30 -0
  781. package/types/package-checks/function-metrics/analyzer/readers/tsx.d.ts +15 -0
  782. package/types/package-checks/function-metrics/analyzer/readers/ttcn.d.ts +22 -0
  783. package/types/package-checks/function-metrics/analyzer/readers/typescript.d.ts +35 -0
  784. package/types/package-checks/function-metrics/analyzer/readers/vue.d.ts +18 -0
  785. package/types/package-checks/function-metrics/analyzer/readers/zig.d.ts +19 -0
  786. package/types/package-checks/function-metrics/analyzer/shared/clike.d.ts +101 -0
  787. package/types/package-checks/function-metrics/analyzer/shared/code-reader.d.ts +176 -0
  788. package/types/package-checks/function-metrics/analyzer/shared/golike.d.ts +39 -0
  789. package/types/package-checks/function-metrics/analyzer/shared/js-style-regex.d.ts +16 -0
  790. package/types/package-checks/function-metrics/analyzer/shared/rubylike.d.ts +40 -0
  791. package/types/package-checks/function-metrics/analyzer/shared/script-language.d.ts +17 -0
  792. package/types/package-checks/function-metrics/analyzer-adapter.d.ts +26 -0
  793. package/types/package-checks/function-metrics/analyzer-worker-contract.d.ts +5 -0
  794. package/types/package-checks/function-metrics/analyzer-worker-port.d.ts +24 -0
  795. package/types/package-checks/function-metrics/analyzer-worker.d.ts +1 -0
  796. package/types/package-checks/function-metrics/constructor.d.ts +1 -1
  797. package/types/package-checks/function-metrics/execution.d.ts +5 -2
  798. package/types/package-checks/function-metrics/finding-messages.d.ts +9 -0
  799. package/types/package-checks/function-metrics/finding-waiver-identity.d.ts +2 -0
  800. package/types/package-checks/function-metrics/measurement-model.d.ts +13 -1
  801. package/types/package-checks/function-metrics/measurement.d.ts +22 -7
  802. package/types/package-checks/function-metrics/options.d.ts +23 -10
  803. package/types/package-checks/function-metrics/records.d.ts +24 -5
  804. package/types/package-checks/function-metrics/target-files.d.ts +4 -3
  805. package/types/package-checks/host-environment/csv.d.ts +2 -0
  806. package/types/package-checks/host-environment/git.d.ts +1 -1
  807. package/types/package-checks/host-environment/process.d.ts +5 -0
  808. package/types/package-checks/json-schema-validation/final-data.d.ts +8 -0
  809. package/types/package-checks/json-schema-validation/options.d.ts +31 -3
  810. package/types/package-checks/json-validation/final-data.d.ts +5 -0
  811. package/types/package-checks/maintenance-reminders/final-data.d.ts +18 -0
  812. package/types/package-checks/markdown-link-validation/default-check.d.ts +9 -3
  813. package/types/package-checks/markdown-link-validation/execution.d.ts +1 -3
  814. package/types/package-checks/markdown-link-validation/final-data.d.ts +5 -0
  815. package/types/package-checks/markdown-link-validation/finding-messages.d.ts +4 -0
  816. package/types/package-checks/markdown-link-validation/local-resolution.d.ts +12 -6
  817. package/types/package-checks/markdown-link-validation/local-resolver.d.ts +2 -1
  818. package/types/package-checks/markdown-link-validation/options.d.ts +15 -0
  819. package/types/package-checks/markdown-link-validation/parse-facts-cache-payload.d.ts +24 -0
  820. package/types/package-checks/markdown-link-validation/parse-facts-cache.d.ts +13 -0
  821. package/types/package-checks/markdown-link-validation/resolver-engine.d.ts +6 -4
  822. package/types/package-checks/markdown-link-validation/source-reader.d.ts +11 -0
  823. package/types/package-checks/markdown-link-validation/unavailable-reasons.d.ts +4 -0
  824. package/types/package-checks/project-files/public-collection.d.ts +16 -0
  825. package/types/package-checks/secret-detection/classification.d.ts +12 -0
  826. package/types/package-checks/secret-detection/default-check.d.ts +11 -0
  827. package/types/package-checks/secret-detection/execution.d.ts +14 -0
  828. package/types/package-checks/secret-detection/final-data.d.ts +15 -0
  829. package/types/package-checks/secret-detection/finding-waiver-identity.d.ts +5 -0
  830. package/types/package-checks/secret-detection/input-preparation.d.ts +24 -0
  831. package/types/package-checks/secret-detection/options-resolution.d.ts +6 -0
  832. package/types/package-checks/secret-detection/options-validation.d.ts +3 -0
  833. package/types/package-checks/secret-detection/options.d.ts +32 -0
  834. package/types/package-checks/secret-detection/records.d.ts +35 -0
  835. package/types/package-checks/secret-detection/secretlint/adapter.d.ts +28 -0
  836. package/types/project-definition/check-tree/authoring.d.ts +11 -14
  837. package/types/project-definition/check-tree/check-fields-authoring.d.ts +25 -0
  838. package/types/project-definition/check-tree/collection-authoring.d.ts +2 -0
  839. package/types/project-definition/check-tree/resolution.d.ts +8 -3
  840. package/types/project-definition/check-tree/scheduling-authoring.d.ts +19 -0
  841. package/types/project-definition/declarative-snapshot.d.ts +7 -0
  842. package/types/project-definition/output-defaults.d.ts +7 -0
  843. package/types/project-definition/output-validation.d.ts +2 -1
  844. package/types/project-definition/progress-rendering-output.d.ts +41 -0
  845. package/types/project-definition/project-definition.d.ts +61 -16
  846. package/types/project-definition/resource-unit-mapping.d.ts +4 -0
  847. package/types/project-definition/scheduler-policy.d.ts +497 -0
  848. package/types/project-run/admission-strategy-provider/custom-strategy-preparation.d.ts +9 -0
  849. package/types/project-run/admission-strategy-provider/prepared-admission-strategy.d.ts +23 -0
  850. package/types/project-run/admission-strategy-provider/provider.d.ts +13 -0
  851. package/types/project-run/aggregation.d.ts +1 -1
  852. package/types/project-run/check-execution/callback.d.ts +5 -1
  853. package/types/project-run/check-execution/console-capture.d.ts +18 -0
  854. package/types/project-run/check-execution/dependencies.d.ts +1 -1
  855. package/types/project-run/check-execution/execution-finalization.d.ts +17 -7
  856. package/types/project-run/check-execution/execution-settlement.d.ts +5 -2
  857. package/types/project-run/check-execution/flag-controls.d.ts +27 -0
  858. package/types/project-run/check-execution/lifecycle.d.ts +20 -0
  859. package/types/project-run/check-execution/messages.d.ts +2 -0
  860. package/types/project-run/check-execution/plan.d.ts +2 -3
  861. package/types/project-run/check-execution/preflight.d.ts +6 -5
  862. package/types/project-run/check-execution/resolved-checks.d.ts +32 -38
  863. package/types/project-run/check-execution/resolved-execution-result.d.ts +21 -0
  864. package/types/project-run/{completion.d.ts → completion/completion.d.ts} +4 -4
  865. package/types/project-run/{machine-publication.d.ts → completion/machine-publication.d.ts} +3 -3
  866. package/types/project-run/completion/result-resolver.d.ts +4 -0
  867. package/types/project-run/controls/contract.d.ts +25 -2
  868. package/types/project-run/controls/outputs-override-validation.d.ts +2 -1
  869. package/types/project-run/controls/validation-result.d.ts +12 -4
  870. package/types/project-run/diagnostic-logging/logger.d.ts +34 -4
  871. package/types/project-run/diagnostic-logging/observation-rendering.d.ts +7 -0
  872. package/types/project-run/invocation/candidate.d.ts +12 -0
  873. package/types/project-run/{invocation-creation.d.ts → invocation/creation.d.ts} +3 -3
  874. package/types/project-run/invocation/paths.d.ts +40 -0
  875. package/types/project-run/invocation/progress.d.ts +11 -0
  876. package/types/project-run/invocation/run.d.ts +43 -0
  877. package/types/project-run/invocation/scheduler.d.ts +16 -0
  878. package/types/project-run/outputs/configuration.d.ts +3 -0
  879. package/types/project-run/outputs/status.d.ts +48 -0
  880. package/types/project-run/progress-rendering/presentation.d.ts +9 -5
  881. package/types/project-run/progress-rendering/renderer-formatting.d.ts +8 -0
  882. package/types/project-run/progress-rendering/renderer-lifecycle.d.ts +6 -1
  883. package/types/project-run/progress-rendering/renderer.d.ts +7 -1
  884. package/types/project-run/project-context.d.ts +2 -1
  885. package/types/project-run/result.d.ts +37 -3
  886. package/types/project-run/run.d.ts +6 -5
  887. package/types/project-run/task-scheduler/admission-core/compiled-graph.d.ts +31 -0
  888. package/types/project-run/task-scheduler/admission-core/core.d.ts +57 -0
  889. package/types/project-run/task-scheduler/admission-core/input.d.ts +4 -0
  890. package/types/project-run/task-scheduler/admission-core/projection.d.ts +22 -0
  891. package/types/project-run/task-scheduler/admission-core/selection-index.d.ts +61 -0
  892. package/types/project-run/task-scheduler/admission-core/selection-query.d.ts +28 -0
  893. package/types/project-run/task-scheduler/admission-core/selection-seed.d.ts +9 -0
  894. package/types/project-run/task-scheduler/admission-core/selection-transition.d.ts +4 -0
  895. package/types/project-run/task-scheduler/admission-core/selection.d.ts +20 -0
  896. package/types/project-run/task-scheduler/admission-scope-layers.d.ts +8 -0
  897. package/types/project-run/task-scheduler/admission-selection-policy.d.ts +31 -0
  898. package/types/project-run/task-scheduler/critical-path-ranking.d.ts +19 -0
  899. package/types/project-run/task-scheduler/custom-admission-policy.d.ts +6 -0
  900. package/types/project-run/task-scheduler/execution-state.d.ts +43 -1
  901. package/types/project-run/task-scheduler/forced-block-effect-replay.d.ts +9 -0
  902. package/types/project-run/task-scheduler/graph-validation.d.ts +3 -2
  903. package/types/project-run/task-scheduler/graph.d.ts +15 -0
  904. package/types/project-run/task-scheduler/measurement/diagnostics.d.ts +47 -0
  905. package/types/project-run/task-scheduler/measurement/integrals.d.ts +27 -0
  906. package/types/project-run/task-scheduler/measurement/policy.d.ts +10 -0
  907. package/types/project-run/task-scheduler/measurement/summary.d.ts +3 -0
  908. package/types/project-run/task-scheduler/measurement/timing.d.ts +33 -0
  909. package/types/project-run/task-scheduler/scheduler-admission-decision.d.ts +13 -1
  910. package/types/project-run/task-scheduler/scheduler-decision-inspection.d.ts +20 -19
  911. package/types/project-run/task-scheduler/scheduler-decision-model.d.ts +38 -22
  912. package/types/project-run/task-scheduler/scheduler-decision.d.ts +4 -1
  913. package/types/project-run/task-scheduler/scheduler-observation.d.ts +14 -0
  914. package/types/project-run/task-scheduler/scheduler-task-lifecycle.d.ts +18 -0
  915. package/types/project-run/task-scheduler/scheduler-terminal-measurement.d.ts +9 -0
  916. package/dist/esm/package-checks/file-metrics/scc/csv.mjs.map +0 -1
  917. package/dist/esm/package-checks/function-metrics/lizard/availability.mjs +0 -64
  918. package/dist/esm/package-checks/function-metrics/lizard/availability.mjs.map +0 -1
  919. package/dist/esm/package-checks/function-metrics/lizard/csv.mjs +0 -17
  920. package/dist/esm/package-checks/function-metrics/lizard/csv.mjs.map +0 -1
  921. package/dist/esm/package-checks/function-metrics/lizard/parser.mjs +0 -138
  922. package/dist/esm/package-checks/function-metrics/lizard/parser.mjs.map +0 -1
  923. package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs +0 -35
  924. package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs.map +0 -1
  925. package/dist/esm/package-checks/host-environment/process/command.mjs +0 -13
  926. package/dist/esm/package-checks/host-environment/process/command.mjs.map +0 -1
  927. package/dist/esm/project-run/completion.mjs.map +0 -1
  928. package/dist/esm/project-run/invocation-creation.mjs +0 -111
  929. package/dist/esm/project-run/invocation-creation.mjs.map +0 -1
  930. package/dist/esm/project-run/invocation.mjs.map +0 -1
  931. package/dist/esm/project-run/machine-publication.mjs.map +0 -1
  932. package/dist/esm/project-run/output-configuration.mjs.map +0 -1
  933. package/dist/esm/project-run/output-status.mjs +0 -43
  934. package/dist/esm/project-run/output-status.mjs.map +0 -1
  935. package/src/package-checks/function-metrics/lizard/availability.ts +0 -90
  936. package/src/package-checks/function-metrics/lizard/csv.ts +0 -20
  937. package/src/package-checks/function-metrics/lizard/parser.ts +0 -179
  938. package/src/package-checks/function-metrics/lizard/scanner.ts +0 -62
  939. package/src/package-checks/host-environment/process/command.ts +0 -21
  940. package/src/project-run/invocation-creation.ts +0 -160
  941. package/src/project-run/output-status.ts +0 -69
  942. package/types/package-checks/file-metrics/scc/csv.d.ts +0 -1
  943. package/types/package-checks/function-metrics/lizard/availability.d.ts +0 -11
  944. package/types/package-checks/function-metrics/lizard/csv.d.ts +0 -1
  945. package/types/package-checks/function-metrics/lizard/parser.d.ts +0 -17
  946. package/types/package-checks/function-metrics/lizard/scanner.d.ts +0 -15
  947. package/types/package-checks/host-environment/process/command.d.ts +0 -7
  948. package/types/project-run/invocation.d.ts +0 -34
  949. package/types/project-run/output-configuration.d.ts +0 -3
  950. package/types/project-run/output-status.d.ts +0 -21
@@ -1,17 +1,20 @@
1
- import { formatFinalSummary, formatRunningRow, formatSettledBlock, shouldPresentSettledFeedback } from "./renderer-formatting.mjs";
1
+ import { formatFlagConditionNotMatchedBlock, formatFinalSummary, formatRunningRow, formatSettledBlock, isFlagConditionNotMatchedFeedback, shouldPresentSettledFeedback } from "./renderer-formatting.mjs";
2
2
  /** Maintains the mutable lifecycle state and the TTY-only running terminal region. */
3
3
  export class ProgressRendererController {
4
4
  refreshesRunningRegion;
5
5
  clock;
6
6
  writer;
7
7
  completedCount = 0;
8
+ flagConditionNotMatchedDisplayNames = [];
8
9
  preparedTotal;
9
10
  renderedRunningRows = 0;
10
11
  running = [];
11
12
  usesColor;
12
- constructor(writer, clock) {
13
+ progressRendering;
14
+ constructor(writer, clock, progressRendering) {
13
15
  this.writer = writer;
14
16
  this.clock = clock;
17
+ this.progressRendering = progressRendering;
15
18
  this.refreshesRunningRegion = writer.isTTY && writer.term?.toLowerCase() !== "dumb";
16
19
  this.usesColor = this.refreshesRunningRegion && writer.color;
17
20
  }
@@ -28,6 +31,9 @@ export class ProgressRendererController {
28
31
  case "prepared":
29
32
  this.prepare(feedback.totalChecks);
30
33
  return;
34
+ case "flag-control-completed":
35
+ this.completeFlagControl();
36
+ return;
31
37
  case "started":
32
38
  this.start(feedback);
33
39
  return;
@@ -63,15 +69,20 @@ export class ProgressRendererController {
63
69
  this.eraseRunningRegion();
64
70
  this.completedCount += 1;
65
71
  this.removeRunningCheck(feedback.checkId);
66
- if (shouldPresentSettledFeedback(feedback)) {
72
+ if (isFlagConditionNotMatchedFeedback(feedback)) {
73
+ this.flagConditionNotMatchedDisplayNames.push(feedback.displayName);
74
+ }
75
+ else if (shouldPresentSettledFeedback(feedback)) {
67
76
  this.writer.write(formatSettledBlock({
68
77
  completionOrdinal: this.completedCount,
69
78
  displayName: feedback.displayName,
70
79
  durationMs: feedback.durationMs,
71
80
  messages: feedback.messages,
72
81
  outcome: feedback.outcome,
82
+ records: feedback.records,
73
83
  totalChecks,
74
- usesColor: this.usesColor
84
+ usesColor: this.usesColor,
85
+ progressRendering: this.progressRendering
75
86
  }));
76
87
  }
77
88
  if (this.refreshesRunningRegion)
@@ -82,8 +93,23 @@ export class ProgressRendererController {
82
93
  if (this.running.length > 0) {
83
94
  throw new Error("Progress feedback finalized while Checks are still running");
84
95
  }
96
+ this.flushFlagConditionNotMatchedChecks();
85
97
  this.writer.write(formatFinalSummary(feedback));
86
98
  }
99
+ completeFlagControl() {
100
+ this.requirePrepared();
101
+ this.flushFlagConditionNotMatchedChecks();
102
+ }
103
+ flushFlagConditionNotMatchedChecks() {
104
+ const firstDisplayName = this.flagConditionNotMatchedDisplayNames[0];
105
+ if (firstDisplayName === undefined)
106
+ return;
107
+ this.writer.write(formatFlagConditionNotMatchedBlock([
108
+ firstDisplayName,
109
+ ...this.flagConditionNotMatchedDisplayNames.slice(1)
110
+ ]));
111
+ this.flagConditionNotMatchedDisplayNames.length = 0;
112
+ }
87
113
  eraseRunningRegion() {
88
114
  for (let index = 0; index < this.renderedRunningRows; index += 1) {
89
115
  this.writer.write("\u001B[1A\u001B[2K");
@@ -1 +1 @@
1
- {"version":3,"file":"renderer-lifecycle.mjs","sourceRoot":"","sources":["../../../../src/project-run/progress-rendering/renderer-lifecycle.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,4BAA4B,EAC7B,MAAM,0BAA0B,CAAC;AASlC,sFAAsF;AACtF,MAAM,OAAO,0BAA0B;IAC5B,sBAAsB,CAAU;IAExB,KAAK,CAAgB;IACrB,MAAM,CAAiB;IAChC,cAAc,GAAG,CAAC,CAAC;IACnB,aAAa,CAAqB;IAClC,mBAAmB,GAAG,CAAC,CAAC;IACf,OAAO,GAAmB,EAAE,CAAC;IAC7B,SAAS,CAAU;IAEpC,YAAY,MAAsB,EAAE,KAAoB;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,MAAM,CAAC;QACpF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,IAAI,MAAM,CAAC,KAAK,CAAC;IAC/D,CAAC;IAED,OAAO;QACL,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACtE,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,CAAC,QAA0B;QAC/B,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,UAAU;gBACb,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;gBACnC,OAAO;YACT,KAAK,SAAS;gBACZ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBACrB,OAAO;YACT,KAAK,SAAS;gBACZ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACtB,OAAO;YACT,KAAK,OAAO;gBACV,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAEO,OAAO,CAAC,WAAmB;QACjC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC9F,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,WAAW,sBAAsB,CAAC,CAAC;IAC5E,CAAC;IAEO,KAAK,CAAC,QAAiE;QAC7E,IAAI,CAAC,IAAI,CAAC,sBAAsB;YAAE,OAAO;QACzC,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEO,MAAM,CAAC,QAAiE;QAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,sBAAsB;YAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3D,IAAI,CAAC,cAAc,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,4BAA4B,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,kBAAkB,CAAC;gBACjB,iBAAiB,EAAE,IAAI,CAAC,cAAc;gBACtC,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,WAAW;gBACX,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,sBAAsB;YAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC9D,CAAC;IAEO,MAAM,CAAC,QAA+D;QAC5E,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAClD,CAAC;IAEO,kBAAkB;QACxB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,mBAAmB,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;IAC/B,CAAC;IAEO,mBAAmB;QACzB,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;YACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,gBAAgB,CAAC;gBACf,YAAY,EAAE,IAAI,CAAC,cAAc,GAAG,KAAK,GAAG,CAAC;gBAC7C,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,WAAW;aACZ,CAAC,CACH,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACjD,CAAC;IAEO,kBAAkB,CAAC,OAAe;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;QAC3E,IAAI,KAAK,IAAI,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAEO,sBAAsB,CAAC,aAAqB;QAClD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC;YACpD,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;CACF","sourcesContent":["import type {\n ProgressClock,\n ProgressFeedback,\n ProgressRenderer,\n ProgressWriter\n} from \"./renderer.ts\";\nimport {\n formatFinalSummary,\n formatRunningRow,\n formatSettledBlock,\n shouldPresentSettledFeedback\n} from \"./renderer-formatting.ts\";\n\ninterface RunningCheck {\n readonly checkId: string;\n readonly displayName: string;\n readonly startedAtMs: number;\n elapsedMs: number | null;\n}\n\n/** Maintains the mutable lifecycle state and the TTY-only running terminal region. */\nexport class ProgressRendererController implements ProgressRenderer {\n readonly refreshesRunningRegion: boolean;\n\n private readonly clock: ProgressClock;\n private readonly writer: ProgressWriter;\n private completedCount = 0;\n private preparedTotal: number | undefined;\n private renderedRunningRows = 0;\n private readonly running: RunningCheck[] = [];\n private readonly usesColor: boolean;\n\n constructor(writer: ProgressWriter, clock: ProgressClock) {\n this.writer = writer;\n this.clock = clock;\n this.refreshesRunningRegion = writer.isTTY && writer.term?.toLowerCase() !== \"dumb\";\n this.usesColor = this.refreshesRunningRegion && writer.color;\n }\n\n refresh(): void {\n if (!this.refreshesRunningRegion || this.running.length === 0) return;\n this.requirePrepared();\n this.eraseRunningRegion();\n this.updateRunningDurations(this.clock.now());\n this.redrawRunningRegion();\n }\n\n render(feedback: ProgressFeedback): void {\n switch (feedback.kind) {\n case \"prepared\":\n this.prepare(feedback.totalChecks);\n return;\n case \"started\":\n this.start(feedback);\n return;\n case \"settled\":\n this.settle(feedback);\n return;\n case \"final\":\n this.finish(feedback);\n }\n }\n\n private prepare(totalChecks: number): void {\n if (this.preparedTotal !== undefined) throw new Error(\"Progress feedback was prepared twice\");\n this.preparedTotal = totalChecks;\n this.writer.write(`Vibe Check\\ntotal ${totalChecks} checks\\n\\nChecks:\\n`);\n }\n\n private start(feedback: Extract<ProgressFeedback, { readonly kind: \"started\" }>): void {\n if (!this.refreshesRunningRegion) return;\n this.requirePrepared();\n this.eraseRunningRegion();\n this.running.push({\n checkId: feedback.checkId,\n displayName: feedback.displayName,\n elapsedMs: null,\n startedAtMs: this.clock.now()\n });\n this.redrawRunningRegion();\n }\n\n private settle(feedback: Extract<ProgressFeedback, { readonly kind: \"settled\" }>): void {\n const totalChecks = this.requirePrepared();\n if (this.refreshesRunningRegion) this.eraseRunningRegion();\n this.completedCount += 1;\n this.removeRunningCheck(feedback.checkId);\n if (shouldPresentSettledFeedback(feedback)) {\n this.writer.write(\n formatSettledBlock({\n completionOrdinal: this.completedCount,\n displayName: feedback.displayName,\n durationMs: feedback.durationMs,\n messages: feedback.messages,\n outcome: feedback.outcome,\n totalChecks,\n usesColor: this.usesColor\n })\n );\n }\n if (this.refreshesRunningRegion) this.redrawRunningRegion();\n }\n\n private finish(feedback: Extract<ProgressFeedback, { readonly kind: \"final\" }>): void {\n this.requirePrepared();\n if (this.running.length > 0) {\n throw new Error(\"Progress feedback finalized while Checks are still running\");\n }\n this.writer.write(formatFinalSummary(feedback));\n }\n\n private eraseRunningRegion(): void {\n for (let index = 0; index < this.renderedRunningRows; index += 1) {\n this.writer.write(\"\\u001B[1A\\u001B[2K\");\n }\n this.renderedRunningRows = 0;\n }\n\n private redrawRunningRegion(): void {\n const totalChecks = this.requirePrepared();\n for (const [index, check] of this.running.entries()) {\n this.writer.write(\n formatRunningRow({\n displayIndex: this.completedCount + index + 1,\n displayName: check.displayName,\n elapsedMs: check.elapsedMs,\n totalChecks\n })\n );\n }\n this.renderedRunningRows = this.running.length;\n }\n\n private removeRunningCheck(checkId: string): void {\n const index = this.running.findIndex((check) => check.checkId === checkId);\n if (index >= 0) this.running.splice(index, 1);\n }\n\n private updateRunningDurations(refreshedAtMs: number): void {\n for (const check of this.running) {\n const elapsedMs = refreshedAtMs - check.startedAtMs;\n check.elapsedMs = Number.isFinite(elapsedMs) && elapsedMs >= 0 ? elapsedMs : 0;\n }\n }\n\n private requirePrepared(): number {\n if (this.preparedTotal === undefined) {\n throw new Error(\"Progress feedback arrived before preparation\");\n }\n return this.preparedTotal;\n }\n}\n"]}
1
+ {"version":3,"file":"renderer-lifecycle.mjs","sourceRoot":"","sources":["../../../../src/project-run/progress-rendering/renderer-lifecycle.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n ProgressClock,\n ProgressFeedback,\n ProgressRenderer,\n ProgressWriter\n} from \"./renderer.ts\";\nimport type { ResolvedProgressRenderingOutput } from \"../../project-definition/project-definition.ts\";\nimport {\n formatFlagConditionNotMatchedBlock,\n formatFinalSummary,\n formatRunningRow,\n formatSettledBlock,\n isFlagConditionNotMatchedFeedback,\n shouldPresentSettledFeedback\n} from \"./renderer-formatting.ts\";\n\ninterface RunningCheck {\n readonly checkId: string;\n readonly displayName: string;\n readonly startedAtMs: number;\n elapsedMs: number | null;\n}\n\n/** Maintains the mutable lifecycle state and the TTY-only running terminal region. */\nexport class ProgressRendererController implements ProgressRenderer {\n readonly refreshesRunningRegion: boolean;\n\n private readonly clock: ProgressClock;\n private readonly writer: ProgressWriter;\n private completedCount = 0;\n private readonly flagConditionNotMatchedDisplayNames: string[] = [];\n private preparedTotal: number | undefined;\n private renderedRunningRows = 0;\n private readonly running: RunningCheck[] = [];\n private readonly usesColor: boolean;\n private readonly progressRendering: ResolvedProgressRenderingOutput;\n\n constructor(\n writer: ProgressWriter,\n clock: ProgressClock,\n progressRendering: ResolvedProgressRenderingOutput\n ) {\n this.writer = writer;\n this.clock = clock;\n this.progressRendering = progressRendering;\n this.refreshesRunningRegion = writer.isTTY && writer.term?.toLowerCase() !== \"dumb\";\n this.usesColor = this.refreshesRunningRegion && writer.color;\n }\n\n refresh(): void {\n if (!this.refreshesRunningRegion || this.running.length === 0) return;\n this.requirePrepared();\n this.eraseRunningRegion();\n this.updateRunningDurations(this.clock.now());\n this.redrawRunningRegion();\n }\n\n render(feedback: ProgressFeedback): void {\n switch (feedback.kind) {\n case \"prepared\":\n this.prepare(feedback.totalChecks);\n return;\n case \"flag-control-completed\":\n this.completeFlagControl();\n return;\n case \"started\":\n this.start(feedback);\n return;\n case \"settled\":\n this.settle(feedback);\n return;\n case \"final\":\n this.finish(feedback);\n }\n }\n\n private prepare(totalChecks: number): void {\n if (this.preparedTotal !== undefined) throw new Error(\"Progress feedback was prepared twice\");\n this.preparedTotal = totalChecks;\n this.writer.write(`Vibe Check\\ntotal ${totalChecks} checks\\n\\nChecks:\\n`);\n }\n\n private start(feedback: Extract<ProgressFeedback, { readonly kind: \"started\" }>): void {\n if (!this.refreshesRunningRegion) return;\n this.requirePrepared();\n this.eraseRunningRegion();\n this.running.push({\n checkId: feedback.checkId,\n displayName: feedback.displayName,\n elapsedMs: null,\n startedAtMs: this.clock.now()\n });\n this.redrawRunningRegion();\n }\n\n private settle(feedback: Extract<ProgressFeedback, { readonly kind: \"settled\" }>): void {\n const totalChecks = this.requirePrepared();\n if (this.refreshesRunningRegion) this.eraseRunningRegion();\n this.completedCount += 1;\n this.removeRunningCheck(feedback.checkId);\n if (isFlagConditionNotMatchedFeedback(feedback)) {\n this.flagConditionNotMatchedDisplayNames.push(feedback.displayName);\n } else if (shouldPresentSettledFeedback(feedback)) {\n this.writer.write(\n formatSettledBlock({\n completionOrdinal: this.completedCount,\n displayName: feedback.displayName,\n durationMs: feedback.durationMs,\n messages: feedback.messages,\n outcome: feedback.outcome,\n records: feedback.records,\n totalChecks,\n usesColor: this.usesColor,\n progressRendering: this.progressRendering\n })\n );\n }\n if (this.refreshesRunningRegion) this.redrawRunningRegion();\n }\n\n private finish(feedback: Extract<ProgressFeedback, { readonly kind: \"final\" }>): void {\n this.requirePrepared();\n if (this.running.length > 0) {\n throw new Error(\"Progress feedback finalized while Checks are still running\");\n }\n this.flushFlagConditionNotMatchedChecks();\n this.writer.write(formatFinalSummary(feedback));\n }\n\n private completeFlagControl(): void {\n this.requirePrepared();\n this.flushFlagConditionNotMatchedChecks();\n }\n\n private flushFlagConditionNotMatchedChecks(): void {\n const firstDisplayName = this.flagConditionNotMatchedDisplayNames[0];\n if (firstDisplayName === undefined) return;\n this.writer.write(\n formatFlagConditionNotMatchedBlock([\n firstDisplayName,\n ...this.flagConditionNotMatchedDisplayNames.slice(1)\n ])\n );\n this.flagConditionNotMatchedDisplayNames.length = 0;\n }\n\n private eraseRunningRegion(): void {\n for (let index = 0; index < this.renderedRunningRows; index += 1) {\n this.writer.write(\"\\u001B[1A\\u001B[2K\");\n }\n this.renderedRunningRows = 0;\n }\n\n private redrawRunningRegion(): void {\n const totalChecks = this.requirePrepared();\n for (const [index, check] of this.running.entries()) {\n this.writer.write(\n formatRunningRow({\n displayIndex: this.completedCount + index + 1,\n displayName: check.displayName,\n elapsedMs: check.elapsedMs,\n totalChecks\n })\n );\n }\n this.renderedRunningRows = this.running.length;\n }\n\n private removeRunningCheck(checkId: string): void {\n const index = this.running.findIndex((check) => check.checkId === checkId);\n if (index >= 0) this.running.splice(index, 1);\n }\n\n private updateRunningDurations(refreshedAtMs: number): void {\n for (const check of this.running) {\n const elapsedMs = refreshedAtMs - check.startedAtMs;\n check.elapsedMs = Number.isFinite(elapsedMs) && elapsedMs >= 0 ? elapsedMs : 0;\n }\n }\n\n private requirePrepared(): number {\n if (this.preparedTotal === undefined) {\n throw new Error(\"Progress feedback arrived before preparation\");\n }\n return this.preparedTotal;\n }\n}\n"]}
@@ -1,8 +1,11 @@
1
+ import { resolveProgressRenderingOutput } from "../../project-definition/output-defaults.mjs";
1
2
  import { ProgressRendererController } from "./renderer-lifecycle.mjs";
2
3
  const SYSTEM_PROGRESS_CLOCK = Object.freeze({ now: () => performance.now() });
3
4
  /** Product-private lifecycle presentation with one owner for feedback and its writer. */
4
- export function createProgressRenderer(writer, clock = SYSTEM_PROGRESS_CLOCK) {
5
- const controller = new ProgressRendererController(writer, clock);
5
+ export function createProgressRenderer(writer, clock = SYSTEM_PROGRESS_CLOCK, progressRendering = resolveProgressRenderingOutput({
6
+ enabled: true
7
+ })) {
8
+ const controller = new ProgressRendererController(writer, clock, progressRendering);
6
9
  return Object.freeze({
7
10
  refreshesRunningRegion: controller.refreshesRunningRegion,
8
11
  refresh: () => controller.refresh(),
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.mjs","sourceRoot":"","sources":["../../../../src/project-run/progress-rendering/renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAqDrE,MAAM,qBAAqB,GAAkB,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAE7F,yFAAyF;AACzF,MAAM,UAAU,sBAAsB,CACpC,MAAsB,EACtB,KAAK,GAAkB,qBAAqB;IAE5C,MAAM,UAAU,GAAG,IAAI,0BAA0B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,sBAAsB,EAAE,UAAU,CAAC,sBAAsB;QACzD,OAAO,EAAE,GAAS,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE;QACzC,MAAM,EAAE,CAAC,QAA0B,EAAQ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;KAC1E,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { CheckMessage, CheckOutcome, CheckVisibility } from \"../../check/check.ts\";\nimport { ProgressRendererController } from \"./renderer-lifecycle.ts\";\n\nexport interface ProgressWriter {\n readonly color: boolean;\n readonly isTTY: boolean;\n readonly term: string | undefined;\n write(content: string): void;\n}\n\nexport type ProgressFeedback = Readonly<\n | {\n readonly kind: \"prepared\";\n readonly totalChecks: number;\n }\n | {\n readonly kind: \"started\";\n readonly checkId: string;\n readonly displayName: string;\n }\n | {\n readonly kind: \"settled\";\n readonly checkId: string;\n readonly displayName: string;\n readonly outcome: CheckOutcome;\n readonly durationMs: number | null;\n readonly visibility: CheckVisibility;\n readonly messages: readonly CheckMessage[];\n }\n | {\n readonly kind: \"final\";\n readonly execution: \"cancelled\" | \"completed\";\n readonly counts: ProgressOutcomeCounts;\n readonly elapsedMs: number;\n }\n>;\n\nexport interface ProgressOutcomeCounts {\n readonly failed: number;\n readonly notApplicable: number;\n readonly passed: number;\n readonly unavailable: number;\n}\n\nexport interface ProgressRenderer {\n refresh(): void;\n readonly refreshesRunningRegion: boolean;\n render(feedback: ProgressFeedback): void;\n}\n\nexport interface ProgressClock {\n now(): number;\n}\n\nconst SYSTEM_PROGRESS_CLOCK: ProgressClock = Object.freeze({ now: () => performance.now() });\n\n/** Product-private lifecycle presentation with one owner for feedback and its writer. */\nexport function createProgressRenderer(\n writer: ProgressWriter,\n clock: ProgressClock = SYSTEM_PROGRESS_CLOCK\n): ProgressRenderer {\n const controller = new ProgressRendererController(writer, clock);\n return Object.freeze({\n refreshesRunningRegion: controller.refreshesRunningRegion,\n refresh: (): void => controller.refresh(),\n render: (feedback: ProgressFeedback): void => controller.render(feedback)\n });\n}\n"]}
1
+ {"version":3,"file":"renderer.mjs","sourceRoot":"","sources":["../../../../src/project-run/progress-rendering/renderer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAC7F,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AA0DrE,MAAM,qBAAqB,GAAkB,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAE7F,yFAAyF;AACzF,MAAM,UAAU,sBAAsB,CACpC,MAAsB,EACtB,KAAK,GAAkB,qBAAqB,EAC5C,iBAAiB,GAAoC,8BAA8B,CAAC;IAClF,OAAO,EAAE,IAAI;CACd,CAAC;IAEF,MAAM,UAAU,GAAG,IAAI,0BAA0B,CAAC,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACpF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,sBAAsB,EAAE,UAAU,CAAC,sBAAsB;QACzD,OAAO,EAAE,GAAS,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE;QACzC,MAAM,EAAE,CAAC,QAA0B,EAAQ,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC;KAC1E,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { CheckMessage, CheckOutcome, CheckVisibility } from \"../../check/check.ts\";\nimport type { CoreRecord } from \"../../check-settlement/facts.ts\";\nimport type { ResolvedProgressRenderingOutput } from \"../../project-definition/project-definition.ts\";\nimport { resolveProgressRenderingOutput } from \"../../project-definition/output-defaults.ts\";\nimport { ProgressRendererController } from \"./renderer-lifecycle.ts\";\n\nexport interface ProgressWriter {\n readonly color: boolean;\n readonly isTTY: boolean;\n readonly term: string | undefined;\n close?(): void;\n write(content: string): void;\n}\n\nexport type ProgressFeedback = Readonly<\n | {\n readonly kind: \"prepared\";\n readonly totalChecks: number;\n }\n | {\n readonly kind: \"flag-control-completed\";\n }\n | {\n readonly kind: \"started\";\n readonly checkId: string;\n readonly displayName: string;\n }\n | {\n readonly kind: \"settled\";\n readonly checkId: string;\n readonly displayName: string;\n readonly outcome: CheckOutcome;\n readonly durationMs: number | null;\n readonly visibility: CheckVisibility;\n readonly messages: readonly CheckMessage[];\n readonly records: readonly CoreRecord[];\n }\n | {\n readonly kind: \"final\";\n readonly execution: \"cancelled\" | \"completed\";\n readonly counts: ProgressOutcomeCounts;\n readonly elapsedMs: number;\n }\n>;\n\nexport interface ProgressOutcomeCounts {\n readonly failed: number;\n readonly notApplicable: number;\n readonly passed: number;\n readonly unavailable: number;\n}\n\nexport interface ProgressRenderer {\n refresh(): void;\n readonly refreshesRunningRegion: boolean;\n render(feedback: ProgressFeedback): void;\n}\n\nexport interface ProgressClock {\n now(): number;\n}\n\nconst SYSTEM_PROGRESS_CLOCK: ProgressClock = Object.freeze({ now: () => performance.now() });\n\n/** Product-private lifecycle presentation with one owner for feedback and its writer. */\nexport function createProgressRenderer(\n writer: ProgressWriter,\n clock: ProgressClock = SYSTEM_PROGRESS_CLOCK,\n progressRendering: ResolvedProgressRenderingOutput = resolveProgressRenderingOutput({\n enabled: true\n })\n): ProgressRenderer {\n const controller = new ProgressRendererController(writer, clock, progressRendering);\n return Object.freeze({\n refreshesRunningRegion: controller.refreshesRunningRegion,\n refresh: (): void => controller.refresh(),\n render: (feedback: ProgressFeedback): void => controller.render(feedback)\n });\n}\n"]}
@@ -2,7 +2,7 @@
2
2
  export function createProjectContext(input) {
3
3
  return Object.freeze({
4
4
  flags: Object.freeze([...(input.controls.flags ?? [])]),
5
- root: input.root
5
+ root: input.paths.projectRoot
6
6
  });
7
7
  }
8
8
  //# sourceMappingURL=project-context.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-context.mjs","sourceRoot":"","sources":["../../../src/project-run/project-context.ts"],"names":[],"mappings":"AAEA,sGAAsG;AACtG,MAAM,UAAU,oBAAoB,CAClC,KAA0E;IAE1E,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;QACvD,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { CheckProjectContext } from \"../check/check.ts\";\nimport type { RunControls } from \"./controls/contract.ts\";\n/** Materializes only invocation-wide callback input; Check-local options own domain configuration. */\nexport function createProjectContext(\n input: Readonly<{ readonly controls: RunControls; readonly root: string }>\n): CheckProjectContext {\n return Object.freeze({\n flags: Object.freeze([...(input.controls.flags ?? [])]),\n root: input.root\n });\n}\n"]}
1
+ {"version":3,"file":"project-context.mjs","sourceRoot":"","sources":["../../../src/project-run/project-context.ts"],"names":[],"mappings":"AAGA,sGAAsG;AACtG,MAAM,UAAU,oBAAoB,CAClC,KAA4F;IAE5F,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;QACvD,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW;KAC9B,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type { CheckProjectContext } from \"../check/check.ts\";\nimport type { RunControls } from \"./controls/contract.ts\";\nimport type { ResolvedInvocationPaths } from \"./invocation/paths.ts\";\n/** Materializes only invocation-wide callback input; Check-local options own domain configuration. */\nexport function createProjectContext(\n input: Readonly<{ readonly controls: RunControls; readonly paths: ResolvedInvocationPaths }>\n): CheckProjectContext {\n return Object.freeze({\n flags: Object.freeze([...(input.controls.flags ?? [])]),\n root: input.paths.projectRoot\n });\n}\n"]}
@@ -16,6 +16,8 @@ function outputDiagnosticCode(output) {
16
16
  return "progress-rendering-failed";
17
17
  case "diagnosticLogging":
18
18
  return "diagnostic-logging-failed";
19
+ case "measurementHooks":
20
+ return "scheduler-measurement-hooks-failed";
19
21
  }
20
22
  }
21
23
  export function isCancelled(controls) {
@@ -1 +1 @@
1
- {"version":3,"file":"result.mjs","sourceRoot":"","sources":["../../../src/project-run/result.ts"],"names":[],"mappings":"AA2FA,MAAM,UAAU,aAAa,CAC3B,sBAA8B,EAC9B,kBAAgD,EAChD,OAA0B,EAC1B,MAA+B,EAC/B,KAAqB;IAErB,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,QAAQ;QACd,sBAAsB;QACtB,kBAAkB;QAClB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QACjE,OAAO;QACP,GAAG,KAAK;KACT,CAAC,CAAC;AACL,CAAC;AACD,SAAS,oBAAoB,CAC3B,MAA+B;IAE/B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,oBAAoB;YACvB,OAAO,4BAA4B,CAAC;QACtC,KAAK,mBAAmB;YACtB,OAAO,2BAA2B,CAAC;QACrC,KAAK,mBAAmB;YACtB,OAAO,2BAA2B,CAAC;IACvC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAqB;IAC/C,OAAO,QAAQ,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAC3C,CAAC;AACD,MAAM,UAAU,QAAQ,CACtB,sBAA8B,EAC9B,kBAAgD,EAChD,OAA0B,EAC1B,IAA0D;IAE1D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,UAAU;QAChB,sBAAsB;QACtB,kBAAkB;QAClB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;QACnC,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AACD,MAAM,UAAU,wBAAwB,CACtC,sBAA8B,EAC9B,kBAAgD,EAChD,OAA0B,EAC1B,KAA8B;IAK9B,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,WAAW;QACjB,sBAAsB;QACtB,kBAAkB;QAClB,OAAO;QACP,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AACD,MAAM,UAAU,qBAAqB,CACnC,KAOE;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,WAAW;QACjB,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;QACpD,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,WAAW;QAClB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type {\n DefinitionWarning,\n ProjectDefinitionDiagnostic\n} from \"../project-definition/project-definition.ts\";\nimport type { RunControlDiagnostic } from \"./controls/validation-result.ts\";\nimport type { CheckAggregate, RunControls } from \"./controls/contract.ts\";\nimport type { CheckMessageLevel } from \"../check/check.ts\";\nimport type { CoreSnapshot } from \"../check-settlement/facts.ts\";\nimport type { RunOutputStatuses } from \"./output-status.ts\";\nexport type RunDiagnostic = Readonly<{\n readonly code: \"task-graph-invalid\" | \"task-engine-failed\" | \"publication-model-failed\";\n}>;\nexport type CheckDuration = Readonly<{\n readonly checkId: string;\n readonly durationMs: number | null;\n}>;\nexport interface CheckRunMessage {\n readonly checkId: string;\n readonly level: CheckMessageLevel;\n readonly code: string;\n readonly message: string;\n}\nexport interface RunResultFacts {\n readonly aggregate: CheckAggregate | null;\n readonly checkDurations: readonly CheckDuration[];\n readonly checkMessages: readonly CheckRunMessage[];\n readonly snapshot: CoreSnapshot;\n}\n/** 一次 Project Run 的可判别结果;output failure 保留已结算 facts。 */\nexport type RunResult = Readonly<\n | {\n readonly kind: \"configuration\";\n readonly definitionWarnings: readonly DefinitionWarning[];\n readonly diagnostic: ProjectDefinitionDiagnostic | RunControlDiagnostic;\n }\n | {\n readonly kind: \"planning\";\n readonly declarativeFingerprint: string;\n readonly definitionWarnings: readonly DefinitionWarning[];\n readonly diagnostic: RunDiagnostic;\n readonly outputs: RunOutputStatuses;\n }\n | {\n readonly kind: \"cancelled\";\n readonly declarativeFingerprint: string;\n readonly definitionWarnings: readonly DefinitionWarning[];\n readonly outputs: RunOutputStatuses;\n readonly phase: \"pre-work\" | \"planning\";\n }\n | {\n readonly kind: \"cancelled\";\n readonly declarativeFingerprint: string;\n readonly definitionWarnings: readonly DefinitionWarning[];\n readonly outputs: RunOutputStatuses;\n readonly phase: \"execution\";\n readonly checkDurations: readonly CheckDuration[];\n readonly checkMessages: readonly CheckRunMessage[];\n readonly snapshot: CoreSnapshot;\n }\n | ({\n readonly kind: \"completed\";\n readonly declarativeFingerprint: string;\n readonly definitionWarnings: readonly DefinitionWarning[];\n readonly outputs: RunOutputStatuses;\n } & RunResultFacts)\n | {\n readonly kind: \"execution\";\n readonly declarativeFingerprint: string;\n readonly definitionWarnings: readonly DefinitionWarning[];\n readonly diagnostic: RunDiagnostic;\n readonly outputs: RunOutputStatuses;\n }\n | ({\n readonly kind: \"output\";\n readonly declarativeFingerprint: string;\n readonly definitionWarnings: readonly DefinitionWarning[];\n readonly diagnostic: Readonly<{\n readonly code:\n | \"machine-publication-failed\"\n | \"progress-rendering-failed\"\n | \"diagnostic-logging-failed\";\n }>;\n readonly outputs: RunOutputStatuses;\n } & RunResultFacts)\n>;\n\n/** Any Run result produced after controls and Definition validation have completed. */\nexport type NonConfigurationRunResult = Exclude<RunResult, { readonly kind: \"configuration\" }>;\n\ntype OutputRunResult = Extract<RunResult, { readonly kind: \"output\" }>;\n\nexport function outputFailure(\n declarativeFingerprint: string,\n definitionWarnings: readonly DefinitionWarning[],\n outputs: RunOutputStatuses,\n output: keyof RunOutputStatuses,\n facts: RunResultFacts\n): OutputRunResult {\n return Object.freeze({\n kind: \"output\",\n declarativeFingerprint,\n definitionWarnings,\n diagnostic: Object.freeze({ code: outputDiagnosticCode(output) }),\n outputs,\n ...facts\n });\n}\nfunction outputDiagnosticCode(\n output: keyof RunOutputStatuses\n): Extract<RunResult, { readonly kind: \"output\" }>[\"diagnostic\"][\"code\"] {\n switch (output) {\n case \"machinePublication\":\n return \"machine-publication-failed\";\n case \"progressRendering\":\n return \"progress-rendering-failed\";\n case \"diagnosticLogging\":\n return \"diagnostic-logging-failed\";\n }\n}\n\nexport function isCancelled(controls: RunControls): boolean {\n return controls.signal?.aborted === true;\n}\nexport function planning(\n declarativeFingerprint: string,\n definitionWarnings: readonly DefinitionWarning[],\n outputs: RunOutputStatuses,\n code: Extract<RunDiagnostic[\"code\"], \"task-graph-invalid\">\n): Extract<NonConfigurationRunResult, { readonly kind: \"planning\" }> {\n return Object.freeze({\n kind: \"planning\",\n declarativeFingerprint,\n definitionWarnings,\n diagnostic: Object.freeze({ code }),\n outputs\n });\n}\nexport function preExecutionCancellation(\n declarativeFingerprint: string,\n definitionWarnings: readonly DefinitionWarning[],\n outputs: RunOutputStatuses,\n phase: \"pre-work\" | \"planning\"\n): Extract<\n NonConfigurationRunResult,\n { readonly kind: \"cancelled\"; readonly phase: \"pre-work\" | \"planning\" }\n> {\n return Object.freeze({\n kind: \"cancelled\",\n declarativeFingerprint,\n definitionWarnings,\n outputs,\n phase\n });\n}\nexport function executionCancellation(\n input: Readonly<{\n readonly checkDurations: readonly CheckDuration[];\n readonly checkMessages: readonly CheckRunMessage[];\n readonly declarativeFingerprint: string;\n readonly definitionWarnings: readonly DefinitionWarning[];\n readonly outputs: RunOutputStatuses;\n readonly snapshot: CoreSnapshot;\n }>\n): Extract<NonConfigurationRunResult, { readonly kind: \"cancelled\"; readonly phase: \"execution\" }> {\n return Object.freeze({\n kind: \"cancelled\",\n declarativeFingerprint: input.declarativeFingerprint,\n definitionWarnings: input.definitionWarnings,\n outputs: input.outputs,\n phase: \"execution\",\n checkDurations: input.checkDurations,\n checkMessages: input.checkMessages,\n snapshot: input.snapshot\n });\n}\n"]}
1
+ {"version":3,"file":"result.mjs","sourceRoot":"","sources":["../../../src/project-run/result.ts"],"names":[],"mappings":"AAuIA,MAAM,UAAU,aAAa,CAC3B,sBAA8B,EAC9B,kBAAgD,EAChD,OAA0B,EAC1B,MAA+B,EAC/B,KAAqB;IAErB,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,QAAQ;QACd,sBAAsB;QACtB,kBAAkB;QAClB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;QACjE,OAAO;QACP,GAAG,KAAK;KACT,CAAC,CAAC;AACL,CAAC;AACD,SAAS,oBAAoB,CAC3B,MAA+B;IAE/B,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,oBAAoB;YACvB,OAAO,4BAA4B,CAAC;QACtC,KAAK,mBAAmB;YACtB,OAAO,2BAA2B,CAAC;QACrC,KAAK,mBAAmB;YACtB,OAAO,2BAA2B,CAAC;QACrC,KAAK,kBAAkB;YACrB,OAAO,oCAAoC,CAAC;IAChD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,QAAqB;IAC/C,OAAO,QAAQ,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;AAC3C,CAAC;AACD,MAAM,UAAU,QAAQ,CACtB,sBAA8B,EAC9B,kBAAgD,EAChD,OAA0B,EAC1B,IAA0D;IAE1D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,UAAU;QAChB,sBAAsB;QACtB,kBAAkB;QAClB,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;QACnC,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AACD,MAAM,UAAU,wBAAwB,CACtC,sBAA8B,EAC9B,kBAAgD,EAChD,OAA0B,EAC1B,KAA8B;IAK9B,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,WAAW;QACjB,sBAAsB;QACtB,kBAAkB;QAClB,OAAO;QACP,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AACD,MAAM,UAAU,qBAAqB,CACnC,KAOE;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,WAAW;QACjB,sBAAsB,EAAE,KAAK,CAAC,sBAAsB;QACpD,kBAAkB,EAAE,KAAK,CAAC,kBAAkB;QAC5C,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,KAAK,EAAE,WAAW;QAClB,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,QAAQ,EAAE,KAAK,CAAC,QAAQ;KACzB,CAAC,CAAC;AACL,CAAC","sourcesContent":["import type {\n DefinitionWarning,\n ProjectDefinitionDiagnostic\n} from \"../project-definition/project-definition.ts\";\nimport type { RunControlDiagnostic } from \"./controls/validation-result.ts\";\nimport type { CheckAggregate, RunControls } from \"./controls/contract.ts\";\nimport type { CheckMessageLevel } from \"../check/check.ts\";\nimport type { CoreSnapshot } from \"../check-settlement/facts.ts\";\nimport type { RunOutputStatuses } from \"./outputs/status.ts\";\n\n/** Product 不能形成正常 Run 结果时的稳定 invocation diagnostic。 */\nexport type RunDiagnostic = Readonly<{\n /** 失败的 Run-owned execution 或 planning boundary;它不是任何 Check 的 terminal status。 */\n readonly code:\n | \"admission-policy-failed\"\n | \"admission-strategy-preparation-failed\"\n | \"task-graph-invalid\"\n | \"task-engine-failed\"\n | \"publication-model-failed\";\n}>;\n\n/** 一项 executable Check 的最终 duration readback。 */\nexport type CheckDuration = Readonly<{\n /** 与 snapshot 中 Check facts 相同的 stable Check identity。 */\n readonly checkId: string;\n /** 已测量的 execution duration;未进入 execution 的 Check 为 `null`,不是零时长。 */\n readonly durationMs: number | null;\n}>;\n\n/** Run 在 Check terminal lifecycle 中接受的人读 message。 */\nexport interface CheckRunMessage {\n /** 产生 message 的 stable Check identity。 */\n readonly checkId: string;\n /** author message 或已捕获 console output 的 presentation severity。 */\n readonly level: CheckMessageLevel;\n /** owning Check 或 Product capture 使用的稳定 message code。 */\n readonly code: string;\n /** 人读正文;不能代替 snapshot 中的 terminal outcome。 */\n readonly message: string;\n}\n\n/** 只有已形成 terminal Check facts 的 Run branch 才具备的完整结果 readback。 */\nexport interface RunResultFacts {\n /** 调用方未配置 aggregation 时为 `null`;否则是选中 Check statuses 的 invocation-level conclusion。 */\n readonly aggregate: CheckAggregate | null;\n /** 按 canonical Check order 的 duration facts;未执行 Check 仍以 `null` 保留。 */\n readonly checkDurations: readonly CheckDuration[];\n /** 已接受的 author 与 console-capture messages,不决定 Check outcome。 */\n readonly checkMessages: readonly CheckRunMessage[];\n /** 已结算的完整 Check 与 supplemental Record facts。 */\n readonly snapshot: CoreSnapshot;\n}\n/** 一次 Project Run 的可判别结果;output failure 保留已结算 facts。 */\nexport type RunResult = Readonly<\n | {\n /** Definition、RunControls 或 aggregation selection 无效;没有执行任何 Check author callback。 */\n readonly kind: \"configuration\";\n /** Definition normalization 时仍可报告、但不单独阻止本 branch 的 warning。 */\n readonly definitionWarnings: readonly DefinitionWarning[];\n /** 指向被拒绝 Definition 或 RunControls value 的 closed diagnostic。 */\n readonly diagnostic: ProjectDefinitionDiagnostic | RunControlDiagnostic;\n }\n | {\n /** 配置有效,但 static Check graph 不能进入 execution planning。 */\n readonly kind: \"planning\";\n /** normalized declarative Definition 的 matching signal;不包含 RunControls 或 outcome。 */\n readonly declarativeFingerprint: string;\n readonly definitionWarnings: readonly DefinitionWarning[];\n /** 这次 planning 失败的 Product diagnostic。 */\n readonly diagnostic: RunDiagnostic;\n /** 配置有效后各 terminal output participant 的独立状态。 */\n readonly outputs: RunOutputStatuses;\n }\n | {\n /** invocation 在 Check work 开始前或 planning 中响应 caller cancellation。 */\n readonly kind: \"cancelled\";\n readonly declarativeFingerprint: string;\n readonly definitionWarnings: readonly DefinitionWarning[];\n readonly outputs: RunOutputStatuses;\n /** 取消发生在尚未形成 terminal Check facts 的阶段。 */\n readonly phase: \"pre-work\" | \"planning\";\n }\n | {\n /** invocation 在至少可能已开始 Check work 的 execution 阶段响应 caller cancellation。 */\n readonly kind: \"cancelled\";\n readonly declarativeFingerprint: string;\n readonly definitionWarnings: readonly DefinitionWarning[];\n readonly outputs: RunOutputStatuses;\n /** 此 branch 总在 terminal Check facts 形成后的 execution cancellation 返回。 */\n readonly phase: \"execution\";\n /** 按 canonical Check order 的 duration facts;未执行 Check 为 `null`。 */\n readonly checkDurations: readonly CheckDuration[];\n /** cancellation 前已接受的 author 与 console-capture messages。 */\n readonly checkMessages: readonly CheckRunMessage[];\n /** cancellation 时已结算的完整 Check 与 supplemental Record facts。 */\n readonly snapshot: CoreSnapshot;\n }\n | ({\n /** 所有 Check 已完成 terminal settlement;不表示每项 Check 都 `passed`。 */\n readonly kind: \"completed\";\n readonly declarativeFingerprint: string;\n readonly definitionWarnings: readonly DefinitionWarning[];\n readonly outputs: RunOutputStatuses;\n } & RunResultFacts)\n | {\n /** Product execution/settlement infrastructure 失败;不把它误表示为 Check `failed`。 */\n readonly kind: \"execution\";\n readonly declarativeFingerprint: string;\n readonly definitionWarnings: readonly DefinitionWarning[];\n /** 停止正常 execution 的 Product diagnostic;本 branch 不提供 partial snapshot。 */\n readonly diagnostic: RunDiagnostic;\n readonly outputs: RunOutputStatuses;\n }\n | ({\n /** Check facts 已完整结算,但至少一个 terminal output participant 失败。 */\n readonly kind: \"output\";\n readonly declarativeFingerprint: string;\n readonly definitionWarnings: readonly DefinitionWarning[];\n /** 失败的 machine、progress、diagnostic 或 scheduler-measurement output 类别。 */\n readonly diagnostic: Readonly<{\n readonly code:\n | \"machine-publication-failed\"\n | \"progress-rendering-failed\"\n | \"diagnostic-logging-failed\"\n | \"scheduler-measurement-hooks-failed\";\n }>;\n readonly outputs: RunOutputStatuses;\n } & RunResultFacts)\n>;\n\n/** Any Run result produced after controls and Definition validation have completed. */\nexport type NonConfigurationRunResult = Exclude<RunResult, { readonly kind: \"configuration\" }>;\n\ntype OutputRunResult = Extract<RunResult, { readonly kind: \"output\" }>;\n\nexport function outputFailure(\n declarativeFingerprint: string,\n definitionWarnings: readonly DefinitionWarning[],\n outputs: RunOutputStatuses,\n output: keyof RunOutputStatuses,\n facts: RunResultFacts\n): OutputRunResult {\n return Object.freeze({\n kind: \"output\",\n declarativeFingerprint,\n definitionWarnings,\n diagnostic: Object.freeze({ code: outputDiagnosticCode(output) }),\n outputs,\n ...facts\n });\n}\nfunction outputDiagnosticCode(\n output: keyof RunOutputStatuses\n): Extract<RunResult, { readonly kind: \"output\" }>[\"diagnostic\"][\"code\"] {\n switch (output) {\n case \"machinePublication\":\n return \"machine-publication-failed\";\n case \"progressRendering\":\n return \"progress-rendering-failed\";\n case \"diagnosticLogging\":\n return \"diagnostic-logging-failed\";\n case \"measurementHooks\":\n return \"scheduler-measurement-hooks-failed\";\n }\n}\n\nexport function isCancelled(controls: RunControls): boolean {\n return controls.signal?.aborted === true;\n}\nexport function planning(\n declarativeFingerprint: string,\n definitionWarnings: readonly DefinitionWarning[],\n outputs: RunOutputStatuses,\n code: Extract<RunDiagnostic[\"code\"], \"task-graph-invalid\">\n): Extract<NonConfigurationRunResult, { readonly kind: \"planning\" }> {\n return Object.freeze({\n kind: \"planning\",\n declarativeFingerprint,\n definitionWarnings,\n diagnostic: Object.freeze({ code }),\n outputs\n });\n}\nexport function preExecutionCancellation(\n declarativeFingerprint: string,\n definitionWarnings: readonly DefinitionWarning[],\n outputs: RunOutputStatuses,\n phase: \"pre-work\" | \"planning\"\n): Extract<\n NonConfigurationRunResult,\n { readonly kind: \"cancelled\"; readonly phase: \"pre-work\" | \"planning\" }\n> {\n return Object.freeze({\n kind: \"cancelled\",\n declarativeFingerprint,\n definitionWarnings,\n outputs,\n phase\n });\n}\nexport function executionCancellation(\n input: Readonly<{\n readonly checkDurations: readonly CheckDuration[];\n readonly checkMessages: readonly CheckRunMessage[];\n readonly declarativeFingerprint: string;\n readonly definitionWarnings: readonly DefinitionWarning[];\n readonly outputs: RunOutputStatuses;\n readonly snapshot: CoreSnapshot;\n }>\n): Extract<NonConfigurationRunResult, { readonly kind: \"cancelled\"; readonly phase: \"execution\" }> {\n return Object.freeze({\n kind: \"cancelled\",\n declarativeFingerprint: input.declarativeFingerprint,\n definitionWarnings: input.definitionWarnings,\n outputs: input.outputs,\n phase: \"execution\",\n checkDurations: input.checkDurations,\n checkMessages: input.checkMessages,\n snapshot: input.snapshot\n });\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { validateProjectDefinition } from "../project-definition/project-definition-validation.mjs";
2
2
  import { validateRunControls } from "./controls/validation.mjs";
3
- import { executeValidatedRun } from "./invocation.mjs";
3
+ import { executeValidatedRun } from "./invocation/run.mjs";
4
4
  export async function run(definition, controls = {}) {
5
5
  const validatedDefinition = validateProjectDefinition(definition);
6
6
  if (!validatedDefinition.ok) {
@@ -1 +1 @@
1
- {"version":3,"file":"run.mjs","sourceRoot":"","sources":["../../../src/project-run/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wDAAwD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAsBtD,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,UAAmB,EAAE,QAAQ,GAAY,EAAE;IACnE,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAClE,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,eAAe;YACrB,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,UAAU,EAAE,mBAAmB,CAAC,KAAK;SACtC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,eAAe;YACrB,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,UAAU,EAAE,iBAAiB,CAAC,KAAK;SACpC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,mBAAmB,CACxB,mBAAmB,CAAC,KAAK,EACzB,iBAAiB,CAAC,KAAK,EACvB,mBAAmB,CAAC,QAAQ,CAC7B,CAAC;AACJ,CAAC","sourcesContent":["import type { ProjectDefinition } from \"../project-definition/project-definition.ts\";\nimport type { RunControls } from \"./controls/contract.ts\";\nimport { validateProjectDefinition } from \"../project-definition/project-definition-validation.ts\";\nimport { validateRunControls } from \"./controls/validation.ts\";\nimport { executeValidatedRun } from \"./invocation.ts\";\nimport type { RunResult } from \"./result.ts\";\n\nexport type { RunOutputStatus, RunOutputStatuses } from \"./output-status.ts\";\nexport type { RunDiagnostic, RunResult } from \"./result.ts\";\n\n/**\n * 在调用方的 Bun runtime 中执行一个由项目拥有的 Project Definition。\n *\n * @param definition - Project Definition input;{@link defineConfig} 补齐 defaults,run 在 invocation 前验证。\n * @param controls - 本次 invocation context 与 outputs 使用的闭合控制值。\n * @returns ordinary configuration、planning、execution、cancellation 与 output failures 通过 `RunResult`\n * 返回;调用方先按 `kind` narrow。\n * @remarks Definition validation 关闭 authoring grammar;可选 Check preflight 组成 invocation execution barrier,\n * 并在 execution callback、dependency resolver 或 scanner 前完成。`output` branch 同时提供完整 final\n * snapshot 与 output failure diagnostic。\n */\nexport async function run(\n definition: ProjectDefinition,\n controls?: RunControls\n): Promise<RunResult>;\nexport async function run(definition: unknown, controls?: unknown): Promise<RunResult>;\nexport async function run(definition: unknown, controls: unknown = {}): Promise<RunResult> {\n const validatedDefinition = validateProjectDefinition(definition);\n if (!validatedDefinition.ok) {\n return Object.freeze({\n kind: \"configuration\",\n definitionWarnings: Object.freeze([]),\n diagnostic: validatedDefinition.error\n });\n }\n const validatedControls = validateRunControls(controls);\n if (!validatedControls.ok) {\n return Object.freeze({\n kind: \"configuration\",\n definitionWarnings: Object.freeze([]),\n diagnostic: validatedControls.error\n });\n }\n\n return executeValidatedRun(\n validatedDefinition.value,\n validatedControls.value,\n validatedDefinition.warnings\n );\n}\n"]}
1
+ {"version":3,"file":"run.mjs","sourceRoot":"","sources":["../../../src/project-run/run.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wDAAwD,CAAC;AACnG,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAuB1D,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,UAAmB,EAAE,QAAQ,GAAY,EAAE;IACnE,MAAM,mBAAmB,GAAG,yBAAyB,CAAC,UAAU,CAAC,CAAC;IAClE,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC;QAC5B,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,eAAe;YACrB,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,UAAU,EAAE,mBAAmB,CAAC,KAAK;SACtC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACxD,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,eAAe;YACrB,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,UAAU,EAAE,iBAAiB,CAAC,KAAK;SACpC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,mBAAmB,CACxB,mBAAmB,CAAC,KAAK,EACzB,iBAAiB,CAAC,KAAK,EACvB,mBAAmB,CAAC,QAAQ,CAC7B,CAAC;AACJ,CAAC","sourcesContent":["import type { ProjectDefinition } from \"../project-definition/project-definition.ts\";\nimport type { RunControls } from \"./controls/contract.ts\";\nimport { validateProjectDefinition } from \"../project-definition/project-definition-validation.ts\";\nimport { validateRunControls } from \"./controls/validation.ts\";\nimport { executeValidatedRun } from \"./invocation/run.ts\";\nimport type { RunResult } from \"./result.ts\";\n\nexport type { RunOutputStatus, RunOutputStatuses } from \"./outputs/status.ts\";\nexport type { RunDiagnostic, RunResult } from \"./result.ts\";\n\n/**\n * 在调用方的 Node runtime 中执行一个由项目拥有的 Project Definition。\n *\n * @param definition - Project Definition input;{@link defineConfig} 补齐 defaults,run 在 invocation 前验证。\n * @param controls - 本次 invocation context 与 outputs 使用的闭合控制值。\n * @returns ordinary configuration、planning、execution、cancellation 与 output failures 通过 `RunResult`\n * 返回;调用方先按 `kind` narrow。\n * @remarks Definition validation 关闭 authoring grammar;可选 Check preflight 在其 Task 通过直接 relation\n * readiness 后被 Scheduler admission 时运行,并先于该 Check 自己的 execution callback。它受该 Task 的\n * mutex、capacity、priority 与 cancellation 约束,而不是 invocation-wide barrier。`output` branch 同时提供\n * 完整 final snapshot 与 output failure diagnostic。\n */\nexport async function run(\n definition: ProjectDefinition,\n controls?: RunControls\n): Promise<RunResult>;\nexport async function run(definition: unknown, controls?: unknown): Promise<RunResult>;\nexport async function run(definition: unknown, controls: unknown = {}): Promise<RunResult> {\n const validatedDefinition = validateProjectDefinition(definition);\n if (!validatedDefinition.ok) {\n return Object.freeze({\n kind: \"configuration\",\n definitionWarnings: Object.freeze([]),\n diagnostic: validatedDefinition.error\n });\n }\n const validatedControls = validateRunControls(controls);\n if (!validatedControls.ok) {\n return Object.freeze({\n kind: \"configuration\",\n definitionWarnings: Object.freeze([]),\n diagnostic: validatedControls.error\n });\n }\n\n return executeValidatedRun(\n validatedDefinition.value,\n validatedControls.value,\n validatedDefinition.warnings\n );\n}\n"]}
@@ -0,0 +1,166 @@
1
+ /** Compiles a Scheduler-owned normalized graph once for an actual scheduler invocation. */
2
+ export function compilePreparedAdmissionGraph(graph, maxParallel) {
3
+ assertMaxParallel(maxParallel);
4
+ const catalog = compileGraphSlotCatalog(graph);
5
+ const mutexIndexes = compileMutexStaticIndexes(graph);
6
+ const relationIndexes = compileRelationStaticIndexes(graph, catalog.taskSlotsById);
7
+ const resourceIndexes = compileResourceStaticIndexes(graph);
8
+ const scopeIndexes = compileScopeStaticIndexes(graph, catalog);
9
+ const publicTaskOrder = compilePublicTaskOrder(graph, catalog.taskSlotsById);
10
+ return assembleCompiledAdmissionGraph({
11
+ catalog,
12
+ graph,
13
+ maxParallel,
14
+ mutexIndexes,
15
+ publicTaskOrder,
16
+ relationIndexes,
17
+ resourceIndexes,
18
+ scopeIndexes
19
+ });
20
+ }
21
+ function compileResourceStaticIndexes(graph) {
22
+ const resourceSlotById = new Map(graph.resourceCapacities.map(({ resourceId }, slot) => [resourceId, slot]));
23
+ const resourceCapacityBySlot = Object.freeze(graph.resourceCapacities.map(({ units }) => units));
24
+ const taskResourceClaims = Object.freeze(graph.tasks.map((task) => Object.freeze(task.resourceClaims.map(({ resourceId, units }) => {
25
+ const resourceSlot = resourceSlotById.get(resourceId);
26
+ if (resourceSlot === undefined) {
27
+ throw new Error(`admission core resource is unknown: ${resourceId}`);
28
+ }
29
+ return Object.freeze({ resourceSlot, units });
30
+ }))));
31
+ return { resourceCapacityBySlot, resourceSlotById, taskResourceClaims };
32
+ }
33
+ function assertMaxParallel(maxParallel) {
34
+ if (!Number.isSafeInteger(maxParallel) || maxParallel <= 0) {
35
+ throw new TypeError("task engine maxParallel must be a positive safe integer");
36
+ }
37
+ }
38
+ /** Creates declaration-slot catalogs without materializing another prepared graph. */
39
+ function compileGraphSlotCatalog(graph) {
40
+ return {
41
+ taskSlotsById: new Map(graph.tasks.map((task, slot) => [task.id, slot])),
42
+ taskById: new Map(graph.tasks.map((task) => [task.id, task])),
43
+ scopeSlotById: new Map(graph.scopes.map((scope, slot) => [scope.id, slot])),
44
+ scopesById: new Map(graph.scopes.map((scope) => [scope.id, scope]))
45
+ };
46
+ }
47
+ /** Allocates mutex slots by first declaration occurrence, then records every task occurrence. */
48
+ function compileMutexStaticIndexes(graph) {
49
+ const mutexSlotById = new Map();
50
+ const taskMutexSlots = graph.tasks.map((task) => mutexSlotsForTask(task, mutexSlotById));
51
+ const reverseMutexOccurrences = Array.from({ length: mutexSlotById.size }, () => []);
52
+ for (const [taskSlot, mutexSlots] of taskMutexSlots.entries()) {
53
+ for (const mutexSlot of mutexSlots)
54
+ reverseMutexOccurrences[mutexSlot]?.push(taskSlot);
55
+ }
56
+ return {
57
+ mutexSlotById,
58
+ reverseMutexOccurrences: freezeSlotLists(reverseMutexOccurrences),
59
+ taskMutexSlots: freezeSlotLists(taskMutexSlots)
60
+ };
61
+ }
62
+ function mutexSlotsForTask(task, mutexSlotById) {
63
+ return task.mutex.map((mutexId) => mutexSlotFor(mutexSlotById, mutexId));
64
+ }
65
+ function mutexSlotFor(mutexSlotById, mutexId) {
66
+ const existingSlot = mutexSlotById.get(mutexId);
67
+ if (existingSlot !== undefined)
68
+ return existingSlot;
69
+ const nextSlot = mutexSlotById.size;
70
+ mutexSlotById.set(mutexId, nextSlot);
71
+ return nextSlot;
72
+ }
73
+ /** Reverses relation occurrences while retaining the declared occurrence order for core transitions. */
74
+ function compileRelationStaticIndexes(graph, taskSlotsById) {
75
+ const reverseDependencies = emptyTaskSlotLists(graph);
76
+ const reverseObservations = emptyTaskSlotLists(graph);
77
+ for (const [taskSlot, task] of graph.tasks.entries()) {
78
+ appendReverseRelationOccurrences(task.dependsOn, taskSlot, taskSlotsById, reverseDependencies, "dependency");
79
+ appendReverseRelationOccurrences(task.observes, taskSlot, taskSlotsById, reverseObservations, "observation");
80
+ }
81
+ return {
82
+ reverseDependencies: freezeSlotLists(reverseDependencies),
83
+ reverseObservations: freezeSlotLists(reverseObservations)
84
+ };
85
+ }
86
+ function appendReverseRelationOccurrences(sourceTaskIds, targetTaskSlot, taskSlotsById, reverseSlotsBySourceTask, relationName) {
87
+ for (const sourceTaskId of sourceTaskIds) {
88
+ const sourceTaskSlot = taskSlotsById.get(sourceTaskId);
89
+ if (sourceTaskSlot === undefined) {
90
+ throw new Error(`admission core ${relationName} is unknown: ${sourceTaskId}`);
91
+ }
92
+ reverseSlotsBySourceTask[sourceTaskSlot]?.push(targetTaskSlot);
93
+ }
94
+ }
95
+ /** Associates scope terminals and activation candidates with the existing task slots. */
96
+ function compileScopeStaticIndexes(graph, catalog) {
97
+ const scopeSlotsByTerminalTaskSlot = emptyTaskSlotLists(graph);
98
+ for (const [scopeSlot, scope] of graph.scopes.entries()) {
99
+ const terminalTaskSlot = catalog.taskSlotsById.get(scope.terminalTaskId);
100
+ if (terminalTaskSlot === undefined) {
101
+ throw new Error(`admission core scope terminal is unknown: ${scope.terminalTaskId}`);
102
+ }
103
+ scopeSlotsByTerminalTaskSlot[terminalTaskSlot]?.push(scopeSlot);
104
+ }
105
+ const taskActivatesScope = graph.tasks.map((task) => {
106
+ const scopeSlot = task.scopeId === undefined ? undefined : catalog.scopeSlotById.get(task.scopeId);
107
+ return (scopeSlot !== undefined &&
108
+ graph.scopes[scopeSlot]?.activationTaskIds.includes(task.id) === true);
109
+ });
110
+ const taskScopeSlots = graph.tasks.map((task) => task.scopeId === undefined ? undefined : catalog.scopeSlotById.get(task.scopeId));
111
+ return {
112
+ scopeSlotsByTerminalTaskSlot: freezeSlotLists(scopeSlotsByTerminalTaskSlot),
113
+ taskActivatesScope: Object.freeze(taskActivatesScope),
114
+ taskScopeSlots: Object.freeze(taskScopeSlots)
115
+ };
116
+ }
117
+ /** Materializes only the lexical catalog projection; declaration slots remain unchanged. */
118
+ function compilePublicTaskOrder(graph, taskSlotsById) {
119
+ return {
120
+ taskIdsInPublicOrder: Object.freeze(graph.tasks.map((task) => task.id).sort(compareText)),
121
+ taskSlotsInPublicOrder: Object.freeze(graph.tasks
122
+ .map((task) => taskSlotsById.get(task.id))
123
+ .sort((left, right) => compareText(graph.tasks[left].id, graph.tasks[right].id)))
124
+ };
125
+ }
126
+ /** Freezes the one compiled graph object after every static compiler stage has completed. */
127
+ function assembleCompiledAdmissionGraph(parts) {
128
+ const { catalog, graph, maxParallel, mutexIndexes, publicTaskOrder, relationIndexes, resourceIndexes, scopeIndexes } = parts;
129
+ return Object.freeze({
130
+ graph,
131
+ maxParallel,
132
+ mutexSlotById: mutexIndexes.mutexSlotById,
133
+ resourceCapacityBySlot: resourceIndexes.resourceCapacityBySlot,
134
+ resourceSlotById: resourceIndexes.resourceSlotById,
135
+ relationIndexes: Object.freeze({
136
+ reverseDependencies: relationIndexes.reverseDependencies,
137
+ reverseMutexOccurrences: mutexIndexes.reverseMutexOccurrences,
138
+ reverseObservations: relationIndexes.reverseObservations
139
+ }),
140
+ scopesById: catalog.scopesById,
141
+ scopeSlotById: catalog.scopeSlotById,
142
+ scopeSlotsByTerminalTaskSlot: scopeIndexes.scopeSlotsByTerminalTaskSlot,
143
+ taskById: catalog.taskById,
144
+ taskIdsInPublicOrder: publicTaskOrder.taskIdsInPublicOrder,
145
+ taskMutexSlots: mutexIndexes.taskMutexSlots,
146
+ taskResourceClaims: resourceIndexes.taskResourceClaims,
147
+ taskActivatesScope: scopeIndexes.taskActivatesScope,
148
+ taskScopeSlots: scopeIndexes.taskScopeSlots,
149
+ taskSlotsById: catalog.taskSlotsById,
150
+ taskSlotsInPublicOrder: publicTaskOrder.taskSlotsInPublicOrder
151
+ });
152
+ }
153
+ function emptyTaskSlotLists(graph) {
154
+ return graph.tasks.map(() => []);
155
+ }
156
+ function freezeSlotLists(slotLists) {
157
+ return Object.freeze(slotLists.map((slots) => Object.freeze(slots)));
158
+ }
159
+ function compareText(left, right) {
160
+ if (left < right)
161
+ return -1;
162
+ if (left > right)
163
+ return 1;
164
+ return 0;
165
+ }
166
+ //# sourceMappingURL=compiled-graph.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compiled-graph.mjs","sourceRoot":"","sources":["../../../../../src/project-run/task-scheduler/admission-core/compiled-graph.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PlannedTask, PlannedTaskGraph } from \"../graph.ts\";\n\ninterface RelationStaticIndexes {\n readonly reverseDependencies: readonly (readonly number[])[];\n readonly reverseMutexOccurrences: readonly (readonly number[])[];\n readonly reverseObservations: readonly (readonly number[])[];\n}\n\ninterface ReverseRelationIndexes {\n readonly reverseDependencies: readonly (readonly number[])[];\n readonly reverseObservations: readonly (readonly number[])[];\n}\n\nexport interface CompiledAdmissionGraph {\n readonly graph: PlannedTaskGraph;\n readonly maxParallel: number;\n readonly mutexSlotById: ReadonlyMap<string, number>;\n readonly resourceCapacityBySlot: readonly number[];\n readonly resourceSlotById: ReadonlyMap<string, number>;\n readonly scopesById: ReadonlyMap<string, PlannedTaskGraph[\"scopes\"][number]>;\n readonly scopeSlotById: ReadonlyMap<string, number>;\n readonly scopeSlotsByTerminalTaskSlot: readonly (readonly number[])[];\n readonly taskById: ReadonlyMap<string, PlannedTask>;\n readonly taskMutexSlots: readonly (readonly number[])[];\n readonly taskResourceClaims: readonly (readonly Readonly<{\n readonly resourceSlot: number;\n readonly units: number;\n }>[])[];\n readonly taskActivatesScope: readonly boolean[];\n readonly taskScopeSlots: readonly (number | undefined)[];\n readonly taskSlotsById: ReadonlyMap<string, number>;\n readonly taskIdsInPublicOrder: readonly string[];\n readonly taskSlotsInPublicOrder: readonly number[];\n readonly relationIndexes: RelationStaticIndexes;\n}\n\ninterface GraphSlotCatalog {\n readonly scopesById: ReadonlyMap<string, PlannedTaskGraph[\"scopes\"][number]>;\n readonly scopeSlotById: ReadonlyMap<string, number>;\n readonly taskById: ReadonlyMap<string, PlannedTask>;\n readonly taskSlotsById: ReadonlyMap<string, number>;\n}\n\ninterface MutexStaticIndexes {\n readonly mutexSlotById: ReadonlyMap<string, number>;\n readonly reverseMutexOccurrences: readonly (readonly number[])[];\n readonly taskMutexSlots: readonly (readonly number[])[];\n}\n\ninterface ResourceStaticIndexes {\n readonly resourceCapacityBySlot: readonly number[];\n readonly resourceSlotById: ReadonlyMap<string, number>;\n readonly taskResourceClaims: CompiledAdmissionGraph[\"taskResourceClaims\"];\n}\n\ninterface ScopeStaticIndexes {\n readonly scopeSlotsByTerminalTaskSlot: readonly (readonly number[])[];\n readonly taskActivatesScope: readonly boolean[];\n readonly taskScopeSlots: readonly (number | undefined)[];\n}\n\ninterface PublicTaskOrder {\n readonly taskIdsInPublicOrder: readonly string[];\n readonly taskSlotsInPublicOrder: readonly number[];\n}\n\ninterface CompiledAdmissionGraphParts {\n readonly catalog: GraphSlotCatalog;\n readonly graph: PlannedTaskGraph;\n readonly maxParallel: number;\n readonly mutexIndexes: MutexStaticIndexes;\n readonly publicTaskOrder: PublicTaskOrder;\n readonly relationIndexes: ReverseRelationIndexes;\n readonly resourceIndexes: ResourceStaticIndexes;\n readonly scopeIndexes: ScopeStaticIndexes;\n}\n\n/** Compiles a Scheduler-owned normalized graph once for an actual scheduler invocation. */\nexport function compilePreparedAdmissionGraph(\n graph: PlannedTaskGraph,\n maxParallel: number\n): CompiledAdmissionGraph {\n assertMaxParallel(maxParallel);\n const catalog = compileGraphSlotCatalog(graph);\n const mutexIndexes = compileMutexStaticIndexes(graph);\n const relationIndexes = compileRelationStaticIndexes(graph, catalog.taskSlotsById);\n const resourceIndexes = compileResourceStaticIndexes(graph);\n const scopeIndexes = compileScopeStaticIndexes(graph, catalog);\n const publicTaskOrder = compilePublicTaskOrder(graph, catalog.taskSlotsById);\n\n return assembleCompiledAdmissionGraph({\n catalog,\n graph,\n maxParallel,\n mutexIndexes,\n publicTaskOrder,\n relationIndexes,\n resourceIndexes,\n scopeIndexes\n });\n}\n\nfunction compileResourceStaticIndexes(graph: PlannedTaskGraph): ResourceStaticIndexes {\n const resourceSlotById = new Map(\n graph.resourceCapacities.map(({ resourceId }, slot) => [resourceId, slot] as const)\n );\n const resourceCapacityBySlot = Object.freeze(graph.resourceCapacities.map(({ units }) => units));\n const taskResourceClaims = Object.freeze(\n graph.tasks.map((task) =>\n Object.freeze(\n task.resourceClaims.map(({ resourceId, units }) => {\n const resourceSlot = resourceSlotById.get(resourceId);\n if (resourceSlot === undefined) {\n throw new Error(`admission core resource is unknown: ${resourceId}`);\n }\n return Object.freeze({ resourceSlot, units });\n })\n )\n )\n );\n return { resourceCapacityBySlot, resourceSlotById, taskResourceClaims };\n}\n\nfunction assertMaxParallel(maxParallel: number): void {\n if (!Number.isSafeInteger(maxParallel) || maxParallel <= 0) {\n throw new TypeError(\"task engine maxParallel must be a positive safe integer\");\n }\n}\n\n/** Creates declaration-slot catalogs without materializing another prepared graph. */\nfunction compileGraphSlotCatalog(graph: PlannedTaskGraph): GraphSlotCatalog {\n return {\n taskSlotsById: new Map(graph.tasks.map((task, slot) => [task.id, slot] as const)),\n taskById: new Map(graph.tasks.map((task) => [task.id, task] as const)),\n scopeSlotById: new Map(graph.scopes.map((scope, slot) => [scope.id, slot] as const)),\n scopesById: new Map(graph.scopes.map((scope) => [scope.id, scope] as const))\n };\n}\n\n/** Allocates mutex slots by first declaration occurrence, then records every task occurrence. */\nfunction compileMutexStaticIndexes(graph: PlannedTaskGraph): MutexStaticIndexes {\n const mutexSlotById = new Map<string, number>();\n const taskMutexSlots = graph.tasks.map((task) => mutexSlotsForTask(task, mutexSlotById));\n const reverseMutexOccurrences = Array.from({ length: mutexSlotById.size }, () => [] as number[]);\n\n for (const [taskSlot, mutexSlots] of taskMutexSlots.entries()) {\n for (const mutexSlot of mutexSlots) reverseMutexOccurrences[mutexSlot]?.push(taskSlot);\n }\n\n return {\n mutexSlotById,\n reverseMutexOccurrences: freezeSlotLists(reverseMutexOccurrences),\n taskMutexSlots: freezeSlotLists(taskMutexSlots)\n };\n}\n\nfunction mutexSlotsForTask(task: PlannedTask, mutexSlotById: Map<string, number>): number[] {\n return task.mutex.map((mutexId) => mutexSlotFor(mutexSlotById, mutexId));\n}\n\nfunction mutexSlotFor(mutexSlotById: Map<string, number>, mutexId: string): number {\n const existingSlot = mutexSlotById.get(mutexId);\n if (existingSlot !== undefined) return existingSlot;\n\n const nextSlot = mutexSlotById.size;\n mutexSlotById.set(mutexId, nextSlot);\n return nextSlot;\n}\n\n/** Reverses relation occurrences while retaining the declared occurrence order for core transitions. */\nfunction compileRelationStaticIndexes(\n graph: PlannedTaskGraph,\n taskSlotsById: ReadonlyMap<string, number>\n): ReverseRelationIndexes {\n const reverseDependencies = emptyTaskSlotLists(graph);\n const reverseObservations = emptyTaskSlotLists(graph);\n\n for (const [taskSlot, task] of graph.tasks.entries()) {\n appendReverseRelationOccurrences(\n task.dependsOn,\n taskSlot,\n taskSlotsById,\n reverseDependencies,\n \"dependency\"\n );\n appendReverseRelationOccurrences(\n task.observes,\n taskSlot,\n taskSlotsById,\n reverseObservations,\n \"observation\"\n );\n }\n\n return {\n reverseDependencies: freezeSlotLists(reverseDependencies),\n reverseObservations: freezeSlotLists(reverseObservations)\n };\n}\n\nfunction appendReverseRelationOccurrences(\n sourceTaskIds: readonly string[],\n targetTaskSlot: number,\n taskSlotsById: ReadonlyMap<string, number>,\n reverseSlotsBySourceTask: number[][],\n relationName: \"dependency\" | \"observation\"\n): void {\n for (const sourceTaskId of sourceTaskIds) {\n const sourceTaskSlot = taskSlotsById.get(sourceTaskId);\n if (sourceTaskSlot === undefined) {\n throw new Error(`admission core ${relationName} is unknown: ${sourceTaskId}`);\n }\n reverseSlotsBySourceTask[sourceTaskSlot]?.push(targetTaskSlot);\n }\n}\n\n/** Associates scope terminals and activation candidates with the existing task slots. */\nfunction compileScopeStaticIndexes(\n graph: PlannedTaskGraph,\n catalog: GraphSlotCatalog\n): ScopeStaticIndexes {\n const scopeSlotsByTerminalTaskSlot = emptyTaskSlotLists(graph);\n\n for (const [scopeSlot, scope] of graph.scopes.entries()) {\n const terminalTaskSlot = catalog.taskSlotsById.get(scope.terminalTaskId);\n if (terminalTaskSlot === undefined) {\n throw new Error(`admission core scope terminal is unknown: ${scope.terminalTaskId}`);\n }\n scopeSlotsByTerminalTaskSlot[terminalTaskSlot]?.push(scopeSlot);\n }\n const taskActivatesScope = graph.tasks.map((task) => {\n const scopeSlot =\n task.scopeId === undefined ? undefined : catalog.scopeSlotById.get(task.scopeId);\n return (\n scopeSlot !== undefined &&\n graph.scopes[scopeSlot]?.activationTaskIds.includes(task.id) === true\n );\n });\n const taskScopeSlots = graph.tasks.map((task) =>\n task.scopeId === undefined ? undefined : catalog.scopeSlotById.get(task.scopeId)\n );\n\n return {\n scopeSlotsByTerminalTaskSlot: freezeSlotLists(scopeSlotsByTerminalTaskSlot),\n taskActivatesScope: Object.freeze(taskActivatesScope),\n taskScopeSlots: Object.freeze(taskScopeSlots)\n };\n}\n\n/** Materializes only the lexical catalog projection; declaration slots remain unchanged. */\nfunction compilePublicTaskOrder(\n graph: PlannedTaskGraph,\n taskSlotsById: ReadonlyMap<string, number>\n): PublicTaskOrder {\n return {\n taskIdsInPublicOrder: Object.freeze(graph.tasks.map((task) => task.id).sort(compareText)),\n taskSlotsInPublicOrder: Object.freeze(\n graph.tasks\n .map((task) => taskSlotsById.get(task.id)!)\n .sort((left, right) => compareText(graph.tasks[left].id, graph.tasks[right].id))\n )\n };\n}\n\n/** Freezes the one compiled graph object after every static compiler stage has completed. */\nfunction assembleCompiledAdmissionGraph(\n parts: CompiledAdmissionGraphParts\n): CompiledAdmissionGraph {\n const {\n catalog,\n graph,\n maxParallel,\n mutexIndexes,\n publicTaskOrder,\n relationIndexes,\n resourceIndexes,\n scopeIndexes\n } = parts;\n return Object.freeze({\n graph,\n maxParallel,\n mutexSlotById: mutexIndexes.mutexSlotById,\n resourceCapacityBySlot: resourceIndexes.resourceCapacityBySlot,\n resourceSlotById: resourceIndexes.resourceSlotById,\n relationIndexes: Object.freeze({\n reverseDependencies: relationIndexes.reverseDependencies,\n reverseMutexOccurrences: mutexIndexes.reverseMutexOccurrences,\n reverseObservations: relationIndexes.reverseObservations\n }),\n scopesById: catalog.scopesById,\n scopeSlotById: catalog.scopeSlotById,\n scopeSlotsByTerminalTaskSlot: scopeIndexes.scopeSlotsByTerminalTaskSlot,\n taskById: catalog.taskById,\n taskIdsInPublicOrder: publicTaskOrder.taskIdsInPublicOrder,\n taskMutexSlots: mutexIndexes.taskMutexSlots,\n taskResourceClaims: resourceIndexes.taskResourceClaims,\n taskActivatesScope: scopeIndexes.taskActivatesScope,\n taskScopeSlots: scopeIndexes.taskScopeSlots,\n taskSlotsById: catalog.taskSlotsById,\n taskSlotsInPublicOrder: publicTaskOrder.taskSlotsInPublicOrder\n });\n}\n\nfunction emptyTaskSlotLists(graph: PlannedTaskGraph): number[][] {\n return graph.tasks.map(() => []);\n}\n\nfunction freezeSlotLists(slotLists: number[][]): readonly (readonly number[])[] {\n return Object.freeze(slotLists.map((slots) => Object.freeze(slots)));\n}\n\nfunction compareText(left: string, right: string): number {\n if (left < right) return -1;\n if (left > right) return 1;\n return 0;\n}\n"]}