@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
@@ -1 +1 @@
1
- {"version":3,"file":"options-validation.mjs","sourceRoot":"","sources":["../../../../src/package-checks/function-metrics/options-validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { snapshotClosedRecord } from \"../../data-boundary/closed-values.ts\";\nimport { validProjectFileSelection } from \"../project-files/configuration.ts\";\nimport { validFindingPolicy } from \"../code-quality-findings/policy.ts\";\nimport type { ResolvedFunctionMetricsOptions } from \"./options.ts\";\n\n/** 验证 constructor 已物化的完整 function-metrics options。 */\nexport function validResolvedFunctionMetricsOptions(\n value: unknown\n): value is ResolvedFunctionMetricsOptions {\n const options = exactRecord(value, [\"codeAreas\", \"scanner\"]);\n return (\n options !== undefined && validCodeAreas(options.codeAreas) && validScanner(options.scanner)\n );\n}\n\nfunction validCodeAreas(value: unknown): boolean {\n const areas = snapshotClosedRecord(value);\n if (areas === undefined || Object.keys(areas).length === 0) return false;\n return Object.entries(areas).every(([areaId, candidate]) => {\n const area = exactRecord(candidate, [\"files\", \"findingPolicy\", \"limits\"]);\n return (\n nonEmptyString(areaId) &&\n area !== undefined &&\n validProjectFileSelection(area.files) &&\n validFindingPolicy(area.findingPolicy) &&\n validLimits(area.limits)\n );\n });\n}\n\nfunction validLimits(value: unknown): boolean {\n const limits = exactRecord(value, [\"codeLines\", \"cyclomaticComplexity\", \"parameters\"]);\n if (limits === undefined) return false;\n const codeLineLimits = codeLineLimitsFrom(limits.codeLines);\n const cyclomaticComplexity = maximumLimitFrom(limits.cyclomaticComplexity);\n const parameters = maximumLimitFrom(limits.parameters);\n return (\n codeLineLimits !== undefined &&\n cyclomaticComplexity !== undefined &&\n parameters !== undefined &&\n positiveSafeInteger(cyclomaticComplexity.maximum) &&\n positiveSafeInteger(parameters.maximum)\n );\n}\n\nfunction codeLineLimitsFrom(value: unknown): Readonly<Record<string, unknown>> | undefined {\n const codeLines = exactRecord(value, [\"lowComplexityAllowance\", \"maximum\"]);\n const allowance = exactRecord(codeLines?.lowComplexityAllowance, [\n \"cyclomaticComplexityBelow\",\n \"maximum\"\n ]);\n return codeLines !== undefined &&\n allowance !== undefined &&\n positiveSafeInteger(codeLines.maximum) &&\n positiveSafeInteger(allowance.maximum) &&\n allowance.maximum >= codeLines.maximum &&\n positiveSafeInteger(allowance.cyclomaticComplexityBelow)\n ? codeLines\n : undefined;\n}\n\nfunction maximumLimitFrom(value: unknown): Readonly<Record<string, unknown>> | undefined {\n return exactRecord(value, [\"maximum\"]);\n}\n\nfunction validScanner(value: unknown): boolean {\n const scanner = exactRecord(value, [\"executable\"]);\n return scanner !== undefined && nonEmptyString(scanner.executable);\n}\n\nfunction exactRecord(\n value: unknown,\n keys: readonly string[]\n): Readonly<Record<string, unknown>> | undefined {\n const record = snapshotClosedRecord(value);\n return record !== undefined &&\n Object.keys(record).length === keys.length &&\n keys.every((key) => Object.hasOwn(record, key))\n ? record\n : undefined;\n}\n\nfunction positiveSafeInteger(value: unknown): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value > 0;\n}\n\nfunction nonEmptyString(value: unknown): value is string {\n return typeof value === \"string\" && value.length > 0;\n}\n"]}
1
+ {"version":3,"file":"options-validation.mjs","sourceRoot":"","sources":["../../../../src/package-checks/function-metrics/options-validation.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n snapshotClosedRecord,\n snapshotExactClosedRecord\n} from \"../../data-boundary/closed-values.ts\";\nimport { isNonEmptyString, isPositiveSafeInteger } from \"../../data-boundary/value-shapes.ts\";\nimport { validProjectFileSelection } from \"../project-files/configuration.ts\";\nimport { validFindingPolicy } from \"../code-quality-findings/policy.ts\";\nimport { validResolvedFindingWaivers } from \"../code-quality-findings/finding-waiver-authoring.ts\";\nimport { resolveFunctionMetricsFindingIdentity } from \"./finding-waiver-identity.ts\";\nimport type { ResolvedFunctionMetricsOptions } from \"./options.ts\";\n\n/** 验证 constructor 已物化的完整 function-metrics options。 */\nexport function validResolvedFunctionMetricsOptions(\n value: unknown\n): value is ResolvedFunctionMetricsOptions {\n const options = snapshotExactClosedRecord(value, [\"codeAreas\", \"findingWaivers\"]);\n return (\n options !== undefined &&\n validCodeAreas(options.codeAreas) &&\n validResolvedFindingWaivers(options.findingWaivers, resolveFunctionMetricsFindingIdentity)\n );\n}\n\nfunction validCodeAreas(value: unknown): boolean {\n const areas = snapshotClosedRecord(value);\n if (areas === undefined || Object.keys(areas).length === 0) return false;\n return Object.entries(areas).every(([areaId, candidate]) => {\n const area = snapshotExactClosedRecord(candidate, [\"files\", \"findingPolicy\", \"limits\"]);\n return (\n isNonEmptyString(areaId) &&\n area !== undefined &&\n validProjectFileSelection(area.files) &&\n validFindingPolicy(area.findingPolicy) &&\n validLimits(area.limits)\n );\n });\n}\n\nfunction validLimits(value: unknown): boolean {\n const limits = snapshotExactClosedRecord(value, [\n \"codeLines\",\n \"cyclomaticComplexity\",\n \"nestingDepth\",\n \"parameters\"\n ]);\n if (limits === undefined) return false;\n const codeLineLimits = codeLineLimitsFrom(limits.codeLines);\n const cyclomaticComplexity = maximumLimitFrom(limits.cyclomaticComplexity);\n const nestingDepth = maximumLimitFrom(limits.nestingDepth);\n const parameters = maximumLimitFrom(limits.parameters);\n return (\n codeLineLimits !== undefined &&\n cyclomaticComplexity !== undefined &&\n nestingDepth !== undefined &&\n parameters !== undefined &&\n isPositiveSafeInteger(cyclomaticComplexity.maximum) &&\n isPositiveSafeInteger(nestingDepth.maximum) &&\n isPositiveSafeInteger(parameters.maximum)\n );\n}\n\nfunction codeLineLimitsFrom(value: unknown): Readonly<Record<string, unknown>> | undefined {\n const codeLines = snapshotExactClosedRecord(value, [\"lowComplexityAllowance\", \"maximum\"]);\n const allowance = snapshotExactClosedRecord(codeLines?.lowComplexityAllowance, [\n \"cyclomaticComplexityBelow\",\n \"maximum\"\n ]);\n return codeLines !== undefined &&\n allowance !== undefined &&\n isPositiveSafeInteger(codeLines.maximum) &&\n isPositiveSafeInteger(allowance.maximum) &&\n allowance.maximum >= codeLines.maximum &&\n isPositiveSafeInteger(allowance.cyclomaticComplexityBelow)\n ? codeLines\n : undefined;\n}\n\nfunction maximumLimitFrom(value: unknown): Readonly<Record<string, unknown>> | undefined {\n return snapshotExactClosedRecord(value, [\"maximum\"]);\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"options.mjs","sourceRoot":"","sources":["../../../../src/package-checks/function-metrics/options.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n ProjectFileSelection,\n ProjectFileSelectionOptions\n} from \"../project-files/configuration.ts\";\nimport type { FindingPolicy } from \"../code-quality-findings/policy.ts\";\n\n/** `functionMetrics` 构造函数可省略的文件选择策略。 */\nexport type FunctionMetricsFileOptions = ProjectFileSelectionOptions;\n\n/** `functionMetrics` 构造函数可省略的函数指标上限。 */\nexport interface FunctionMetricsLimitOptions {\n readonly codeLines?: Readonly<{\n /** 省略时为 `60`;函数 NLOC 超过此值时产生 finding。 */\n readonly maximum?: number;\n readonly lowComplexityAllowance?: Readonly<{\n /** 省略时为 `6`;复杂度小于此值时可使用较高 NLOC 上限。 */\n readonly cyclomaticComplexityBelow?: number;\n /** 省略时为 `180`;不得小于普通代码行上限。 */\n readonly maximum?: number;\n }>;\n }>;\n readonly cyclomaticComplexity?: Readonly<{\n /** 省略时为 `12`。 */\n readonly maximum?: number;\n }>;\n readonly parameters?: Readonly<{\n /** 省略时为 `6`。 */\n readonly maximum?: number;\n }>;\n}\n\n/** 可独立选择文件、指标上限和 finding policy 的 function-metrics 区域。 */\nexport interface FunctionMetricsCodeAreaOptions {\n /** 显式区域必须声明本字段;其中各子字段可省略并使用 package 默认值。 */\n readonly files: FunctionMetricsFileOptions;\n /** 省略时继承顶层 `findingPolicy`。 */\n readonly findingPolicy?: FindingPolicy;\n /** 省略的嵌套上限使用 package 默认值。 */\n readonly limits?: FunctionMetricsLimitOptions;\n}\n\n/** `functionMetrics` 构造函数可省略的 Lizard 可执行文件策略。 */\nexport interface FunctionMetricsScannerOptions {\n /** 省略时为 `lizard`;显式命令必须直接接受 adapter 拥有的 Lizard 参数。 */\n readonly executable?: string;\n}\n\n/** `functionMetrics(options?)` 接受并补齐默认值的公开策略。 */\nexport interface FunctionMetricsOptions {\n /** 省略时建立默认 `project` 区域;显式映射必须非空,且每个区域必须声明 `files`。 */\n readonly codeAreas?: Readonly<Record<string, FunctionMetricsCodeAreaOptions>>;\n /** 省略时为 `non-blocking`;区域可局部覆盖。 */\n readonly findingPolicy?: FindingPolicy;\n /** 省略时使用 PATH 中的 `lizard`。 */\n readonly scanner?: FunctionMetricsScannerOptions;\n}\n\n/** 构造函数生成并由 Check preflight/execution 消费的完整 options。 */\nexport interface ResolvedFunctionMetricsOptions {\n readonly codeAreas: Readonly<Record<string, ResolvedFunctionMetricsCodeAreaOptions>>;\n readonly scanner: ResolvedFunctionMetricsScannerOptions;\n}\n\nexport interface ResolvedFunctionMetricsCodeAreaOptions {\n readonly files: ProjectFileSelection;\n readonly findingPolicy: FindingPolicy;\n readonly limits: ResolvedFunctionMetricsLimits;\n}\n\nexport interface ResolvedFunctionMetricsLimits {\n readonly codeLines: Readonly<{\n readonly maximum: number;\n readonly lowComplexityAllowance: Readonly<{\n readonly cyclomaticComplexityBelow: number;\n readonly maximum: number;\n }>;\n }>;\n readonly cyclomaticComplexity: Readonly<{ readonly maximum: number }>;\n readonly parameters: Readonly<{ readonly maximum: number }>;\n}\n\nexport interface ResolvedFunctionMetricsScannerOptions {\n readonly executable: string;\n}\n"]}
1
+ {"version":3,"file":"options.mjs","sourceRoot":"","sources":["../../../../src/package-checks/function-metrics/options.ts"],"names":[],"mappings":"","sourcesContent":["import type { PackageCheckAuthoringOptions } from \"../check-authoring.ts\";\nimport type {\n ProjectFileSelection,\n ProjectFileSelectionOptions\n} from \"../project-files/configuration.ts\";\nimport type { FindingPolicy } from \"../code-quality-findings/policy.ts\";\nimport type { FindingWaiver } from \"../../package-tools/finding-waivers/reconciliation.ts\";\n\n/** `functionMetrics` 构造函数可省略的文件选择策略。 */\nexport type FunctionMetricsFileOptions = ProjectFileSelectionOptions;\n\n/** `functionMetrics` 构造函数可省略的函数指标上限。 */\nexport interface FunctionMetricsLimitOptions {\n readonly codeLines?: Readonly<{\n /** 省略时为 `60`;函数 NLOC 超过此值时产生 finding。 */\n readonly maximum?: number;\n readonly lowComplexityAllowance?: Readonly<{\n /** 省略时为 `6`;复杂度小于此值时可使用较高 NLOC 上限。 */\n readonly cyclomaticComplexityBelow?: number;\n /** 省略时为 `180`;不得小于普通代码行上限。 */\n readonly maximum?: number;\n }>;\n }>;\n readonly cyclomaticComplexity?: Readonly<{\n /** 省略时为 `12`。 */\n readonly maximum?: number;\n }>;\n readonly nestingDepth?: Readonly<{\n /** 省略时为 `7`。 */\n readonly maximum?: number;\n }>;\n readonly parameters?: Readonly<{\n /** 省略时为 `6`。 */\n readonly maximum?: number;\n }>;\n}\n\n/** 可独立选择文件、指标上限和 finding policy 的 function-metrics 区域。 */\nexport interface FunctionMetricsCodeAreaOptions {\n /** 显式区域必须声明本字段;其中各子字段可省略并使用 package 默认值。 */\n readonly files: FunctionMetricsFileOptions;\n /** 省略时继承顶层 `findingPolicy`。 */\n readonly findingPolicy?: FindingPolicy;\n /** 省略的嵌套上限使用 package 默认值。 */\n readonly limits?: FunctionMetricsLimitOptions;\n}\n\n/** function-metrics 可形成 Finding 的封闭 metric 名称。 */\nexport type FunctionMetricsFindingMetric =\n | \"cyclomatic-complexity\"\n | \"function-code-density\"\n | \"nesting-depth\"\n | \"parameter-count\";\n\n/** function-metrics 用于精确识别一条可豁免 metric finding 的稳定字段。 */\nexport interface FunctionMetricsFindingIdentity {\n readonly functionName: string;\n readonly metric: FunctionMetricsFindingMetric;\n /** 已 normalized 的 project-root-relative slash path。 */\n readonly path: string;\n /** 该次 finding 中函数起始位置的一基行号;位置变化会让旧 waiver 进入 unused audit。 */\n readonly startLine: number;\n}\n\n/** 一项 function-metrics metric finding 的声明式豁免。 */\nexport type FunctionMetricsFindingWaiver = FindingWaiver<FunctionMetricsFindingIdentity>;\n\n/** `functionMetrics(options?)` 接受并补齐默认值的公开策略。 */\nexport interface FunctionMetricsOptions<\n Id extends string = string\n> extends PackageCheckAuthoringOptions<Id> {\n /** 省略时建立默认 `project` 区域;显式映射必须非空,且每个区域必须声明 `files`。 */\n readonly codeAreas?: Readonly<Record<string, FunctionMetricsCodeAreaOptions>>;\n /** 省略时为 `non-blocking`;区域可局部覆盖。 */\n readonly findingPolicy?: FindingPolicy;\n /** 省略时没有豁免;只匹配 normal metric finding,不匹配 input rejection。 */\n readonly findingWaivers?: readonly FunctionMetricsFindingWaiver[];\n}\n\n/** 构造函数生成并由 Check preparation/execution 消费的完整 options。 */\nexport interface ResolvedFunctionMetricsOptions {\n readonly codeAreas: Readonly<Record<string, ResolvedFunctionMetricsCodeAreaOptions>>;\n readonly findingWaivers: readonly FunctionMetricsFindingWaiver[];\n}\n\nexport interface ResolvedFunctionMetricsCodeAreaOptions {\n readonly files: ProjectFileSelection;\n readonly findingPolicy: FindingPolicy;\n readonly limits: ResolvedFunctionMetricsLimits;\n}\n\nexport interface ResolvedFunctionMetricsLimits {\n readonly codeLines: Readonly<{\n readonly maximum: number;\n readonly lowComplexityAllowance: Readonly<{\n readonly cyclomaticComplexityBelow: number;\n readonly maximum: number;\n }>;\n }>;\n readonly cyclomaticComplexity: Readonly<{ readonly maximum: number }>;\n readonly nestingDepth: Readonly<{ readonly maximum: number }>;\n readonly parameters: Readonly<{ readonly maximum: number }>;\n}\n"]}
@@ -1,5 +1,7 @@
1
1
  import { isStableFunctionName } from "./analysis.mjs";
2
2
  import { isBlockingFinding } from "../code-quality-findings/policy.mjs";
3
+ import { buildHashedFindingWaiverAuditRecord } from "../code-quality-findings/finding-waiver-evidence.mjs";
4
+ import { resolveFunctionMetricsFindingIdentity } from "./finding-waiver-identity.mjs";
3
5
  const INPUT_REJECTED_RECORD_ID_PREFIX = "/input-rejected/";
4
6
  /** 为每个 rejected path 构造一条 area-aware、固定 non-blocking 的 Finding。 */
5
7
  export function buildFunctionInputRejectedCandidates(codeAreasByPath) {
@@ -16,6 +18,22 @@ export function buildFunctionInputRejectedCandidates(codeAreasByPath) {
16
18
  id: `${INPUT_REJECTED_RECORD_ID_PREFIX}${path}`
17
19
  })));
18
20
  }
21
+ export function functionMetricsFindingIdentity(candidate) {
22
+ const { functionName, metric, path, startLine } = candidate.data;
23
+ return Object.freeze({ functionName, metric, path, startLine });
24
+ }
25
+ export function functionMetricsWaiverIdentity(waiver) {
26
+ const identity = resolveFunctionMetricsFindingIdentity(waiver.identity);
27
+ if (identity === undefined) {
28
+ throw new TypeError("functionMetrics waiver identity must retain a valid metric subject");
29
+ }
30
+ return identity;
31
+ }
32
+ /** 为一项未使用或过宽 waiver 构造 Check-owned audit Record。 */
33
+ export function functionMetricsWaiverAuditRecord(audit) {
34
+ const identity = functionMetricsWaiverIdentity(audit.waiver);
35
+ return buildHashedFindingWaiverAuditRecord(identity, audit);
36
+ }
19
37
  /** 为每个超过 matching-area 最严格阈值的 metric 构造 supplemental fact。 */
20
38
  export function buildFunctionRecordCandidates(analysis, areas) {
21
39
  const areasByPath = indexAreasByPath(areas);
@@ -56,7 +74,7 @@ function metricEvaluations(instance, policyContext, matchingAreas) {
56
74
  const complexityEvaluation = complexityMetricEvaluation(instance, policyContext, matchingAreas);
57
75
  if (complexityEvaluation !== null)
58
76
  evaluations.push(complexityEvaluation);
59
- evaluations.push(codeLinesMetricEvaluation(instance, policyContext, matchingAreas), parameterMetricEvaluation(instance, policyContext, matchingAreas));
77
+ evaluations.push(codeLinesMetricEvaluation(instance, policyContext, matchingAreas), nestingDepthMetricEvaluation(instance, policyContext, matchingAreas), parameterMetricEvaluation(instance, policyContext, matchingAreas));
60
78
  return evaluations;
61
79
  }
62
80
  function sharedMetricEvaluation(instance, policyContext) {
@@ -75,11 +93,20 @@ function complexityMetricEvaluation(instance, policyContext, matchingAreas) {
75
93
  return null;
76
94
  return {
77
95
  ...sharedMetricEvaluation(instance, policyContext),
96
+ complexityContributors: instance.metric.complexityContributors,
78
97
  limit: Math.min(...matchingAreas.map((area) => area.limits.cyclomaticComplexity.maximum)),
79
98
  metric: "cyclomatic-complexity",
80
99
  value
81
100
  };
82
101
  }
102
+ function nestingDepthMetricEvaluation(instance, policyContext, matchingAreas) {
103
+ return {
104
+ ...sharedMetricEvaluation(instance, policyContext),
105
+ limit: Math.min(...matchingAreas.map((area) => area.limits.nestingDepth.maximum)),
106
+ metric: "nesting-depth",
107
+ value: instance.metric.nestingDepth.value
108
+ };
109
+ }
83
110
  function codeLinesMetricEvaluation(instance, policyContext, matchingAreas) {
84
111
  return {
85
112
  ...sharedMetricEvaluation(instance, policyContext),
@@ -104,6 +131,9 @@ function appendFindingCandidate(candidates, evaluation) {
104
131
  data: Object.freeze({
105
132
  blocking: evaluation.blocking,
106
133
  codeAreas: evaluation.codeAreas,
134
+ ...(evaluation.complexityContributors === undefined
135
+ ? {}
136
+ : { complexityContributors: evaluation.complexityContributors }),
107
137
  functionName: evaluation.functionName,
108
138
  limit: evaluation.limit,
109
139
  metric: evaluation.metric,
@@ -1 +1 @@
1
- {"version":3,"file":"records.mjs","sourceRoot":"","sources":["../../../../src/package-checks/function-metrics/records.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n isStableFunctionName,\n type FunctionMetricAnalysis,\n type FunctionMetricInstance\n} from \"./analysis.ts\";\nimport { isBlockingFinding } from \"../code-quality-findings/policy.ts\";\nimport type { FunctionMetric, FunctionMetricsAreaInput } from \"./measurement-model.ts\";\nimport type { ResolvedFunctionMetricsLimits } from \"./options.ts\";\n\ntype FunctionMetricName = \"cyclomatic-complexity\" | \"function-code-density\" | \"parameter-count\";\nconst INPUT_REJECTED_RECORD_ID_PREFIX = \"/input-rejected/\";\n\n/** 一条超出函数 metric 上限的 supplemental Record data。 */\nexport type FunctionMetricsFindingRecordData = Readonly<{\n readonly blocking: boolean;\n readonly codeAreas: readonly string[];\n readonly functionName: string;\n readonly limit: number;\n readonly metric: FunctionMetricName;\n readonly path: string;\n readonly startLine: number;\n readonly value: number;\n}>;\n\n/** 一条已被 files policy 选中、但不受 functionMetrics 支持的输入 Finding。 */\nexport type FunctionMetricsInputRejectedRecordData = Readonly<{\n readonly blocking: false;\n readonly codeAreas: readonly string[];\n readonly kind: \"input-rejected\";\n readonly path: string;\n readonly reason: \"unsupported-file-type\";\n}>;\n\n/** functionMetrics 发布的 metric 或 input-rejection Record data。 */\nexport type FunctionMetricsRecordData =\n | FunctionMetricsFindingRecordData\n | FunctionMetricsInputRejectedRecordData;\n\nexport interface FunctionRecordCandidate {\n readonly data: FunctionMetricsFindingRecordData;\n readonly id: string;\n}\n\nexport interface FunctionInputRejectedCandidate {\n readonly data: FunctionMetricsInputRejectedRecordData;\n readonly id: string;\n}\n\n/** 为每个 rejected path 构造一条 area-aware、固定 non-blocking 的 Finding。 */\nexport function buildFunctionInputRejectedCandidates(\n codeAreasByPath: ReadonlyMap<string, readonly string[]>\n): readonly FunctionInputRejectedCandidate[] {\n return Object.freeze(\n [...codeAreasByPath]\n .sort(([left], [right]) => compareText(left, right))\n .map(([path, codeAreas]) =>\n Object.freeze({\n data: Object.freeze({\n blocking: false as const,\n codeAreas: Object.freeze(uniqueSorted(codeAreas)),\n kind: \"input-rejected\" as const,\n path,\n reason: \"unsupported-file-type\" as const\n }),\n id: `${INPUT_REJECTED_RECORD_ID_PREFIX}${path}`\n })\n )\n );\n}\n\ntype MatchingFunctionMetricAreas = readonly [\n FunctionMetricsAreaInput,\n ...FunctionMetricsAreaInput[]\n];\n\ninterface FunctionPolicyContext {\n readonly blocking: boolean;\n readonly codeAreas: readonly string[];\n readonly functionName: string;\n}\n\ninterface FunctionMetricEvaluation {\n readonly blocking: boolean;\n readonly codeAreas: readonly string[];\n readonly functionName: string;\n readonly limit: number;\n readonly metric: FunctionMetricName;\n readonly path: string;\n readonly startLine: number;\n readonly subject: string;\n readonly value: number;\n}\n\n/** 为每个超过 matching-area 最严格阈值的 metric 构造 supplemental fact。 */\nexport function buildFunctionRecordCandidates(\n analysis: FunctionMetricAnalysis,\n areas: readonly FunctionMetricsAreaInput[]\n): readonly FunctionRecordCandidate[] | undefined {\n const areasByPath = indexAreasByPath(areas);\n const candidates: FunctionRecordCandidate[] = [];\n for (const instance of analysis.instances) {\n const [firstArea, ...remainingAreas] = areasByPath.get(instance.metric.file) ?? [];\n if (firstArea === undefined) return undefined;\n const matchingAreas = [firstArea, ...remainingAreas] as const;\n const policyContext = resolveFunctionPolicyContext(instance, matchingAreas);\n for (const evaluation of metricEvaluations(instance, policyContext, matchingAreas)) {\n appendFindingCandidate(candidates, evaluation);\n }\n }\n candidates.sort((left, right) => compareText(left.id, right.id));\n return Object.freeze(candidates);\n}\n\nfunction indexAreasByPath(\n areas: readonly FunctionMetricsAreaInput[]\n): ReadonlyMap<string, readonly FunctionMetricsAreaInput[]> {\n const mutableAreas = new Map<string, FunctionMetricsAreaInput[]>();\n for (const area of areas) {\n for (const path of area.approvedExactPaths) {\n const matchingAreas = mutableAreas.get(path) ?? [];\n matchingAreas.push(area);\n mutableAreas.set(path, matchingAreas);\n }\n }\n return new Map(\n Array.from(mutableAreas, ([path, matchingAreas]) => [path, Object.freeze(matchingAreas)])\n );\n}\n\nfunction resolveFunctionPolicyContext(\n instance: FunctionMetricInstance,\n matchingAreas: MatchingFunctionMetricAreas\n): Readonly<FunctionPolicyContext> {\n return Object.freeze({\n blocking: isBlockingFinding(matchingAreas.map((area) => area.findingPolicy)),\n codeAreas: Object.freeze(uniqueSorted(matchingAreas.map((area) => area.codeArea))),\n functionName: isStableFunctionName(instance.metric.name) ? instance.metric.name : \"<anonymous>\"\n });\n}\n\nfunction metricEvaluations(\n instance: FunctionMetricInstance,\n policyContext: FunctionPolicyContext,\n matchingAreas: MatchingFunctionMetricAreas\n): FunctionMetricEvaluation[] {\n const evaluations: FunctionMetricEvaluation[] = [];\n const complexityEvaluation = complexityMetricEvaluation(instance, policyContext, matchingAreas);\n if (complexityEvaluation !== null) evaluations.push(complexityEvaluation);\n evaluations.push(\n codeLinesMetricEvaluation(instance, policyContext, matchingAreas),\n parameterMetricEvaluation(instance, policyContext, matchingAreas)\n );\n return evaluations;\n}\n\nfunction sharedMetricEvaluation(\n instance: FunctionMetricInstance,\n policyContext: FunctionPolicyContext\n) {\n return {\n blocking: policyContext.blocking,\n codeAreas: policyContext.codeAreas,\n functionName: policyContext.functionName,\n path: instance.metric.file,\n startLine: instance.metric.startLine,\n subject: instance.semanticSubject\n } as const;\n}\n\nfunction complexityMetricEvaluation(\n instance: FunctionMetricInstance,\n policyContext: FunctionPolicyContext,\n matchingAreas: MatchingFunctionMetricAreas\n): FunctionMetricEvaluation | null {\n const value = instance.metric.cyclomaticComplexity.value;\n if (value === null) return null;\n return {\n ...sharedMetricEvaluation(instance, policyContext),\n limit: Math.min(...matchingAreas.map((area) => area.limits.cyclomaticComplexity.maximum)),\n metric: \"cyclomatic-complexity\",\n value\n };\n}\n\nfunction codeLinesMetricEvaluation(\n instance: FunctionMetricInstance,\n policyContext: FunctionPolicyContext,\n matchingAreas: MatchingFunctionMetricAreas\n): FunctionMetricEvaluation {\n return {\n ...sharedMetricEvaluation(instance, policyContext),\n limit: Math.min(\n ...matchingAreas.map((area) => functionCodeLineMaximum(instance.metric, area.limits))\n ),\n metric: \"function-code-density\",\n value: instance.metric.lines\n };\n}\n\nfunction parameterMetricEvaluation(\n instance: FunctionMetricInstance,\n policyContext: FunctionPolicyContext,\n matchingAreas: MatchingFunctionMetricAreas\n): FunctionMetricEvaluation {\n return {\n ...sharedMetricEvaluation(instance, policyContext),\n limit: Math.min(...matchingAreas.map((area) => area.limits.parameters.maximum)),\n metric: \"parameter-count\",\n value: instance.metric.parameterCount\n };\n}\n\nfunction appendFindingCandidate(\n candidates: FunctionRecordCandidate[],\n evaluation: FunctionMetricEvaluation\n): void {\n if (evaluation.value <= evaluation.limit) return;\n candidates.push(\n Object.freeze({\n id: `${evaluation.subject}:${evaluation.metric}`,\n data: Object.freeze({\n blocking: evaluation.blocking,\n codeAreas: evaluation.codeAreas,\n functionName: evaluation.functionName,\n limit: evaluation.limit,\n metric: evaluation.metric,\n path: evaluation.path,\n startLine: evaluation.startLine,\n value: evaluation.value\n })\n })\n );\n}\n\nfunction functionCodeLineMaximum(\n metric: FunctionMetric,\n limits: ResolvedFunctionMetricsLimits\n): number {\n const allowance = limits.codeLines.lowComplexityAllowance;\n const complexity = metric.cyclomaticComplexity.value;\n return complexity !== null && complexity < allowance.cyclomaticComplexityBelow\n ? allowance.maximum\n : limits.codeLines.maximum;\n}\n\nfunction uniqueSorted(values: readonly string[]): string[] {\n return [...new Set(values)].sort(compareText);\n}\n\nfunction compareText(left: string, right: string): number {\n if (left < right) return -1;\n if (left > right) return 1;\n return 0;\n}\n"]}
1
+ {"version":3,"file":"records.mjs","sourceRoot":"","sources":["../../../../src/package-checks/function-metrics/records.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n isStableFunctionName,\n type FunctionMetricAnalysis,\n type FunctionMetricInstance\n} from \"./analysis.ts\";\nimport type { MaterializedFindingWaiver } from \"../../package-tools/finding-waivers/reconciliation.ts\";\nimport { isBlockingFinding } from \"../code-quality-findings/policy.ts\";\nimport {\n buildHashedFindingWaiverAuditRecord,\n type FindingWaiverAuditRecordData,\n type FindingWaiverRecordAudit\n} from \"../code-quality-findings/finding-waiver-evidence.ts\";\nimport type { FunctionMetric, FunctionMetricsAreaInput } from \"./measurement-model.ts\";\nimport type {\n FunctionMetricsFindingIdentity,\n FunctionMetricsFindingMetric,\n ResolvedFunctionMetricsLimits\n} from \"./options.ts\";\nimport { resolveFunctionMetricsFindingIdentity } from \"./finding-waiver-identity.ts\";\n\nconst INPUT_REJECTED_RECORD_ID_PREFIX = \"/input-rejected/\";\n/** 一条超出函数 metric 上限的 supplemental Record data。 */\nexport type FunctionMetricsFindingRecordData = Readonly<{\n readonly blocking: boolean;\n readonly codeAreas: readonly string[];\n /** Complete source-ordered CCN contributors; present only for CCN findings. */\n readonly complexityContributors?: readonly Readonly<{\n readonly line: number;\n readonly token: string;\n }>[];\n readonly functionName: string;\n readonly limit: number;\n readonly metric: FunctionMetricsFindingMetric;\n readonly path: string;\n readonly startLine: number;\n readonly value: number;\n /** 精确匹配 waiver 时保留理由,并令该 finding 不再参与 actionable settlement。 */\n readonly waiver?: Readonly<{ readonly reason: string }>;\n}>;\n\n/** 未使用或过宽 function-metrics waiver 的 supplemental audit Record data。 */\nexport type FunctionMetricsFindingWaiverAuditRecordData =\n FindingWaiverAuditRecordData<FunctionMetricsFindingIdentity>;\n\n/** 一条已被 files policy 选中、但不受 functionMetrics 支持的输入 Finding。 */\nexport type FunctionMetricsInputRejectedRecordData = Readonly<{\n readonly blocking: false;\n readonly codeAreas: readonly string[];\n readonly kind: \"input-rejected\";\n readonly path: string;\n readonly reason: \"unsupported-file-type\";\n}>;\n\n/** functionMetrics 发布的 metric、input-rejection 或 finding-waiver audit Record data。 */\nexport type FunctionMetricsRecordData =\n | FunctionMetricsFindingRecordData\n | FunctionMetricsInputRejectedRecordData\n | FunctionMetricsFindingWaiverAuditRecordData;\n\nexport interface FunctionRecordCandidate {\n readonly data: FunctionMetricsFindingRecordData;\n readonly id: string;\n}\n\nexport interface FunctionInputRejectedCandidate {\n readonly data: FunctionMetricsInputRejectedRecordData;\n readonly id: string;\n}\n\n/** 为每个 rejected path 构造一条 area-aware、固定 non-blocking 的 Finding。 */\nexport function buildFunctionInputRejectedCandidates(\n codeAreasByPath: ReadonlyMap<string, readonly string[]>\n): readonly FunctionInputRejectedCandidate[] {\n return Object.freeze(\n [...codeAreasByPath]\n .sort(([left], [right]) => compareText(left, right))\n .map(([path, codeAreas]) =>\n Object.freeze({\n data: Object.freeze({\n blocking: false as const,\n codeAreas: Object.freeze(uniqueSorted(codeAreas)),\n kind: \"input-rejected\" as const,\n path,\n reason: \"unsupported-file-type\" as const\n }),\n id: `${INPUT_REJECTED_RECORD_ID_PREFIX}${path}`\n })\n )\n );\n}\n\ntype MatchingFunctionMetricAreas = readonly [\n FunctionMetricsAreaInput,\n ...FunctionMetricsAreaInput[]\n];\n\ninterface FunctionPolicyContext {\n readonly blocking: boolean;\n readonly codeAreas: readonly string[];\n readonly functionName: string;\n}\n\ninterface FunctionMetricEvaluation {\n readonly blocking: boolean;\n readonly codeAreas: readonly string[];\n readonly complexityContributors?: FunctionMetric[\"complexityContributors\"];\n readonly functionName: string;\n readonly limit: number;\n readonly metric: FunctionMetricsFindingMetric;\n readonly path: string;\n readonly startLine: number;\n readonly subject: string;\n readonly value: number;\n}\n\nexport function functionMetricsFindingIdentity(\n candidate: FunctionRecordCandidate\n): FunctionMetricsFindingIdentity {\n const { functionName, metric, path, startLine } = candidate.data;\n return Object.freeze({ functionName, metric, path, startLine });\n}\n\nexport function functionMetricsWaiverIdentity(\n waiver: MaterializedFindingWaiver\n): FunctionMetricsFindingIdentity {\n const identity = resolveFunctionMetricsFindingIdentity(waiver.identity);\n if (identity === undefined) {\n throw new TypeError(\"functionMetrics waiver identity must retain a valid metric subject\");\n }\n return identity;\n}\n\n/** 为一项未使用或过宽 waiver 构造 Check-owned audit Record。 */\nexport function functionMetricsWaiverAuditRecord(audit: FindingWaiverRecordAudit): Readonly<{\n readonly data: FunctionMetricsFindingWaiverAuditRecordData;\n readonly id: string;\n}> {\n const identity = functionMetricsWaiverIdentity(audit.waiver);\n return buildHashedFindingWaiverAuditRecord(identity, audit);\n}\n\n/** 为每个超过 matching-area 最严格阈值的 metric 构造 supplemental fact。 */\nexport function buildFunctionRecordCandidates(\n analysis: FunctionMetricAnalysis,\n areas: readonly FunctionMetricsAreaInput[]\n): readonly FunctionRecordCandidate[] | undefined {\n const areasByPath = indexAreasByPath(areas);\n const candidates: FunctionRecordCandidate[] = [];\n for (const instance of analysis.instances) {\n const [firstArea, ...remainingAreas] = areasByPath.get(instance.metric.file) ?? [];\n if (firstArea === undefined) return undefined;\n const matchingAreas = [firstArea, ...remainingAreas] as const;\n const policyContext = resolveFunctionPolicyContext(instance, matchingAreas);\n for (const evaluation of metricEvaluations(instance, policyContext, matchingAreas)) {\n appendFindingCandidate(candidates, evaluation);\n }\n }\n candidates.sort((left, right) => compareText(left.id, right.id));\n return Object.freeze(candidates);\n}\n\nfunction indexAreasByPath(\n areas: readonly FunctionMetricsAreaInput[]\n): ReadonlyMap<string, readonly FunctionMetricsAreaInput[]> {\n const mutableAreas = new Map<string, FunctionMetricsAreaInput[]>();\n for (const area of areas) {\n for (const path of area.approvedExactPaths) {\n const matchingAreas = mutableAreas.get(path) ?? [];\n matchingAreas.push(area);\n mutableAreas.set(path, matchingAreas);\n }\n }\n return new Map(\n Array.from(mutableAreas, ([path, matchingAreas]) => [path, Object.freeze(matchingAreas)])\n );\n}\n\nfunction resolveFunctionPolicyContext(\n instance: FunctionMetricInstance,\n matchingAreas: MatchingFunctionMetricAreas\n): Readonly<FunctionPolicyContext> {\n return Object.freeze({\n blocking: isBlockingFinding(matchingAreas.map((area) => area.findingPolicy)),\n codeAreas: Object.freeze(uniqueSorted(matchingAreas.map((area) => area.codeArea))),\n functionName: isStableFunctionName(instance.metric.name) ? instance.metric.name : \"<anonymous>\"\n });\n}\n\nfunction metricEvaluations(\n instance: FunctionMetricInstance,\n policyContext: FunctionPolicyContext,\n matchingAreas: MatchingFunctionMetricAreas\n): FunctionMetricEvaluation[] {\n const evaluations: FunctionMetricEvaluation[] = [];\n const complexityEvaluation = complexityMetricEvaluation(instance, policyContext, matchingAreas);\n if (complexityEvaluation !== null) evaluations.push(complexityEvaluation);\n evaluations.push(\n codeLinesMetricEvaluation(instance, policyContext, matchingAreas),\n nestingDepthMetricEvaluation(instance, policyContext, matchingAreas),\n parameterMetricEvaluation(instance, policyContext, matchingAreas)\n );\n return evaluations;\n}\n\nfunction sharedMetricEvaluation(\n instance: FunctionMetricInstance,\n policyContext: FunctionPolicyContext\n) {\n return {\n blocking: policyContext.blocking,\n codeAreas: policyContext.codeAreas,\n functionName: policyContext.functionName,\n path: instance.metric.file,\n startLine: instance.metric.startLine,\n subject: instance.semanticSubject\n } as const;\n}\n\nfunction complexityMetricEvaluation(\n instance: FunctionMetricInstance,\n policyContext: FunctionPolicyContext,\n matchingAreas: MatchingFunctionMetricAreas\n): FunctionMetricEvaluation | null {\n const value = instance.metric.cyclomaticComplexity.value;\n if (value === null) return null;\n return {\n ...sharedMetricEvaluation(instance, policyContext),\n complexityContributors: instance.metric.complexityContributors,\n limit: Math.min(...matchingAreas.map((area) => area.limits.cyclomaticComplexity.maximum)),\n metric: \"cyclomatic-complexity\",\n value\n };\n}\n\nfunction nestingDepthMetricEvaluation(\n instance: FunctionMetricInstance,\n policyContext: FunctionPolicyContext,\n matchingAreas: MatchingFunctionMetricAreas\n): FunctionMetricEvaluation {\n return {\n ...sharedMetricEvaluation(instance, policyContext),\n limit: Math.min(...matchingAreas.map((area) => area.limits.nestingDepth.maximum)),\n metric: \"nesting-depth\",\n value: instance.metric.nestingDepth.value\n };\n}\n\nfunction codeLinesMetricEvaluation(\n instance: FunctionMetricInstance,\n policyContext: FunctionPolicyContext,\n matchingAreas: MatchingFunctionMetricAreas\n): FunctionMetricEvaluation {\n return {\n ...sharedMetricEvaluation(instance, policyContext),\n limit: Math.min(\n ...matchingAreas.map((area) => functionCodeLineMaximum(instance.metric, area.limits))\n ),\n metric: \"function-code-density\",\n value: instance.metric.lines\n };\n}\n\nfunction parameterMetricEvaluation(\n instance: FunctionMetricInstance,\n policyContext: FunctionPolicyContext,\n matchingAreas: MatchingFunctionMetricAreas\n): FunctionMetricEvaluation {\n return {\n ...sharedMetricEvaluation(instance, policyContext),\n limit: Math.min(...matchingAreas.map((area) => area.limits.parameters.maximum)),\n metric: \"parameter-count\",\n value: instance.metric.parameterCount\n };\n}\n\nfunction appendFindingCandidate(\n candidates: FunctionRecordCandidate[],\n evaluation: FunctionMetricEvaluation\n): void {\n if (evaluation.value <= evaluation.limit) return;\n candidates.push(\n Object.freeze({\n id: `${evaluation.subject}:${evaluation.metric}`,\n data: Object.freeze({\n blocking: evaluation.blocking,\n codeAreas: evaluation.codeAreas,\n ...(evaluation.complexityContributors === undefined\n ? {}\n : { complexityContributors: evaluation.complexityContributors }),\n functionName: evaluation.functionName,\n limit: evaluation.limit,\n metric: evaluation.metric,\n path: evaluation.path,\n startLine: evaluation.startLine,\n value: evaluation.value\n })\n })\n );\n}\n\nfunction functionCodeLineMaximum(\n metric: FunctionMetric,\n limits: ResolvedFunctionMetricsLimits\n): number {\n const allowance = limits.codeLines.lowComplexityAllowance;\n const complexity = metric.cyclomaticComplexity.value;\n return complexity !== null && complexity < allowance.cyclomaticComplexityBelow\n ? allowance.maximum\n : limits.codeLines.maximum;\n}\n\nfunction uniqueSorted(values: readonly string[]): string[] {\n return [...new Set(values)].sort(compareText);\n}\n\nfunction compareText(left: string, right: string): number {\n if (left < right) return -1;\n if (left > right) return 1;\n return 0;\n}\n"]}
@@ -1,70 +1,9 @@
1
- /** Lizard 1.23.0 官方 language readers 支持的 exact input 扩展名。 */
2
- const LIZARD_SUPPORTED_FILE_EXTENSIONS = Object.freeze([
3
- "c",
4
- "cc",
5
- "cjs",
6
- "cpp",
7
- "cs",
8
- "cxx",
9
- "erl",
10
- "es",
11
- "escript",
12
- "f",
13
- "f03",
14
- "f08",
15
- "f70",
16
- "f90",
17
- "f95",
18
- "for",
19
- "fpp",
20
- "ftn",
21
- "gd",
22
- "go",
23
- "h",
24
- "hpp",
25
- "hrl",
26
- "java",
27
- "js",
28
- "jsx",
29
- "kt",
30
- "kts",
31
- "lua",
32
- "m",
33
- "mjs",
34
- "mm",
35
- "pck",
36
- "php",
37
- "pkb",
38
- "pks",
39
- "pl",
40
- "plb",
41
- "pls",
42
- "pm",
43
- "py",
44
- "r",
45
- "rb",
46
- "rs",
47
- "scala",
48
- "sol",
49
- "sql",
50
- "st",
51
- "swift",
52
- "ts",
53
- "ttcn",
54
- "ttcnpp",
55
- "tsx",
56
- "vue",
57
- "zig"
58
- ]);
59
- const LIZARD_SUPPORTED_FILE_EXTENSION_SET = new Set(LIZARD_SUPPORTED_FILE_EXTENSIONS);
60
- /** functionMetrics 默认 files.include 使用的 case-insensitive extension globs。 */
61
- export const LIZARD_SUPPORTED_FILE_GLOBS = Object.freeze(LIZARD_SUPPORTED_FILE_EXTENSIONS.map((extension) => `**/*.${caseInsensitiveExtensionPattern(extension)}`));
62
- export function isLizardTarget(filePath) {
63
- const extensionSeparator = filePath.lastIndexOf(".");
64
- if (extensionSeparator < 0)
65
- return false;
66
- const extension = filePath.slice(extensionSeparator + 1).toLowerCase();
67
- return LIZARD_SUPPORTED_FILE_EXTENSION_SET.has(extension);
1
+ import { FUNCTION_METRICS_SUPPORTED_FILE_EXTENSIONS, isFunctionMetricsAnalyzerSourceSupported } from "./analyzer-adapter.mjs";
2
+ /** functionMetrics default files.include uses the adapter's case-insensitive suffix capability. */
3
+ export const FUNCTION_METRICS_SUPPORTED_FILE_GLOBS = Object.freeze(FUNCTION_METRICS_SUPPORTED_FILE_EXTENSIONS.map((extension) => `**/*.${caseInsensitiveExtensionPattern(extension)}`));
4
+ /** Whether an exact project-relative path has a translated analyzer reader. */
5
+ export function isFunctionMetricsTarget(filePath) {
6
+ return isFunctionMetricsAnalyzerSourceSupported(filePath);
68
7
  }
69
8
  function caseInsensitiveExtensionPattern(extension) {
70
9
  return extension
@@ -1 +1 @@
1
- {"version":3,"file":"target-files.mjs","sourceRoot":"","sources":["../../../../src/package-checks/function-metrics/target-files.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,MAAM,gCAAgC,GAAG,MAAM,CAAC,MAAM,CAAC;IACrD,GAAG;IACH,IAAI;IACJ,KAAK;IACL,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,IAAI;IACJ,SAAS;IACT,GAAG;IACH,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,KAAK;IACL,KAAK;IACL,MAAM;IACN,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,GAAG;IACH,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,IAAI;IACJ,KAAK;IACL,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,OAAO;IACP,KAAK;IACL,KAAK;IACL,IAAI;IACJ,OAAO;IACP,IAAI;IACJ,MAAM;IACN,QAAQ;IACR,KAAK;IACL,KAAK;IACL,KAAK;CACG,CAAC,CAAC;AAEZ,MAAM,mCAAmC,GAAwB,IAAI,GAAG,CACtE,gCAAgC,CACjC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC,MAAM,CACtD,gCAAgC,CAAC,GAAG,CAClC,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,+BAA+B,CAAC,SAAS,CAAC,EAAE,CACpE,CACF,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACrD,IAAI,kBAAkB,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,kBAAkB,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACvE,OAAO,mCAAmC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,+BAA+B,CAAC,SAAiB;IACxD,OAAO,SAAS;SACb,KAAK,CAAC,EAAE,CAAC;SACT,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACjB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAClF;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC","sourcesContent":["/** Lizard 1.23.0 官方 language readers 支持的 exact input 扩展名。 */\nconst LIZARD_SUPPORTED_FILE_EXTENSIONS = Object.freeze([\n \"c\",\n \"cc\",\n \"cjs\",\n \"cpp\",\n \"cs\",\n \"cxx\",\n \"erl\",\n \"es\",\n \"escript\",\n \"f\",\n \"f03\",\n \"f08\",\n \"f70\",\n \"f90\",\n \"f95\",\n \"for\",\n \"fpp\",\n \"ftn\",\n \"gd\",\n \"go\",\n \"h\",\n \"hpp\",\n \"hrl\",\n \"java\",\n \"js\",\n \"jsx\",\n \"kt\",\n \"kts\",\n \"lua\",\n \"m\",\n \"mjs\",\n \"mm\",\n \"pck\",\n \"php\",\n \"pkb\",\n \"pks\",\n \"pl\",\n \"plb\",\n \"pls\",\n \"pm\",\n \"py\",\n \"r\",\n \"rb\",\n \"rs\",\n \"scala\",\n \"sol\",\n \"sql\",\n \"st\",\n \"swift\",\n \"ts\",\n \"ttcn\",\n \"ttcnpp\",\n \"tsx\",\n \"vue\",\n \"zig\"\n] as const);\n\nconst LIZARD_SUPPORTED_FILE_EXTENSION_SET: ReadonlySet<string> = new Set(\n LIZARD_SUPPORTED_FILE_EXTENSIONS\n);\n\n/** functionMetrics 默认 files.include 使用的 case-insensitive extension globs。 */\nexport const LIZARD_SUPPORTED_FILE_GLOBS = Object.freeze(\n LIZARD_SUPPORTED_FILE_EXTENSIONS.map(\n (extension) => `**/*.${caseInsensitiveExtensionPattern(extension)}`\n )\n);\n\nexport function isLizardTarget(filePath: string): boolean {\n const extensionSeparator = filePath.lastIndexOf(\".\");\n if (extensionSeparator < 0) return false;\n const extension = filePath.slice(extensionSeparator + 1).toLowerCase();\n return LIZARD_SUPPORTED_FILE_EXTENSION_SET.has(extension);\n}\n\nfunction caseInsensitiveExtensionPattern(extension: string): string {\n return extension\n .split(\"\")\n .map((character) =>\n /[a-z]/u.test(character) ? `[${character}${character.toUpperCase()}]` : character\n )\n .join(\"\");\n}\n"]}
1
+ {"version":3,"file":"target-files.mjs","sourceRoot":"","sources":["../../../../src/package-checks/function-metrics/target-files.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0CAA0C,EAC1C,wCAAwC,EACzC,MAAM,uBAAuB,CAAC;AAE/B,mGAAmG;AACnG,MAAM,CAAC,MAAM,qCAAqC,GAAG,MAAM,CAAC,MAAM,CAChE,0CAA0C,CAAC,GAAG,CAC5C,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,+BAA+B,CAAC,SAAS,CAAC,EAAE,CACpE,CACF,CAAC;AAEF,+EAA+E;AAC/E,MAAM,UAAU,uBAAuB,CAAC,QAAgB;IACtD,OAAO,wCAAwC,CAAC,QAAQ,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,+BAA+B,CAAC,SAAiB;IACxD,OAAO,SAAS;SACb,KAAK,CAAC,EAAE,CAAC;SACT,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CACjB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,SAAS,CAClF;SACA,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC","sourcesContent":["import {\n FUNCTION_METRICS_SUPPORTED_FILE_EXTENSIONS,\n isFunctionMetricsAnalyzerSourceSupported\n} from \"./analyzer-adapter.ts\";\n\n/** functionMetrics default files.include uses the adapter's case-insensitive suffix capability. */\nexport const FUNCTION_METRICS_SUPPORTED_FILE_GLOBS = Object.freeze(\n FUNCTION_METRICS_SUPPORTED_FILE_EXTENSIONS.map(\n (extension) => `**/*.${caseInsensitiveExtensionPattern(extension)}`\n )\n);\n\n/** Whether an exact project-relative path has a translated analyzer reader. */\nexport function isFunctionMetricsTarget(filePath: string): boolean {\n return isFunctionMetricsAnalyzerSourceSupported(filePath);\n}\n\nfunction caseInsensitiveExtensionPattern(extension: string): string {\n return extension\n .split(\"\")\n .map((character) =>\n /[a-z]/u.test(character) ? `[${character}${character.toUpperCase()}]` : character\n )\n .join(\"\");\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import { parse } from "csv-parse/sync";
2
+ /** Parses untrusted scanner CSV into a complete matrix of strings. */
2
3
  export function parseCsvRows(csv) {
3
4
  const records = parse(csv, {
4
5
  bom: true,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csv.mjs","sourceRoot":"","sources":["../../../../src/package-checks/host-environment/csv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEvC,sEAAsE;AACtE,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,OAAO,GAAY,KAAK,CAAC,GAAG,EAAE;QAClC,GAAG,EAAE,IAAI;QACT,kBAAkB,EAAE,IAAI;QACxB,gBAAgB,EAAE,IAAI;QACtB,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC;AACjF,CAAC","sourcesContent":["import { parse } from \"csv-parse/sync\";\n\n/** Parses untrusted scanner CSV into a complete matrix of strings. */\nexport function parseCsvRows(csv: string): string[][] {\n const records: unknown = parse(csv, {\n bom: true,\n relax_column_count: true,\n skip_empty_lines: true,\n trim: true\n });\n if (!Array.isArray(records) || !records.every(isStringRow)) {\n throw new Error(\"CSV parser returned non-string rows\");\n }\n return records;\n}\n\nfunction isStringRow(value: unknown): value is string[] {\n return Array.isArray(value) && value.every((item) => typeof item === \"string\");\n}\n"]}
@@ -1,8 +1,19 @@
1
- import { processFailed, runProcessSync } from "./process/command.mjs";
1
+ import { processFailed, runProcessSync } from "./process.mjs";
2
2
  import { toSlashPath } from "./path.mjs";
3
3
  export function runGit(options) {
4
4
  return runProcessSync({ command: "git", ...options });
5
5
  }
6
+ /** Renders the actionable failure evidence shared by Git operation boundaries. */
7
+ export function gitFailureDetail(result) {
8
+ const stderr = result.stderr.trim();
9
+ if (stderr.length > 0)
10
+ return stderr;
11
+ const processErrorMessage = result.error?.message;
12
+ if (processErrorMessage !== undefined && processErrorMessage.length > 0) {
13
+ return processErrorMessage;
14
+ }
15
+ return result.signal === null ? `exit status ${result.status}` : `signal ${result.signal}`;
16
+ }
6
17
  export function gitHeadSha(cwd) {
7
18
  const result = runGit({ args: ["rev-parse", "HEAD"], cwd });
8
19
  if (processFailed(result))
@@ -1 +1 @@
1
- {"version":3,"file":"git.mjs","sourceRoot":"","sources":["../../../../src/package-checks/host-environment/git.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAaxC,MAAM,UAAU,MAAM,CAAC,OAAsB;IAC3C,OAAO,cAAc,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5D,IAAI,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAyB;IACrD,OAAO,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,OAAyB;IACtD,OAAO,WAAW,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAAc;IACzD,OAAO,MAAM;SACV,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;SACzC,GAAG,CAAC,WAAW,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc;IAChD,OAAO,MAAM;SACV,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SAC7B,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,YAAY,GAAG,MAAM,CAAC;QAC5B,OAAO,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YACnC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC;YACpE,CAAC,CAAC,OAAO,CAAC;IACd,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,WAAW,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,EAAsB;IAC7D,MAAM,MAAM,GAAG,MAAM,CAAC;QACpB,IAAI,EAAE,CAAC,KAAK,EAAE,YAAY,MAAM,EAAE,EAAE,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC;QACjE,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,IAAI,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AACtC,CAAC","sourcesContent":["import { processFailed, runProcessSync } from \"./process/command.ts\";\nimport type { ProcessResult, RunProcessSyncOptions } from \"./process/command.ts\";\nimport { toSlashPath } from \"./path.ts\";\n\nexport type RunGitOptions = Omit<RunProcessSyncOptions, \"command\">;\n\nexport type GitCommitOptions = {\n readonly cwd: string;\n readonly sha: string;\n};\n\ntype GitLogFieldOptions = GitCommitOptions & {\n readonly format: string;\n};\n\nexport function runGit(options: RunGitOptions): ProcessResult {\n return runProcessSync({ command: \"git\", ...options });\n}\n\nexport function gitHeadSha(cwd: string): string | null {\n const result = runGit({ args: [\"rev-parse\", \"HEAD\"], cwd });\n if (processFailed(result)) return null;\n return result.stdout.trim() || null;\n}\n\nexport function gitCommitDate(options: GitCommitOptions): string | null {\n return gitLogField({ format: \"%aI\", ...options });\n}\n\nexport function gitCommitTitle(options: GitCommitOptions): string | null {\n return gitLogField({ format: \"%s\", ...options });\n}\n\nexport function splitGitFileList(stdout: string): string[] {\n return stdout.trim().split(/\\r?\\n/).filter(Boolean).map(toSlashPath);\n}\n\nexport function splitNulDelimitedGitFileList(stdout: string): string[] {\n return stdout\n .split(\"\\0\")\n .filter((filePath) => filePath.length > 0)\n .map(toSlashPath);\n}\n\nexport function parseGitStatusPaths(stdout: string): string[] {\n return stdout\n .split(/\\r?\\n/)\n .map((line) => line.trimEnd())\n .filter(Boolean)\n .map((line) => {\n const rawPath = line.slice(3).trim();\n const renameMarker = \" -> \";\n return rawPath.includes(renameMarker)\n ? rawPath.slice(rawPath.indexOf(renameMarker) + renameMarker.length)\n : rawPath;\n })\n .filter(Boolean)\n .map(toSlashPath);\n}\n\nfunction gitLogField({ format, ...options }: GitLogFieldOptions): string | null {\n const result = runGit({\n args: [\"log\", `--format=${format}`, \"--max-count=1\", options.sha],\n cwd: options.cwd\n });\n if (processFailed(result)) return null;\n return result.stdout.trim() || null;\n}\n"]}
1
+ {"version":3,"file":"git.mjs","sourceRoot":"","sources":["../../../../src/package-checks/host-environment/git.ts"],"names":[],"mappings":"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","sourcesContent":["import { processFailed, runProcessSync } from \"./process.ts\";\nimport type { ProcessResult, RunProcessSyncOptions } from \"./process.ts\";\nimport { toSlashPath } from \"./path.ts\";\n\nexport type RunGitOptions = Omit<RunProcessSyncOptions, \"command\">;\n\nexport type GitCommitOptions = {\n readonly cwd: string;\n readonly sha: string;\n};\n\ntype GitLogFieldOptions = GitCommitOptions & {\n readonly format: string;\n};\n\nexport function runGit(options: RunGitOptions): ProcessResult {\n return runProcessSync({ command: \"git\", ...options });\n}\n\n/** Renders the actionable failure evidence shared by Git operation boundaries. */\nexport function gitFailureDetail(result: ProcessResult): string {\n const stderr = result.stderr.trim();\n if (stderr.length > 0) return stderr;\n const processErrorMessage = result.error?.message;\n if (processErrorMessage !== undefined && processErrorMessage.length > 0) {\n return processErrorMessage;\n }\n return result.signal === null ? `exit status ${result.status}` : `signal ${result.signal}`;\n}\n\nexport function gitHeadSha(cwd: string): string | null {\n const result = runGit({ args: [\"rev-parse\", \"HEAD\"], cwd });\n if (processFailed(result)) return null;\n return result.stdout.trim() || null;\n}\n\nexport function gitCommitDate(options: GitCommitOptions): string | null {\n return gitLogField({ format: \"%aI\", ...options });\n}\n\nexport function gitCommitTitle(options: GitCommitOptions): string | null {\n return gitLogField({ format: \"%s\", ...options });\n}\n\nexport function splitGitFileList(stdout: string): string[] {\n return stdout.trim().split(/\\r?\\n/).filter(Boolean).map(toSlashPath);\n}\n\nexport function splitNulDelimitedGitFileList(stdout: string): string[] {\n return stdout\n .split(\"\\0\")\n .filter((filePath) => filePath.length > 0)\n .map(toSlashPath);\n}\n\nexport function parseGitStatusPaths(stdout: string): string[] {\n return stdout\n .split(/\\r?\\n/)\n .map((line) => line.trimEnd())\n .filter(Boolean)\n .map((line) => {\n const rawPath = line.slice(3).trim();\n const renameMarker = \" -> \";\n return rawPath.includes(renameMarker)\n ? rawPath.slice(rawPath.indexOf(renameMarker) + renameMarker.length)\n : rawPath;\n })\n .filter(Boolean)\n .map(toSlashPath);\n}\n\nfunction gitLogField({ format, ...options }: GitLogFieldOptions): string | null {\n const result = runGit({\n args: [\"log\", `--format=${format}`, \"--max-count=1\", options.sha],\n cwd: options.cwd\n });\n if (processFailed(result)) return null;\n return result.stdout.trim() || null;\n}\n"]}
@@ -1,18 +1,2 @@
1
- export function toSlashPath(filePath) {
2
- return filePath.replace(/\\/g, "/");
3
- }
4
- /** 判断值是否已是跨平台可稳定发布的 project-root-relative slash path。 */
5
- export function isNormalizedProjectRelativePath(value) {
6
- if (typeof value !== "string" ||
7
- value.length === 0 ||
8
- value.startsWith("/") ||
9
- value.includes("\\") ||
10
- value.includes("\u0000") ||
11
- /^[A-Za-z]:/u.test(value)) {
12
- return false;
13
- }
14
- return value
15
- .split("/")
16
- .every((segment) => segment.length > 0 && segment !== "." && segment !== "..");
17
- }
1
+ export { isNormalizedProjectRelativePath, toSlashPath } from "../../data-boundary/project-path.mjs";
18
2
  //# sourceMappingURL=path.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"path.mjs","sourceRoot":"","sources":["../../../../src/package-checks/host-environment/path.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,+BAA+B,CAAC,KAAc;IAC5D,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QACrB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QACpB,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EACzB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC;AACnF,CAAC","sourcesContent":["export function toSlashPath(filePath: string): string {\n return filePath.replace(/\\\\/g, \"/\");\n}\n\n/** 判断值是否已是跨平台可稳定发布的 project-root-relative slash path。 */\nexport function isNormalizedProjectRelativePath(value: unknown): value is string {\n if (\n typeof value !== \"string\" ||\n value.length === 0 ||\n value.startsWith(\"/\") ||\n value.includes(\"\\\\\") ||\n value.includes(\"\\u0000\") ||\n /^[A-Za-z]:/u.test(value)\n ) {\n return false;\n }\n return value\n .split(\"/\")\n .every((segment) => segment.length > 0 && segment !== \".\" && segment !== \"..\");\n}\n"]}
1
+ {"version":3,"file":"path.mjs","sourceRoot":"","sources":["../../../../src/package-checks/host-environment/path.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC","sourcesContent":["export { isNormalizedProjectRelativePath, toSlashPath } from \"../../data-boundary/project-path.ts\";\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"contract.mjs","sourceRoot":"","sources":["../../../../../src/package-checks/host-environment/process/contract.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC","sourcesContent":["import type { SyncOptions } from \"execa\";\n\nexport const DEFAULT_PROCESS_MAX_BUFFER_BYTES = 64 * 1024 * 1024;\n\nexport interface ProcessFailure extends Error {\n code?: number | string | null;\n signal?: NodeJS.Signals | null;\n status?: number | null;\n stderr?: Buffer | string;\n stdout?: Buffer | string;\n}\n\nexport type ProcessResult = {\n readonly error?: Error;\n readonly signal: NodeJS.Signals | null;\n readonly status: number | null;\n readonly stderr: string;\n readonly stdout: string;\n};\n\nexport type RunProcessSyncOptions = {\n readonly args: readonly string[];\n readonly command: string;\n readonly cwd?: string | URL;\n readonly encoding?: SyncOptions[\"encoding\"];\n readonly env?: NodeJS.ProcessEnv;\n readonly maxBuffer?: number;\n readonly stdio?: SyncOptions[\"stdio\"];\n readonly timeout?: number;\n readonly windowsHide?: boolean;\n};\n\nexport type RunProcessOptions = {\n readonly args?: readonly string[];\n readonly command: string;\n readonly cwd?: string | URL;\n readonly env?: NodeJS.ProcessEnv;\n readonly label?: string;\n readonly maxBuffer?: number;\n readonly timeout?: number;\n readonly windowsHide?: boolean;\n};\n\nexport type ExecaResultLike = {\n readonly code?: string;\n readonly exitCode?: number;\n readonly failed?: boolean;\n readonly isMaxBuffer?: boolean;\n readonly message?: string;\n readonly originalMessage?: string;\n readonly shortMessage?: string;\n readonly signal?: NodeJS.Signals;\n readonly stderr?: unknown;\n readonly stdout?: unknown;\n readonly timedOut?: boolean;\n};\n"]}
1
+ {"version":3,"file":"contract.mjs","sourceRoot":"","sources":["../../../../../src/package-checks/host-environment/process/contract.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gCAAgC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC","sourcesContent":["import type { SyncOptions } from \"execa\";\n\nexport const DEFAULT_PROCESS_MAX_BUFFER_BYTES = 64 * 1024 * 1024;\n\nexport interface ProcessFailure extends Error {\n code?: number | string | null;\n signal?: NodeJS.Signals | null;\n status?: number | null;\n stderr?: Buffer | string;\n stdout?: Buffer | string;\n}\n\nexport type ProcessResult = {\n readonly error?: Error;\n readonly isCanceled?: true;\n readonly isMaxBuffer?: true;\n readonly signal: NodeJS.Signals | null;\n readonly status: number | null;\n readonly stderr: string;\n readonly timedOut?: true;\n readonly stdout: string;\n};\n\nexport type RunProcessSyncOptions = {\n readonly args: readonly string[];\n readonly command: string;\n readonly cwd?: string | URL;\n readonly encoding?: SyncOptions[\"encoding\"];\n readonly env?: NodeJS.ProcessEnv;\n readonly maxBuffer?: number;\n readonly stdio?: SyncOptions[\"stdio\"];\n readonly timeout?: number;\n readonly windowsHide?: boolean;\n};\n\nexport type RunProcessOptions = {\n readonly args?: readonly string[];\n readonly cancelSignal?: AbortSignal;\n readonly command: string;\n readonly cwd?: string | URL;\n /** `false` uses only the supplied `env`; omission preserves Execa's inherited default. */\n readonly extendEnv?: boolean;\n readonly env?: NodeJS.ProcessEnv;\n readonly label?: string;\n readonly maxBuffer?: number;\n readonly timeout?: number;\n readonly windowsHide?: boolean;\n};\n\nexport type ExecaResultLike = {\n /** Execa's imported result types permit explicitly present `undefined` values. */\n readonly code?: string | undefined;\n readonly exitCode?: number | undefined;\n readonly failed?: boolean | undefined;\n readonly isCanceled?: boolean | undefined;\n readonly isMaxBuffer?: boolean | undefined;\n readonly message?: string | undefined;\n readonly originalMessage?: string | undefined;\n readonly shortMessage?: string | undefined;\n readonly signal?: NodeJS.Signals | undefined;\n readonly stderr?: unknown;\n readonly stdout?: unknown;\n readonly timedOut?: boolean | undefined;\n};\n"]}
@@ -1,33 +1,59 @@
1
1
  export function toProcessResult(result, label) {
2
+ const cause = processCause(result);
3
+ const error = processErrorFor(result, label, cause);
2
4
  return {
3
- error: processErrorFor(result, label),
5
+ ...(error === undefined ? {} : { error }),
6
+ ...(cause === "cancellation" ? { isCanceled: true } : {}),
7
+ ...(cause === "max-buffer" ? { isMaxBuffer: true } : {}),
4
8
  signal: result.signal ?? null,
5
9
  status: result.exitCode ?? null,
6
10
  stderr: outputString(result.stderr),
11
+ ...(cause === "timeout" ? { timedOut: true } : {}),
7
12
  stdout: outputString(result.stdout)
8
13
  };
9
14
  }
10
15
  function outputString(output) {
11
16
  return typeof output === "string" ? output : "";
12
17
  }
13
- function processErrorFor(result, label = "process") {
14
- if (!isExecutionError(result)) {
18
+ function processCause(result) {
19
+ if (typeof result.exitCode === "number" && result.exitCode !== 0)
20
+ return "exit";
21
+ if (result.isCanceled === true)
22
+ return "cancellation";
23
+ if (result.timedOut === true)
24
+ return "timeout";
25
+ if (result.isMaxBuffer === true)
26
+ return "max-buffer";
27
+ if (result.signal !== undefined)
28
+ return "signal";
29
+ if (result.exitCode === 0)
30
+ return "exit";
31
+ return "startup-failure";
32
+ }
33
+ function processErrorFor(result, label, cause) {
34
+ if (!requiresProcessError(cause, result))
15
35
  return undefined;
16
- }
17
- const message = result.originalMessage ?? result.shortMessage ?? result.message ?? `${label} failed`;
18
- const error = new Error(message);
19
- if (result.code) {
20
- error.code = result.code;
21
- }
36
+ const error = new Error(processErrorMessage(result, label));
37
+ const code = processErrorCode(result);
38
+ if (code !== undefined)
39
+ error.code = code;
22
40
  return error;
23
41
  }
24
- function isExecutionError(result) {
25
- if (!result.failed) {
26
- return false;
27
- }
28
- if (typeof result.exitCode === "number") {
29
- return false;
30
- }
31
- return Boolean(result.code || result.timedOut || result.isMaxBuffer || result.signal);
42
+ function requiresProcessError(cause, result) {
43
+ return cause !== "exit" && result.failed === true;
44
+ }
45
+ function processErrorMessage(result, label) {
46
+ if (result.originalMessage !== undefined)
47
+ return result.originalMessage;
48
+ if (result.shortMessage !== undefined)
49
+ return result.shortMessage;
50
+ if (result.message !== undefined)
51
+ return result.message;
52
+ return `${label} failed`;
53
+ }
54
+ function processErrorCode(result) {
55
+ if (result.code === undefined || result.code.length === 0)
56
+ return undefined;
57
+ return result.code;
32
58
  }
33
59
  //# sourceMappingURL=result.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"result.mjs","sourceRoot":"","sources":["../../../../../src/package-checks/host-environment/process/result.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,MAAuB,EAAE,KAAa;IACpE,OAAO;QACL,KAAK,EAAE,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC;QACrC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;QAC7B,MAAM,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QAC/B,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;QACnC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAe;IACnC,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,eAAe,CAAC,MAAuB,EAAE,KAAK,GAAG,SAAS;IACjE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GACX,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,IAAI,GAAG,KAAK,SAAS,CAAC;IACvF,MAAM,KAAK,GAA0B,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAuB;IAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;AACxF,CAAC","sourcesContent":["import type { ExecaResultLike, ProcessResult } from \"./contract.ts\";\n\nexport function toProcessResult(result: ExecaResultLike, label: string): ProcessResult {\n return {\n error: processErrorFor(result, label),\n signal: result.signal ?? null,\n status: result.exitCode ?? null,\n stderr: outputString(result.stderr),\n stdout: outputString(result.stdout)\n };\n}\n\nfunction outputString(output: unknown): string {\n return typeof output === \"string\" ? output : \"\";\n}\n\nfunction processErrorFor(result: ExecaResultLike, label = \"process\"): Error | undefined {\n if (!isExecutionError(result)) {\n return undefined;\n }\n\n const message =\n result.originalMessage ?? result.shortMessage ?? result.message ?? `${label} failed`;\n const error: NodeJS.ErrnoException = new Error(message);\n if (result.code) {\n error.code = result.code;\n }\n return error;\n}\n\nfunction isExecutionError(result: ExecaResultLike): boolean {\n if (!result.failed) {\n return false;\n }\n if (typeof result.exitCode === \"number\") {\n return false;\n }\n return Boolean(result.code || result.timedOut || result.isMaxBuffer || result.signal);\n}\n"]}
1
+ {"version":3,"file":"result.mjs","sourceRoot":"","sources":["../../../../../src/package-checks/host-environment/process/result.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ExecaResultLike, ProcessResult } from \"./contract.ts\";\n\nexport function toProcessResult(result: ExecaResultLike, label: string): ProcessResult {\n const cause = processCause(result);\n const error = processErrorFor(result, label, cause);\n return {\n ...(error === undefined ? {} : { error }),\n ...(cause === \"cancellation\" ? { isCanceled: true as const } : {}),\n ...(cause === \"max-buffer\" ? { isMaxBuffer: true as const } : {}),\n signal: result.signal ?? null,\n status: result.exitCode ?? null,\n stderr: outputString(result.stderr),\n ...(cause === \"timeout\" ? { timedOut: true as const } : {}),\n stdout: outputString(result.stdout)\n };\n}\n\nfunction outputString(output: unknown): string {\n return typeof output === \"string\" ? output : \"\";\n}\n\ntype ProcessCause =\n | \"cancellation\"\n | \"exit\"\n | \"max-buffer\"\n | \"signal\"\n | \"startup-failure\"\n | \"timeout\";\n\nfunction processCause(result: ExecaResultLike): ProcessCause {\n if (typeof result.exitCode === \"number\" && result.exitCode !== 0) return \"exit\";\n if (result.isCanceled === true) return \"cancellation\";\n if (result.timedOut === true) return \"timeout\";\n if (result.isMaxBuffer === true) return \"max-buffer\";\n if (result.signal !== undefined) return \"signal\";\n if (result.exitCode === 0) return \"exit\";\n return \"startup-failure\";\n}\n\nfunction processErrorFor(\n result: ExecaResultLike,\n label: string,\n cause: ProcessCause\n): Error | undefined {\n if (!requiresProcessError(cause, result)) return undefined;\n\n const error: NodeJS.ErrnoException = new Error(processErrorMessage(result, label));\n const code = processErrorCode(result);\n if (code !== undefined) error.code = code;\n return error;\n}\n\nfunction requiresProcessError(cause: ProcessCause, result: ExecaResultLike): boolean {\n return cause !== \"exit\" && result.failed === true;\n}\n\nfunction processErrorMessage(result: ExecaResultLike, label: string): string {\n if (result.originalMessage !== undefined) return result.originalMessage;\n if (result.shortMessage !== undefined) return result.shortMessage;\n if (result.message !== undefined) return result.message;\n return `${label} failed`;\n}\n\nfunction processErrorCode(result: ExecaResultLike): string | undefined {\n if (result.code === undefined || result.code.length === 0) return undefined;\n return result.code;\n}\n"]}
@@ -7,7 +7,7 @@ export function runProcessSync(options) {
7
7
  const result = execaSync(command, args, {
8
8
  ...processOptions,
9
9
  encoding: processOptions.encoding ?? "utf8",
10
- env: plainTextProcessEnv({ env: processOptions.env }),
10
+ env: plainTextProcessEnv(processOptions.env === undefined ? {} : { env: processOptions.env }),
11
11
  maxBuffer: processOptions.maxBuffer ?? DEFAULT_PROCESS_MAX_BUFFER_BYTES,
12
12
  reject: false,
13
13
  stripFinalNewline: false,
@@ -16,14 +16,16 @@ export function runProcessSync(options) {
16
16
  return toProcessResult(result, command);
17
17
  }
18
18
  export function runProcess(options) {
19
- const { args = [], command, cwd, env, label = command, maxBuffer = DEFAULT_PROCESS_MAX_BUFFER_BYTES, timeout, windowsHide = true } = options;
19
+ const { args = [], cancelSignal, command, cwd, env, extendEnv, label = command, maxBuffer = DEFAULT_PROCESS_MAX_BUFFER_BYTES, timeout, windowsHide = true } = options;
20
20
  return execa(command, args, {
21
- cwd,
22
- env: plainTextProcessEnv({ env }),
21
+ ...(cancelSignal === undefined ? {} : { cancelSignal }),
22
+ ...(cwd === undefined ? {} : { cwd }),
23
+ ...(extendEnv === undefined ? {} : { extendEnv }),
24
+ env: plainTextProcessEnv(env === undefined ? {} : { env }),
23
25
  maxBuffer,
24
26
  reject: false,
25
27
  stripFinalNewline: false,
26
- timeout,
28
+ ...(timeout === undefined ? {} : { timeout }),
27
29
  windowsHide
28
30
  }).then((result) => toProcessResult(result, label));
29
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"runner.mjs","sourceRoot":"","sources":["../../../../../src/package-checks/host-environment/process/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,gCAAgC,EAIjC,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,cAAc,CAAC,OAA8B;IAC3D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC;IACrD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE;QACtC,GAAG,cAAc;QACjB,QAAQ,EAAE,cAAc,CAAC,QAAQ,IAAI,MAAM;QAC3C,GAAG,EAAE,mBAAmB,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC;QACrD,SAAS,EAAE,cAAc,CAAC,SAAS,IAAI,gCAAgC;QACvE,MAAM,EAAE,KAAK;QACb,iBAAiB,EAAE,KAAK;QACxB,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,IAAI;KAChD,CAAC,CAAC;IACH,OAAO,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAA0B;IACnD,MAAM,EACJ,IAAI,GAAG,EAAE,EACT,OAAO,EACP,GAAG,EACH,GAAG,EACH,KAAK,GAAG,OAAO,EACf,SAAS,GAAG,gCAAgC,EAC5C,OAAO,EACP,WAAW,GAAG,IAAI,EACnB,GAAG,OAAO,CAAC;IAEZ,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QAC1B,GAAG;QACH,GAAG,EAAE,mBAAmB,CAAC,EAAE,GAAG,EAAE,CAAC;QACjC,SAAS;QACT,MAAM,EAAE,KAAK;QACb,iBAAiB,EAAE,KAAK;QACxB,OAAO;QACP,WAAW;KACZ,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC","sourcesContent":["import { execa, execaSync } from \"execa\";\n\nimport { plainTextProcessEnv } from \"./env.ts\";\nimport { toProcessResult } from \"./result.ts\";\nimport {\n DEFAULT_PROCESS_MAX_BUFFER_BYTES,\n type ProcessResult,\n type RunProcessOptions,\n type RunProcessSyncOptions\n} from \"./contract.ts\";\n\nexport function runProcessSync(options: RunProcessSyncOptions): ProcessResult {\n const { args, command, ...processOptions } = options;\n const result = execaSync(command, args, {\n ...processOptions,\n encoding: processOptions.encoding ?? \"utf8\",\n env: plainTextProcessEnv({ env: processOptions.env }),\n maxBuffer: processOptions.maxBuffer ?? DEFAULT_PROCESS_MAX_BUFFER_BYTES,\n reject: false,\n stripFinalNewline: false,\n windowsHide: processOptions.windowsHide ?? true\n });\n return toProcessResult(result, command);\n}\n\nexport function runProcess(options: RunProcessOptions): Promise<ProcessResult> {\n const {\n args = [],\n command,\n cwd,\n env,\n label = command,\n maxBuffer = DEFAULT_PROCESS_MAX_BUFFER_BYTES,\n timeout,\n windowsHide = true\n } = options;\n\n return execa(command, args, {\n cwd,\n env: plainTextProcessEnv({ env }),\n maxBuffer,\n reject: false,\n stripFinalNewline: false,\n timeout,\n windowsHide\n }).then((result) => toProcessResult(result, label));\n}\n"]}
1
+ {"version":3,"file":"runner.mjs","sourceRoot":"","sources":["../../../../../src/package-checks/host-environment/process/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,gCAAgC,EAIjC,MAAM,eAAe,CAAC;AAEvB,MAAM,UAAU,cAAc,CAAC,OAA8B;IAC3D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC;IACrD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE;QACtC,GAAG,cAAc;QACjB,QAAQ,EAAE,cAAc,CAAC,QAAQ,IAAI,MAAM;QAC3C,GAAG,EAAE,mBAAmB,CAAC,cAAc,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC;QAC7F,SAAS,EAAE,cAAc,CAAC,SAAS,IAAI,gCAAgC;QACvE,MAAM,EAAE,KAAK;QACb,iBAAiB,EAAE,KAAK;QACxB,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,IAAI;KAChD,CAAC,CAAC;IACH,OAAO,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAA0B;IACnD,MAAM,EACJ,IAAI,GAAG,EAAE,EACT,YAAY,EACZ,OAAO,EACP,GAAG,EACH,GAAG,EACH,SAAS,EACT,KAAK,GAAG,OAAO,EACf,SAAS,GAAG,gCAAgC,EAC5C,OAAO,EACP,WAAW,GAAG,IAAI,EACnB,GAAG,OAAO,CAAC;IAEZ,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;QAC1B,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;QACrC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;QACjD,GAAG,EAAE,mBAAmB,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;QAC1D,SAAS;QACT,MAAM,EAAE,KAAK;QACb,iBAAiB,EAAE,KAAK;QACxB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;QAC7C,WAAW;KACZ,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACtD,CAAC","sourcesContent":["import { execa, execaSync } from \"execa\";\n\nimport { plainTextProcessEnv } from \"./env.ts\";\nimport { toProcessResult } from \"./result.ts\";\nimport {\n DEFAULT_PROCESS_MAX_BUFFER_BYTES,\n type ProcessResult,\n type RunProcessOptions,\n type RunProcessSyncOptions\n} from \"./contract.ts\";\n\nexport function runProcessSync(options: RunProcessSyncOptions): ProcessResult {\n const { args, command, ...processOptions } = options;\n const result = execaSync(command, args, {\n ...processOptions,\n encoding: processOptions.encoding ?? \"utf8\",\n env: plainTextProcessEnv(processOptions.env === undefined ? {} : { env: processOptions.env }),\n maxBuffer: processOptions.maxBuffer ?? DEFAULT_PROCESS_MAX_BUFFER_BYTES,\n reject: false,\n stripFinalNewline: false,\n windowsHide: processOptions.windowsHide ?? true\n });\n return toProcessResult(result, command);\n}\n\nexport function runProcess(options: RunProcessOptions): Promise<ProcessResult> {\n const {\n args = [],\n cancelSignal,\n command,\n cwd,\n env,\n extendEnv,\n label = command,\n maxBuffer = DEFAULT_PROCESS_MAX_BUFFER_BYTES,\n timeout,\n windowsHide = true\n } = options;\n\n return execa(command, args, {\n ...(cancelSignal === undefined ? {} : { cancelSignal }),\n ...(cwd === undefined ? {} : { cwd }),\n ...(extendEnv === undefined ? {} : { extendEnv }),\n env: plainTextProcessEnv(env === undefined ? {} : { env }),\n maxBuffer,\n reject: false,\n stripFinalNewline: false,\n ...(timeout === undefined ? {} : { timeout }),\n windowsHide\n }).then((result) => toProcessResult(result, label));\n}\n"]}
@@ -0,0 +1,5 @@
1
+ export { processFailure, processFailureFromResult, processFailed } from "./process/failure.mjs";
2
+ export { PLAIN_TEXT_PROCESS_ENV, plainTextProcessEnv } from "./process/env.mjs";
3
+ export { runProcess, runProcessSync } from "./process/runner.mjs";
4
+ export { DEFAULT_PROCESS_MAX_BUFFER_BYTES } from "./process/contract.mjs";
5
+ //# sourceMappingURL=process.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process.mjs","sourceRoot":"","sources":["../../../../src/package-checks/host-environment/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,gCAAgC,EAAE,MAAM,uBAAuB,CAAC","sourcesContent":["export { processFailure, processFailureFromResult, processFailed } from \"./process/failure.ts\";\nexport { PLAIN_TEXT_PROCESS_ENV, plainTextProcessEnv } from \"./process/env.ts\";\nexport { runProcess, runProcessSync } from \"./process/runner.ts\";\nexport { DEFAULT_PROCESS_MAX_BUFFER_BYTES } from \"./process/contract.ts\";\nexport type {\n ProcessFailure,\n ProcessResult,\n RunProcessOptions,\n RunProcessSyncOptions\n} from \"./process/contract.ts\";\n"]}
@@ -1,25 +1,23 @@
1
1
  import { defineCheck } from "../../check/check.mjs";
2
+ import { resolvePackageCheckAuthoringInput } from "../check-authoring.mjs";
2
3
  import { JSON_SCHEMA_VALIDATION_CHECK_DEFINITION, executeJsonSchemaValidation } from "./json-schema-validation.mjs";
3
4
  import { parseJsonSchemaValidationData } from "./final-data.mjs";
4
5
  import { resolveJsonSchemaValidationOptions } from "./options-resolution.mjs";
5
6
  import { validJsonSchemaValidationOptions } from "./options-validation.mjs";
6
- /**
7
- * 使用可省略的 file、identity、reference、schema 与 binding policy 构造 Check。
8
- *
9
- * @param options - 省略顶层字段和 file fields 使用 package defaults;显式数组是完整替换值。
10
- * @returns 固定 `json-schema-validation` identity、完整冻结 options、parser 与执行逻辑。
11
- * @throws {TypeError} input 不符合 closed authoring policy、identity 或 binding 不变量时抛出。
12
- */
13
7
  export function jsonSchemaValidation(options = {}) {
14
- const resolvedOptions = resolveJsonSchemaValidationOptions(options);
8
+ const input = resolvePackageCheckAuthoringInput(options, ["files", "maximumBytes", "schemaIdentity", "referenceResolution", "schemas", "bindings"], JSON_SCHEMA_VALIDATION_CHECK_DEFINITION);
9
+ if (input === undefined) {
10
+ throw new TypeError("jsonSchemaValidation options must match the documented closed policy");
11
+ }
12
+ const resolvedOptions = resolveJsonSchemaValidationOptions(input.domainOptions);
15
13
  if (resolvedOptions === undefined) {
16
14
  throw new TypeError("jsonSchemaValidation options must match the documented closed policy");
17
15
  }
18
16
  return defineCheck({
19
- ...JSON_SCHEMA_VALIDATION_CHECK_DEFINITION,
20
- execution: executeJsonSchemaValidation,
17
+ ...input.definition,
18
+ execute: executeJsonSchemaValidation,
21
19
  parseData: parseJsonSchemaValidationData,
22
- preflight: (preparedOptions) => validJsonSchemaValidationOptions(preparedOptions)
20
+ prepare: (preparedOptions) => validJsonSchemaValidationOptions(preparedOptions)
23
21
  ? { status: "success", preparedOptions }
24
22
  : {
25
23
  status: "failure",