@zxyycom/vibe-check 0.0.1 → 0.0.3

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 (1190) hide show
  1. package/README.md +79 -75
  2. package/dist/esm/check/check.mjs +4 -0
  3. package/dist/esm/check/check.mjs.map +1 -1
  4. package/dist/esm/check/flag-enablement.mjs +32 -0
  5. package/dist/esm/check/flag-enablement.mjs.map +1 -0
  6. package/dist/esm/check/handoff-provider-identity.mjs +18 -0
  7. package/dist/esm/check/handoff-provider-identity.mjs.map +1 -0
  8. package/dist/esm/check/inherited-collection.mjs +2 -2
  9. package/dist/esm/check/inherited-collection.mjs.map +1 -1
  10. package/dist/esm/check/project-changes.mjs +2 -0
  11. package/dist/esm/check/project-changes.mjs.map +1 -0
  12. package/dist/esm/check/project-context.mjs +2 -0
  13. package/dist/esm/check/project-context.mjs.map +1 -0
  14. package/dist/esm/check-settlement/fact-validation.mjs +17 -23
  15. package/dist/esm/check-settlement/fact-validation.mjs.map +1 -1
  16. package/dist/esm/check-settlement/facts.mjs.map +1 -1
  17. package/dist/esm/check-settlement/outcome-normalization.mjs +9 -19
  18. package/dist/esm/check-settlement/outcome-normalization.mjs.map +1 -1
  19. package/dist/esm/check-settlement/reason-shape.mjs +12 -0
  20. package/dist/esm/check-settlement/reason-shape.mjs.map +1 -0
  21. package/dist/esm/check-settlement/record-store.mjs +14 -17
  22. package/dist/esm/check-settlement/record-store.mjs.map +1 -1
  23. package/dist/esm/check-settlement/session.mjs +8 -2
  24. package/dist/esm/check-settlement/session.mjs.map +1 -1
  25. package/dist/esm/data-boundary/canonical-data.mjs +36 -7
  26. package/dist/esm/data-boundary/canonical-data.mjs.map +1 -1
  27. package/dist/esm/data-boundary/canonical-json.mjs.map +1 -1
  28. package/dist/esm/data-boundary/closed-values.mjs +43 -3
  29. package/dist/esm/data-boundary/closed-values.mjs.map +1 -1
  30. package/dist/esm/{package-checks/project-files → data-boundary}/config-glob.mjs +3 -3
  31. package/dist/esm/data-boundary/config-glob.mjs.map +1 -0
  32. package/dist/esm/data-boundary/project-path.mjs +19 -0
  33. package/dist/esm/data-boundary/project-path.mjs.map +1 -0
  34. package/dist/esm/data-boundary/value-shapes.mjs +9 -0
  35. package/dist/esm/data-boundary/value-shapes.mjs.map +1 -1
  36. package/dist/esm/index.mjs +16 -2
  37. package/dist/esm/index.mjs.map +1 -1
  38. package/dist/esm/machine-output/v4/atomic-publication.mjs +5 -16
  39. package/dist/esm/machine-output/v4/atomic-publication.mjs.map +1 -1
  40. package/dist/esm/package-checks/check-authoring.mjs +69 -0
  41. package/dist/esm/package-checks/check-authoring.mjs.map +1 -0
  42. package/dist/esm/package-checks/code-quality-findings/finding-waiver-authoring.mjs +40 -0
  43. package/dist/esm/package-checks/code-quality-findings/finding-waiver-authoring.mjs.map +1 -0
  44. package/dist/esm/package-checks/code-quality-findings/finding-waiver-evidence.mjs +48 -0
  45. package/dist/esm/package-checks/code-quality-findings/finding-waiver-evidence.mjs.map +1 -0
  46. package/dist/esm/package-checks/code-quality-findings/policy.mjs +20 -0
  47. package/dist/esm/package-checks/code-quality-findings/policy.mjs.map +1 -1
  48. package/dist/esm/package-checks/command-check/command-check.mjs +55 -0
  49. package/dist/esm/package-checks/command-check/command-check.mjs.map +1 -0
  50. package/dist/esm/package-checks/command-check/contract.mjs +2 -0
  51. package/dist/esm/package-checks/command-check/contract.mjs.map +1 -0
  52. package/dist/esm/package-checks/command-check/execution.mjs +134 -0
  53. package/dist/esm/package-checks/command-check/execution.mjs.map +1 -0
  54. package/dist/esm/package-checks/command-check/options.mjs +284 -0
  55. package/dist/esm/package-checks/command-check/options.mjs.map +1 -0
  56. package/dist/esm/package-checks/command-check/transcript.mjs +26 -0
  57. package/dist/esm/package-checks/command-check/transcript.mjs.map +1 -0
  58. package/dist/esm/package-checks/duplicate-detection/area-policy.mjs +15 -7
  59. package/dist/esm/package-checks/duplicate-detection/area-policy.mjs.map +1 -1
  60. package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs +1 -1
  61. package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs.map +1 -1
  62. package/dist/esm/package-checks/duplicate-detection/default-check.mjs +10 -12
  63. package/dist/esm/package-checks/duplicate-detection/default-check.mjs.map +1 -1
  64. package/dist/esm/package-checks/duplicate-detection/execution.mjs +44 -20
  65. package/dist/esm/package-checks/duplicate-detection/execution.mjs.map +1 -1
  66. package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs +59 -0
  67. package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs.map +1 -0
  68. package/dist/esm/package-checks/duplicate-detection/finding-waiver-identity.mjs +55 -0
  69. package/dist/esm/package-checks/duplicate-detection/finding-waiver-identity.mjs.map +1 -0
  70. package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs +2 -2
  71. package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs.map +1 -1
  72. package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs +1 -1
  73. package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs.map +1 -1
  74. package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs +15 -5
  75. package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs.map +1 -1
  76. package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs +5 -4
  77. package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs.map +1 -1
  78. package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs +22 -47
  79. package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs.map +1 -1
  80. package/dist/esm/package-checks/duplicate-detection/options-validation.mjs +20 -25
  81. package/dist/esm/package-checks/duplicate-detection/options-validation.mjs.map +1 -1
  82. package/dist/esm/package-checks/duplicate-detection/options.mjs.map +1 -1
  83. package/dist/esm/package-checks/duplicate-detection/records.mjs +27 -6
  84. package/dist/esm/package-checks/duplicate-detection/records.mjs.map +1 -1
  85. package/dist/esm/package-checks/file-metrics/constructor.mjs +9 -11
  86. package/dist/esm/package-checks/file-metrics/constructor.mjs.map +1 -1
  87. package/dist/esm/package-checks/file-metrics/execution.mjs +11 -20
  88. package/dist/esm/package-checks/file-metrics/execution.mjs.map +1 -1
  89. package/dist/esm/package-checks/file-metrics/finding-messages.mjs +22 -0
  90. package/dist/esm/package-checks/file-metrics/finding-messages.mjs.map +1 -0
  91. package/dist/esm/package-checks/file-metrics/options-resolution.mjs +11 -43
  92. package/dist/esm/package-checks/file-metrics/options-resolution.mjs.map +1 -1
  93. package/dist/esm/package-checks/file-metrics/options-validation.mjs +15 -25
  94. package/dist/esm/package-checks/file-metrics/options-validation.mjs.map +1 -1
  95. package/dist/esm/package-checks/file-metrics/options.mjs.map +1 -1
  96. package/dist/esm/package-checks/file-metrics/records.mjs +2 -9
  97. package/dist/esm/package-checks/file-metrics/records.mjs.map +1 -1
  98. package/dist/esm/package-checks/file-metrics/scc/availability.mjs +2 -2
  99. package/dist/esm/package-checks/file-metrics/scc/availability.mjs.map +1 -1
  100. package/dist/esm/package-checks/file-metrics/scc/batch-planner.mjs +38 -0
  101. package/dist/esm/package-checks/file-metrics/scc/batch-planner.mjs.map +1 -0
  102. package/dist/esm/package-checks/file-metrics/scc/logical-scan-resources.mjs +35 -0
  103. package/dist/esm/package-checks/file-metrics/scc/logical-scan-resources.mjs.map +1 -0
  104. package/dist/esm/package-checks/file-metrics/scc/parser.mjs +4 -4
  105. package/dist/esm/package-checks/file-metrics/scc/parser.mjs.map +1 -1
  106. package/dist/esm/package-checks/file-metrics/scc/scanner.mjs +104 -31
  107. package/dist/esm/package-checks/file-metrics/scc/scanner.mjs.map +1 -1
  108. package/dist/esm/package-checks/function-metrics/analysis.mjs +61 -15
  109. package/dist/esm/package-checks/function-metrics/analysis.mjs.map +1 -1
  110. package/dist/esm/package-checks/function-metrics/analyzer/analysis-context.mjs +550 -0
  111. package/dist/esm/package-checks/function-metrics/analyzer/analysis-context.mjs.map +1 -0
  112. package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs +332 -0
  113. package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs.map +1 -0
  114. package/dist/esm/package-checks/function-metrics/analyzer/contracts.mjs +7 -0
  115. package/dist/esm/package-checks/function-metrics/analyzer/contracts.mjs.map +1 -0
  116. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs +22 -0
  117. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs.map +1 -0
  118. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardnd.mjs +113 -0
  119. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardnd.mjs.map +1 -0
  120. package/dist/esm/package-checks/function-metrics/analyzer/extensions/protocol.mjs +180 -0
  121. package/dist/esm/package-checks/function-metrics/analyzer/extensions/protocol.mjs.map +1 -0
  122. package/dist/esm/package-checks/function-metrics/analyzer/extensions/registry.mjs +121 -0
  123. package/dist/esm/package-checks/function-metrics/analyzer/extensions/registry.mjs.map +1 -0
  124. package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs +218 -0
  125. package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs.map +1 -0
  126. package/dist/esm/package-checks/function-metrics/analyzer/port-facade.mjs +96 -0
  127. package/dist/esm/package-checks/function-metrics/analyzer/port-facade.mjs.map +1 -0
  128. package/dist/esm/package-checks/function-metrics/analyzer/reader-registry.mjs +76 -0
  129. package/dist/esm/package-checks/function-metrics/analyzer/reader-registry.mjs.map +1 -0
  130. package/dist/esm/package-checks/function-metrics/analyzer/readers/csharp.mjs +88 -0
  131. package/dist/esm/package-checks/function-metrics/analyzer/readers/csharp.mjs.map +1 -0
  132. package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs +466 -0
  133. package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs.map +1 -0
  134. package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs +289 -0
  135. package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs.map +1 -0
  136. package/dist/esm/package-checks/function-metrics/analyzer/readers/gdscript.mjs +38 -0
  137. package/dist/esm/package-checks/function-metrics/analyzer/readers/gdscript.mjs.map +1 -0
  138. package/dist/esm/package-checks/function-metrics/analyzer/readers/go.mjs +44 -0
  139. package/dist/esm/package-checks/function-metrics/analyzer/readers/go.mjs.map +1 -0
  140. package/dist/esm/package-checks/function-metrics/analyzer/readers/java-body-states.mjs +113 -0
  141. package/dist/esm/package-checks/function-metrics/analyzer/readers/java-body-states.mjs.map +1 -0
  142. package/dist/esm/package-checks/function-metrics/analyzer/readers/java.mjs +247 -0
  143. package/dist/esm/package-checks/function-metrics/analyzer/readers/java.mjs.map +1 -0
  144. package/dist/esm/package-checks/function-metrics/analyzer/readers/javascript.mjs +16 -0
  145. package/dist/esm/package-checks/function-metrics/analyzer/readers/javascript.mjs.map +1 -0
  146. package/dist/esm/package-checks/function-metrics/analyzer/readers/kotlin.mjs +103 -0
  147. package/dist/esm/package-checks/function-metrics/analyzer/readers/kotlin.mjs.map +1 -0
  148. package/dist/esm/package-checks/function-metrics/analyzer/readers/lua.mjs +55 -0
  149. package/dist/esm/package-checks/function-metrics/analyzer/readers/lua.mjs.map +1 -0
  150. package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs +106 -0
  151. package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs.map +1 -0
  152. package/dist/esm/package-checks/function-metrics/analyzer/readers/perl.mjs +367 -0
  153. package/dist/esm/package-checks/function-metrics/analyzer/readers/perl.mjs.map +1 -0
  154. package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs +265 -0
  155. package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs.map +1 -0
  156. package/dist/esm/package-checks/function-metrics/analyzer/readers/php.mjs +53 -0
  157. package/dist/esm/package-checks/function-metrics/analyzer/readers/php.mjs.map +1 -0
  158. package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs +306 -0
  159. package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs.map +1 -0
  160. package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs +404 -0
  161. package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs.map +1 -0
  162. package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs +216 -0
  163. package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs.map +1 -0
  164. package/dist/esm/package-checks/function-metrics/analyzer/readers/ruby.mjs +75 -0
  165. package/dist/esm/package-checks/function-metrics/analyzer/readers/ruby.mjs.map +1 -0
  166. package/dist/esm/package-checks/function-metrics/analyzer/readers/rust.mjs +32 -0
  167. package/dist/esm/package-checks/function-metrics/analyzer/readers/rust.mjs.map +1 -0
  168. package/dist/esm/package-checks/function-metrics/analyzer/readers/scala.mjs +47 -0
  169. package/dist/esm/package-checks/function-metrics/analyzer/readers/scala.mjs.map +1 -0
  170. package/dist/esm/package-checks/function-metrics/analyzer/readers/solidity.mjs +22 -0
  171. package/dist/esm/package-checks/function-metrics/analyzer/readers/solidity.mjs.map +1 -0
  172. package/dist/esm/package-checks/function-metrics/analyzer/readers/st.mjs +142 -0
  173. package/dist/esm/package-checks/function-metrics/analyzer/readers/st.mjs.map +1 -0
  174. package/dist/esm/package-checks/function-metrics/analyzer/readers/swift.mjs +94 -0
  175. package/dist/esm/package-checks/function-metrics/analyzer/readers/swift.mjs.map +1 -0
  176. package/dist/esm/package-checks/function-metrics/analyzer/readers/tsx.mjs +149 -0
  177. package/dist/esm/package-checks/function-metrics/analyzer/readers/tsx.mjs.map +1 -0
  178. package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs +85 -0
  179. package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs.map +1 -0
  180. package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs +612 -0
  181. package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs.map +1 -0
  182. package/dist/esm/package-checks/function-metrics/analyzer/readers/vue.mjs +31 -0
  183. package/dist/esm/package-checks/function-metrics/analyzer/readers/vue.mjs.map +1 -0
  184. package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs +25 -0
  185. package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs.map +1 -0
  186. package/dist/esm/package-checks/function-metrics/analyzer/shared/clike.mjs +492 -0
  187. package/dist/esm/package-checks/function-metrics/analyzer/shared/clike.mjs.map +1 -0
  188. package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs +544 -0
  189. package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs.map +1 -0
  190. package/dist/esm/package-checks/function-metrics/analyzer/shared/golike.mjs +141 -0
  191. package/dist/esm/package-checks/function-metrics/analyzer/shared/golike.mjs.map +1 -0
  192. package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs +69 -0
  193. package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs.map +1 -0
  194. package/dist/esm/package-checks/function-metrics/analyzer/shared/rubylike.mjs +154 -0
  195. package/dist/esm/package-checks/function-metrics/analyzer/shared/rubylike.mjs.map +1 -0
  196. package/dist/esm/package-checks/function-metrics/analyzer/shared/script-language.mjs +36 -0
  197. package/dist/esm/package-checks/function-metrics/analyzer/shared/script-language.mjs.map +1 -0
  198. package/dist/esm/package-checks/function-metrics/analyzer-adapter.mjs +56 -0
  199. package/dist/esm/package-checks/function-metrics/analyzer-adapter.mjs.map +1 -0
  200. package/dist/esm/package-checks/function-metrics/analyzer-worker-contract.mjs +2 -0
  201. package/dist/esm/package-checks/function-metrics/analyzer-worker-contract.mjs.map +1 -0
  202. package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs +120 -0
  203. package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs.map +1 -0
  204. package/dist/esm/package-checks/function-metrics/analyzer-worker.mjs +24 -0
  205. package/dist/esm/package-checks/function-metrics/analyzer-worker.mjs.map +1 -0
  206. package/dist/esm/package-checks/function-metrics/constructor.mjs +10 -12
  207. package/dist/esm/package-checks/function-metrics/constructor.mjs.map +1 -1
  208. package/dist/esm/package-checks/function-metrics/execution.mjs +51 -35
  209. package/dist/esm/package-checks/function-metrics/execution.mjs.map +1 -1
  210. package/dist/esm/package-checks/function-metrics/finding-messages.mjs +75 -0
  211. package/dist/esm/package-checks/function-metrics/finding-messages.mjs.map +1 -0
  212. package/dist/esm/package-checks/function-metrics/finding-waiver-identity.mjs +28 -0
  213. package/dist/esm/package-checks/function-metrics/finding-waiver-identity.mjs.map +1 -0
  214. package/dist/esm/package-checks/function-metrics/measurement-model.mjs.map +1 -1
  215. package/dist/esm/package-checks/function-metrics/measurement.mjs +163 -26
  216. package/dist/esm/package-checks/function-metrics/measurement.mjs.map +1 -1
  217. package/dist/esm/package-checks/function-metrics/options-resolution.mjs +30 -63
  218. package/dist/esm/package-checks/function-metrics/options-resolution.mjs.map +1 -1
  219. package/dist/esm/package-checks/function-metrics/options-validation.mjs +27 -32
  220. package/dist/esm/package-checks/function-metrics/options-validation.mjs.map +1 -1
  221. package/dist/esm/package-checks/function-metrics/options.mjs.map +1 -1
  222. package/dist/esm/package-checks/function-metrics/records.mjs +31 -1
  223. package/dist/esm/package-checks/function-metrics/records.mjs.map +1 -1
  224. package/dist/esm/package-checks/function-metrics/target-files.mjs +6 -67
  225. package/dist/esm/package-checks/function-metrics/target-files.mjs.map +1 -1
  226. package/dist/esm/package-checks/{function-metrics/lizard → host-environment}/csv.mjs +1 -0
  227. package/dist/esm/package-checks/host-environment/csv.mjs.map +1 -0
  228. package/dist/esm/package-checks/host-environment/git.mjs +12 -1
  229. package/dist/esm/package-checks/host-environment/git.mjs.map +1 -1
  230. package/dist/esm/package-checks/host-environment/path.mjs +1 -17
  231. package/dist/esm/package-checks/host-environment/path.mjs.map +1 -1
  232. package/dist/esm/package-checks/host-environment/process/contract.mjs.map +1 -1
  233. package/dist/esm/package-checks/host-environment/process/result.mjs +43 -17
  234. package/dist/esm/package-checks/host-environment/process/result.mjs.map +1 -1
  235. package/dist/esm/package-checks/host-environment/process/runner.mjs +7 -5
  236. package/dist/esm/package-checks/host-environment/process/runner.mjs.map +1 -1
  237. package/dist/esm/package-checks/host-environment/process.mjs +5 -0
  238. package/dist/esm/package-checks/host-environment/process.mjs.map +1 -0
  239. package/dist/esm/package-checks/json-schema-validation/default-check.mjs +9 -11
  240. package/dist/esm/package-checks/json-schema-validation/default-check.mjs.map +1 -1
  241. package/dist/esm/package-checks/json-schema-validation/final-data.mjs.map +1 -1
  242. package/dist/esm/package-checks/json-schema-validation/options-validation.mjs +15 -17
  243. package/dist/esm/package-checks/json-schema-validation/options-validation.mjs.map +1 -1
  244. package/dist/esm/package-checks/json-schema-validation/options.mjs.map +1 -1
  245. package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs +6 -2
  246. package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs.map +1 -1
  247. package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs +11 -3
  248. package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs.map +1 -1
  249. package/dist/esm/package-checks/json-validation/default-check.mjs +9 -11
  250. package/dist/esm/package-checks/json-validation/default-check.mjs.map +1 -1
  251. package/dist/esm/package-checks/json-validation/final-data.mjs.map +1 -1
  252. package/dist/esm/package-checks/json-validation/options-validation.mjs +4 -10
  253. package/dist/esm/package-checks/json-validation/options-validation.mjs.map +1 -1
  254. package/dist/esm/package-checks/json-validation/options.mjs.map +1 -1
  255. package/dist/esm/package-checks/local-cache-options.mjs +28 -0
  256. package/dist/esm/package-checks/local-cache-options.mjs.map +1 -0
  257. package/dist/esm/package-checks/maintenance-reminders/final-data.mjs.map +1 -1
  258. package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs +37 -45
  259. package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs.map +1 -1
  260. package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs +3 -1
  261. package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs.map +1 -1
  262. package/dist/esm/package-checks/markdown-link-validation/default-check.mjs +19 -27
  263. package/dist/esm/package-checks/markdown-link-validation/default-check.mjs.map +1 -1
  264. package/dist/esm/package-checks/markdown-link-validation/execution.mjs +27 -24
  265. package/dist/esm/package-checks/markdown-link-validation/execution.mjs.map +1 -1
  266. package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs +82 -53
  267. package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs.map +1 -1
  268. package/dist/esm/package-checks/markdown-link-validation/final-data.mjs.map +1 -1
  269. package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs +36 -0
  270. package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs.map +1 -0
  271. package/dist/esm/package-checks/markdown-link-validation/local-resolution.mjs.map +1 -1
  272. package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs +2 -2
  273. package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs.map +1 -1
  274. package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs +1 -3
  275. package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs.map +1 -1
  276. package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs +10 -3
  277. package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs.map +1 -1
  278. package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs +12 -11
  279. package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs.map +1 -1
  280. package/dist/esm/package-checks/markdown-link-validation/options.mjs.map +1 -1
  281. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs +184 -0
  282. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs.map +1 -0
  283. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache.mjs +131 -0
  284. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache.mjs.map +1 -0
  285. package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs +58 -57
  286. package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs.map +1 -1
  287. package/dist/esm/package-checks/markdown-link-validation/source-reader.mjs +54 -0
  288. package/dist/esm/package-checks/markdown-link-validation/source-reader.mjs.map +1 -0
  289. package/dist/esm/package-checks/markdown-link-validation/unavailable-reasons.mjs +16 -0
  290. package/dist/esm/package-checks/markdown-link-validation/unavailable-reasons.mjs.map +1 -0
  291. package/dist/esm/package-checks/markdown-lint/adapter.mjs +125 -0
  292. package/dist/esm/package-checks/markdown-lint/adapter.mjs.map +1 -0
  293. package/dist/esm/package-checks/markdown-lint/default-check.mjs +37 -0
  294. package/dist/esm/package-checks/markdown-lint/default-check.mjs.map +1 -0
  295. package/dist/esm/package-checks/markdown-lint/execution.mjs +202 -0
  296. package/dist/esm/package-checks/markdown-lint/execution.mjs.map +1 -0
  297. package/dist/esm/package-checks/markdown-lint/final-data.mjs +16 -0
  298. package/dist/esm/package-checks/markdown-lint/final-data.mjs.map +1 -0
  299. package/dist/esm/package-checks/markdown-lint/finding-messages.mjs +72 -0
  300. package/dist/esm/package-checks/markdown-lint/finding-messages.mjs.map +1 -0
  301. package/dist/esm/package-checks/markdown-lint/finding-waiver-identity.mjs +41 -0
  302. package/dist/esm/package-checks/markdown-lint/finding-waiver-identity.mjs.map +1 -0
  303. package/dist/esm/package-checks/markdown-lint/findings-cache.mjs +110 -0
  304. package/dist/esm/package-checks/markdown-lint/findings-cache.mjs.map +1 -0
  305. package/dist/esm/package-checks/markdown-lint/options-resolution.mjs +74 -0
  306. package/dist/esm/package-checks/markdown-lint/options-resolution.mjs.map +1 -0
  307. package/dist/esm/package-checks/markdown-lint/options-validation.mjs +41 -0
  308. package/dist/esm/package-checks/markdown-lint/options-validation.mjs.map +1 -0
  309. package/dist/esm/package-checks/markdown-lint/options.mjs +13 -0
  310. package/dist/esm/package-checks/markdown-lint/options.mjs.map +1 -0
  311. package/dist/esm/package-checks/markdown-lint/records.mjs +65 -0
  312. package/dist/esm/package-checks/markdown-lint/records.mjs.map +1 -0
  313. package/dist/esm/package-checks/markdown-lint/unavailable-reasons.mjs +14 -0
  314. package/dist/esm/package-checks/markdown-lint/unavailable-reasons.mjs.map +1 -0
  315. package/dist/esm/package-checks/project-files/collection.mjs +24 -20
  316. package/dist/esm/package-checks/project-files/collection.mjs.map +1 -1
  317. package/dist/esm/package-checks/project-files/configuration.mjs +3 -11
  318. package/dist/esm/package-checks/project-files/configuration.mjs.map +1 -1
  319. package/dist/esm/package-checks/project-files/gitlink-revision.mjs +3 -6
  320. package/dist/esm/package-checks/project-files/gitlink-revision.mjs.map +1 -1
  321. package/dist/esm/package-checks/project-files/gitlink-worktree.mjs +23 -7
  322. package/dist/esm/package-checks/project-files/gitlink-worktree.mjs.map +1 -1
  323. package/dist/esm/package-checks/project-files/public-collection.mjs +56 -0
  324. package/dist/esm/package-checks/project-files/public-collection.mjs.map +1 -0
  325. package/dist/esm/package-checks/project-files/revision-paths.mjs +3 -3
  326. package/dist/esm/package-checks/project-files/revision-paths.mjs.map +1 -1
  327. package/dist/esm/package-checks/project-files/revision-worktree-files.mjs +12 -16
  328. package/dist/esm/package-checks/project-files/revision-worktree-files.mjs.map +1 -1
  329. package/dist/esm/package-checks/secret-detection/classification.mjs +15 -0
  330. package/dist/esm/package-checks/secret-detection/classification.mjs.map +1 -0
  331. package/dist/esm/package-checks/secret-detection/default-check.mjs +37 -0
  332. package/dist/esm/package-checks/secret-detection/default-check.mjs.map +1 -0
  333. package/dist/esm/package-checks/secret-detection/execution.mjs +172 -0
  334. package/dist/esm/package-checks/secret-detection/execution.mjs.map +1 -0
  335. package/dist/esm/package-checks/secret-detection/final-data.mjs +33 -0
  336. package/dist/esm/package-checks/secret-detection/final-data.mjs.map +1 -0
  337. package/dist/esm/package-checks/secret-detection/finding-waiver-identity.mjs +30 -0
  338. package/dist/esm/package-checks/secret-detection/finding-waiver-identity.mjs.map +1 -0
  339. package/dist/esm/package-checks/secret-detection/input-preparation.mjs +192 -0
  340. package/dist/esm/package-checks/secret-detection/input-preparation.mjs.map +1 -0
  341. package/dist/esm/package-checks/secret-detection/options-resolution.mjs +40 -0
  342. package/dist/esm/package-checks/secret-detection/options-resolution.mjs.map +1 -0
  343. package/dist/esm/package-checks/secret-detection/options-validation.mjs +22 -0
  344. package/dist/esm/package-checks/secret-detection/options-validation.mjs.map +1 -0
  345. package/dist/esm/package-checks/secret-detection/options.mjs +2 -0
  346. package/dist/esm/package-checks/secret-detection/options.mjs.map +1 -0
  347. package/dist/esm/package-checks/secret-detection/records.mjs +31 -0
  348. package/dist/esm/package-checks/secret-detection/records.mjs.map +1 -0
  349. package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs +84 -0
  350. package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs.map +1 -0
  351. package/dist/esm/package-tools/admission-policy/define-admission-policy.mjs +10 -0
  352. package/dist/esm/package-tools/admission-policy/define-admission-policy.mjs.map +1 -0
  353. package/dist/esm/package-tools/cache/cache-json-by-key.mjs +188 -0
  354. package/dist/esm/package-tools/cache/cache-json-by-key.mjs.map +1 -0
  355. package/dist/esm/package-tools/finding-presentation/finding-presentation.mjs +40 -0
  356. package/dist/esm/package-tools/finding-presentation/finding-presentation.mjs.map +1 -0
  357. package/dist/esm/{finding-waivers → package-tools/finding-waivers}/reconciliation.mjs +14 -5
  358. package/dist/esm/package-tools/finding-waivers/reconciliation.mjs.map +1 -0
  359. package/dist/esm/package-tools/learned-critical-path/critical-path-ranking.mjs +46 -0
  360. package/dist/esm/package-tools/learned-critical-path/critical-path-ranking.mjs.map +1 -0
  361. package/dist/esm/package-tools/learned-critical-path/duration-model/bounded-history.mjs +56 -0
  362. package/dist/esm/package-tools/learned-critical-path/duration-model/bounded-history.mjs.map +1 -0
  363. package/dist/esm/package-tools/learned-critical-path/duration-model/prediction.mjs +122 -0
  364. package/dist/esm/package-tools/learned-critical-path/duration-model/prediction.mjs.map +1 -0
  365. package/dist/esm/package-tools/learned-critical-path/duration-model/preparation.mjs +43 -0
  366. package/dist/esm/package-tools/learned-critical-path/duration-model/preparation.mjs.map +1 -0
  367. package/dist/esm/package-tools/learned-critical-path/duration-model/recording.mjs +109 -0
  368. package/dist/esm/package-tools/learned-critical-path/duration-model/recording.mjs.map +1 -0
  369. package/dist/esm/package-tools/learned-critical-path/duration-model/storage.mjs +187 -0
  370. package/dist/esm/package-tools/learned-critical-path/duration-model/storage.mjs.map +1 -0
  371. package/dist/esm/package-tools/learned-critical-path/selection-layers.mjs +27 -0
  372. package/dist/esm/package-tools/learned-critical-path/selection-layers.mjs.map +1 -0
  373. package/dist/esm/package-tools/learned-critical-path/static-decision.mjs +55 -0
  374. package/dist/esm/package-tools/learned-critical-path/static-decision.mjs.map +1 -0
  375. package/dist/esm/package-tools/learned-critical-path/strategy.mjs +179 -0
  376. package/dist/esm/package-tools/learned-critical-path/strategy.mjs.map +1 -0
  377. package/dist/esm/project-definition/check-tree/authoring.mjs +19 -176
  378. package/dist/esm/project-definition/check-tree/authoring.mjs.map +1 -1
  379. package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs +184 -0
  380. package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs.map +1 -0
  381. package/dist/esm/project-definition/check-tree/collection-authoring.mjs +16 -0
  382. package/dist/esm/project-definition/check-tree/collection-authoring.mjs.map +1 -0
  383. package/dist/esm/project-definition/check-tree/flag-conditions.mjs +71 -0
  384. package/dist/esm/project-definition/check-tree/flag-conditions.mjs.map +1 -0
  385. package/dist/esm/project-definition/check-tree/materialization.mjs +22 -9
  386. package/dist/esm/project-definition/check-tree/materialization.mjs.map +1 -1
  387. package/dist/esm/project-definition/check-tree/resolution.mjs +52 -19
  388. package/dist/esm/project-definition/check-tree/resolution.mjs.map +1 -1
  389. package/dist/esm/project-definition/check-tree/scheduling-authoring.mjs +73 -0
  390. package/dist/esm/project-definition/check-tree/scheduling-authoring.mjs.map +1 -0
  391. package/dist/esm/project-definition/declarative-snapshot.mjs +74 -0
  392. package/dist/esm/project-definition/declarative-snapshot.mjs.map +1 -0
  393. package/dist/esm/project-definition/output-defaults.mjs +18 -1
  394. package/dist/esm/project-definition/output-defaults.mjs.map +1 -1
  395. package/dist/esm/project-definition/output-validation.mjs +15 -15
  396. package/dist/esm/project-definition/output-validation.mjs.map +1 -1
  397. package/dist/esm/project-definition/progress-rendering-output.mjs +52 -0
  398. package/dist/esm/project-definition/progress-rendering-output.mjs.map +1 -0
  399. package/dist/esm/project-definition/project-changes.mjs +70 -0
  400. package/dist/esm/project-definition/project-changes.mjs.map +1 -0
  401. package/dist/esm/project-definition/project-definition-validation.mjs +132 -16
  402. package/dist/esm/project-definition/project-definition-validation.mjs.map +1 -1
  403. package/dist/esm/project-definition/project-definition.mjs +62 -50
  404. package/dist/esm/project-definition/project-definition.mjs.map +1 -1
  405. package/dist/esm/project-definition/resource-unit-mapping.mjs +21 -0
  406. package/dist/esm/project-definition/resource-unit-mapping.mjs.map +1 -0
  407. package/dist/esm/project-definition/scheduler-policy.mjs +2 -0
  408. package/dist/esm/project-definition/scheduler-policy.mjs.map +1 -0
  409. package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs +57 -0
  410. package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs.map +1 -0
  411. package/dist/esm/project-run/admission-strategy-provider/prepared-admission-strategy.mjs +2 -0
  412. package/dist/esm/project-run/admission-strategy-provider/prepared-admission-strategy.mjs.map +1 -0
  413. package/dist/esm/project-run/admission-strategy-provider/provider.mjs +23 -0
  414. package/dist/esm/project-run/admission-strategy-provider/provider.mjs.map +1 -0
  415. package/dist/esm/project-run/aggregation.mjs +42 -57
  416. package/dist/esm/project-run/aggregation.mjs.map +1 -1
  417. package/dist/esm/project-run/changes/git.mjs +161 -0
  418. package/dist/esm/project-run/changes/git.mjs.map +1 -0
  419. package/dist/esm/project-run/check-execution/admitted-check-execution.mjs +41 -0
  420. package/dist/esm/project-run/check-execution/admitted-check-execution.mjs.map +1 -0
  421. package/dist/esm/project-run/check-execution/callback.mjs +37 -9
  422. package/dist/esm/project-run/check-execution/callback.mjs.map +1 -1
  423. package/dist/esm/project-run/check-execution/console-capture.mjs +220 -0
  424. package/dist/esm/project-run/check-execution/console-capture.mjs.map +1 -0
  425. package/dist/esm/project-run/check-execution/dependencies.mjs +99 -6
  426. package/dist/esm/project-run/check-execution/dependencies.mjs.map +1 -1
  427. package/dist/esm/project-run/check-execution/execution-finalization.mjs +57 -14
  428. package/dist/esm/project-run/check-execution/execution-finalization.mjs.map +1 -1
  429. package/dist/esm/project-run/check-execution/execution-settlement.mjs +44 -19
  430. package/dist/esm/project-run/check-execution/execution-settlement.mjs.map +1 -1
  431. package/dist/esm/project-run/check-execution/flag-controls.mjs +95 -0
  432. package/dist/esm/project-run/check-execution/flag-controls.mjs.map +1 -0
  433. package/dist/esm/project-run/check-execution/lifecycle.mjs +2 -0
  434. package/dist/esm/project-run/check-execution/lifecycle.mjs.map +1 -0
  435. package/dist/esm/project-run/check-execution/messages.mjs +5 -0
  436. package/dist/esm/project-run/check-execution/messages.mjs.map +1 -1
  437. package/dist/esm/project-run/check-execution/plan.mjs +9 -5
  438. package/dist/esm/project-run/check-execution/plan.mjs.map +1 -1
  439. package/dist/esm/project-run/check-execution/{preflight-result.mjs → preparation-result.mjs} +24 -24
  440. package/dist/esm/project-run/check-execution/preparation-result.mjs.map +1 -0
  441. package/dist/esm/project-run/check-execution/preparation.mjs +172 -0
  442. package/dist/esm/project-run/check-execution/preparation.mjs.map +1 -0
  443. package/dist/esm/project-run/check-execution/ready-check-execution.mjs +71 -0
  444. package/dist/esm/project-run/check-execution/ready-check-execution.mjs.map +1 -0
  445. package/dist/esm/project-run/check-execution/resolved-checks.mjs +44 -139
  446. package/dist/esm/project-run/check-execution/resolved-checks.mjs.map +1 -1
  447. package/dist/esm/project-run/check-execution/resolved-execution-result.mjs +2 -0
  448. package/dist/esm/project-run/check-execution/resolved-execution-result.mjs.map +1 -0
  449. package/dist/esm/project-run/check-execution/scheduled-check-run.mjs +79 -0
  450. package/dist/esm/project-run/check-execution/scheduled-check-run.mjs.map +1 -0
  451. package/dist/esm/project-run/check-execution/terminal-result.mjs +70 -25
  452. package/dist/esm/project-run/check-execution/terminal-result.mjs.map +1 -1
  453. package/dist/esm/project-run/{completion.mjs → completion/completion.mjs} +34 -39
  454. package/dist/esm/project-run/completion/completion.mjs.map +1 -0
  455. package/dist/esm/project-run/{machine-publication.mjs → completion/machine-publication.mjs} +1 -1
  456. package/dist/esm/project-run/completion/machine-publication.mjs.map +1 -0
  457. package/dist/esm/project-run/completion/result-resolver.mjs +36 -0
  458. package/dist/esm/project-run/completion/result-resolver.mjs.map +1 -0
  459. package/dist/esm/project-run/controls/contract.mjs.map +1 -1
  460. package/dist/esm/project-run/controls/outputs-override-validation.mjs +67 -47
  461. package/dist/esm/project-run/controls/outputs-override-validation.mjs.map +1 -1
  462. package/dist/esm/project-run/controls/validation-result.mjs.map +1 -1
  463. package/dist/esm/project-run/controls/validation.mjs +79 -62
  464. package/dist/esm/project-run/controls/validation.mjs.map +1 -1
  465. package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs +3 -3
  466. package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs.map +1 -1
  467. package/dist/esm/project-run/diagnostic-logging/logger.mjs +100 -161
  468. package/dist/esm/project-run/diagnostic-logging/logger.mjs.map +1 -1
  469. package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs +159 -0
  470. package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs.map +1 -0
  471. package/dist/esm/project-run/invocation/candidate.mjs +65 -0
  472. package/dist/esm/project-run/invocation/candidate.mjs.map +1 -0
  473. package/dist/esm/project-run/invocation/candidates.mjs +26 -0
  474. package/dist/esm/project-run/invocation/candidates.mjs.map +1 -0
  475. package/dist/esm/project-run/invocation/creation.mjs +83 -0
  476. package/dist/esm/project-run/invocation/creation.mjs.map +1 -0
  477. package/dist/esm/project-run/invocation/execution.mjs +98 -0
  478. package/dist/esm/project-run/invocation/execution.mjs.map +1 -0
  479. package/dist/esm/project-run/invocation/paths.mjs +77 -0
  480. package/dist/esm/project-run/invocation/paths.mjs.map +1 -0
  481. package/dist/esm/project-run/invocation/progress.mjs +30 -0
  482. package/dist/esm/project-run/invocation/progress.mjs.map +1 -0
  483. package/dist/esm/project-run/invocation/run.mjs +82 -0
  484. package/dist/esm/project-run/invocation/run.mjs.map +1 -0
  485. package/dist/esm/project-run/invocation/scheduler.mjs +64 -0
  486. package/dist/esm/project-run/invocation/scheduler.mjs.map +1 -0
  487. package/dist/esm/project-run/{output-configuration.mjs → outputs/configuration.mjs} +3 -2
  488. package/dist/esm/project-run/outputs/configuration.mjs.map +1 -0
  489. package/dist/esm/project-run/outputs/status.mjs +105 -0
  490. package/dist/esm/project-run/outputs/status.mjs.map +1 -0
  491. package/dist/esm/project-run/progress-rendering/presentation.mjs +140 -26
  492. package/dist/esm/project-run/progress-rendering/presentation.mjs.map +1 -1
  493. package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs +118 -22
  494. package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs.map +1 -1
  495. package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs +50 -10
  496. package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs.map +1 -1
  497. package/dist/esm/project-run/progress-rendering/renderer.mjs +11 -4
  498. package/dist/esm/project-run/progress-rendering/renderer.mjs.map +1 -1
  499. package/dist/esm/project-run/project-context.mjs +3 -2
  500. package/dist/esm/project-run/project-context.mjs.map +1 -1
  501. package/dist/esm/project-run/result.mjs +2 -0
  502. package/dist/esm/project-run/result.mjs.map +1 -1
  503. package/dist/esm/project-run/run.mjs +1 -1
  504. package/dist/esm/project-run/run.mjs.map +1 -1
  505. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph-lookup.mjs +45 -0
  506. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph-lookup.mjs.map +1 -0
  507. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs +171 -0
  508. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs.map +1 -0
  509. package/dist/esm/project-run/task-scheduler/admission-core/core.mjs +163 -0
  510. package/dist/esm/project-run/task-scheduler/admission-core/core.mjs.map +1 -0
  511. package/dist/esm/project-run/task-scheduler/admission-core/input.mjs +119 -0
  512. package/dist/esm/project-run/task-scheduler/admission-core/input.mjs.map +1 -0
  513. package/dist/esm/project-run/task-scheduler/admission-core/projection.mjs +124 -0
  514. package/dist/esm/project-run/task-scheduler/admission-core/projection.mjs.map +1 -0
  515. package/dist/esm/project-run/task-scheduler/admission-core/selection-index.mjs +99 -0
  516. package/dist/esm/project-run/task-scheduler/admission-core/selection-index.mjs.map +1 -0
  517. package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs +196 -0
  518. package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs.map +1 -0
  519. package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs +168 -0
  520. package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs.map +1 -0
  521. package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs +121 -0
  522. package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs.map +1 -0
  523. package/dist/esm/project-run/task-scheduler/admission-core/selection.mjs +65 -0
  524. package/dist/esm/project-run/task-scheduler/admission-core/selection.mjs.map +1 -0
  525. package/dist/esm/project-run/task-scheduler/admission-scope-layers.mjs +25 -0
  526. package/dist/esm/project-run/task-scheduler/admission-scope-layers.mjs.map +1 -0
  527. package/dist/esm/project-run/task-scheduler/admission-selection-policy.mjs +55 -0
  528. package/dist/esm/project-run/task-scheduler/admission-selection-policy.mjs.map +1 -0
  529. package/dist/esm/project-run/task-scheduler/custom-admission-policy.mjs +110 -0
  530. package/dist/esm/project-run/task-scheduler/custom-admission-policy.mjs.map +1 -0
  531. package/dist/esm/project-run/task-scheduler/execution-state.mjs +34 -5
  532. package/dist/esm/project-run/task-scheduler/execution-state.mjs.map +1 -1
  533. package/dist/esm/project-run/task-scheduler/forced-block-effect-replay.mjs +46 -0
  534. package/dist/esm/project-run/task-scheduler/forced-block-effect-replay.mjs.map +1 -0
  535. package/dist/esm/project-run/task-scheduler/graph-validation.mjs +54 -26
  536. package/dist/esm/project-run/task-scheduler/graph-validation.mjs.map +1 -1
  537. package/dist/esm/project-run/task-scheduler/graph.mjs +79 -3
  538. package/dist/esm/project-run/task-scheduler/graph.mjs.map +1 -1
  539. package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs +211 -0
  540. package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs.map +1 -0
  541. package/dist/esm/project-run/task-scheduler/measurement/integrals.mjs +116 -0
  542. package/dist/esm/project-run/task-scheduler/measurement/integrals.mjs.map +1 -0
  543. package/dist/esm/project-run/task-scheduler/measurement/policy.mjs +67 -0
  544. package/dist/esm/project-run/task-scheduler/measurement/policy.mjs.map +1 -0
  545. package/dist/esm/project-run/task-scheduler/measurement/summary.mjs +123 -0
  546. package/dist/esm/project-run/task-scheduler/measurement/summary.mjs.map +1 -0
  547. package/dist/esm/project-run/task-scheduler/measurement/timing.mjs +164 -0
  548. package/dist/esm/project-run/task-scheduler/measurement/timing.mjs.map +1 -0
  549. package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs +90 -62
  550. package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs.map +1 -1
  551. package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs +20 -6
  552. package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs.map +1 -1
  553. package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs +5 -105
  554. package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs.map +1 -1
  555. package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs +0 -9
  556. package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs.map +1 -1
  557. package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs +48 -28
  558. package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs.map +1 -1
  559. package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs +91 -0
  560. package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs.map +1 -0
  561. package/dist/esm/project-run/task-scheduler/scheduler-task-lifecycle.mjs +94 -0
  562. package/dist/esm/project-run/task-scheduler/scheduler-task-lifecycle.mjs.map +1 -0
  563. package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs +66 -0
  564. package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs.map +1 -0
  565. package/dist/esm/project-run/task-scheduler/scheduler.mjs +183 -114
  566. package/dist/esm/project-run/task-scheduler/scheduler.mjs.map +1 -1
  567. package/docs/api-mechanics.md +167 -121
  568. package/docs/changelog.md +300 -0
  569. package/docs/checks/duplicate-detection.md +131 -60
  570. package/docs/checks/file-metrics.md +68 -46
  571. package/docs/checks/function-metrics.md +119 -163
  572. package/docs/checks/json-schema-validation.md +65 -37
  573. package/docs/checks/json-validation.md +59 -27
  574. package/docs/checks/maintenance-reminders.md +68 -32
  575. package/docs/checks/markdown-link-validation.md +104 -56
  576. package/docs/checks/markdown-lint.md +167 -0
  577. package/docs/checks/secret-detection.md +153 -0
  578. package/docs/examples/artifacts/mixed-outcomes/definition.ts +14 -14
  579. package/docs/guides/building-project-gate.md +706 -0
  580. package/docs/guides/cache-results.md +63 -0
  581. package/docs/guides/callbacks.md +93 -0
  582. package/docs/guides/check-dependencies.md +152 -0
  583. package/docs/guides/collecting-project-files.md +59 -0
  584. package/docs/guides/command-check.md +155 -0
  585. package/docs/guides/data-boundaries.md +140 -0
  586. package/docs/guides/extending-check-lifecycle.md +164 -0
  587. package/docs/guides/finding-waivers.md +87 -0
  588. package/docs/guides/learned-scheduling.md +83 -0
  589. package/docs/guides/presenting-findings.md +54 -0
  590. package/docs/guides/run-outputs.md +171 -0
  591. package/docs/guides/scheduling.md +208 -0
  592. package/docs/guides/simulating-admission.md +55 -0
  593. package/docs/output.md +13 -21
  594. package/licenses/Lizard-1.24.0-MIT.txt +30 -0
  595. package/{third-party-licenses/momoa-3.3.12-LICENSE → licenses/Lizard-1.24.0-lizard.py-Apache-2.0.txt} +1 -0
  596. package/licenses/Pygments-2.18.0-BSD-2-Clause.txt +25 -0
  597. package/licenses/analyzer-translations-NOTICE.md +24 -0
  598. package/licenses/lizard-1.24.0-provenance.json +957 -0
  599. package/package.json +19 -6
  600. package/src/check/check.ts +382 -92
  601. package/src/check/flag-enablement.ts +76 -0
  602. package/src/check/handoff-provider-identity.ts +34 -0
  603. package/src/check/inherited-collection.ts +2 -2
  604. package/src/check/project-changes.ts +14 -0
  605. package/src/check/project-context.ts +11 -0
  606. package/src/check-settlement/fact-validation.ts +29 -39
  607. package/src/check-settlement/facts.ts +1 -1
  608. package/src/check-settlement/outcome-normalization.ts +17 -35
  609. package/src/check-settlement/reason-shape.ts +20 -0
  610. package/src/check-settlement/record-store.ts +18 -15
  611. package/src/check-settlement/session.ts +12 -3
  612. package/src/data-boundary/canonical-data.ts +36 -9
  613. package/src/data-boundary/canonical-json.ts +18 -1
  614. package/src/data-boundary/closed-values.ts +54 -5
  615. package/src/data-boundary/config-glob.ts +17 -0
  616. package/src/data-boundary/project-path.ts +21 -0
  617. package/src/data-boundary/value-shapes.ts +12 -0
  618. package/src/index.ts +134 -5
  619. package/src/machine-output/v4/atomic-publication.ts +4 -17
  620. package/src/package-checks/check-authoring.ts +136 -0
  621. package/src/package-checks/code-quality-findings/finding-waiver-authoring.ts +46 -0
  622. package/src/package-checks/code-quality-findings/finding-waiver-evidence.ts +95 -0
  623. package/src/package-checks/code-quality-findings/policy.ts +23 -0
  624. package/src/package-checks/command-check/command-check.ts +152 -0
  625. package/src/package-checks/command-check/contract.ts +168 -0
  626. package/src/package-checks/command-check/execution.ts +211 -0
  627. package/src/package-checks/command-check/options.ts +331 -0
  628. package/src/package-checks/command-check/transcript.ts +35 -0
  629. package/src/package-checks/duplicate-detection/area-policy.ts +24 -13
  630. package/src/package-checks/duplicate-detection/cache/identity.ts +1 -1
  631. package/src/package-checks/duplicate-detection/default-check.ts +38 -7
  632. package/src/package-checks/duplicate-detection/execution.ts +82 -24
  633. package/src/package-checks/duplicate-detection/finding-messages.ts +75 -0
  634. package/src/package-checks/duplicate-detection/finding-waiver-identity.ts +68 -0
  635. package/src/package-checks/duplicate-detection/jscpd/availability.ts +2 -2
  636. package/src/package-checks/duplicate-detection/jscpd/command-resolution.ts +1 -1
  637. package/src/package-checks/duplicate-detection/jscpd/json-report.ts +24 -5
  638. package/src/package-checks/duplicate-detection/jscpd/scanner.ts +6 -7
  639. package/src/package-checks/duplicate-detection/options-resolution.ts +32 -57
  640. package/src/package-checks/duplicate-detection/options-validation.ts +23 -31
  641. package/src/package-checks/duplicate-detection/options.ts +26 -3
  642. package/src/package-checks/duplicate-detection/records.ts +65 -12
  643. package/src/package-checks/file-metrics/constructor.ts +29 -6
  644. package/src/package-checks/file-metrics/execution.ts +17 -20
  645. package/src/package-checks/file-metrics/finding-messages.ts +29 -0
  646. package/src/package-checks/file-metrics/options-resolution.ts +19 -52
  647. package/src/package-checks/file-metrics/options-validation.ts +23 -32
  648. package/src/package-checks/file-metrics/options.ts +6 -3
  649. package/src/package-checks/file-metrics/records.ts +11 -23
  650. package/src/package-checks/file-metrics/scc/availability.ts +2 -2
  651. package/src/package-checks/file-metrics/scc/batch-planner.ts +56 -0
  652. package/src/package-checks/file-metrics/scc/logical-scan-resources.ts +59 -0
  653. package/src/package-checks/file-metrics/scc/parser.ts +4 -4
  654. package/src/package-checks/file-metrics/scc/scanner.ts +135 -33
  655. package/src/package-checks/function-metrics/analysis.ts +81 -21
  656. package/src/package-checks/function-metrics/analyzer/analysis-context.ts +749 -0
  657. package/src/package-checks/function-metrics/analyzer/analysis-model.ts +421 -0
  658. package/src/package-checks/function-metrics/analyzer/contracts.ts +54 -0
  659. package/src/package-checks/function-metrics/analyzer/extension-output.ts +269 -0
  660. package/src/package-checks/function-metrics/analyzer/extensions/extension-base.ts +33 -0
  661. package/src/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.ts +25 -0
  662. package/src/package-checks/function-metrics/analyzer/extensions/lizardnd.ts +144 -0
  663. package/src/package-checks/function-metrics/analyzer/extensions/protocol.ts +345 -0
  664. package/src/package-checks/function-metrics/analyzer/extensions/registry.ts +157 -0
  665. package/src/package-checks/function-metrics/analyzer/pipeline.ts +313 -0
  666. package/src/package-checks/function-metrics/analyzer/port-facade.ts +142 -0
  667. package/src/package-checks/function-metrics/analyzer/reader-registry.ts +84 -0
  668. package/src/package-checks/function-metrics/analyzer/readers/csharp.ts +110 -0
  669. package/src/package-checks/function-metrics/analyzer/readers/erlang.ts +501 -0
  670. package/src/package-checks/function-metrics/analyzer/readers/fortran.ts +294 -0
  671. package/src/package-checks/function-metrics/analyzer/readers/gdscript.ts +42 -0
  672. package/src/package-checks/function-metrics/analyzer/readers/go.ts +53 -0
  673. package/src/package-checks/function-metrics/analyzer/readers/java-body-states.ts +141 -0
  674. package/src/package-checks/function-metrics/analyzer/readers/java.ts +270 -0
  675. package/src/package-checks/function-metrics/analyzer/readers/javascript.ts +19 -0
  676. package/src/package-checks/function-metrics/analyzer/readers/kotlin.ts +120 -0
  677. package/src/package-checks/function-metrics/analyzer/readers/lua.ts +68 -0
  678. package/src/package-checks/function-metrics/analyzer/readers/objc.ts +113 -0
  679. package/src/package-checks/function-metrics/analyzer/readers/perl.ts +340 -0
  680. package/src/package-checks/function-metrics/analyzer/readers/php-states.ts +253 -0
  681. package/src/package-checks/function-metrics/analyzer/readers/php.ts +63 -0
  682. package/src/package-checks/function-metrics/analyzer/readers/plsql.ts +310 -0
  683. package/src/package-checks/function-metrics/analyzer/readers/python.ts +432 -0
  684. package/src/package-checks/function-metrics/analyzer/readers/r.ts +235 -0
  685. package/src/package-checks/function-metrics/analyzer/readers/ruby.ts +88 -0
  686. package/src/package-checks/function-metrics/analyzer/readers/rust.ts +47 -0
  687. package/src/package-checks/function-metrics/analyzer/readers/scala.ts +60 -0
  688. package/src/package-checks/function-metrics/analyzer/readers/solidity.ts +32 -0
  689. package/src/package-checks/function-metrics/analyzer/readers/st.ts +161 -0
  690. package/src/package-checks/function-metrics/analyzer/readers/swift.ts +116 -0
  691. package/src/package-checks/function-metrics/analyzer/readers/tsx.ts +165 -0
  692. package/src/package-checks/function-metrics/analyzer/readers/ttcn.ts +96 -0
  693. package/src/package-checks/function-metrics/analyzer/readers/typescript.ts +599 -0
  694. package/src/package-checks/function-metrics/analyzer/readers/vue.ts +43 -0
  695. package/src/package-checks/function-metrics/analyzer/readers/zig.ts +36 -0
  696. package/src/package-checks/function-metrics/analyzer/shared/clike.ts +541 -0
  697. package/src/package-checks/function-metrics/analyzer/shared/code-reader.ts +684 -0
  698. package/src/package-checks/function-metrics/analyzer/shared/golike.ts +143 -0
  699. package/src/package-checks/function-metrics/analyzer/shared/js-style-regex.ts +80 -0
  700. package/src/package-checks/function-metrics/analyzer/shared/rubylike.ts +161 -0
  701. package/src/package-checks/function-metrics/analyzer/shared/script-language.ts +50 -0
  702. package/src/package-checks/function-metrics/analyzer-adapter.ts +84 -0
  703. package/src/package-checks/function-metrics/analyzer-worker-contract.ts +10 -0
  704. package/src/package-checks/function-metrics/analyzer-worker-port.ts +164 -0
  705. package/src/package-checks/function-metrics/analyzer-worker.ts +31 -0
  706. package/src/package-checks/function-metrics/constructor.ts +32 -9
  707. package/src/package-checks/function-metrics/execution.ts +94 -41
  708. package/src/package-checks/function-metrics/finding-messages.ts +95 -0
  709. package/src/package-checks/function-metrics/finding-waiver-identity.ts +36 -0
  710. package/src/package-checks/function-metrics/measurement-model.ts +15 -1
  711. package/src/package-checks/function-metrics/measurement.ts +223 -36
  712. package/src/package-checks/function-metrics/options-resolution.ts +39 -75
  713. package/src/package-checks/function-metrics/options-validation.ts +30 -39
  714. package/src/package-checks/function-metrics/options.ts +32 -13
  715. package/src/package-checks/function-metrics/records.ts +73 -7
  716. package/src/package-checks/function-metrics/target-files.ts +10 -70
  717. package/src/package-checks/{file-metrics/scc → host-environment}/csv.ts +1 -2
  718. package/src/package-checks/host-environment/git.ts +13 -2
  719. package/src/package-checks/host-environment/path.ts +1 -20
  720. package/src/package-checks/host-environment/process/contract.ts +17 -9
  721. package/src/package-checks/host-environment/process/result.ts +48 -20
  722. package/src/package-checks/host-environment/process/runner.ts +8 -4
  723. package/src/package-checks/host-environment/process.ts +10 -0
  724. package/src/package-checks/json-schema-validation/default-check.ts +38 -5
  725. package/src/package-checks/json-schema-validation/final-data.ts +8 -0
  726. package/src/package-checks/json-schema-validation/options-validation.ts +16 -23
  727. package/src/package-checks/json-schema-validation/options.ts +27 -1
  728. package/src/package-checks/json-schema-validation/reference-resolver.ts +6 -2
  729. package/src/package-checks/json-schema-validation/schema-policy.ts +10 -5
  730. package/src/package-checks/json-validation/default-check.ts +27 -6
  731. package/src/package-checks/json-validation/final-data.ts +5 -0
  732. package/src/package-checks/json-validation/options-validation.ts +4 -18
  733. package/src/package-checks/json-validation/options.ts +4 -1
  734. package/src/package-checks/local-cache-options.ts +40 -0
  735. package/src/package-checks/maintenance-reminders/final-data.ts +18 -0
  736. package/src/package-checks/maintenance-reminders/maintenance-reminders.ts +89 -9
  737. package/src/package-checks/maintenance-reminders/maintenance-support.ts +3 -3
  738. package/src/package-checks/markdown-link-validation/default-check.ts +57 -8
  739. package/src/package-checks/markdown-link-validation/execution.ts +51 -57
  740. package/src/package-checks/markdown-link-validation/filesystem-probes.ts +108 -51
  741. package/src/package-checks/markdown-link-validation/final-data.ts +5 -0
  742. package/src/package-checks/markdown-link-validation/finding-messages.ts +48 -0
  743. package/src/package-checks/markdown-link-validation/local-resolution.ts +17 -9
  744. package/src/package-checks/markdown-link-validation/local-resolver.ts +5 -2
  745. package/src/package-checks/markdown-link-validation/markdown-parser.ts +1 -5
  746. package/src/package-checks/markdown-link-validation/options-resolution.ts +14 -3
  747. package/src/package-checks/markdown-link-validation/options-validation.ts +12 -19
  748. package/src/package-checks/markdown-link-validation/options.ts +15 -1
  749. package/src/package-checks/markdown-link-validation/parse-facts-cache-payload.ts +245 -0
  750. package/src/package-checks/markdown-link-validation/parse-facts-cache.ts +154 -0
  751. package/src/package-checks/markdown-link-validation/resolver-engine.ts +75 -65
  752. package/src/package-checks/markdown-link-validation/source-reader.ts +86 -0
  753. package/src/package-checks/markdown-link-validation/unavailable-reasons.ts +42 -0
  754. package/src/package-checks/markdown-lint/adapter.ts +167 -0
  755. package/src/package-checks/markdown-lint/default-check.ts +92 -0
  756. package/src/package-checks/markdown-lint/execution.ts +266 -0
  757. package/src/package-checks/markdown-lint/final-data.ts +33 -0
  758. package/src/package-checks/markdown-lint/finding-messages.ts +87 -0
  759. package/src/package-checks/markdown-lint/finding-waiver-identity.ts +54 -0
  760. package/src/package-checks/markdown-lint/findings-cache.ts +141 -0
  761. package/src/package-checks/markdown-lint/options-resolution.ts +102 -0
  762. package/src/package-checks/markdown-lint/options-validation.ts +50 -0
  763. package/src/package-checks/markdown-lint/options.ts +82 -0
  764. package/src/package-checks/markdown-lint/records.ts +132 -0
  765. package/src/package-checks/markdown-lint/unavailable-reasons.ts +33 -0
  766. package/src/package-checks/project-files/collection.ts +39 -23
  767. package/src/package-checks/project-files/config-glob.ts +1 -17
  768. package/src/package-checks/project-files/configuration.ts +4 -15
  769. package/src/package-checks/project-files/gitlink-revision.ts +5 -7
  770. package/src/package-checks/project-files/gitlink-worktree.ts +36 -8
  771. package/src/package-checks/project-files/public-collection.ts +92 -0
  772. package/src/package-checks/project-files/revision-paths.ts +3 -3
  773. package/src/package-checks/project-files/revision-worktree-files.ts +17 -17
  774. package/src/package-checks/secret-detection/classification.ts +30 -0
  775. package/src/package-checks/secret-detection/default-check.ts +73 -0
  776. package/src/package-checks/secret-detection/execution.ts +247 -0
  777. package/src/package-checks/secret-detection/final-data.ts +57 -0
  778. package/src/package-checks/secret-detection/finding-waiver-identity.ts +37 -0
  779. package/src/package-checks/secret-detection/input-preparation.ts +290 -0
  780. package/src/package-checks/secret-detection/options-resolution.ts +65 -0
  781. package/src/package-checks/secret-detection/options-validation.ts +27 -0
  782. package/src/package-checks/secret-detection/options.ts +39 -0
  783. package/src/package-checks/secret-detection/records.ts +77 -0
  784. package/src/package-checks/secret-detection/secretlint/adapter.ts +122 -0
  785. package/src/package-tools/admission-policy/define-admission-policy.ts +54 -0
  786. package/src/package-tools/cache/cache-json-by-key.ts +300 -0
  787. package/src/package-tools/finding-presentation/finding-presentation.ts +69 -0
  788. package/src/{finding-waivers → package-tools/finding-waivers}/reconciliation.ts +16 -8
  789. package/src/package-tools/learned-critical-path/critical-path-ranking.ts +76 -0
  790. package/src/package-tools/learned-critical-path/duration-model/bounded-history.ts +108 -0
  791. package/src/package-tools/learned-critical-path/duration-model/prediction.ts +184 -0
  792. package/src/package-tools/learned-critical-path/duration-model/preparation.ts +79 -0
  793. package/src/package-tools/learned-critical-path/duration-model/recording.ts +209 -0
  794. package/src/package-tools/learned-critical-path/duration-model/storage.ts +251 -0
  795. package/src/package-tools/learned-critical-path/selection-layers.ts +71 -0
  796. package/src/package-tools/learned-critical-path/static-decision.ts +105 -0
  797. package/src/package-tools/learned-critical-path/strategy.ts +302 -0
  798. package/src/project-definition/check-tree/authoring.ts +40 -234
  799. package/src/project-definition/check-tree/check-fields-authoring.ts +242 -0
  800. package/src/project-definition/check-tree/collection-authoring.ts +13 -0
  801. package/src/project-definition/check-tree/flag-conditions.ts +99 -0
  802. package/src/project-definition/check-tree/materialization.ts +21 -9
  803. package/src/project-definition/check-tree/resolution.ts +84 -28
  804. package/src/project-definition/check-tree/scheduling-authoring.ts +114 -0
  805. package/src/project-definition/declarative-snapshot.ts +94 -0
  806. package/src/project-definition/output-defaults.ts +32 -1
  807. package/src/project-definition/output-validation.ts +15 -15
  808. package/src/project-definition/progress-rendering-output.ts +121 -0
  809. package/src/project-definition/project-changes.ts +112 -0
  810. package/src/project-definition/project-definition-validation.ts +166 -19
  811. package/src/project-definition/project-definition.ts +177 -67
  812. package/src/project-definition/resource-unit-mapping.ts +25 -0
  813. package/src/project-definition/scheduler-policy.ts +556 -0
  814. package/src/project-run/admission-strategy-provider/custom-strategy-preparation.ts +83 -0
  815. package/src/project-run/admission-strategy-provider/prepared-admission-strategy.ts +27 -0
  816. package/src/project-run/admission-strategy-provider/provider.ts +45 -0
  817. package/src/project-run/aggregation.ts +52 -70
  818. package/src/project-run/changes/git.ts +206 -0
  819. package/src/project-run/check-execution/admitted-check-execution.ts +62 -0
  820. package/src/project-run/check-execution/callback.ts +52 -9
  821. package/src/project-run/check-execution/console-capture.ts +262 -0
  822. package/src/project-run/check-execution/dependencies.ts +161 -10
  823. package/src/project-run/check-execution/execution-finalization.ts +103 -27
  824. package/src/project-run/check-execution/execution-settlement.ts +99 -32
  825. package/src/project-run/check-execution/flag-controls.ts +146 -0
  826. package/src/project-run/check-execution/lifecycle.ts +29 -0
  827. package/src/project-run/check-execution/messages.ts +8 -0
  828. package/src/project-run/check-execution/plan.ts +12 -8
  829. package/src/project-run/check-execution/{preflight-result.ts → preparation-result.ts} +34 -32
  830. package/src/project-run/check-execution/preparation.ts +309 -0
  831. package/src/project-run/check-execution/ready-check-execution.ts +97 -0
  832. package/src/project-run/check-execution/resolved-checks.ts +92 -232
  833. package/src/project-run/check-execution/resolved-execution-result.ts +22 -0
  834. package/src/project-run/check-execution/scheduled-check-run.ts +119 -0
  835. package/src/project-run/check-execution/terminal-result.ts +108 -29
  836. package/src/project-run/{completion.ts → completion/completion.ts} +33 -59
  837. package/src/project-run/{machine-publication.ts → completion/machine-publication.ts} +4 -4
  838. package/src/project-run/completion/result-resolver.ts +60 -0
  839. package/src/project-run/controls/contract.ts +22 -9
  840. package/src/project-run/controls/outputs-override-validation.ts +83 -60
  841. package/src/project-run/controls/validation-result.ts +17 -6
  842. package/src/project-run/controls/validation.ts +110 -68
  843. package/src/project-run/diagnostic-logging/diagnostic-detail-rendering.ts +1 -2
  844. package/src/project-run/diagnostic-logging/logger.ts +132 -207
  845. package/src/project-run/diagnostic-logging/observation-rendering.ts +203 -0
  846. package/src/project-run/invocation/candidate.ts +99 -0
  847. package/src/project-run/invocation/candidates.ts +56 -0
  848. package/src/project-run/invocation/creation.ts +120 -0
  849. package/src/project-run/invocation/execution.ts +136 -0
  850. package/src/project-run/invocation/paths.ts +154 -0
  851. package/src/project-run/invocation/progress.ts +38 -0
  852. package/src/project-run/invocation/run.ts +144 -0
  853. package/src/project-run/invocation/scheduler.ts +82 -0
  854. package/src/project-run/{output-configuration.ts → outputs/configuration.ts} +6 -5
  855. package/src/project-run/outputs/status.ts +161 -0
  856. package/src/project-run/progress-rendering/presentation.ts +150 -36
  857. package/src/project-run/progress-rendering/renderer-formatting.ts +185 -25
  858. package/src/project-run/progress-rendering/renderer-lifecycle.ts +61 -9
  859. package/src/project-run/progress-rendering/renderer.ts +23 -6
  860. package/src/project-run/project-context.ts +10 -5
  861. package/src/project-run/result.ts +50 -4
  862. package/src/project-run/run.ts +7 -6
  863. package/src/project-run/task-scheduler/admission-core/compiled-graph-lookup.ts +71 -0
  864. package/src/project-run/task-scheduler/admission-core/compiled-graph.ts +321 -0
  865. package/src/project-run/task-scheduler/admission-core/core.ts +278 -0
  866. package/src/project-run/task-scheduler/admission-core/input.ts +138 -0
  867. package/src/project-run/task-scheduler/admission-core/projection.ts +164 -0
  868. package/src/project-run/task-scheduler/admission-core/selection-index.ts +165 -0
  869. package/src/project-run/task-scheduler/admission-core/selection-query.ts +297 -0
  870. package/src/project-run/task-scheduler/admission-core/selection-seed.ts +282 -0
  871. package/src/project-run/task-scheduler/admission-core/selection-transition.ts +245 -0
  872. package/src/project-run/task-scheduler/admission-core/selection.ts +140 -0
  873. package/src/project-run/task-scheduler/admission-core/trace.ts +177 -0
  874. package/src/project-run/task-scheduler/admission-scope-layers.ts +44 -0
  875. package/src/project-run/task-scheduler/admission-selection-policy.ts +116 -0
  876. package/src/project-run/task-scheduler/custom-admission-policy.ts +128 -0
  877. package/src/project-run/task-scheduler/execution-state.ts +97 -6
  878. package/src/project-run/task-scheduler/forced-block-effect-replay.ts +68 -0
  879. package/src/project-run/task-scheduler/graph-validation.ts +77 -31
  880. package/src/project-run/task-scheduler/graph.ts +111 -3
  881. package/src/project-run/task-scheduler/measurement/diagnostics.ts +267 -0
  882. package/src/project-run/task-scheduler/measurement/integrals.ts +177 -0
  883. package/src/project-run/task-scheduler/measurement/policy.ts +105 -0
  884. package/src/project-run/task-scheduler/measurement/summary.ts +175 -0
  885. package/src/project-run/task-scheduler/measurement/timing.ts +198 -0
  886. package/src/project-run/task-scheduler/scheduler-admission-decision.ts +143 -134
  887. package/src/project-run/task-scheduler/scheduler-blocker-summary.ts +34 -9
  888. package/src/project-run/task-scheduler/scheduler-decision-inspection.ts +28 -170
  889. package/src/project-run/task-scheduler/scheduler-decision-model.ts +36 -40
  890. package/src/project-run/task-scheduler/scheduler-decision.ts +68 -36
  891. package/src/project-run/task-scheduler/scheduler-observation.ts +126 -0
  892. package/src/project-run/task-scheduler/scheduler-task-lifecycle.ts +150 -0
  893. package/src/project-run/task-scheduler/scheduler-terminal-measurement.ts +97 -0
  894. package/src/project-run/task-scheduler/scheduler.ts +233 -171
  895. package/types/check/check.d.ts +225 -69
  896. package/types/check/flag-enablement.d.ts +42 -0
  897. package/types/check/handoff-provider-identity.d.ts +12 -0
  898. package/types/check/inherited-collection.d.ts +1 -1
  899. package/types/check/project-changes.d.ts +13 -0
  900. package/types/check/project-context.d.ts +10 -0
  901. package/types/check-settlement/facts.d.ts +1 -1
  902. package/types/check-settlement/reason-shape.d.ts +5 -0
  903. package/types/check-settlement/record-store.d.ts +2 -2
  904. package/types/check-settlement/session.d.ts +3 -1
  905. package/types/data-boundary/canonical-data.d.ts +28 -5
  906. package/types/data-boundary/canonical-json.d.ts +18 -1
  907. package/types/data-boundary/closed-values.d.ts +24 -0
  908. package/types/data-boundary/config-glob.d.ts +5 -0
  909. package/types/data-boundary/project-path.d.ts +4 -0
  910. package/types/data-boundary/value-shapes.d.ts +3 -0
  911. package/types/index.d.ts +40 -9
  912. package/types/package-checks/check-authoring.d.ts +45 -0
  913. package/types/package-checks/code-quality-findings/finding-waiver-authoring.d.ts +7 -0
  914. package/types/package-checks/code-quality-findings/finding-waiver-evidence.d.ts +34 -0
  915. package/types/package-checks/code-quality-findings/policy.d.ts +4 -0
  916. package/types/package-checks/command-check/command-check.d.ts +48 -0
  917. package/types/package-checks/command-check/contract.d.ts +108 -0
  918. package/types/package-checks/command-check/execution.d.ts +7 -0
  919. package/types/package-checks/command-check/options.d.ts +11 -0
  920. package/types/package-checks/command-check/transcript.d.ts +8 -0
  921. package/types/package-checks/duplicate-detection/area-policy.d.ts +1 -1
  922. package/types/package-checks/duplicate-detection/default-check.d.ts +5 -2
  923. package/types/package-checks/duplicate-detection/finding-messages.d.ts +7 -0
  924. package/types/package-checks/duplicate-detection/finding-waiver-identity.d.ts +3 -0
  925. package/types/package-checks/duplicate-detection/jscpd/command-resolution.d.ts +1 -1
  926. package/types/package-checks/duplicate-detection/options.d.ts +21 -3
  927. package/types/package-checks/duplicate-detection/records.d.ts +20 -3
  928. package/types/package-checks/file-metrics/constructor.d.ts +5 -2
  929. package/types/package-checks/file-metrics/finding-messages.d.ts +4 -0
  930. package/types/package-checks/file-metrics/options.d.ts +4 -3
  931. package/types/package-checks/file-metrics/records.d.ts +5 -10
  932. package/types/package-checks/file-metrics/scc/batch-planner.d.ts +18 -0
  933. package/types/package-checks/file-metrics/scc/logical-scan-resources.d.ts +14 -0
  934. package/types/package-checks/file-metrics/scc/parser.d.ts +4 -4
  935. package/types/package-checks/function-metrics/analysis.d.ts +1 -1
  936. package/types/package-checks/function-metrics/analyzer/analysis-context.d.ts +174 -0
  937. package/types/package-checks/function-metrics/analyzer/analysis-model.d.ts +135 -0
  938. package/types/package-checks/function-metrics/analyzer/contracts.d.ts +48 -0
  939. package/types/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.d.ts +13 -0
  940. package/types/package-checks/function-metrics/analyzer/extensions/lizardnd.d.ts +28 -0
  941. package/types/package-checks/function-metrics/analyzer/extensions/protocol.d.ts +99 -0
  942. package/types/package-checks/function-metrics/analyzer/extensions/registry.d.ts +34 -0
  943. package/types/package-checks/function-metrics/analyzer/pipeline.d.ts +67 -0
  944. package/types/package-checks/function-metrics/analyzer/port-facade.d.ts +38 -0
  945. package/types/package-checks/function-metrics/analyzer/reader-registry.d.ts +18 -0
  946. package/types/package-checks/function-metrics/analyzer/readers/csharp.d.ts +22 -0
  947. package/types/package-checks/function-metrics/analyzer/readers/erlang.d.ts +22 -0
  948. package/types/package-checks/function-metrics/analyzer/readers/fortran.d.ts +29 -0
  949. package/types/package-checks/function-metrics/analyzer/readers/gdscript.d.ts +18 -0
  950. package/types/package-checks/function-metrics/analyzer/readers/go.d.ts +18 -0
  951. package/types/package-checks/function-metrics/analyzer/readers/java-body-states.d.ts +18 -0
  952. package/types/package-checks/function-metrics/analyzer/readers/java.d.ts +44 -0
  953. package/types/package-checks/function-metrics/analyzer/readers/javascript.d.ts +14 -0
  954. package/types/package-checks/function-metrics/analyzer/readers/kotlin.d.ts +23 -0
  955. package/types/package-checks/function-metrics/analyzer/readers/lua.d.ts +16 -0
  956. package/types/package-checks/function-metrics/analyzer/readers/objc.d.ts +18 -0
  957. package/types/package-checks/function-metrics/analyzer/readers/perl.d.ts +28 -0
  958. package/types/package-checks/function-metrics/analyzer/readers/php-states.d.ts +41 -0
  959. package/types/package-checks/function-metrics/analyzer/readers/php.d.ts +22 -0
  960. package/types/package-checks/function-metrics/analyzer/readers/plsql.d.ts +24 -0
  961. package/types/package-checks/function-metrics/analyzer/readers/python.d.ts +50 -0
  962. package/types/package-checks/function-metrics/analyzer/readers/r.d.ts +22 -0
  963. package/types/package-checks/function-metrics/analyzer/readers/ruby.d.ts +16 -0
  964. package/types/package-checks/function-metrics/analyzer/readers/rust.d.ts +20 -0
  965. package/types/package-checks/function-metrics/analyzer/readers/scala.d.ts +20 -0
  966. package/types/package-checks/function-metrics/analyzer/readers/solidity.d.ts +19 -0
  967. package/types/package-checks/function-metrics/analyzer/readers/st.d.ts +37 -0
  968. package/types/package-checks/function-metrics/analyzer/readers/swift.d.ts +30 -0
  969. package/types/package-checks/function-metrics/analyzer/readers/tsx.d.ts +15 -0
  970. package/types/package-checks/function-metrics/analyzer/readers/ttcn.d.ts +22 -0
  971. package/types/package-checks/function-metrics/analyzer/readers/typescript.d.ts +35 -0
  972. package/types/package-checks/function-metrics/analyzer/readers/vue.d.ts +18 -0
  973. package/types/package-checks/function-metrics/analyzer/readers/zig.d.ts +19 -0
  974. package/types/package-checks/function-metrics/analyzer/shared/clike.d.ts +101 -0
  975. package/types/package-checks/function-metrics/analyzer/shared/code-reader.d.ts +176 -0
  976. package/types/package-checks/function-metrics/analyzer/shared/golike.d.ts +39 -0
  977. package/types/package-checks/function-metrics/analyzer/shared/js-style-regex.d.ts +16 -0
  978. package/types/package-checks/function-metrics/analyzer/shared/rubylike.d.ts +40 -0
  979. package/types/package-checks/function-metrics/analyzer/shared/script-language.d.ts +17 -0
  980. package/types/package-checks/function-metrics/analyzer-adapter.d.ts +26 -0
  981. package/types/package-checks/function-metrics/analyzer-worker-contract.d.ts +5 -0
  982. package/types/package-checks/function-metrics/analyzer-worker-port.d.ts +24 -0
  983. package/types/package-checks/function-metrics/analyzer-worker.d.ts +1 -0
  984. package/types/package-checks/function-metrics/constructor.d.ts +6 -3
  985. package/types/package-checks/function-metrics/execution.d.ts +5 -2
  986. package/types/package-checks/function-metrics/finding-messages.d.ts +9 -0
  987. package/types/package-checks/function-metrics/finding-waiver-identity.d.ts +2 -0
  988. package/types/package-checks/function-metrics/measurement-model.d.ts +13 -1
  989. package/types/package-checks/function-metrics/measurement.d.ts +22 -7
  990. package/types/package-checks/function-metrics/options.d.ts +26 -12
  991. package/types/package-checks/function-metrics/records.d.ts +24 -5
  992. package/types/package-checks/function-metrics/target-files.d.ts +4 -3
  993. package/types/package-checks/host-environment/csv.d.ts +2 -0
  994. package/types/package-checks/host-environment/git.d.ts +3 -1
  995. package/types/package-checks/host-environment/path.d.ts +1 -3
  996. package/types/package-checks/host-environment/process/contract.d.ts +17 -9
  997. package/types/package-checks/host-environment/process.d.ts +5 -0
  998. package/types/package-checks/json-schema-validation/default-check.d.ts +4 -1
  999. package/types/package-checks/json-schema-validation/final-data.d.ts +8 -0
  1000. package/types/package-checks/json-schema-validation/options.d.ts +33 -4
  1001. package/types/package-checks/json-validation/default-check.d.ts +4 -1
  1002. package/types/package-checks/json-validation/final-data.d.ts +5 -0
  1003. package/types/package-checks/json-validation/options.d.ts +2 -1
  1004. package/types/package-checks/local-cache-options.d.ts +9 -0
  1005. package/types/package-checks/maintenance-reminders/final-data.d.ts +18 -0
  1006. package/types/package-checks/maintenance-reminders/maintenance-reminders.d.ts +11 -2
  1007. package/types/package-checks/markdown-link-validation/default-check.d.ts +13 -4
  1008. package/types/package-checks/markdown-link-validation/execution.d.ts +1 -3
  1009. package/types/package-checks/markdown-link-validation/final-data.d.ts +5 -0
  1010. package/types/package-checks/markdown-link-validation/finding-messages.d.ts +4 -0
  1011. package/types/package-checks/markdown-link-validation/local-resolution.d.ts +12 -6
  1012. package/types/package-checks/markdown-link-validation/local-resolver.d.ts +2 -1
  1013. package/types/package-checks/markdown-link-validation/options.d.ts +13 -1
  1014. package/types/package-checks/markdown-link-validation/parse-facts-cache-payload.d.ts +24 -0
  1015. package/types/package-checks/markdown-link-validation/parse-facts-cache.d.ts +13 -0
  1016. package/types/package-checks/markdown-link-validation/resolver-engine.d.ts +6 -4
  1017. package/types/package-checks/markdown-link-validation/source-reader.d.ts +11 -0
  1018. package/types/package-checks/markdown-link-validation/unavailable-reasons.d.ts +4 -0
  1019. package/types/package-checks/markdown-lint/adapter.d.ts +10 -0
  1020. package/types/package-checks/markdown-lint/default-check.d.ts +37 -0
  1021. package/types/package-checks/markdown-lint/execution.d.ts +24 -0
  1022. package/types/package-checks/markdown-lint/final-data.d.ts +8 -0
  1023. package/types/package-checks/markdown-lint/finding-messages.d.ts +6 -0
  1024. package/types/package-checks/markdown-lint/finding-waiver-identity.d.ts +3 -0
  1025. package/types/package-checks/markdown-lint/findings-cache.d.ts +17 -0
  1026. package/types/package-checks/markdown-lint/options-resolution.d.ts +3 -0
  1027. package/types/package-checks/markdown-lint/options-validation.d.ts +2 -0
  1028. package/types/package-checks/markdown-lint/options.d.ts +65 -0
  1029. package/types/package-checks/markdown-lint/records.d.ts +39 -0
  1030. package/types/package-checks/markdown-lint/unavailable-reasons.d.ts +3 -0
  1031. package/types/package-checks/project-files/public-collection.d.ts +16 -0
  1032. package/types/package-checks/secret-detection/classification.d.ts +12 -0
  1033. package/types/package-checks/secret-detection/default-check.d.ts +14 -0
  1034. package/types/package-checks/secret-detection/execution.d.ts +14 -0
  1035. package/types/package-checks/secret-detection/final-data.d.ts +15 -0
  1036. package/types/package-checks/secret-detection/finding-waiver-identity.d.ts +5 -0
  1037. package/types/package-checks/secret-detection/input-preparation.d.ts +24 -0
  1038. package/types/package-checks/secret-detection/options-resolution.d.ts +6 -0
  1039. package/types/package-checks/secret-detection/options-validation.d.ts +3 -0
  1040. package/types/package-checks/secret-detection/options.d.ts +33 -0
  1041. package/types/package-checks/secret-detection/records.d.ts +35 -0
  1042. package/types/package-checks/secret-detection/secretlint/adapter.d.ts +28 -0
  1043. package/types/package-tools/admission-policy/define-admission-policy.d.ts +26 -0
  1044. package/types/package-tools/cache/cache-json-by-key.d.ts +53 -0
  1045. package/types/package-tools/finding-presentation/finding-presentation.d.ts +27 -0
  1046. package/types/{finding-waivers → package-tools/finding-waivers}/reconciliation.d.ts +3 -3
  1047. package/types/package-tools/learned-critical-path/critical-path-ranking.d.ts +19 -0
  1048. package/types/package-tools/learned-critical-path/duration-model/bounded-history.d.ts +34 -0
  1049. package/types/package-tools/learned-critical-path/duration-model/prediction.d.ts +32 -0
  1050. package/types/package-tools/learned-critical-path/duration-model/preparation.d.ts +28 -0
  1051. package/types/package-tools/learned-critical-path/duration-model/recording.d.ts +28 -0
  1052. package/types/package-tools/learned-critical-path/duration-model/storage.d.ts +12 -0
  1053. package/types/package-tools/learned-critical-path/selection-layers.d.ts +14 -0
  1054. package/types/package-tools/learned-critical-path/static-decision.d.ts +3 -0
  1055. package/types/package-tools/learned-critical-path/strategy.d.ts +35 -0
  1056. package/types/project-definition/check-tree/authoring.d.ts +13 -14
  1057. package/types/project-definition/check-tree/check-fields-authoring.d.ts +30 -0
  1058. package/types/project-definition/check-tree/collection-authoring.d.ts +2 -0
  1059. package/types/project-definition/check-tree/flag-conditions.d.ts +5 -0
  1060. package/types/project-definition/check-tree/resolution.d.ts +13 -6
  1061. package/types/project-definition/check-tree/scheduling-authoring.d.ts +19 -0
  1062. package/types/project-definition/declarative-snapshot.d.ts +10 -0
  1063. package/types/project-definition/output-defaults.d.ts +7 -0
  1064. package/types/project-definition/output-validation.d.ts +2 -1
  1065. package/types/project-definition/progress-rendering-output.d.ts +41 -0
  1066. package/types/project-definition/project-changes.d.ts +30 -0
  1067. package/types/project-definition/project-definition.d.ts +49 -19
  1068. package/types/project-definition/resource-unit-mapping.d.ts +4 -0
  1069. package/types/project-definition/scheduler-policy.d.ts +497 -0
  1070. package/types/project-run/admission-strategy-provider/custom-strategy-preparation.d.ts +9 -0
  1071. package/types/project-run/admission-strategy-provider/prepared-admission-strategy.d.ts +23 -0
  1072. package/types/project-run/admission-strategy-provider/provider.d.ts +13 -0
  1073. package/types/project-run/aggregation.d.ts +8 -6
  1074. package/types/project-run/changes/git.d.ts +14 -0
  1075. package/types/project-run/check-execution/admitted-check-execution.d.ts +18 -0
  1076. package/types/project-run/check-execution/callback.d.ts +5 -1
  1077. package/types/project-run/check-execution/console-capture.d.ts +18 -0
  1078. package/types/project-run/check-execution/dependencies.d.ts +4 -1
  1079. package/types/project-run/check-execution/execution-finalization.d.ts +18 -8
  1080. package/types/project-run/check-execution/execution-settlement.d.ts +18 -7
  1081. package/types/project-run/check-execution/flag-controls.d.ts +27 -0
  1082. package/types/project-run/check-execution/lifecycle.d.ts +24 -0
  1083. package/types/project-run/check-execution/messages.d.ts +2 -0
  1084. package/types/project-run/check-execution/plan.d.ts +2 -3
  1085. package/types/project-run/check-execution/{preflight-result.d.ts → preparation-result.d.ts} +3 -3
  1086. package/types/project-run/check-execution/preparation.d.ts +29 -0
  1087. package/types/project-run/check-execution/ready-check-execution.d.ts +18 -0
  1088. package/types/project-run/check-execution/resolved-checks.d.ts +37 -44
  1089. package/types/project-run/check-execution/resolved-execution-result.d.ts +21 -0
  1090. package/types/project-run/check-execution/scheduled-check-run.d.ts +10 -0
  1091. package/types/project-run/check-execution/terminal-result.d.ts +13 -1
  1092. package/types/project-run/{completion.d.ts → completion/completion.d.ts} +7 -5
  1093. package/types/project-run/{machine-publication.d.ts → completion/machine-publication.d.ts} +3 -3
  1094. package/types/project-run/completion/result-resolver.d.ts +4 -0
  1095. package/types/project-run/controls/contract.d.ts +22 -9
  1096. package/types/project-run/controls/outputs-override-validation.d.ts +2 -1
  1097. package/types/project-run/controls/validation-result.d.ts +12 -4
  1098. package/types/project-run/diagnostic-logging/logger.d.ts +34 -4
  1099. package/types/project-run/diagnostic-logging/observation-rendering.d.ts +7 -0
  1100. package/types/project-run/invocation/candidate.d.ts +12 -0
  1101. package/types/project-run/invocation/candidates.d.ts +8 -0
  1102. package/types/project-run/{invocation-creation.d.ts → invocation/creation.d.ts} +3 -3
  1103. package/types/project-run/invocation/execution.d.ts +5 -0
  1104. package/types/project-run/invocation/paths.d.ts +40 -0
  1105. package/types/project-run/invocation/progress.d.ts +11 -0
  1106. package/types/project-run/invocation/run.d.ts +43 -0
  1107. package/types/project-run/invocation/scheduler.d.ts +16 -0
  1108. package/types/project-run/outputs/configuration.d.ts +3 -0
  1109. package/types/project-run/outputs/status.d.ts +48 -0
  1110. package/types/project-run/progress-rendering/presentation.d.ts +12 -7
  1111. package/types/project-run/progress-rendering/renderer-formatting.d.ts +13 -2
  1112. package/types/project-run/progress-rendering/renderer-lifecycle.d.ts +8 -1
  1113. package/types/project-run/progress-rendering/renderer.d.ts +11 -3
  1114. package/types/project-run/project-context.d.ts +5 -4
  1115. package/types/project-run/result.d.ts +38 -4
  1116. package/types/project-run/run.d.ts +6 -5
  1117. package/types/project-run/task-scheduler/admission-core/compiled-graph-lookup.d.ts +10 -0
  1118. package/types/project-run/task-scheduler/admission-core/compiled-graph.d.ts +31 -0
  1119. package/types/project-run/task-scheduler/admission-core/core.d.ts +57 -0
  1120. package/types/project-run/task-scheduler/admission-core/input.d.ts +4 -0
  1121. package/types/project-run/task-scheduler/admission-core/projection.d.ts +22 -0
  1122. package/types/project-run/task-scheduler/admission-core/selection-index.d.ts +61 -0
  1123. package/types/project-run/task-scheduler/admission-core/selection-query.d.ts +28 -0
  1124. package/types/project-run/task-scheduler/admission-core/selection-seed.d.ts +9 -0
  1125. package/types/project-run/task-scheduler/admission-core/selection-transition.d.ts +4 -0
  1126. package/types/project-run/task-scheduler/admission-core/selection.d.ts +20 -0
  1127. package/types/project-run/task-scheduler/admission-scope-layers.d.ts +8 -0
  1128. package/types/project-run/task-scheduler/admission-selection-policy.d.ts +31 -0
  1129. package/types/project-run/task-scheduler/custom-admission-policy.d.ts +6 -0
  1130. package/types/project-run/task-scheduler/execution-state.d.ts +43 -1
  1131. package/types/project-run/task-scheduler/forced-block-effect-replay.d.ts +9 -0
  1132. package/types/project-run/task-scheduler/graph-validation.d.ts +3 -2
  1133. package/types/project-run/task-scheduler/graph.d.ts +15 -0
  1134. package/types/project-run/task-scheduler/measurement/diagnostics.d.ts +47 -0
  1135. package/types/project-run/task-scheduler/measurement/integrals.d.ts +27 -0
  1136. package/types/project-run/task-scheduler/measurement/policy.d.ts +10 -0
  1137. package/types/project-run/task-scheduler/measurement/summary.d.ts +3 -0
  1138. package/types/project-run/task-scheduler/measurement/timing.d.ts +33 -0
  1139. package/types/project-run/task-scheduler/scheduler-admission-decision.d.ts +13 -1
  1140. package/types/project-run/task-scheduler/scheduler-decision-inspection.d.ts +20 -19
  1141. package/types/project-run/task-scheduler/scheduler-decision-model.d.ts +38 -22
  1142. package/types/project-run/task-scheduler/scheduler-decision.d.ts +4 -1
  1143. package/types/project-run/task-scheduler/scheduler-observation.d.ts +14 -0
  1144. package/types/project-run/task-scheduler/scheduler-task-lifecycle.d.ts +18 -0
  1145. package/types/project-run/task-scheduler/scheduler-terminal-measurement.d.ts +9 -0
  1146. package/dist/esm/finding-waivers/reconciliation.mjs.map +0 -1
  1147. package/dist/esm/package-checks/file-metrics/scc/csv.mjs +0 -17
  1148. package/dist/esm/package-checks/file-metrics/scc/csv.mjs.map +0 -1
  1149. package/dist/esm/package-checks/function-metrics/lizard/availability.mjs +0 -64
  1150. package/dist/esm/package-checks/function-metrics/lizard/availability.mjs.map +0 -1
  1151. package/dist/esm/package-checks/function-metrics/lizard/csv.mjs.map +0 -1
  1152. package/dist/esm/package-checks/function-metrics/lizard/parser.mjs +0 -138
  1153. package/dist/esm/package-checks/function-metrics/lizard/parser.mjs.map +0 -1
  1154. package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs +0 -35
  1155. package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs.map +0 -1
  1156. package/dist/esm/package-checks/host-environment/process/command.mjs +0 -13
  1157. package/dist/esm/package-checks/host-environment/process/command.mjs.map +0 -1
  1158. package/dist/esm/package-checks/project-files/config-glob.mjs.map +0 -1
  1159. package/dist/esm/project-run/check-execution/preflight-result.mjs.map +0 -1
  1160. package/dist/esm/project-run/check-execution/preflight.mjs +0 -186
  1161. package/dist/esm/project-run/check-execution/preflight.mjs.map +0 -1
  1162. package/dist/esm/project-run/completion.mjs.map +0 -1
  1163. package/dist/esm/project-run/invocation-creation.mjs +0 -111
  1164. package/dist/esm/project-run/invocation-creation.mjs.map +0 -1
  1165. package/dist/esm/project-run/invocation.mjs +0 -195
  1166. package/dist/esm/project-run/invocation.mjs.map +0 -1
  1167. package/dist/esm/project-run/machine-publication.mjs.map +0 -1
  1168. package/dist/esm/project-run/output-configuration.mjs.map +0 -1
  1169. package/dist/esm/project-run/output-status.mjs +0 -43
  1170. package/dist/esm/project-run/output-status.mjs.map +0 -1
  1171. package/src/package-checks/function-metrics/lizard/availability.ts +0 -90
  1172. package/src/package-checks/function-metrics/lizard/csv.ts +0 -20
  1173. package/src/package-checks/function-metrics/lizard/parser.ts +0 -179
  1174. package/src/package-checks/function-metrics/lizard/scanner.ts +0 -62
  1175. package/src/package-checks/host-environment/process/command.ts +0 -21
  1176. package/src/project-run/check-execution/preflight.ts +0 -321
  1177. package/src/project-run/invocation-creation.ts +0 -160
  1178. package/src/project-run/invocation.ts +0 -303
  1179. package/src/project-run/output-status.ts +0 -69
  1180. package/types/package-checks/file-metrics/scc/csv.d.ts +0 -1
  1181. package/types/package-checks/function-metrics/lizard/availability.d.ts +0 -11
  1182. package/types/package-checks/function-metrics/lizard/csv.d.ts +0 -1
  1183. package/types/package-checks/function-metrics/lizard/parser.d.ts +0 -17
  1184. package/types/package-checks/function-metrics/lizard/scanner.d.ts +0 -15
  1185. package/types/package-checks/host-environment/process/command.d.ts +0 -7
  1186. package/types/package-checks/project-files/config-glob.d.ts +0 -5
  1187. package/types/project-run/check-execution/preflight.d.ts +0 -27
  1188. package/types/project-run/invocation.d.ts +0 -34
  1189. package/types/project-run/output-configuration.d.ts +0 -3
  1190. package/types/project-run/output-status.d.ts +0 -21
@@ -0,0 +1,22 @@
1
+ import { snapshotExactClosedRecord } from "../../data-boundary/closed-values.mjs";
2
+ import { isPositiveSafeInteger } from "../../data-boundary/value-shapes.mjs";
3
+ import { validResolvedFindingWaivers } from "../code-quality-findings/finding-waiver-authoring.mjs";
4
+ import { validProjectFileSelection } from "../project-files/configuration.mjs";
5
+ import { resolveSecretDetectionFindingIdentity } from "./finding-waiver-identity.mjs";
6
+ /** Guards prepared options before a Run invokes a detector. */
7
+ export function validSecretDetectionOptions(value) {
8
+ const options = snapshotExactClosedRecord(value, [
9
+ "files",
10
+ "findingWaivers",
11
+ "maximumFileBytes",
12
+ "maximumFileCount",
13
+ "maximumTotalBytes"
14
+ ]);
15
+ return (options !== undefined &&
16
+ validProjectFileSelection(options.files) &&
17
+ validResolvedFindingWaivers(options.findingWaivers, resolveSecretDetectionFindingIdentity) &&
18
+ isPositiveSafeInteger(options.maximumFileBytes) &&
19
+ isPositiveSafeInteger(options.maximumFileCount) &&
20
+ isPositiveSafeInteger(options.maximumTotalBytes));
21
+ }
22
+ //# sourceMappingURL=options-validation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options-validation.mjs","sourceRoot":"","sources":["../../../../src/package-checks/secret-detection/options-validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,qCAAqC,EAAE,MAAM,8BAA8B,CAAC;AAGrF,+DAA+D;AAC/D,MAAM,UAAU,2BAA2B,CACzC,KAAc;IAEd,MAAM,OAAO,GAAG,yBAAyB,CAAC,KAAK,EAAE;QAC/C,OAAO;QACP,gBAAgB;QAChB,kBAAkB;QAClB,kBAAkB;QAClB,mBAAmB;KACpB,CAAC,CAAC;IACH,OAAO,CACL,OAAO,KAAK,SAAS;QACrB,yBAAyB,CAAC,OAAO,CAAC,KAAK,CAAC;QACxC,2BAA2B,CAAC,OAAO,CAAC,cAAc,EAAE,qCAAqC,CAAC;QAC1F,qBAAqB,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC/C,qBAAqB,CAAC,OAAO,CAAC,gBAAgB,CAAC;QAC/C,qBAAqB,CAAC,OAAO,CAAC,iBAAiB,CAAC,CACjD,CAAC;AACJ,CAAC","sourcesContent":["import { snapshotExactClosedRecord } from \"../../data-boundary/closed-values.ts\";\nimport { isPositiveSafeInteger } from \"../../data-boundary/value-shapes.ts\";\nimport { validResolvedFindingWaivers } from \"../code-quality-findings/finding-waiver-authoring.ts\";\nimport { validProjectFileSelection } from \"../project-files/configuration.ts\";\nimport { resolveSecretDetectionFindingIdentity } from \"./finding-waiver-identity.ts\";\nimport type { ResolvedSecretDetectionOptions } from \"./options.ts\";\n\n/** Guards prepared options before a Run invokes a detector. */\nexport function validSecretDetectionOptions(\n value: unknown\n): value is ResolvedSecretDetectionOptions {\n const options = snapshotExactClosedRecord(value, [\n \"files\",\n \"findingWaivers\",\n \"maximumFileBytes\",\n \"maximumFileCount\",\n \"maximumTotalBytes\"\n ]);\n return (\n options !== undefined &&\n validProjectFileSelection(options.files) &&\n validResolvedFindingWaivers(options.findingWaivers, resolveSecretDetectionFindingIdentity) &&\n isPositiveSafeInteger(options.maximumFileBytes) &&\n isPositiveSafeInteger(options.maximumFileCount) &&\n isPositiveSafeInteger(options.maximumTotalBytes)\n );\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=options.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.mjs","sourceRoot":"","sources":["../../../../src/package-checks/secret-detection/options.ts"],"names":[],"mappings":"","sourcesContent":["import type { PackageCheckAuthoringOptions } from \"../check-authoring.ts\";\nimport type { FindingWaiver } from \"../../package-tools/finding-waivers/reconciliation.ts\";\nimport type { ProjectFileSelection } from \"../project-files/configuration.ts\";\n\n/** `secretDetection(options)` 的明确 authoring policy。 */\nexport interface SecretDetectionOptions<\n Id extends string = string\n> extends PackageCheckAuthoringOptions<Id> {\n /** 必填的完整 project-file policy;只有它选中的 path 可以被读取或传给 detector。 */\n readonly files: ProjectFileSelection;\n /** 单个输入允许的最大 raw byte 数;超过时形成不可豁免的 coverage gap。 */\n readonly maximumFileBytes?: number;\n /** 一次 invocation 中允许读取和检测的累计 raw byte 数;超过时形成 coverage gap。 */\n readonly maximumTotalBytes?: number;\n /** 一次 invocation 中允许处理的 selected file 数;超过时形成 coverage gap。 */\n readonly maximumFileCount?: number;\n /** 对安全 finding identity 的精确、可审计误报豁免。 */\n readonly findingWaivers?: readonly FindingWaiver<SecretDetectionFindingIdentity>[];\n}\n\n/** 不含 raw value、message、hash 或 location 的 secret finding 身份。 */\nexport interface SecretDetectionFindingIdentity {\n readonly ordinal: number;\n readonly path: string;\n readonly ruleId: \"@secretlint/secretlint-rule-privatekey\";\n readonly structuralClass: \"text-document\";\n}\n\n/** `secretDetection` execution 消费的完整冻结 options。 */\nexport interface ResolvedSecretDetectionOptions {\n readonly files: ProjectFileSelection;\n readonly findingWaivers: readonly FindingWaiver<SecretDetectionFindingIdentity>[];\n readonly maximumFileBytes: number;\n readonly maximumFileCount: number;\n readonly maximumTotalBytes: number;\n}\n\n/** `findingWaivers` 的 public authoring alias。 */\nexport type SecretDetectionFindingWaiver = FindingWaiver<SecretDetectionFindingIdentity>;\n"]}
@@ -0,0 +1,31 @@
1
+ import { buildFindingWaiverAuditRecordData } from "../code-quality-findings/finding-waiver-evidence.mjs";
2
+ import { resolveSecretDetectionFindingIdentity } from "./finding-waiver-identity.mjs";
3
+ export function secretFindingIdentity(issue) {
4
+ return Object.freeze({
5
+ ordinal: issue.ordinal,
6
+ path: issue.path,
7
+ ruleId: issue.ruleId,
8
+ structuralClass: issue.structuralClass
9
+ });
10
+ }
11
+ export function secretFindingRecordId(identity) {
12
+ return `/secret-finding/${identity.path}/${identity.ordinal}`;
13
+ }
14
+ export function secretCoverageGapRecordId(path) {
15
+ return `/coverage-gap/${path}`;
16
+ }
17
+ export function secretDetectionWaiverAuditRecord(audit) {
18
+ const identity = secretDetectionWaiverIdentity(audit.waiver);
19
+ return Object.freeze({
20
+ data: buildFindingWaiverAuditRecordData(identity, audit),
21
+ id: `/finding-waiver-audit/${identity.path}/${identity.ordinal}`
22
+ });
23
+ }
24
+ function secretDetectionWaiverIdentity(waiver) {
25
+ const identity = resolveSecretDetectionFindingIdentity(waiver.identity);
26
+ if (identity === undefined) {
27
+ throw new TypeError("secretDetection waiver identity must be a safe finding identity");
28
+ }
29
+ return identity;
30
+ }
31
+ //# sourceMappingURL=records.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"records.mjs","sourceRoot":"","sources":["../../../../src/package-checks/secret-detection/records.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iCAAiC,EAAE,MAAM,qDAAqD,CAAC;AAIxG,OAAO,EAAE,qCAAqC,EAAE,MAAM,8BAA8B,CAAC;AAgCrF,MAAM,UAAU,qBAAqB,CAAC,KAA2B;IAC/D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,eAAe,EAAE,KAAK,CAAC,eAAe;KACvC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAwC;IAC5E,OAAO,mBAAmB,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,OAAO,iBAAiB,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,gCAAgC,CAC9C,KAA+B;IAE/B,MAAM,QAAQ,GAAG,6BAA6B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,iCAAiC,CAAC,QAAQ,EAAE,KAAK,CAAC;QACxD,EAAE,EAAE,yBAAyB,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE;KACjE,CAAC,CAAC;AACL,CAAC;AAED,SAAS,6BAA6B,CACpC,MAAiC;IAEjC,MAAM,QAAQ,GAAG,qCAAqC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,SAAS,CAAC,iEAAiE,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import type { MaterializedFindingWaiver } from \"../../package-tools/finding-waivers/reconciliation.ts\";\nimport type {\n FindingWaiverRecordAudit,\n FindingWaiverAuditRecordData\n} from \"../code-quality-findings/finding-waiver-evidence.ts\";\nimport { buildFindingWaiverAuditRecordData } from \"../code-quality-findings/finding-waiver-evidence.ts\";\nimport type { SecretDetectionCoverageGapReason } from \"./classification.ts\";\nimport type { SecretDetectionIssue } from \"./secretlint/adapter.ts\";\nimport type { SecretDetectionFindingIdentity } from \"./options.ts\";\nimport { resolveSecretDetectionFindingIdentity } from \"./finding-waiver-identity.ts\";\n\n/** An actionable or waived high-confidence secret finding. No detector value or message is retained. */\nexport interface SecretDetectionFindingRecordData {\n readonly blocking: boolean;\n readonly kind: \"secret-finding\";\n readonly location: SecretDetectionIssue[\"location\"];\n readonly ordinal: number;\n readonly path: string;\n readonly ruleId: \"@secretlint/secretlint-rule-privatekey\";\n readonly structuralClass: \"text-document\";\n readonly waiver?: Readonly<{ readonly reason: string }>;\n}\n\n/** A deterministic exact-input coverage gap. It is never reconciled through finding waiver policy. */\nexport interface SecretDetectionCoverageGapRecordData {\n readonly blocking: true;\n readonly kind: \"coverage-gap\";\n readonly path: string;\n readonly reason: SecretDetectionCoverageGapReason;\n}\n\n/** Unused or overmatched safe secret finding waiver evidence. */\nexport type SecretDetectionFindingWaiverAuditRecordData =\n FindingWaiverAuditRecordData<SecretDetectionFindingIdentity>;\n\n/** `secretDetection` 发布的全部补充 Record data。 */\nexport type SecretDetectionRecordData =\n | SecretDetectionCoverageGapRecordData\n | SecretDetectionFindingRecordData\n | SecretDetectionFindingWaiverAuditRecordData;\n\nexport function secretFindingIdentity(issue: SecretDetectionIssue): SecretDetectionFindingIdentity {\n return Object.freeze({\n ordinal: issue.ordinal,\n path: issue.path,\n ruleId: issue.ruleId,\n structuralClass: issue.structuralClass\n });\n}\n\nexport function secretFindingRecordId(identity: SecretDetectionFindingIdentity): string {\n return `/secret-finding/${identity.path}/${identity.ordinal}`;\n}\n\nexport function secretCoverageGapRecordId(path: string): string {\n return `/coverage-gap/${path}`;\n}\n\nexport function secretDetectionWaiverAuditRecord(\n audit: FindingWaiverRecordAudit\n): Readonly<{ readonly data: SecretDetectionFindingWaiverAuditRecordData; readonly id: string }> {\n const identity = secretDetectionWaiverIdentity(audit.waiver);\n return Object.freeze({\n data: buildFindingWaiverAuditRecordData(identity, audit),\n id: `/finding-waiver-audit/${identity.path}/${identity.ordinal}`\n });\n}\n\nfunction secretDetectionWaiverIdentity(\n waiver: MaterializedFindingWaiver\n): SecretDetectionFindingIdentity {\n const identity = resolveSecretDetectionFindingIdentity(waiver.identity);\n if (identity === undefined) {\n throw new TypeError(\"secretDetection waiver identity must be a safe finding identity\");\n }\n return identity;\n}\n"]}
@@ -0,0 +1,84 @@
1
+ import { snapshotClosedRecord } from "../../../data-boundary/closed-values.mjs";
2
+ import { lintSource } from "@secretlint/core";
3
+ import { creator as privateKeyRule } from "@secretlint/secretlint-rule-privatekey";
4
+ import { secretDetectionPrivateKeyRuleId, secretDetectionTextDocumentStructuralClass } from "../finding-waiver-identity.mjs";
5
+ /**
6
+ * Runs the fixed local Secretlint rule set against already-approved in-memory text.
7
+ * Third-party result, message text, data, error, and source content never leave this module.
8
+ */
9
+ export async function detectSecretlintIssues(content, projectRelativePath) {
10
+ try {
11
+ const result = await lintSource({
12
+ source: { content, contentType: "text", filePath: projectRelativePath },
13
+ options: {
14
+ config: {
15
+ rules: [{ id: secretDetectionPrivateKeyRuleId, rule: privateKeyRule, severity: "error" }]
16
+ },
17
+ maskSecrets: true,
18
+ noPhysicFilePath: true
19
+ }
20
+ });
21
+ return adaptSecretlintMessages(result.messages, projectRelativePath);
22
+ }
23
+ catch {
24
+ return Object.freeze({ kind: "unavailable" });
25
+ }
26
+ }
27
+ /** Converts only allowlisted Secretlint message fields to the safe Check-local issue DTO. */
28
+ export function adaptSecretlintMessages(messages, projectRelativePath) {
29
+ if (!Array.isArray(messages))
30
+ return Object.freeze({ kind: "protocol-failed" });
31
+ const issues = [];
32
+ for (const message of messages) {
33
+ const location = safeLocation(message);
34
+ if (location === undefined || !isPrivateKeyMessage(message)) {
35
+ return Object.freeze({ kind: "protocol-failed" });
36
+ }
37
+ issues.push(Object.freeze({
38
+ location,
39
+ ordinal: issues.length + 1,
40
+ path: projectRelativePath,
41
+ ruleId: secretDetectionPrivateKeyRuleId,
42
+ structuralClass: secretDetectionTextDocumentStructuralClass
43
+ }));
44
+ }
45
+ return Object.freeze({ issues: Object.freeze(issues), kind: "complete" });
46
+ }
47
+ function isPrivateKeyMessage(value) {
48
+ const message = snapshotClosedRecord(value);
49
+ return (message?.type === "message" &&
50
+ message?.ruleId === secretDetectionPrivateKeyRuleId &&
51
+ message?.severity === "error");
52
+ }
53
+ function safeLocation(value) {
54
+ const message = snapshotClosedRecord(value);
55
+ if (message === undefined)
56
+ return undefined;
57
+ const loc = snapshotClosedRecord(message.loc);
58
+ if (loc === undefined)
59
+ return undefined;
60
+ const start = loc.start;
61
+ const end = loc.end;
62
+ if (!isPosition(start) || !isPosition(end))
63
+ return undefined;
64
+ if (end.line < start.line || (end.line === start.line && end.column < start.column)) {
65
+ return undefined;
66
+ }
67
+ return Object.freeze({
68
+ endColumn: end.column + 1,
69
+ endLine: end.line,
70
+ startColumn: start.column + 1,
71
+ startLine: start.line
72
+ });
73
+ }
74
+ function isPosition(value) {
75
+ const position = snapshotClosedRecord(value);
76
+ return (position !== undefined &&
77
+ typeof position.column === "number" &&
78
+ Number.isSafeInteger(position.column) &&
79
+ position.column >= 0 &&
80
+ typeof position.line === "number" &&
81
+ Number.isSafeInteger(position.line) &&
82
+ position.line >= 1);
83
+ }
84
+ //# sourceMappingURL=adapter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.mjs","sourceRoot":"","sources":["../../../../../src/package-checks/secret-detection/secretlint/adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { snapshotClosedRecord } from \"../../../data-boundary/closed-values.ts\";\nimport { lintSource } from \"@secretlint/core\";\nimport { creator as privateKeyRule } from \"@secretlint/secretlint-rule-privatekey\";\n\nimport {\n secretDetectionPrivateKeyRuleId,\n secretDetectionTextDocumentStructuralClass\n} from \"../finding-waiver-identity.ts\";\n\n/** The only detector result shape allowed to leave this private adapter. */\nexport interface SecretDetectionIssue {\n readonly location: Readonly<{\n readonly endColumn: number;\n readonly endLine: number;\n readonly startColumn: number;\n readonly startLine: number;\n }>;\n readonly ordinal: number;\n readonly path: string;\n readonly ruleId: \"@secretlint/secretlint-rule-privatekey\";\n readonly structuralClass: \"text-document\";\n}\n\nexport type SecretlintDetectionResult = Readonly<\n | { readonly issues: readonly SecretDetectionIssue[]; readonly kind: \"complete\" }\n | { readonly kind: \"protocol-failed\" }\n | { readonly kind: \"unavailable\" }\n>;\n\n/**\n * Runs the fixed local Secretlint rule set against already-approved in-memory text.\n * Third-party result, message text, data, error, and source content never leave this module.\n */\nexport async function detectSecretlintIssues(\n content: string,\n projectRelativePath: string\n): Promise<SecretlintDetectionResult> {\n try {\n const result = await lintSource({\n source: { content, contentType: \"text\", filePath: projectRelativePath },\n options: {\n config: {\n rules: [{ id: secretDetectionPrivateKeyRuleId, rule: privateKeyRule, severity: \"error\" }]\n },\n maskSecrets: true,\n noPhysicFilePath: true\n }\n });\n return adaptSecretlintMessages(result.messages, projectRelativePath);\n } catch {\n return Object.freeze({ kind: \"unavailable\" });\n }\n}\n\n/** Converts only allowlisted Secretlint message fields to the safe Check-local issue DTO. */\nexport function adaptSecretlintMessages(\n messages: unknown,\n projectRelativePath: string\n): SecretlintDetectionResult {\n if (!Array.isArray(messages)) return Object.freeze({ kind: \"protocol-failed\" });\n\n const issues: SecretDetectionIssue[] = [];\n for (const message of messages) {\n const location = safeLocation(message);\n if (location === undefined || !isPrivateKeyMessage(message)) {\n return Object.freeze({ kind: \"protocol-failed\" });\n }\n issues.push(\n Object.freeze({\n location,\n ordinal: issues.length + 1,\n path: projectRelativePath,\n ruleId: secretDetectionPrivateKeyRuleId,\n structuralClass: secretDetectionTextDocumentStructuralClass\n })\n );\n }\n return Object.freeze({ issues: Object.freeze(issues), kind: \"complete\" });\n}\n\nfunction isPrivateKeyMessage(value: unknown): boolean {\n const message = snapshotClosedRecord(value);\n return (\n message?.type === \"message\" &&\n message?.ruleId === secretDetectionPrivateKeyRuleId &&\n message?.severity === \"error\"\n );\n}\n\nfunction safeLocation(value: unknown): SecretDetectionIssue[\"location\"] | undefined {\n const message = snapshotClosedRecord(value);\n if (message === undefined) return undefined;\n const loc = snapshotClosedRecord(message.loc);\n if (loc === undefined) return undefined;\n const start = loc.start;\n const end = loc.end;\n if (!isPosition(start) || !isPosition(end)) return undefined;\n if (end.line < start.line || (end.line === start.line && end.column < start.column)) {\n return undefined;\n }\n return Object.freeze({\n endColumn: end.column + 1,\n endLine: end.line,\n startColumn: start.column + 1,\n startLine: start.line\n });\n}\n\nfunction isPosition(\n value: unknown\n): value is Readonly<{ readonly column: number; readonly line: number }> {\n const position = snapshotClosedRecord(value);\n return (\n position !== undefined &&\n typeof position.column === \"number\" &&\n Number.isSafeInteger(position.column) &&\n position.column >= 0 &&\n typeof position.line === \"number\" &&\n Number.isSafeInteger(position.line) &&\n position.line >= 1\n );\n}\n"]}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * 保留 closed admission policy literal 的 TypeScript inference,不创建额外运行语义。
3
+ *
4
+ * @remarks inline policy 与此 helper 的结果完全等价。custom simple `decide` 同步运行;prepared
5
+ * strategy 为每个 graph-ready Run 解析独立 closure,调用方负责其 trusted host callback 的可重入性。
6
+ */
7
+ export function defineAdmissionPolicy(policy) {
8
+ return policy;
9
+ }
10
+ //# sourceMappingURL=define-admission-policy.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-admission-policy.mjs","sourceRoot":"","sources":["../../../../src/package-tools/admission-policy/define-admission-policy.ts"],"names":[],"mappings":"AA2CA;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAA+B;IAE/B,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import type {\n AdmissionPolicy,\n CustomAdmissionPreparationContext,\n CustomAdmissionStrategy,\n PreparedCustomAdmissionStrategy\n} from \"../../project-definition/scheduler-policy.ts\";\n\ntype ExactAdmissionPolicy<T extends AdmissionPolicy> =\n T extends Readonly<{ readonly kind: \"static\" }>\n ? T & Record<Exclude<keyof T, \"kind\">, never>\n : T extends Readonly<{ readonly kind: \"custom\" }>\n ? T &\n Record<Exclude<keyof T, \"kind\" | \"strategy\">, never> &\n Readonly<{\n readonly strategy: ExactCustomAdmissionStrategy<T[\"strategy\"]>;\n }>\n : never;\n\ntype ExactCustomAdmissionStrategy<T extends CustomAdmissionStrategy> =\n T extends Readonly<{ readonly kind: \"simple\" }>\n ? T & Record<Exclude<keyof T, \"kind\" | \"decide\">, never>\n : T extends Readonly<{ readonly kind: \"prepared\" }>\n ? T &\n Record<Exclude<keyof T, \"kind\" | \"prepare\">, never> &\n Readonly<{ readonly prepare: ExactCustomPreparation<T[\"prepare\"]> }>\n : never;\n\ntype ExactCustomPreparation<T> = T extends (\n this: void,\n context: CustomAdmissionPreparationContext\n) => infer Result\n ? (this: void, context: CustomAdmissionPreparationContext) => ExactCustomPreparationResult<Result>\n : never;\n\ntype ExactCustomPreparationResult<T> =\n T extends Promise<unknown>\n ? Promise<ExactPreparedCustomAdmissionStrategy<Awaited<T>>>\n : ExactPreparedCustomAdmissionStrategy<T>;\n\ntype ExactPreparedCustomAdmissionStrategy<T> = T extends PreparedCustomAdmissionStrategy\n ? T & Record<Exclude<keyof T, \"decide\" | \"terminalEffect\">, never>\n : never;\n\n/**\n * 保留 closed admission policy literal 的 TypeScript inference,不创建额外运行语义。\n *\n * @remarks inline policy 与此 helper 的结果完全等价。custom simple `decide` 同步运行;prepared\n * strategy 为每个 graph-ready Run 解析独立 closure,调用方负责其 trusted host callback 的可重入性。\n */\nexport function defineAdmissionPolicy<const T extends AdmissionPolicy>(\n policy: ExactAdmissionPolicy<T>\n): T {\n return policy;\n}\n"]}
@@ -0,0 +1,188 @@
1
+ /** caller-keyed canonical JSON cache 的公开存储边界。 */
2
+ import { createHash, randomUUID } from "node:crypto";
3
+ import { promises as fs } from "node:fs";
4
+ import { isAbsolute, join } from "node:path";
5
+ import { canonicalizeJsonObject, canonicalJsonBytes } from "../../data-boundary/canonical-data.mjs";
6
+ import { snapshotExactClosedRecord } from "../../data-boundary/closed-values.mjs";
7
+ const CACHE_API_VERSION = "caller-keyed-json-v1";
8
+ const CACHE_ENVELOPE_KEYS = ["cacheFormatVersion", "identityDigest", "payload"];
9
+ /**
10
+ * 按 caller 提供的完整 semantic key 复用本地 canonical JSON object。
11
+ *
12
+ * cache hit 不会跳过或重放 Check settlement、Records、messages、duration 或 side effects。读取或写入失败
13
+ * 只通过返回的 observation 可见;只要 `compute` 与 `parse` 成功,就仍返回本次 computation 的 value。
14
+ * 不提供依赖发现、默认目录、lock/single-flight、TTL/LRU、cleanup、remote cache 或 tamper protection。
15
+ */
16
+ export async function cacheJsonByKey(authoredOptions) {
17
+ const options = parseOptions(authoredOptions);
18
+ const identityDigest = cacheIdentityDigest(options);
19
+ const targetPath = join(options.directory, `${identityDigest}.json`);
20
+ const cached = await readCacheEntry({ identityDigest, parse: options.parse, targetPath });
21
+ if (cached.hit) {
22
+ return Object.freeze({
23
+ read: "hit",
24
+ source: "cache",
25
+ value: cached.value,
26
+ write: "not-attempted"
27
+ });
28
+ }
29
+ const payload = canonicalizeJsonObject(await options.compute());
30
+ if (payload === undefined) {
31
+ throw new TypeError("cacheJsonByKey compute must return a canonical JSON object");
32
+ }
33
+ const value = parseSynchronously(options.parse, payload, "computed value");
34
+ const stored = await publishCacheEntry({
35
+ directory: options.directory,
36
+ identityDigest,
37
+ parse: options.parse,
38
+ payload,
39
+ targetPath
40
+ });
41
+ return Object.freeze({
42
+ read: cached.read,
43
+ source: "computed",
44
+ value,
45
+ write: stored ? "stored" : "failed"
46
+ });
47
+ }
48
+ function parseOptions(value) {
49
+ const record = snapshotExactClosedRecord(value, [
50
+ "compute",
51
+ "directory",
52
+ "key",
53
+ "namespace",
54
+ "parse",
55
+ "version"
56
+ ]);
57
+ if (record === undefined) {
58
+ throw new TypeError("cacheJsonByKey options must be a closed object");
59
+ }
60
+ const { compute, directory, key, namespace, parse, version } = record;
61
+ if (typeof compute !== "function" || typeof parse !== "function") {
62
+ throw new TypeError("cacheJsonByKey compute and parse must be functions");
63
+ }
64
+ if (typeof directory !== "string" ||
65
+ directory.length === 0 ||
66
+ directory.includes("\0") ||
67
+ !isAbsolute(directory)) {
68
+ throw new TypeError("cacheJsonByKey directory must be a non-empty absolute path without U+0000");
69
+ }
70
+ if (typeof namespace !== "string" || namespace.length === 0) {
71
+ throw new TypeError("cacheJsonByKey namespace must be a non-empty string");
72
+ }
73
+ if (typeof version !== "string" || version.length === 0) {
74
+ throw new TypeError("cacheJsonByKey version must be a non-empty string");
75
+ }
76
+ if (typeof key !== "string" || key.length === 0) {
77
+ throw new TypeError("cacheJsonByKey key must be a non-empty string");
78
+ }
79
+ const typedOptions = {
80
+ compute: value.compute,
81
+ directory: value.directory,
82
+ key: value.key,
83
+ namespace: value.namespace,
84
+ parse: value.parse,
85
+ version: value.version
86
+ };
87
+ if (typedOptions.compute !== compute ||
88
+ typedOptions.directory !== directory ||
89
+ typedOptions.key !== key ||
90
+ typedOptions.namespace !== namespace ||
91
+ typedOptions.parse !== parse ||
92
+ typedOptions.version !== version) {
93
+ throw new TypeError("cacheJsonByKey options changed during validation");
94
+ }
95
+ return Object.freeze(typedOptions);
96
+ }
97
+ function cacheIdentityDigest(options) {
98
+ return createHash("sha256")
99
+ .update(canonicalJsonBytes({
100
+ cacheApiVersion: CACHE_API_VERSION,
101
+ key: options.key,
102
+ namespace: options.namespace,
103
+ payloadVersion: options.version
104
+ }))
105
+ .digest("hex");
106
+ }
107
+ async function readCacheEntry(input) {
108
+ let source;
109
+ try {
110
+ source = await fs.readFile(input.targetPath, "utf8");
111
+ }
112
+ catch (error) {
113
+ return isMissingPath(error)
114
+ ? Object.freeze({ hit: false, read: "miss" })
115
+ : Object.freeze({ hit: false, read: "failed" });
116
+ }
117
+ try {
118
+ const envelope = parseEnvelope(JSON.parse(source), input.identityDigest);
119
+ if (envelope === undefined)
120
+ return Object.freeze({ hit: false, read: "invalid" });
121
+ return Object.freeze({
122
+ hit: true,
123
+ value: parseSynchronously(input.parse, envelope.payload, "cached payload")
124
+ });
125
+ }
126
+ catch {
127
+ return Object.freeze({ hit: false, read: "invalid" });
128
+ }
129
+ }
130
+ function parseEnvelope(value, identityDigest) {
131
+ const record = snapshotExactClosedRecord(value, CACHE_ENVELOPE_KEYS);
132
+ if (record === undefined)
133
+ return undefined;
134
+ if (record.cacheFormatVersion !== CACHE_API_VERSION || record.identityDigest !== identityDigest) {
135
+ return undefined;
136
+ }
137
+ const payload = canonicalizeJsonObject(record.payload);
138
+ return payload === undefined ? undefined : Object.freeze({ payload });
139
+ }
140
+ function parseSynchronously(parse, payload, subject) {
141
+ const value = parse(payload);
142
+ if (isThenable(value))
143
+ throw new TypeError(`cacheJsonByKey parse must synchronously return ${subject}`);
144
+ return value;
145
+ }
146
+ function isThenable(value) {
147
+ return (((typeof value === "object" && value !== null) || typeof value === "function") &&
148
+ typeof value.then === "function");
149
+ }
150
+ async function publishCacheEntry(input) {
151
+ const temporaryPath = join(input.directory, `.vibe-check-cache-${randomUUID()}.tmp`);
152
+ try {
153
+ await fs.mkdir(input.directory, { recursive: true });
154
+ await fs.writeFile(temporaryPath, JSON.stringify({
155
+ cacheFormatVersion: CACHE_API_VERSION,
156
+ identityDigest: input.identityDigest,
157
+ payload: input.payload
158
+ }), { encoding: "utf8", flag: "wx" });
159
+ }
160
+ catch {
161
+ await fs.rm(temporaryPath, { force: true }).catch(() => undefined);
162
+ return false;
163
+ }
164
+ try {
165
+ await fs.rename(temporaryPath, input.targetPath);
166
+ return true;
167
+ }
168
+ catch (error) {
169
+ if (isConcurrentTargetConflict(error)) {
170
+ const concurrent = await readCacheEntry({
171
+ identityDigest: input.identityDigest,
172
+ parse: input.parse,
173
+ targetPath: input.targetPath
174
+ });
175
+ await fs.rm(temporaryPath, { force: true }).catch(() => undefined);
176
+ return concurrent.hit;
177
+ }
178
+ await fs.rm(temporaryPath, { force: true }).catch(() => undefined);
179
+ return false;
180
+ }
181
+ }
182
+ function isConcurrentTargetConflict(error) {
183
+ return (typeof error === "object" && error !== null && error.code === "EEXIST");
184
+ }
185
+ function isMissingPath(error) {
186
+ return (typeof error === "object" && error !== null && error.code === "ENOENT");
187
+ }
188
+ //# sourceMappingURL=cache-json-by-key.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-json-by-key.mjs","sourceRoot":"","sources":["../../../../src/package-tools/cache/cache-json-by-key.ts"],"names":[],"mappings":"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","sourcesContent":["/** caller-keyed canonical JSON cache 的公开存储边界。 */\nimport { createHash, randomUUID } from \"node:crypto\";\nimport { promises as fs } from \"node:fs\";\nimport { isAbsolute, join } from \"node:path\";\n\nimport {\n canonicalizeJsonObject,\n canonicalJsonBytes,\n type CanonicalJsonObject\n} from \"../../data-boundary/canonical-data.ts\";\nimport { snapshotExactClosedRecord } from \"../../data-boundary/closed-values.ts\";\n\nconst CACHE_API_VERSION = \"caller-keyed-json-v1\";\nconst CACHE_ENVELOPE_KEYS = [\"cacheFormatVersion\", \"identityDigest\", \"payload\"] as const;\n\n/**\n * `cacheJsonByKey` 的 caller-owned identity、payload parser 与 computation。\n *\n * `key` 必须覆盖所有会改变 computation 结果的输入、实现、options、toolchain 与声明的外部状态;\n * 不能放入 secret 或低熵敏感值。`directory` 是调用方信任、可自行删除的本地状态空间。\n */\ntype NonThenable<T extends object> = T & Readonly<{ readonly then?: undefined }>;\n\n/** Caller-keyed JSON cache 的 options。 */\nexport interface CacheJsonByKeyOptions<T extends object> {\n /** cache miss、读取失败或 payload 无效时执行的 sync/async computation。 */\n readonly compute: () => unknown;\n /** 调用方信任、可自行清理的 absolute local directory。 */\n readonly directory: string;\n /** 覆盖所有影响 computation 结果的完整 semantic key;不得包含 secret 或低熵敏感值。 */\n readonly key: string;\n /** 调用方为这一类缓存选择的非空 identity namespace。 */\n readonly namespace: string;\n /** 同步验证 cached/computed canonical JSON object,并返回调用方的 typed value。 */\n readonly parse: (value: unknown) => NonThenable<T>;\n /** 调用方控制、在 payload 或 computation contract 改变时更新的非空版本。 */\n readonly version: string;\n}\n\n/** `cacheJsonByKey` 返回的闭合 cache observation 与本次 parser value。 */\nexport type CacheJsonByKeyResult<T extends object> =\n | Readonly<{\n /** 已读取并通过 parser 验证现有 payload。 */\n readonly read: \"hit\";\n /** 本次 value 来自 cache,不调用 `compute`。 */\n readonly source: \"cache\";\n /** `parse` 返回的调用方 typed value。 */\n readonly value: T;\n /** cache hit 不尝试重新写入。 */\n readonly write: \"not-attempted\";\n }>\n | Readonly<{\n /** 没有 entry、读取失败,或已有 payload 未通过 identity/parser 验证。 */\n readonly read: \"failed\" | \"invalid\" | \"miss\";\n /** 本次 value 来自成功的 `compute` 与 `parse`。 */\n readonly source: \"computed\";\n /** `parse` 返回的调用方 typed value。 */\n readonly value: T;\n /** 新 payload 已存储,或存储失败但 typed value 仍可使用。 */\n readonly write: \"failed\" | \"stored\";\n }>;\n\n/**\n * 按 caller 提供的完整 semantic key 复用本地 canonical JSON object。\n *\n * cache hit 不会跳过或重放 Check settlement、Records、messages、duration 或 side effects。读取或写入失败\n * 只通过返回的 observation 可见;只要 `compute` 与 `parse` 成功,就仍返回本次 computation 的 value。\n * 不提供依赖发现、默认目录、lock/single-flight、TTL/LRU、cleanup、remote cache 或 tamper protection。\n */\nexport async function cacheJsonByKey<T extends object>(\n authoredOptions: CacheJsonByKeyOptions<T>\n): Promise<CacheJsonByKeyResult<T>> {\n const options = parseOptions(authoredOptions);\n const identityDigest = cacheIdentityDigest(options);\n const targetPath = join(options.directory, `${identityDigest}.json`);\n const cached = await readCacheEntry({ identityDigest, parse: options.parse, targetPath });\n if (cached.hit) {\n return Object.freeze({\n read: \"hit\",\n source: \"cache\",\n value: cached.value,\n write: \"not-attempted\"\n });\n }\n\n const payload = canonicalizeJsonObject(await options.compute());\n if (payload === undefined) {\n throw new TypeError(\"cacheJsonByKey compute must return a canonical JSON object\");\n }\n const value = parseSynchronously(options.parse, payload, \"computed value\");\n const stored = await publishCacheEntry({\n directory: options.directory,\n identityDigest,\n parse: options.parse,\n payload,\n targetPath\n });\n return Object.freeze({\n read: cached.read,\n source: \"computed\",\n value,\n write: stored ? \"stored\" : \"failed\"\n });\n}\n\ntype ParsedOptions<T extends object> = Readonly<{\n readonly compute: () => unknown;\n readonly directory: string;\n readonly key: string;\n readonly namespace: string;\n readonly parse: (value: unknown) => T;\n readonly version: string;\n}>;\n\nfunction parseOptions<T extends object>(value: CacheJsonByKeyOptions<T>): ParsedOptions<T> {\n const record = snapshotExactClosedRecord(value, [\n \"compute\",\n \"directory\",\n \"key\",\n \"namespace\",\n \"parse\",\n \"version\"\n ]);\n if (record === undefined) {\n throw new TypeError(\"cacheJsonByKey options must be a closed object\");\n }\n const { compute, directory, key, namespace, parse, version } = record;\n if (typeof compute !== \"function\" || typeof parse !== \"function\") {\n throw new TypeError(\"cacheJsonByKey compute and parse must be functions\");\n }\n if (\n typeof directory !== \"string\" ||\n directory.length === 0 ||\n directory.includes(\"\\0\") ||\n !isAbsolute(directory)\n ) {\n throw new TypeError(\n \"cacheJsonByKey directory must be a non-empty absolute path without U+0000\"\n );\n }\n if (typeof namespace !== \"string\" || namespace.length === 0) {\n throw new TypeError(\"cacheJsonByKey namespace must be a non-empty string\");\n }\n if (typeof version !== \"string\" || version.length === 0) {\n throw new TypeError(\"cacheJsonByKey version must be a non-empty string\");\n }\n if (typeof key !== \"string\" || key.length === 0) {\n throw new TypeError(\"cacheJsonByKey key must be a non-empty string\");\n }\n const typedOptions: ParsedOptions<T> = {\n compute: value.compute,\n directory: value.directory,\n key: value.key,\n namespace: value.namespace,\n parse: value.parse,\n version: value.version\n };\n if (\n typedOptions.compute !== compute ||\n typedOptions.directory !== directory ||\n typedOptions.key !== key ||\n typedOptions.namespace !== namespace ||\n typedOptions.parse !== parse ||\n typedOptions.version !== version\n ) {\n throw new TypeError(\"cacheJsonByKey options changed during validation\");\n }\n return Object.freeze(typedOptions);\n}\n\nfunction cacheIdentityDigest(options: ParsedOptions<object>): string {\n return createHash(\"sha256\")\n .update(\n canonicalJsonBytes({\n cacheApiVersion: CACHE_API_VERSION,\n key: options.key,\n namespace: options.namespace,\n payloadVersion: options.version\n })\n )\n .digest(\"hex\");\n}\n\ntype CacheRead<T extends object> =\n | Readonly<{ readonly hit: true; readonly value: T }>\n | Readonly<{ readonly hit: false; readonly read: \"failed\" | \"invalid\" | \"miss\" }>;\n\nasync function readCacheEntry<T extends object>(\n input: Readonly<{\n readonly identityDigest: string;\n readonly parse: (value: unknown) => T;\n readonly targetPath: string;\n }>\n): Promise<CacheRead<T>> {\n let source: string;\n try {\n source = await fs.readFile(input.targetPath, \"utf8\");\n } catch (error: unknown) {\n return isMissingPath(error)\n ? Object.freeze({ hit: false, read: \"miss\" })\n : Object.freeze({ hit: false, read: \"failed\" });\n }\n try {\n const envelope = parseEnvelope(JSON.parse(source), input.identityDigest);\n if (envelope === undefined) return Object.freeze({ hit: false, read: \"invalid\" });\n return Object.freeze({\n hit: true,\n value: parseSynchronously(input.parse, envelope.payload, \"cached payload\")\n });\n } catch {\n return Object.freeze({ hit: false, read: \"invalid\" });\n }\n}\n\nfunction parseEnvelope(\n value: unknown,\n identityDigest: string\n): Readonly<{ readonly payload: CanonicalJsonObject }> | undefined {\n const record = snapshotExactClosedRecord(value, CACHE_ENVELOPE_KEYS);\n if (record === undefined) return undefined;\n if (record.cacheFormatVersion !== CACHE_API_VERSION || record.identityDigest !== identityDigest) {\n return undefined;\n }\n const payload = canonicalizeJsonObject(record.payload);\n return payload === undefined ? undefined : Object.freeze({ payload });\n}\n\nfunction parseSynchronously<T extends object>(\n parse: (value: unknown) => T,\n payload: CanonicalJsonObject,\n subject: string\n): T {\n const value = parse(payload);\n if (isThenable(value))\n throw new TypeError(`cacheJsonByKey parse must synchronously return ${subject}`);\n return value;\n}\n\nfunction isThenable(value: unknown): boolean {\n return (\n ((typeof value === \"object\" && value !== null) || typeof value === \"function\") &&\n typeof (value as { then?: unknown }).then === \"function\"\n );\n}\n\nasync function publishCacheEntry<T extends object>(\n input: Readonly<{\n readonly directory: string;\n readonly identityDigest: string;\n readonly parse: (value: unknown) => T;\n readonly payload: CanonicalJsonObject;\n readonly targetPath: string;\n }>\n): Promise<boolean> {\n const temporaryPath = join(input.directory, `.vibe-check-cache-${randomUUID()}.tmp`);\n try {\n await fs.mkdir(input.directory, { recursive: true });\n await fs.writeFile(\n temporaryPath,\n JSON.stringify({\n cacheFormatVersion: CACHE_API_VERSION,\n identityDigest: input.identityDigest,\n payload: input.payload\n }),\n { encoding: \"utf8\", flag: \"wx\" }\n );\n } catch {\n await fs.rm(temporaryPath, { force: true }).catch(() => undefined);\n return false;\n }\n\n try {\n await fs.rename(temporaryPath, input.targetPath);\n return true;\n } catch (error: unknown) {\n if (isConcurrentTargetConflict(error)) {\n const concurrent = await readCacheEntry({\n identityDigest: input.identityDigest,\n parse: input.parse,\n targetPath: input.targetPath\n });\n await fs.rm(temporaryPath, { force: true }).catch(() => undefined);\n return concurrent.hit;\n }\n await fs.rm(temporaryPath, { force: true }).catch(() => undefined);\n return false;\n }\n}\n\nfunction isConcurrentTargetConflict(error: unknown): boolean {\n return (\n typeof error === \"object\" && error !== null && (error as { code?: unknown }).code === \"EEXIST\"\n );\n}\n\nfunction isMissingPath(error: unknown): boolean {\n return (\n typeof error === \"object\" && error !== null && (error as { code?: unknown }).code === \"ENOENT\"\n );\n}\n"]}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * 将调用方已经稳定排序的 Finding 投影为有界 Check messages。
3
+ *
4
+ * `limit`、安全字段和超限后的深入查看说明都由 producing Check 决定。Product 不读取 Finding
5
+ * shape,也不猜测完整明细位于 Records、artifact、transcript 或其它位置。
6
+ */
7
+ export function presentCheckFindings(input) {
8
+ assertFindingLimit(input.limit);
9
+ if (input.findings.length === 0)
10
+ return Object.freeze([]);
11
+ const presentedFindings = input.findings.slice(0, input.limit);
12
+ const messages = presentedFindings.map((finding, index) => Object.freeze({ ...input.message(finding, index) }));
13
+ const omittedFindings = Object.freeze(input.findings.slice(input.limit));
14
+ if (omittedFindings.length > 0) {
15
+ messages.push(Object.freeze({
16
+ ...input.omittedMessage(Object.freeze({
17
+ omittedFindings,
18
+ omittedCount: omittedFindings.length,
19
+ presentedCount: presentedFindings.length,
20
+ totalCount: input.findings.length
21
+ }))
22
+ }));
23
+ }
24
+ return Object.freeze(messages);
25
+ }
26
+ /** Appends presentation-only messages without changing the owning terminal result. */
27
+ export function appendCheckMessages(result, messages) {
28
+ if (messages.length === 0)
29
+ return result;
30
+ return Object.freeze({
31
+ ...result,
32
+ messages: Object.freeze([...(result.messages ?? []), ...messages])
33
+ });
34
+ }
35
+ function assertFindingLimit(limit) {
36
+ if (!Number.isSafeInteger(limit) || limit < 0) {
37
+ throw new TypeError("Finding presentation limit must be a non-negative safe integer");
38
+ }
39
+ }
40
+ //# sourceMappingURL=finding-presentation.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finding-presentation.mjs","sourceRoot":"","sources":["../../../../src/package-tools/finding-presentation/finding-presentation.ts"],"names":[],"mappings":"AAeA;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAU,KAK7C;IACC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAE1D,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CACxD,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CACpD,CAAC;IACF,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACzE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CACX,MAAM,CAAC,MAAM,CAAC;YACZ,GAAG,KAAK,CAAC,cAAc,CACrB,MAAM,CAAC,MAAM,CAAC;gBACZ,eAAe;gBACf,YAAY,EAAE,eAAe,CAAC,MAAM;gBACpC,cAAc,EAAE,iBAAiB,CAAC,MAAM;gBACxC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,MAAM;aAClC,CAAC,CACH;SACF,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,mBAAmB,CACjC,MAAyB,EACzB,QAAiC;IAEjC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACzC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,MAAM;QACT,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC;KACnE,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa;IACvC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,SAAS,CAAC,gEAAgE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC","sourcesContent":["import type { CheckResult } from \"../../check/check.ts\";\n\ntype CheckMessage = NonNullable<CheckResult[\"messages\"]>[number];\n\n/**\n * 将 Check-owned Finding 投影为有界 terminal messages 所需的超限上下文。\n * 完整 Finding facts 与深入查看位置继续由调用方拥有。\n */\nexport interface FindingOverflowContext<Finding> {\n readonly omittedFindings: readonly Finding[];\n readonly omittedCount: number;\n readonly presentedCount: number;\n readonly totalCount: number;\n}\n\n/**\n * 将调用方已经稳定排序的 Finding 投影为有界 Check messages。\n *\n * `limit`、安全字段和超限后的深入查看说明都由 producing Check 决定。Product 不读取 Finding\n * shape,也不猜测完整明细位于 Records、artifact、transcript 或其它位置。\n */\nexport function presentCheckFindings<Finding>(input: {\n readonly findings: readonly Finding[];\n readonly limit: number;\n readonly message: (finding: Finding, index: number) => CheckMessage;\n readonly omittedMessage: (context: FindingOverflowContext<Finding>) => CheckMessage;\n}): readonly CheckMessage[] {\n assertFindingLimit(input.limit);\n if (input.findings.length === 0) return Object.freeze([]);\n\n const presentedFindings = input.findings.slice(0, input.limit);\n const messages = presentedFindings.map((finding, index) =>\n Object.freeze({ ...input.message(finding, index) })\n );\n const omittedFindings = Object.freeze(input.findings.slice(input.limit));\n if (omittedFindings.length > 0) {\n messages.push(\n Object.freeze({\n ...input.omittedMessage(\n Object.freeze({\n omittedFindings,\n omittedCount: omittedFindings.length,\n presentedCount: presentedFindings.length,\n totalCount: input.findings.length\n })\n )\n })\n );\n }\n return Object.freeze(messages);\n}\n\n/** Appends presentation-only messages without changing the owning terminal result. */\nexport function appendCheckMessages<Data extends object>(\n result: CheckResult<Data>,\n messages: readonly CheckMessage[]\n): CheckResult<Data> {\n if (messages.length === 0) return result;\n return Object.freeze({\n ...result,\n messages: Object.freeze([...(result.messages ?? []), ...messages])\n });\n}\n\nfunction assertFindingLimit(limit: number): void {\n if (!Number.isSafeInteger(limit) || limit < 0) {\n throw new TypeError(\"Finding presentation limit must be a non-negative safe integer\");\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { canonicalizeJsonValue, canonicalJsonText } from "../data-boundary/canonical-data.mjs";
1
+ import { canonicalizeJsonValue, canonicalJsonText } from "../../data-boundary/canonical-data.mjs";
2
2
  /**
3
3
  * 按调用方定义的语义身份对完整 finding 集合和 waiver 配置做 canonical structural reconciliation。
4
4
  *
@@ -19,8 +19,13 @@ export function reconcileFindingWaivers(options) {
19
19
  const matchedWaiverIndexes = options.findings.map((finding) => {
20
20
  const identity = canonicalIdentity(options.identify(finding), "finding identity");
21
21
  const waiverIndex = waiverIndexesByIdentity.get(identity);
22
- if (waiverIndex !== undefined)
23
- matchCounts[waiverIndex] += 1;
22
+ if (waiverIndex !== undefined) {
23
+ const matchCount = matchCounts[waiverIndex];
24
+ if (matchCount === undefined) {
25
+ throw new Error(`Finding waiver match index is out of range: ${waiverIndex}`);
26
+ }
27
+ matchCounts[waiverIndex] = matchCount + 1;
28
+ }
24
29
  return waiverIndex;
25
30
  });
26
31
  const waiverAudits = Object.freeze(waivers.map((waiver, index) => Object.freeze({
@@ -35,7 +40,7 @@ export function reconcileFindingWaivers(options) {
35
40
  }));
36
41
  return Object.freeze({ findings, waiverAudits });
37
42
  }
38
- function materializeWaivers(waivers) {
43
+ function materializeWaivers(waivers = []) {
39
44
  const canonicalWaivers = canonicalizeJsonValue(waivers);
40
45
  if (canonicalWaivers === undefined || !isCanonicalArray(canonicalWaivers)) {
41
46
  throw new TypeError("Finding waivers must be canonical JSON arrays");
@@ -52,7 +57,11 @@ function materializeWaiver(value) {
52
57
  if (typeof reason !== "string" || reason.length === 0) {
53
58
  throw new TypeError("Finding waiver reasons must be non-empty strings");
54
59
  }
55
- return Object.freeze({ identity: value.identity, reason });
60
+ const identity = value.identity;
61
+ if (identity === undefined) {
62
+ throw new TypeError("Finding waiver identity must be present");
63
+ }
64
+ return Object.freeze({ identity, reason });
56
65
  }
57
66
  function isCanonicalObject(value) {
58
67
  return typeof value === "object" && value !== null && !Array.isArray(value);
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reconciliation.mjs","sourceRoot":"","sources":["../../../../src/package-tools/finding-waivers/reconciliation.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n canonicalizeJsonValue,\n canonicalJsonText,\n type CanonicalJsonObject,\n type CanonicalJsonValue\n} from \"../../data-boundary/canonical-data.ts\";\n\n/** 由采用方声明、用于匹配一个 finding 的语义身份与豁免理由。 */\nexport interface FindingWaiver<Identity> {\n /** 调用方定义的稳定 finding 身份;匹配时按 canonical JSON 结构比较。 */\n readonly identity: Identity;\n /** 解释该 finding 在当前范围内可被豁免的非空理由。 */\n readonly reason: string;\n}\n\n/** helper 安全 materialize 后保留的 waiver evidence;identity 是 detached canonical JSON。 */\nexport interface MaterializedFindingWaiver {\n /** 从 authored identity materialize 的 detached、deep-frozen canonical JSON。 */\n readonly identity: CanonicalJsonValue;\n /** 从 authored reason materialize 的非空理由。 */\n readonly reason: string;\n}\n\n/** 一项 finding waiver 的配置与匹配次数审计。 */\nexport interface FindingWaiverAudit {\n /** 被审计的 materialized authored waiver evidence,而非调用方可变输入引用。 */\n readonly waiver: MaterializedFindingWaiver;\n /** 该 waiver identity 在完整 finding 集合中匹配到的数量。 */\n readonly matchCount: number;\n /** 未使用、正常应用,或因过宽而没有应用。 */\n readonly status: \"unused\" | \"applied\" | \"overmatched\";\n}\n\n/** reconciliation 后单个 finding 的可执行处置;只有 `waived` branch 携带 matched waiver。 */\nexport type ReconciledFinding<Finding> = Readonly<\n | {\n /** 原始 finding;helper 不解释或改写它的领域字段。 */\n readonly finding: Finding;\n /** 没有匹配 waiver 的正常待处理 finding。 */\n readonly disposition: \"actionable\";\n }\n | {\n /** 原始 finding;helper 不解释或改写它的领域字段。 */\n readonly finding: Finding;\n /** 恰好匹配一项 waiver 的 finding。 */\n readonly disposition: \"waived\";\n /** applied waiver 的身份和理由。 */\n readonly waiver: MaterializedFindingWaiver;\n }\n | {\n /** 原始 finding;helper 不解释或改写它的领域字段。 */\n readonly finding: Finding;\n /** `overmatched` 保持为待处理,避免宽泛 waiver 静默覆盖多个 finding。 */\n readonly disposition: \"overmatched\";\n }\n>;\n\n/** 调用方提供完整候选集、身份识别器和 waiver 配置的输入。 */\nexport interface ReconcileFindingWaiversOptions<Finding, Identity> {\n /** 必须是完整 finding 候选集合,helper 才能审计每项 waiver 的匹配次数。 */\n readonly findings: readonly Finding[];\n /** 从完整 finding 提取调用方选择的稳定语义身份。 */\n readonly identify: (finding: Finding) => Identity;\n /** 要对账的 waiver;省略或 undefined 等同于空数组,仍验证全部 finding identity。 */\n readonly waivers?: readonly FindingWaiver<Identity>[] | undefined;\n}\n\n/** 独立 waiver reconciliation 的完整输出,保留 finding 处置和每项配置审计。 */\nexport interface FindingWaiverReconciliation<Finding> {\n /** 与 input finding 顺序相同的 reconciliation 结果。 */\n readonly findings: readonly ReconciledFinding<Finding>[];\n /** 与 input waiver 顺序相同的完整配置审计。 */\n readonly waiverAudits: readonly FindingWaiverAudit[];\n}\n\n/**\n * 按调用方定义的语义身份对完整 finding 集合和 waiver 配置做 canonical structural reconciliation。\n *\n * 每项 waiver 必须有唯一、可 canonicalize 的 identity 和非空 reason。匹配零项时产生 `unused` 审计;\n * 匹配一项时该 finding 为 `waived`;匹配多项时产生 `overmatched` 审计,相关 finding 保持待处理。\n */\nexport function reconcileFindingWaivers<Finding, Identity>(\n options: ReconcileFindingWaiversOptions<Finding, Identity>\n): FindingWaiverReconciliation<Finding> {\n const waivers = materializeWaivers(options.waivers);\n const matchCounts = new Array<number>(waivers.length).fill(0);\n const waiverIndexesByIdentity = new Map<string, number>();\n for (const [index, waiver] of waivers.entries()) {\n const identity = canonicalIdentity(waiver.identity, \"waiver identity\");\n if (waiverIndexesByIdentity.has(identity)) {\n throw new TypeError(\"Finding waivers must not declare duplicate canonical identities\");\n }\n waiverIndexesByIdentity.set(identity, index);\n }\n\n const matchedWaiverIndexes = options.findings.map((finding) => {\n const identity = canonicalIdentity(options.identify(finding), \"finding identity\");\n const waiverIndex = waiverIndexesByIdentity.get(identity);\n if (waiverIndex !== undefined) {\n const matchCount = matchCounts[waiverIndex];\n if (matchCount === undefined) {\n throw new Error(`Finding waiver match index is out of range: ${waiverIndex}`);\n }\n matchCounts[waiverIndex] = matchCount + 1;\n }\n return waiverIndex;\n });\n const waiverAudits = Object.freeze(\n waivers.map((waiver, index) =>\n Object.freeze({\n matchCount: matchCounts[index] ?? 0,\n status: waiverAuditStatus(matchCounts[index] ?? 0),\n waiver\n })\n )\n );\n const findings = Object.freeze(\n options.findings.map((finding, index) => {\n const waiverIndex = matchedWaiverIndexes[index];\n const audit = waiverIndex === undefined ? undefined : waiverAudits[waiverIndex];\n return reconciledFinding(finding, audit);\n })\n );\n return Object.freeze({ findings, waiverAudits });\n}\n\nfunction materializeWaivers(waivers: unknown = []): readonly MaterializedFindingWaiver[] {\n const canonicalWaivers = canonicalizeJsonValue(waivers);\n if (canonicalWaivers === undefined || !isCanonicalArray(canonicalWaivers)) {\n throw new TypeError(\"Finding waivers must be canonical JSON arrays\");\n }\n return Object.freeze(canonicalWaivers.map(materializeWaiver));\n}\n\nfunction materializeWaiver(value: CanonicalJsonValue): MaterializedFindingWaiver {\n if (\n !isCanonicalObject(value) ||\n !Object.hasOwn(value, \"identity\") ||\n !Object.hasOwn(value, \"reason\")\n ) {\n throw new TypeError(\"Finding waivers must declare canonical identity and reason fields\");\n }\n const reason = value.reason;\n if (typeof reason !== \"string\" || reason.length === 0) {\n throw new TypeError(\"Finding waiver reasons must be non-empty strings\");\n }\n const identity = value.identity;\n if (identity === undefined) {\n throw new TypeError(\"Finding waiver identity must be present\");\n }\n return Object.freeze({ identity, reason });\n}\n\nfunction isCanonicalObject(value: CanonicalJsonValue): value is CanonicalJsonObject {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isCanonicalArray(value: CanonicalJsonValue): value is readonly CanonicalJsonValue[] {\n return Array.isArray(value);\n}\n\nfunction canonicalIdentity(identity: unknown, kind: string): string {\n try {\n return canonicalJsonText(identity);\n } catch {\n throw new TypeError(`Finding ${kind} must be canonical JSON`);\n }\n}\n\nfunction waiverAuditStatus(matchCount: number): FindingWaiverAudit[\"status\"] {\n if (matchCount === 0) return \"unused\";\n return matchCount === 1 ? \"applied\" : \"overmatched\";\n}\n\nfunction reconciledFinding<Finding>(\n finding: Finding,\n audit: FindingWaiverAudit | undefined\n): ReconciledFinding<Finding> {\n if (audit === undefined) return Object.freeze({ disposition: \"actionable\", finding });\n if (audit.status === \"applied\") {\n return Object.freeze({ disposition: \"waived\", finding, waiver: audit.waiver });\n }\n return Object.freeze({ disposition: \"overmatched\", finding });\n}\n"]}
@@ -0,0 +1,46 @@
1
+ /** Computes directed dependsOn + observes downstream scores once before Scheduler admission. */
2
+ export function createSchedulerCriticalPathSnapshot(graph, prediction) {
3
+ const downstreamByTaskId = new Map();
4
+ for (const task of graph.tasks)
5
+ downstreamByTaskId.set(task.taskId, new Set());
6
+ for (const task of graph.tasks) {
7
+ for (const upstreamTaskId of [...task.dependsOn, ...task.observes]) {
8
+ const downstream = downstreamByTaskId.get(upstreamTaskId);
9
+ if (downstream === undefined) {
10
+ throw new TypeError(`critical path graph has unknown task ${upstreamTaskId}`);
11
+ }
12
+ downstream.add(task.taskId);
13
+ }
14
+ }
15
+ const scoreByTaskId = new Map();
16
+ const visitingTaskIds = new Set();
17
+ const scoreFor = (taskId) => {
18
+ const existing = scoreByTaskId.get(taskId);
19
+ if (existing !== undefined)
20
+ return existing;
21
+ if (visitingTaskIds.has(taskId))
22
+ throw new TypeError("critical path graph must be acyclic");
23
+ const taskPrediction = prediction.predictions.find((entry) => entry.taskId === taskId);
24
+ if (taskPrediction === undefined)
25
+ throw new TypeError(`critical path prediction missing task ${taskId}`);
26
+ visitingTaskIds.add(taskId);
27
+ let greatestDownstreamScore = 0;
28
+ for (const downstreamTaskId of downstreamByTaskId.get(taskId) ?? []) {
29
+ greatestDownstreamScore = Math.max(greatestDownstreamScore, scoreFor(downstreamTaskId));
30
+ }
31
+ visitingTaskIds.delete(taskId);
32
+ const score = saturatingSum(taskPrediction.estimatedDurationMs, greatestDownstreamScore);
33
+ scoreByTaskId.set(taskId, score);
34
+ return score;
35
+ };
36
+ return Object.freeze({
37
+ scores: Object.freeze(graph.tasks.map((task) => Object.freeze({ criticalPathScore: scoreFor(task.taskId), taskId: task.taskId })))
38
+ });
39
+ }
40
+ export function criticalPathScoreForTask(snapshot, taskId) {
41
+ return snapshot.scores.find((score) => score.taskId === taskId)?.criticalPathScore;
42
+ }
43
+ function saturatingSum(left, right) {
44
+ return left > Number.MAX_SAFE_INTEGER - right ? Number.MAX_SAFE_INTEGER : left + right;
45
+ }
46
+ //# sourceMappingURL=critical-path-ranking.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"critical-path-ranking.mjs","sourceRoot":"","sources":["../../../../src/package-tools/learned-critical-path/critical-path-ranking.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SchedulerGraphSnapshot } from \"../../project-definition/project-definition.ts\";\n\n/** The pure ranking algorithm only needs immutable estimated durations keyed by Task ID. */\nexport interface SchedulerCriticalPathPredictionSnapshot {\n readonly predictions: readonly Readonly<{\n readonly estimatedDurationMs: number;\n readonly taskId: string;\n }>[];\n}\n\nexport interface SchedulerCriticalPathScore {\n readonly criticalPathScore: number;\n readonly taskId: string;\n}\n\n/** A graph-derived immutable score table; it retains no dependency or authored-input payload. */\nexport interface SchedulerCriticalPathSnapshot {\n readonly scores: readonly SchedulerCriticalPathScore[];\n}\n\n/** Computes directed dependsOn + observes downstream scores once before Scheduler admission. */\nexport function createSchedulerCriticalPathSnapshot(\n graph: SchedulerGraphSnapshot,\n prediction: SchedulerCriticalPathPredictionSnapshot\n): SchedulerCriticalPathSnapshot {\n const downstreamByTaskId = new Map<string, Set<string>>();\n for (const task of graph.tasks) downstreamByTaskId.set(task.taskId, new Set<string>());\n for (const task of graph.tasks) {\n for (const upstreamTaskId of [...task.dependsOn, ...task.observes]) {\n const downstream = downstreamByTaskId.get(upstreamTaskId);\n if (downstream === undefined) {\n throw new TypeError(`critical path graph has unknown task ${upstreamTaskId}`);\n }\n downstream.add(task.taskId);\n }\n }\n\n const scoreByTaskId = new Map<string, number>();\n const visitingTaskIds = new Set<string>();\n const scoreFor = (taskId: string): number => {\n const existing = scoreByTaskId.get(taskId);\n if (existing !== undefined) return existing;\n if (visitingTaskIds.has(taskId)) throw new TypeError(\"critical path graph must be acyclic\");\n const taskPrediction = prediction.predictions.find((entry) => entry.taskId === taskId);\n if (taskPrediction === undefined)\n throw new TypeError(`critical path prediction missing task ${taskId}`);\n visitingTaskIds.add(taskId);\n let greatestDownstreamScore = 0;\n for (const downstreamTaskId of downstreamByTaskId.get(taskId) ?? []) {\n greatestDownstreamScore = Math.max(greatestDownstreamScore, scoreFor(downstreamTaskId));\n }\n visitingTaskIds.delete(taskId);\n const score = saturatingSum(taskPrediction.estimatedDurationMs, greatestDownstreamScore);\n scoreByTaskId.set(taskId, score);\n return score;\n };\n\n return Object.freeze({\n scores: Object.freeze(\n graph.tasks.map((task) =>\n Object.freeze({ criticalPathScore: scoreFor(task.taskId), taskId: task.taskId })\n )\n )\n });\n}\n\nexport function criticalPathScoreForTask(\n snapshot: SchedulerCriticalPathSnapshot,\n taskId: string\n): number | undefined {\n return snapshot.scores.find((score) => score.taskId === taskId)?.criticalPathScore;\n}\n\nfunction saturatingSum(left: number, right: number): number {\n return left > Number.MAX_SAFE_INTEGER - right ? Number.MAX_SAFE_INTEGER : left + right;\n}\n"]}