@zxyycom/vibe-check 0.0.2 → 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 (670) hide show
  1. package/README.md +36 -5
  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 +1 -1
  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/facts.mjs.map +1 -1
  15. package/dist/esm/check-settlement/record-store.mjs +1 -1
  16. package/dist/esm/check-settlement/record-store.mjs.map +1 -1
  17. package/dist/esm/data-boundary/canonical-data.mjs +36 -7
  18. package/dist/esm/data-boundary/canonical-data.mjs.map +1 -1
  19. package/dist/esm/data-boundary/canonical-json.mjs.map +1 -1
  20. package/dist/esm/data-boundary/closed-values.mjs +28 -4
  21. package/dist/esm/data-boundary/closed-values.mjs.map +1 -1
  22. package/dist/esm/{package-checks/project-files → data-boundary}/config-glob.mjs +3 -3
  23. package/dist/esm/data-boundary/config-glob.mjs.map +1 -0
  24. package/dist/esm/data-boundary/project-path.mjs +19 -0
  25. package/dist/esm/data-boundary/project-path.mjs.map +1 -0
  26. package/dist/esm/index.mjs +12 -5
  27. package/dist/esm/index.mjs.map +1 -1
  28. package/dist/esm/machine-output/v4/atomic-publication.mjs +4 -1
  29. package/dist/esm/machine-output/v4/atomic-publication.mjs.map +1 -1
  30. package/dist/esm/package-checks/check-authoring.mjs +69 -0
  31. package/dist/esm/package-checks/check-authoring.mjs.map +1 -0
  32. package/dist/esm/package-checks/code-quality-findings/finding-waiver-authoring.mjs.map +1 -1
  33. package/dist/esm/package-checks/code-quality-findings/finding-waiver-evidence.mjs.map +1 -1
  34. package/dist/esm/package-checks/command-check/command-check.mjs +55 -0
  35. package/dist/esm/package-checks/command-check/command-check.mjs.map +1 -0
  36. package/dist/esm/package-checks/command-check/contract.mjs +2 -0
  37. package/dist/esm/package-checks/command-check/contract.mjs.map +1 -0
  38. package/dist/esm/package-checks/command-check/execution.mjs +134 -0
  39. package/dist/esm/package-checks/command-check/execution.mjs.map +1 -0
  40. package/dist/esm/package-checks/command-check/options.mjs +284 -0
  41. package/dist/esm/package-checks/command-check/options.mjs.map +1 -0
  42. package/dist/esm/package-checks/command-check/transcript.mjs +26 -0
  43. package/dist/esm/package-checks/command-check/transcript.mjs.map +1 -0
  44. package/dist/esm/package-checks/duplicate-detection/default-check.mjs +9 -11
  45. package/dist/esm/package-checks/duplicate-detection/default-check.mjs.map +1 -1
  46. package/dist/esm/package-checks/duplicate-detection/execution.mjs +2 -4
  47. package/dist/esm/package-checks/duplicate-detection/execution.mjs.map +1 -1
  48. package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs +1 -1
  49. package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs.map +1 -1
  50. package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs +1 -1
  51. package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs.map +1 -1
  52. package/dist/esm/package-checks/duplicate-detection/options.mjs.map +1 -1
  53. package/dist/esm/package-checks/duplicate-detection/records.mjs.map +1 -1
  54. package/dist/esm/package-checks/file-metrics/constructor.mjs +9 -11
  55. package/dist/esm/package-checks/file-metrics/constructor.mjs.map +1 -1
  56. package/dist/esm/package-checks/file-metrics/execution.mjs +2 -4
  57. package/dist/esm/package-checks/file-metrics/execution.mjs.map +1 -1
  58. package/dist/esm/package-checks/file-metrics/finding-messages.mjs +1 -1
  59. package/dist/esm/package-checks/file-metrics/finding-messages.mjs.map +1 -1
  60. package/dist/esm/package-checks/file-metrics/options.mjs.map +1 -1
  61. package/dist/esm/package-checks/file-metrics/records.mjs.map +1 -1
  62. package/dist/esm/package-checks/file-metrics/scc/availability.mjs +1 -1
  63. package/dist/esm/package-checks/file-metrics/scc/availability.mjs.map +1 -1
  64. package/dist/esm/package-checks/file-metrics/scc/batch-planner.mjs +38 -0
  65. package/dist/esm/package-checks/file-metrics/scc/batch-planner.mjs.map +1 -0
  66. package/dist/esm/package-checks/file-metrics/scc/logical-scan-resources.mjs +35 -0
  67. package/dist/esm/package-checks/file-metrics/scc/logical-scan-resources.mjs.map +1 -0
  68. package/dist/esm/package-checks/file-metrics/scc/scanner.mjs +102 -29
  69. package/dist/esm/package-checks/file-metrics/scc/scanner.mjs.map +1 -1
  70. package/dist/esm/package-checks/function-metrics/analysis.mjs +7 -2
  71. package/dist/esm/package-checks/function-metrics/analysis.mjs.map +1 -1
  72. package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs +1 -1
  73. package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs.map +1 -1
  74. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs +1 -3
  75. package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs.map +1 -1
  76. package/dist/esm/package-checks/function-metrics/analyzer/extensions/protocol.mjs.map +1 -1
  77. package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs +3 -2
  78. package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs.map +1 -1
  79. package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs +6 -6
  80. package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs.map +1 -1
  81. package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs +1 -1
  82. package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs.map +1 -1
  83. package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs +9 -3
  84. package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs.map +1 -1
  85. package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs +12 -7
  86. package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs.map +1 -1
  87. package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs +6 -6
  88. package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs.map +1 -1
  89. package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs +5 -3
  90. package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs.map +1 -1
  91. package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs +2 -0
  92. package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs.map +1 -1
  93. package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs +9 -3
  94. package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs.map +1 -1
  95. package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs +9 -3
  96. package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs.map +1 -1
  97. package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs +3 -1
  98. package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs.map +1 -1
  99. package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs +3 -1
  100. package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs.map +1 -1
  101. package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs +12 -5
  102. package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs.map +1 -1
  103. package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs +20 -8
  104. package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs.map +1 -1
  105. package/dist/esm/package-checks/function-metrics/constructor.mjs +9 -11
  106. package/dist/esm/package-checks/function-metrics/constructor.mjs.map +1 -1
  107. package/dist/esm/package-checks/function-metrics/execution.mjs +2 -4
  108. package/dist/esm/package-checks/function-metrics/execution.mjs.map +1 -1
  109. package/dist/esm/package-checks/function-metrics/finding-messages.mjs +1 -1
  110. package/dist/esm/package-checks/function-metrics/finding-messages.mjs.map +1 -1
  111. package/dist/esm/package-checks/function-metrics/measurement.mjs +3 -1
  112. package/dist/esm/package-checks/function-metrics/measurement.mjs.map +1 -1
  113. package/dist/esm/package-checks/function-metrics/options.mjs.map +1 -1
  114. package/dist/esm/package-checks/function-metrics/records.mjs.map +1 -1
  115. package/dist/esm/package-checks/host-environment/git.mjs +11 -0
  116. package/dist/esm/package-checks/host-environment/git.mjs.map +1 -1
  117. package/dist/esm/package-checks/host-environment/path.mjs +1 -17
  118. package/dist/esm/package-checks/host-environment/path.mjs.map +1 -1
  119. package/dist/esm/package-checks/host-environment/process/contract.mjs.map +1 -1
  120. package/dist/esm/package-checks/host-environment/process/result.mjs +43 -17
  121. package/dist/esm/package-checks/host-environment/process/result.mjs.map +1 -1
  122. package/dist/esm/package-checks/host-environment/process/runner.mjs +7 -5
  123. package/dist/esm/package-checks/host-environment/process/runner.mjs.map +1 -1
  124. package/dist/esm/package-checks/json-schema-validation/default-check.mjs +9 -11
  125. package/dist/esm/package-checks/json-schema-validation/default-check.mjs.map +1 -1
  126. package/dist/esm/package-checks/json-schema-validation/options.mjs.map +1 -1
  127. package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs +6 -2
  128. package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs.map +1 -1
  129. package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs +11 -3
  130. package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs.map +1 -1
  131. package/dist/esm/package-checks/json-validation/default-check.mjs +9 -11
  132. package/dist/esm/package-checks/json-validation/default-check.mjs.map +1 -1
  133. package/dist/esm/package-checks/json-validation/options.mjs.map +1 -1
  134. package/dist/esm/package-checks/local-cache-options.mjs +28 -0
  135. package/dist/esm/package-checks/local-cache-options.mjs.map +1 -0
  136. package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs +37 -45
  137. package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs.map +1 -1
  138. package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs +3 -1
  139. package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs.map +1 -1
  140. package/dist/esm/package-checks/markdown-link-validation/default-check.mjs +19 -33
  141. package/dist/esm/package-checks/markdown-link-validation/default-check.mjs.map +1 -1
  142. package/dist/esm/package-checks/markdown-link-validation/execution.mjs +1 -1
  143. package/dist/esm/package-checks/markdown-link-validation/execution.mjs.map +1 -1
  144. package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs +1 -1
  145. package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs.map +1 -1
  146. package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs +1 -3
  147. package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs.map +1 -1
  148. package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs +3 -18
  149. package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs.map +1 -1
  150. package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs +2 -14
  151. package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs.map +1 -1
  152. package/dist/esm/package-checks/markdown-link-validation/options.mjs.map +1 -1
  153. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs +4 -5
  154. package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs.map +1 -1
  155. package/dist/esm/package-checks/markdown-lint/adapter.mjs +125 -0
  156. package/dist/esm/package-checks/markdown-lint/adapter.mjs.map +1 -0
  157. package/dist/esm/package-checks/markdown-lint/default-check.mjs +37 -0
  158. package/dist/esm/package-checks/markdown-lint/default-check.mjs.map +1 -0
  159. package/dist/esm/package-checks/markdown-lint/execution.mjs +202 -0
  160. package/dist/esm/package-checks/markdown-lint/execution.mjs.map +1 -0
  161. package/dist/esm/package-checks/markdown-lint/final-data.mjs +16 -0
  162. package/dist/esm/package-checks/markdown-lint/final-data.mjs.map +1 -0
  163. package/dist/esm/package-checks/markdown-lint/finding-messages.mjs +72 -0
  164. package/dist/esm/package-checks/markdown-lint/finding-messages.mjs.map +1 -0
  165. package/dist/esm/package-checks/markdown-lint/finding-waiver-identity.mjs +41 -0
  166. package/dist/esm/package-checks/markdown-lint/finding-waiver-identity.mjs.map +1 -0
  167. package/dist/esm/package-checks/markdown-lint/findings-cache.mjs +110 -0
  168. package/dist/esm/package-checks/markdown-lint/findings-cache.mjs.map +1 -0
  169. package/dist/esm/package-checks/markdown-lint/options-resolution.mjs +74 -0
  170. package/dist/esm/package-checks/markdown-lint/options-resolution.mjs.map +1 -0
  171. package/dist/esm/package-checks/markdown-lint/options-validation.mjs +41 -0
  172. package/dist/esm/package-checks/markdown-lint/options-validation.mjs.map +1 -0
  173. package/dist/esm/package-checks/markdown-lint/options.mjs +13 -0
  174. package/dist/esm/package-checks/markdown-lint/options.mjs.map +1 -0
  175. package/dist/esm/package-checks/markdown-lint/records.mjs +65 -0
  176. package/dist/esm/package-checks/markdown-lint/records.mjs.map +1 -0
  177. package/dist/esm/package-checks/markdown-lint/unavailable-reasons.mjs +14 -0
  178. package/dist/esm/package-checks/markdown-lint/unavailable-reasons.mjs.map +1 -0
  179. package/dist/esm/package-checks/project-files/collection.mjs +23 -19
  180. package/dist/esm/package-checks/project-files/collection.mjs.map +1 -1
  181. package/dist/esm/package-checks/project-files/configuration.mjs +1 -1
  182. package/dist/esm/package-checks/project-files/configuration.mjs.map +1 -1
  183. package/dist/esm/package-checks/project-files/gitlink-revision.mjs +2 -5
  184. package/dist/esm/package-checks/project-files/gitlink-revision.mjs.map +1 -1
  185. package/dist/esm/package-checks/project-files/gitlink-worktree.mjs +22 -6
  186. package/dist/esm/package-checks/project-files/gitlink-worktree.mjs.map +1 -1
  187. package/dist/esm/package-checks/project-files/public-collection.mjs +1 -1
  188. package/dist/esm/package-checks/project-files/public-collection.mjs.map +1 -1
  189. package/dist/esm/package-checks/project-files/revision-paths.mjs +3 -3
  190. package/dist/esm/package-checks/project-files/revision-paths.mjs.map +1 -1
  191. package/dist/esm/package-checks/project-files/revision-worktree-files.mjs +11 -15
  192. package/dist/esm/package-checks/project-files/revision-worktree-files.mjs.map +1 -1
  193. package/dist/esm/package-checks/secret-detection/default-check.mjs +9 -11
  194. package/dist/esm/package-checks/secret-detection/default-check.mjs.map +1 -1
  195. package/dist/esm/package-checks/secret-detection/execution.mjs +2 -2
  196. package/dist/esm/package-checks/secret-detection/execution.mjs.map +1 -1
  197. package/dist/esm/package-checks/secret-detection/input-preparation.mjs +46 -7
  198. package/dist/esm/package-checks/secret-detection/input-preparation.mjs.map +1 -1
  199. package/dist/esm/package-checks/secret-detection/options.mjs.map +1 -1
  200. package/dist/esm/package-checks/secret-detection/records.mjs.map +1 -1
  201. package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs +3 -4
  202. package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs.map +1 -1
  203. package/dist/esm/package-tools/admission-policy/define-admission-policy.mjs +10 -0
  204. package/dist/esm/package-tools/admission-policy/define-admission-policy.mjs.map +1 -0
  205. package/dist/esm/{cache → package-tools/cache}/cache-json-by-key.mjs +13 -14
  206. package/dist/esm/package-tools/cache/cache-json-by-key.mjs.map +1 -0
  207. package/dist/esm/package-tools/finding-presentation/finding-presentation.mjs.map +1 -0
  208. package/dist/esm/{finding-waivers → package-tools/finding-waivers}/reconciliation.mjs +14 -5
  209. package/dist/esm/package-tools/finding-waivers/reconciliation.mjs.map +1 -0
  210. package/dist/esm/package-tools/learned-critical-path/critical-path-ranking.mjs.map +1 -0
  211. package/dist/esm/package-tools/learned-critical-path/duration-model/bounded-history.mjs.map +1 -0
  212. package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/prediction.mjs +2 -2
  213. package/dist/esm/package-tools/learned-critical-path/duration-model/prediction.mjs.map +1 -0
  214. package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/preparation.mjs +4 -2
  215. package/dist/esm/package-tools/learned-critical-path/duration-model/preparation.mjs.map +1 -0
  216. package/dist/esm/package-tools/learned-critical-path/duration-model/recording.mjs.map +1 -0
  217. package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/storage.mjs +8 -8
  218. package/dist/esm/package-tools/learned-critical-path/duration-model/storage.mjs.map +1 -0
  219. package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/selection-layers.mjs +1 -2
  220. package/dist/esm/package-tools/learned-critical-path/selection-layers.mjs.map +1 -0
  221. package/dist/esm/package-tools/learned-critical-path/static-decision.mjs.map +1 -0
  222. package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/strategy.mjs +3 -3
  223. package/dist/esm/package-tools/learned-critical-path/strategy.mjs.map +1 -0
  224. package/dist/esm/project-definition/check-tree/authoring.mjs +8 -5
  225. package/dist/esm/project-definition/check-tree/authoring.mjs.map +1 -1
  226. package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs +79 -66
  227. package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs.map +1 -1
  228. package/dist/esm/project-definition/check-tree/flag-conditions.mjs +71 -0
  229. package/dist/esm/project-definition/check-tree/flag-conditions.mjs.map +1 -0
  230. package/dist/esm/project-definition/check-tree/materialization.mjs +13 -8
  231. package/dist/esm/project-definition/check-tree/materialization.mjs.map +1 -1
  232. package/dist/esm/project-definition/check-tree/resolution.mjs +7 -6
  233. package/dist/esm/project-definition/check-tree/resolution.mjs.map +1 -1
  234. package/dist/esm/project-definition/declarative-snapshot.mjs +2 -1
  235. package/dist/esm/project-definition/declarative-snapshot.mjs.map +1 -1
  236. package/dist/esm/project-definition/project-changes.mjs +70 -0
  237. package/dist/esm/project-definition/project-changes.mjs.map +1 -0
  238. package/dist/esm/project-definition/project-definition-validation.mjs +40 -8
  239. package/dist/esm/project-definition/project-definition-validation.mjs.map +1 -1
  240. package/dist/esm/project-definition/project-definition.mjs +22 -15
  241. package/dist/esm/project-definition/project-definition.mjs.map +1 -1
  242. package/dist/esm/project-definition/scheduler-policy.mjs.map +1 -1
  243. package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs +9 -6
  244. package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs.map +1 -1
  245. package/dist/esm/project-run/admission-strategy-provider/prepared-admission-strategy.mjs.map +1 -1
  246. package/dist/esm/project-run/aggregation.mjs +42 -59
  247. package/dist/esm/project-run/aggregation.mjs.map +1 -1
  248. package/dist/esm/project-run/changes/git.mjs +161 -0
  249. package/dist/esm/project-run/changes/git.mjs.map +1 -0
  250. package/dist/esm/project-run/check-execution/admitted-check-execution.mjs +41 -0
  251. package/dist/esm/project-run/check-execution/admitted-check-execution.mjs.map +1 -0
  252. package/dist/esm/project-run/check-execution/callback.mjs +3 -2
  253. package/dist/esm/project-run/check-execution/callback.mjs.map +1 -1
  254. package/dist/esm/project-run/check-execution/dependencies.mjs +80 -5
  255. package/dist/esm/project-run/check-execution/dependencies.mjs.map +1 -1
  256. package/dist/esm/project-run/check-execution/execution-finalization.mjs +5 -3
  257. package/dist/esm/project-run/check-execution/execution-finalization.mjs.map +1 -1
  258. package/dist/esm/project-run/check-execution/execution-settlement.mjs +37 -16
  259. package/dist/esm/project-run/check-execution/execution-settlement.mjs.map +1 -1
  260. package/dist/esm/project-run/check-execution/flag-controls.mjs +15 -7
  261. package/dist/esm/project-run/check-execution/flag-controls.mjs.map +1 -1
  262. package/dist/esm/project-run/check-execution/lifecycle.mjs.map +1 -1
  263. package/dist/esm/project-run/check-execution/{preflight-result.mjs → preparation-result.mjs} +24 -24
  264. package/dist/esm/project-run/check-execution/preparation-result.mjs.map +1 -0
  265. package/dist/esm/project-run/check-execution/{preflight.mjs → preparation.mjs} +52 -52
  266. package/dist/esm/project-run/check-execution/preparation.mjs.map +1 -0
  267. package/dist/esm/project-run/check-execution/ready-check-execution.mjs +71 -0
  268. package/dist/esm/project-run/check-execution/ready-check-execution.mjs.map +1 -0
  269. package/dist/esm/project-run/check-execution/resolved-checks.mjs +27 -164
  270. package/dist/esm/project-run/check-execution/resolved-checks.mjs.map +1 -1
  271. package/dist/esm/project-run/check-execution/scheduled-check-run.mjs +79 -0
  272. package/dist/esm/project-run/check-execution/scheduled-check-run.mjs.map +1 -0
  273. package/dist/esm/project-run/check-execution/terminal-result.mjs +70 -25
  274. package/dist/esm/project-run/check-execution/terminal-result.mjs.map +1 -1
  275. package/dist/esm/project-run/completion/completion.mjs +18 -1
  276. package/dist/esm/project-run/completion/completion.mjs.map +1 -1
  277. package/dist/esm/project-run/controls/contract.mjs.map +1 -1
  278. package/dist/esm/project-run/controls/validation.mjs +7 -54
  279. package/dist/esm/project-run/controls/validation.mjs.map +1 -1
  280. package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs +3 -3
  281. package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs.map +1 -1
  282. package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs +1 -1
  283. package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs.map +1 -1
  284. package/dist/esm/project-run/invocation/candidate.mjs +17 -13
  285. package/dist/esm/project-run/invocation/candidate.mjs.map +1 -1
  286. package/dist/esm/project-run/invocation/candidates.mjs +26 -0
  287. package/dist/esm/project-run/invocation/candidates.mjs.map +1 -0
  288. package/dist/esm/project-run/invocation/creation.mjs +7 -3
  289. package/dist/esm/project-run/invocation/creation.mjs.map +1 -1
  290. package/dist/esm/project-run/invocation/execution.mjs +98 -0
  291. package/dist/esm/project-run/invocation/execution.mjs.map +1 -0
  292. package/dist/esm/project-run/invocation/run.mjs +13 -112
  293. package/dist/esm/project-run/invocation/run.mjs.map +1 -1
  294. package/dist/esm/project-run/invocation/scheduler.mjs +13 -6
  295. package/dist/esm/project-run/invocation/scheduler.mjs.map +1 -1
  296. package/dist/esm/project-run/outputs/status.mjs +12 -12
  297. package/dist/esm/project-run/outputs/status.mjs.map +1 -1
  298. package/dist/esm/project-run/progress-rendering/presentation.mjs +31 -11
  299. package/dist/esm/project-run/progress-rendering/presentation.mjs.map +1 -1
  300. package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs +11 -4
  301. package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs.map +1 -1
  302. package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs +20 -6
  303. package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs.map +1 -1
  304. package/dist/esm/project-run/progress-rendering/renderer.mjs +6 -2
  305. package/dist/esm/project-run/progress-rendering/renderer.mjs.map +1 -1
  306. package/dist/esm/project-run/project-context.mjs +2 -1
  307. package/dist/esm/project-run/project-context.mjs.map +1 -1
  308. package/dist/esm/project-run/result.mjs +2 -2
  309. package/dist/esm/project-run/result.mjs.map +1 -1
  310. package/dist/esm/project-run/run.mjs.map +1 -1
  311. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph-lookup.mjs +45 -0
  312. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph-lookup.mjs.map +1 -0
  313. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs +9 -4
  314. package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs.map +1 -1
  315. package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs +3 -5
  316. package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs.map +1 -1
  317. package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs +25 -8
  318. package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs.map +1 -1
  319. package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs +8 -8
  320. package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs.map +1 -1
  321. package/dist/esm/project-run/task-scheduler/execution-state.mjs.map +1 -1
  322. package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs +8 -4
  323. package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs.map +1 -1
  324. package/dist/esm/project-run/task-scheduler/measurement/timing.mjs +12 -6
  325. package/dist/esm/project-run/task-scheduler/measurement/timing.mjs.map +1 -1
  326. package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs +3 -1
  327. package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs.map +1 -1
  328. package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs +17 -17
  329. package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs.map +1 -1
  330. package/dist/esm/project-run/task-scheduler/scheduler.mjs +18 -6
  331. package/dist/esm/project-run/task-scheduler/scheduler.mjs.map +1 -1
  332. package/docs/api-mechanics.md +147 -28
  333. package/docs/changelog.md +145 -2
  334. package/docs/checks/duplicate-detection.md +22 -3
  335. package/docs/checks/file-metrics.md +25 -6
  336. package/docs/checks/function-metrics.md +21 -2
  337. package/docs/checks/json-schema-validation.md +25 -4
  338. package/docs/checks/json-validation.md +24 -5
  339. package/docs/checks/maintenance-reminders.md +30 -6
  340. package/docs/checks/markdown-link-validation.md +24 -4
  341. package/docs/checks/markdown-lint.md +167 -0
  342. package/docs/checks/secret-detection.md +31 -7
  343. package/docs/examples/artifacts/mixed-outcomes/definition.ts +10 -10
  344. package/docs/guides/building-project-gate.md +706 -0
  345. package/docs/guides/callbacks.md +81 -22
  346. package/docs/guides/check-dependencies.md +41 -10
  347. package/docs/guides/collecting-project-files.md +7 -7
  348. package/docs/guides/command-check.md +155 -0
  349. package/docs/guides/data-boundaries.md +140 -0
  350. package/docs/guides/extending-check-lifecycle.md +77 -25
  351. package/docs/guides/finding-waivers.md +43 -1
  352. package/docs/guides/learned-scheduling.md +1 -1
  353. package/docs/guides/run-outputs.md +35 -9
  354. package/docs/guides/scheduling.md +15 -15
  355. package/docs/output.md +6 -5
  356. package/package.json +2 -1
  357. package/src/check/check.ts +332 -92
  358. package/src/check/flag-enablement.ts +76 -0
  359. package/src/check/handoff-provider-identity.ts +34 -0
  360. package/src/check/inherited-collection.ts +1 -1
  361. package/src/check/project-changes.ts +14 -0
  362. package/src/check/project-context.ts +11 -0
  363. package/src/check-settlement/facts.ts +1 -1
  364. package/src/check-settlement/record-store.ts +1 -1
  365. package/src/data-boundary/canonical-data.ts +36 -9
  366. package/src/data-boundary/canonical-json.ts +18 -1
  367. package/src/data-boundary/closed-values.ts +26 -6
  368. package/src/data-boundary/config-glob.ts +17 -0
  369. package/src/data-boundary/project-path.ts +21 -0
  370. package/src/index.ts +72 -11
  371. package/src/machine-output/v4/atomic-publication.ts +3 -1
  372. package/src/package-checks/check-authoring.ts +136 -0
  373. package/src/package-checks/code-quality-findings/finding-waiver-authoring.ts +1 -1
  374. package/src/package-checks/code-quality-findings/finding-waiver-evidence.ts +1 -1
  375. package/src/package-checks/command-check/command-check.ts +152 -0
  376. package/src/package-checks/command-check/contract.ts +168 -0
  377. package/src/package-checks/command-check/execution.ts +211 -0
  378. package/src/package-checks/command-check/options.ts +331 -0
  379. package/src/package-checks/command-check/transcript.ts +35 -0
  380. package/src/package-checks/duplicate-detection/default-check.ts +37 -6
  381. package/src/package-checks/duplicate-detection/execution.ts +2 -4
  382. package/src/package-checks/duplicate-detection/finding-messages.ts +2 -2
  383. package/src/package-checks/duplicate-detection/jscpd/availability.ts +1 -1
  384. package/src/package-checks/duplicate-detection/options.ts +6 -3
  385. package/src/package-checks/duplicate-detection/records.ts +1 -1
  386. package/src/package-checks/file-metrics/constructor.ts +29 -6
  387. package/src/package-checks/file-metrics/execution.ts +2 -4
  388. package/src/package-checks/file-metrics/finding-messages.ts +1 -1
  389. package/src/package-checks/file-metrics/options.ts +6 -3
  390. package/src/package-checks/file-metrics/records.ts +1 -1
  391. package/src/package-checks/file-metrics/scc/availability.ts +1 -1
  392. package/src/package-checks/file-metrics/scc/batch-planner.ts +56 -0
  393. package/src/package-checks/file-metrics/scc/logical-scan-resources.ts +59 -0
  394. package/src/package-checks/file-metrics/scc/scanner.ts +134 -32
  395. package/src/package-checks/function-metrics/analysis.ts +7 -2
  396. package/src/package-checks/function-metrics/analyzer/analysis-model.ts +1 -1
  397. package/src/package-checks/function-metrics/analyzer/extension-output.ts +14 -6
  398. package/src/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.ts +1 -3
  399. package/src/package-checks/function-metrics/analyzer/extensions/protocol.ts +3 -3
  400. package/src/package-checks/function-metrics/analyzer/pipeline.ts +4 -2
  401. package/src/package-checks/function-metrics/analyzer/readers/erlang.ts +6 -6
  402. package/src/package-checks/function-metrics/analyzer/readers/fortran.ts +1 -1
  403. package/src/package-checks/function-metrics/analyzer/readers/objc.ts +9 -3
  404. package/src/package-checks/function-metrics/analyzer/readers/php-states.ts +14 -7
  405. package/src/package-checks/function-metrics/analyzer/readers/plsql.ts +8 -4
  406. package/src/package-checks/function-metrics/analyzer/readers/python.ts +4 -3
  407. package/src/package-checks/function-metrics/analyzer/readers/r.ts +2 -1
  408. package/src/package-checks/function-metrics/analyzer/readers/ttcn.ts +9 -3
  409. package/src/package-checks/function-metrics/analyzer/readers/typescript.ts +9 -3
  410. package/src/package-checks/function-metrics/analyzer/readers/zig.ts +2 -1
  411. package/src/package-checks/function-metrics/analyzer/shared/code-reader.ts +3 -1
  412. package/src/package-checks/function-metrics/analyzer/shared/js-style-regex.ts +10 -5
  413. package/src/package-checks/function-metrics/analyzer-worker-port.ts +20 -6
  414. package/src/package-checks/function-metrics/constructor.ts +30 -7
  415. package/src/package-checks/function-metrics/execution.ts +2 -4
  416. package/src/package-checks/function-metrics/finding-messages.ts +2 -2
  417. package/src/package-checks/function-metrics/measurement.ts +3 -1
  418. package/src/package-checks/function-metrics/options.ts +6 -3
  419. package/src/package-checks/function-metrics/records.ts +1 -1
  420. package/src/package-checks/host-environment/git.ts +11 -0
  421. package/src/package-checks/host-environment/path.ts +1 -20
  422. package/src/package-checks/host-environment/process/contract.ts +17 -9
  423. package/src/package-checks/host-environment/process/result.ts +48 -20
  424. package/src/package-checks/host-environment/process/runner.ts +8 -4
  425. package/src/package-checks/json-schema-validation/default-check.ts +38 -5
  426. package/src/package-checks/json-schema-validation/options.ts +4 -1
  427. package/src/package-checks/json-schema-validation/reference-resolver.ts +6 -2
  428. package/src/package-checks/json-schema-validation/schema-policy.ts +10 -5
  429. package/src/package-checks/json-validation/default-check.ts +27 -6
  430. package/src/package-checks/json-validation/options.ts +4 -1
  431. package/src/package-checks/local-cache-options.ts +40 -0
  432. package/src/package-checks/maintenance-reminders/maintenance-reminders.ts +89 -9
  433. package/src/package-checks/maintenance-reminders/maintenance-support.ts +3 -3
  434. package/src/package-checks/markdown-link-validation/default-check.ts +48 -5
  435. package/src/package-checks/markdown-link-validation/execution.ts +1 -1
  436. package/src/package-checks/markdown-link-validation/finding-messages.ts +1 -1
  437. package/src/package-checks/markdown-link-validation/markdown-parser.ts +1 -5
  438. package/src/package-checks/markdown-link-validation/options-resolution.ts +2 -19
  439. package/src/package-checks/markdown-link-validation/options-validation.ts +2 -17
  440. package/src/package-checks/markdown-link-validation/options.ts +6 -7
  441. package/src/package-checks/markdown-link-validation/parse-facts-cache-payload.ts +4 -5
  442. package/src/package-checks/markdown-lint/adapter.ts +167 -0
  443. package/src/package-checks/markdown-lint/default-check.ts +92 -0
  444. package/src/package-checks/markdown-lint/execution.ts +266 -0
  445. package/src/package-checks/markdown-lint/final-data.ts +33 -0
  446. package/src/package-checks/markdown-lint/finding-messages.ts +87 -0
  447. package/src/package-checks/markdown-lint/finding-waiver-identity.ts +54 -0
  448. package/src/package-checks/markdown-lint/findings-cache.ts +141 -0
  449. package/src/package-checks/markdown-lint/options-resolution.ts +102 -0
  450. package/src/package-checks/markdown-lint/options-validation.ts +50 -0
  451. package/src/package-checks/markdown-lint/options.ts +82 -0
  452. package/src/package-checks/markdown-lint/records.ts +132 -0
  453. package/src/package-checks/markdown-lint/unavailable-reasons.ts +33 -0
  454. package/src/package-checks/project-files/collection.ts +38 -22
  455. package/src/package-checks/project-files/config-glob.ts +1 -17
  456. package/src/package-checks/project-files/configuration.ts +1 -1
  457. package/src/package-checks/project-files/gitlink-revision.ts +4 -6
  458. package/src/package-checks/project-files/gitlink-worktree.ts +35 -7
  459. package/src/package-checks/project-files/public-collection.ts +1 -1
  460. package/src/package-checks/project-files/revision-paths.ts +3 -3
  461. package/src/package-checks/project-files/revision-worktree-files.ts +16 -16
  462. package/src/package-checks/secret-detection/default-check.ts +29 -6
  463. package/src/package-checks/secret-detection/execution.ts +2 -2
  464. package/src/package-checks/secret-detection/input-preparation.ts +64 -7
  465. package/src/package-checks/secret-detection/options.ts +5 -2
  466. package/src/package-checks/secret-detection/records.ts +1 -1
  467. package/src/package-checks/secret-detection/secretlint/adapter.ts +3 -4
  468. package/src/package-tools/admission-policy/define-admission-policy.ts +54 -0
  469. package/src/{cache → package-tools/cache}/cache-json-by-key.ts +13 -17
  470. package/src/{check → package-tools/finding-presentation}/finding-presentation.ts +3 -1
  471. package/src/{finding-waivers → package-tools/finding-waivers}/reconciliation.ts +16 -8
  472. package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/prediction.ts +5 -2
  473. package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/preparation.ts +5 -3
  474. package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/recording.ts +5 -4
  475. package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/storage.ts +9 -10
  476. package/src/{learned-critical-path → package-tools/learned-critical-path}/selection-layers.ts +2 -3
  477. package/src/{learned-critical-path → package-tools/learned-critical-path}/static-decision.ts +1 -1
  478. package/src/{learned-critical-path → package-tools/learned-critical-path}/strategy.ts +7 -4
  479. package/src/project-definition/check-tree/authoring.ts +15 -8
  480. package/src/project-definition/check-tree/check-fields-authoring.ts +106 -91
  481. package/src/project-definition/check-tree/flag-conditions.ts +99 -0
  482. package/src/project-definition/check-tree/materialization.ts +12 -8
  483. package/src/project-definition/check-tree/resolution.ts +13 -15
  484. package/src/project-definition/declarative-snapshot.ts +9 -2
  485. package/src/project-definition/project-changes.ts +112 -0
  486. package/src/project-definition/project-definition-validation.ts +58 -10
  487. package/src/project-definition/project-definition.ts +41 -68
  488. package/src/project-definition/scheduler-policy.ts +6 -3
  489. package/src/project-run/admission-strategy-provider/custom-strategy-preparation.ts +11 -8
  490. package/src/project-run/admission-strategy-provider/prepared-admission-strategy.ts +2 -2
  491. package/src/project-run/aggregation.ts +51 -74
  492. package/src/project-run/changes/git.ts +206 -0
  493. package/src/project-run/check-execution/admitted-check-execution.ts +62 -0
  494. package/src/project-run/check-execution/callback.ts +3 -2
  495. package/src/project-run/check-execution/dependencies.ts +120 -6
  496. package/src/project-run/check-execution/execution-finalization.ts +6 -4
  497. package/src/project-run/check-execution/execution-settlement.ts +88 -29
  498. package/src/project-run/check-execution/flag-controls.ts +22 -8
  499. package/src/project-run/check-execution/lifecycle.ts +14 -6
  500. package/src/project-run/check-execution/{preflight-result.ts → preparation-result.ts} +34 -32
  501. package/src/project-run/check-execution/{preflight.ts → preparation.ts} +92 -84
  502. package/src/project-run/check-execution/ready-check-execution.ts +97 -0
  503. package/src/project-run/check-execution/resolved-checks.ts +40 -219
  504. package/src/project-run/check-execution/scheduled-check-run.ts +119 -0
  505. package/src/project-run/check-execution/terminal-result.ts +108 -29
  506. package/src/project-run/completion/completion.ts +17 -3
  507. package/src/project-run/controls/contract.ts +6 -16
  508. package/src/project-run/controls/validation.ts +7 -60
  509. package/src/project-run/diagnostic-logging/diagnostic-detail-rendering.ts +1 -2
  510. package/src/project-run/diagnostic-logging/observation-rendering.ts +1 -1
  511. package/src/project-run/invocation/candidate.ts +28 -15
  512. package/src/project-run/invocation/candidates.ts +56 -0
  513. package/src/project-run/invocation/creation.ts +7 -3
  514. package/src/project-run/invocation/execution.ts +136 -0
  515. package/src/project-run/invocation/run.ts +15 -179
  516. package/src/project-run/invocation/scheduler.ts +13 -6
  517. package/src/project-run/outputs/status.ts +15 -15
  518. package/src/project-run/progress-rendering/presentation.ts +35 -13
  519. package/src/project-run/progress-rendering/renderer-formatting.ts +20 -7
  520. package/src/project-run/progress-rendering/renderer-lifecycle.ts +23 -6
  521. package/src/project-run/progress-rendering/renderer.ts +10 -4
  522. package/src/project-run/project-context.ts +8 -4
  523. package/src/project-run/result.ts +5 -5
  524. package/src/project-run/run.ts +1 -1
  525. package/src/project-run/task-scheduler/admission-core/compiled-graph-lookup.ts +71 -0
  526. package/src/project-run/task-scheduler/admission-core/compiled-graph.ts +9 -4
  527. package/src/project-run/task-scheduler/admission-core/selection-query.ts +6 -4
  528. package/src/project-run/task-scheduler/admission-core/selection-seed.ts +36 -6
  529. package/src/project-run/task-scheduler/admission-core/selection-transition.ts +17 -8
  530. package/src/project-run/task-scheduler/execution-state.ts +4 -4
  531. package/src/project-run/task-scheduler/measurement/diagnostics.ts +10 -4
  532. package/src/project-run/task-scheduler/measurement/timing.ts +13 -5
  533. package/src/project-run/task-scheduler/scheduler-observation.ts +3 -1
  534. package/src/project-run/task-scheduler/scheduler-terminal-measurement.ts +24 -22
  535. package/src/project-run/task-scheduler/scheduler.ts +23 -6
  536. package/types/check/check.d.ts +178 -67
  537. package/types/check/flag-enablement.d.ts +42 -0
  538. package/types/check/handoff-provider-identity.d.ts +12 -0
  539. package/types/check/project-changes.d.ts +13 -0
  540. package/types/check/project-context.d.ts +10 -0
  541. package/types/check-settlement/facts.d.ts +1 -1
  542. package/types/data-boundary/canonical-data.d.ts +28 -5
  543. package/types/data-boundary/canonical-json.d.ts +18 -1
  544. package/types/data-boundary/closed-values.d.ts +17 -1
  545. package/types/data-boundary/config-glob.d.ts +5 -0
  546. package/types/data-boundary/project-path.d.ts +4 -0
  547. package/types/index.d.ts +27 -11
  548. package/types/package-checks/check-authoring.d.ts +45 -0
  549. package/types/package-checks/code-quality-findings/finding-waiver-authoring.d.ts +1 -1
  550. package/types/package-checks/code-quality-findings/finding-waiver-evidence.d.ts +1 -1
  551. package/types/package-checks/command-check/command-check.d.ts +48 -0
  552. package/types/package-checks/command-check/contract.d.ts +108 -0
  553. package/types/package-checks/command-check/execution.d.ts +7 -0
  554. package/types/package-checks/command-check/options.d.ts +11 -0
  555. package/types/package-checks/command-check/transcript.d.ts +8 -0
  556. package/types/package-checks/duplicate-detection/default-check.d.ts +5 -2
  557. package/types/package-checks/duplicate-detection/finding-messages.d.ts +1 -1
  558. package/types/package-checks/duplicate-detection/options.d.ts +4 -3
  559. package/types/package-checks/duplicate-detection/records.d.ts +1 -1
  560. package/types/package-checks/file-metrics/constructor.d.ts +5 -2
  561. package/types/package-checks/file-metrics/options.d.ts +4 -3
  562. package/types/package-checks/file-metrics/records.d.ts +1 -1
  563. package/types/package-checks/file-metrics/scc/batch-planner.d.ts +18 -0
  564. package/types/package-checks/file-metrics/scc/logical-scan-resources.d.ts +14 -0
  565. package/types/package-checks/function-metrics/analyzer/extensions/protocol.d.ts +3 -3
  566. package/types/package-checks/function-metrics/constructor.d.ts +5 -2
  567. package/types/package-checks/function-metrics/finding-messages.d.ts +1 -1
  568. package/types/package-checks/function-metrics/options.d.ts +4 -3
  569. package/types/package-checks/function-metrics/records.d.ts +1 -1
  570. package/types/package-checks/host-environment/git.d.ts +2 -0
  571. package/types/package-checks/host-environment/path.d.ts +1 -3
  572. package/types/package-checks/host-environment/process/contract.d.ts +17 -9
  573. package/types/package-checks/json-schema-validation/default-check.d.ts +4 -1
  574. package/types/package-checks/json-schema-validation/options.d.ts +2 -1
  575. package/types/package-checks/json-validation/default-check.d.ts +4 -1
  576. package/types/package-checks/json-validation/options.d.ts +2 -1
  577. package/types/package-checks/local-cache-options.d.ts +9 -0
  578. package/types/package-checks/maintenance-reminders/maintenance-reminders.d.ts +11 -2
  579. package/types/package-checks/markdown-link-validation/default-check.d.ts +4 -1
  580. package/types/package-checks/markdown-link-validation/options.d.ts +4 -7
  581. package/types/package-checks/markdown-lint/adapter.d.ts +10 -0
  582. package/types/package-checks/markdown-lint/default-check.d.ts +37 -0
  583. package/types/package-checks/markdown-lint/execution.d.ts +24 -0
  584. package/types/package-checks/markdown-lint/final-data.d.ts +8 -0
  585. package/types/package-checks/markdown-lint/finding-messages.d.ts +6 -0
  586. package/types/package-checks/markdown-lint/finding-waiver-identity.d.ts +3 -0
  587. package/types/package-checks/markdown-lint/findings-cache.d.ts +17 -0
  588. package/types/package-checks/markdown-lint/options-resolution.d.ts +3 -0
  589. package/types/package-checks/markdown-lint/options-validation.d.ts +2 -0
  590. package/types/package-checks/markdown-lint/options.d.ts +65 -0
  591. package/types/package-checks/markdown-lint/records.d.ts +39 -0
  592. package/types/package-checks/markdown-lint/unavailable-reasons.d.ts +3 -0
  593. package/types/package-checks/secret-detection/default-check.d.ts +4 -1
  594. package/types/package-checks/secret-detection/options.d.ts +3 -2
  595. package/types/package-tools/admission-policy/define-admission-policy.d.ts +26 -0
  596. package/types/{check → package-tools/finding-presentation}/finding-presentation.d.ts +3 -1
  597. package/types/{finding-waivers → package-tools/finding-waivers}/reconciliation.d.ts +3 -3
  598. package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/prediction.d.ts +2 -2
  599. package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/preparation.d.ts +1 -1
  600. package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/recording.d.ts +1 -1
  601. package/types/{learned-critical-path → package-tools/learned-critical-path}/selection-layers.d.ts +1 -1
  602. package/types/{learned-critical-path → package-tools/learned-critical-path}/static-decision.d.ts +1 -1
  603. package/types/{learned-critical-path → package-tools/learned-critical-path}/strategy.d.ts +1 -1
  604. package/types/project-definition/check-tree/authoring.d.ts +5 -3
  605. package/types/project-definition/check-tree/check-fields-authoring.d.ts +12 -7
  606. package/types/project-definition/check-tree/flag-conditions.d.ts +5 -0
  607. package/types/project-definition/check-tree/resolution.d.ts +6 -4
  608. package/types/project-definition/declarative-snapshot.d.ts +4 -1
  609. package/types/project-definition/project-changes.d.ts +30 -0
  610. package/types/project-definition/project-definition.d.ts +15 -30
  611. package/types/project-definition/scheduler-policy.d.ts +3 -3
  612. package/types/project-run/admission-strategy-provider/prepared-admission-strategy.d.ts +2 -2
  613. package/types/project-run/aggregation.d.ts +8 -6
  614. package/types/project-run/changes/git.d.ts +14 -0
  615. package/types/project-run/check-execution/admitted-check-execution.d.ts +18 -0
  616. package/types/project-run/check-execution/dependencies.d.ts +3 -0
  617. package/types/project-run/check-execution/execution-finalization.d.ts +1 -1
  618. package/types/project-run/check-execution/execution-settlement.d.ts +15 -7
  619. package/types/project-run/check-execution/flag-controls.d.ts +1 -1
  620. package/types/project-run/check-execution/lifecycle.d.ts +9 -5
  621. package/types/project-run/check-execution/{preflight-result.d.ts → preparation-result.d.ts} +3 -3
  622. package/types/project-run/check-execution/{preflight.d.ts → preparation.d.ts} +10 -9
  623. package/types/project-run/check-execution/ready-check-execution.d.ts +18 -0
  624. package/types/project-run/check-execution/resolved-checks.d.ts +12 -13
  625. package/types/project-run/check-execution/scheduled-check-run.d.ts +10 -0
  626. package/types/project-run/check-execution/terminal-result.d.ts +13 -1
  627. package/types/project-run/completion/completion.d.ts +3 -1
  628. package/types/project-run/controls/contract.d.ts +6 -16
  629. package/types/project-run/invocation/candidates.d.ts +8 -0
  630. package/types/project-run/invocation/execution.d.ts +5 -0
  631. package/types/project-run/invocation/run.d.ts +2 -2
  632. package/types/project-run/outputs/status.d.ts +4 -4
  633. package/types/project-run/progress-rendering/presentation.d.ts +4 -3
  634. package/types/project-run/progress-rendering/renderer-formatting.d.ts +5 -2
  635. package/types/project-run/progress-rendering/renderer-lifecycle.d.ts +2 -0
  636. package/types/project-run/progress-rendering/renderer.d.ts +4 -2
  637. package/types/project-run/project-context.d.ts +3 -3
  638. package/types/project-run/result.d.ts +3 -3
  639. package/types/project-run/run.d.ts +1 -1
  640. package/types/project-run/task-scheduler/admission-core/compiled-graph-lookup.d.ts +10 -0
  641. package/types/project-run/task-scheduler/execution-state.d.ts +4 -4
  642. package/types/project-run/task-scheduler/measurement/diagnostics.d.ts +2 -2
  643. package/types/project-run/task-scheduler/scheduler-terminal-measurement.d.ts +1 -1
  644. package/dist/esm/cache/cache-json-by-key.mjs.map +0 -1
  645. package/dist/esm/check/finding-presentation.mjs.map +0 -1
  646. package/dist/esm/finding-waivers/reconciliation.mjs.map +0 -1
  647. package/dist/esm/learned-critical-path/duration-model/bounded-history.mjs.map +0 -1
  648. package/dist/esm/learned-critical-path/duration-model/prediction.mjs.map +0 -1
  649. package/dist/esm/learned-critical-path/duration-model/preparation.mjs.map +0 -1
  650. package/dist/esm/learned-critical-path/duration-model/recording.mjs.map +0 -1
  651. package/dist/esm/learned-critical-path/duration-model/storage.mjs.map +0 -1
  652. package/dist/esm/learned-critical-path/selection-layers.mjs.map +0 -1
  653. package/dist/esm/learned-critical-path/static-decision.mjs.map +0 -1
  654. package/dist/esm/learned-critical-path/strategy.mjs.map +0 -1
  655. package/dist/esm/package-checks/project-files/config-glob.mjs.map +0 -1
  656. package/dist/esm/project-run/check-execution/preflight-result.mjs.map +0 -1
  657. package/dist/esm/project-run/check-execution/preflight.mjs.map +0 -1
  658. package/dist/esm/project-run/task-scheduler/critical-path-ranking.mjs.map +0 -1
  659. package/types/package-checks/project-files/config-glob.d.ts +0 -5
  660. /package/dist/esm/{check → package-tools/finding-presentation}/finding-presentation.mjs +0 -0
  661. /package/dist/esm/{project-run/task-scheduler → package-tools/learned-critical-path}/critical-path-ranking.mjs +0 -0
  662. /package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/bounded-history.mjs +0 -0
  663. /package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/recording.mjs +0 -0
  664. /package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/static-decision.mjs +0 -0
  665. /package/src/{project-run/task-scheduler → package-tools/learned-critical-path}/critical-path-ranking.ts +0 -0
  666. /package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/bounded-history.ts +0 -0
  667. /package/types/{cache → package-tools/cache}/cache-json-by-key.d.ts +0 -0
  668. /package/types/{project-run/task-scheduler → package-tools/learned-critical-path}/critical-path-ranking.d.ts +0 -0
  669. /package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/bounded-history.d.ts +0 -0
  670. /package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/storage.d.ts +0 -0
@@ -0,0 +1,331 @@
1
+ import {
2
+ snapshotClosedArray,
3
+ snapshotClosedPolicyRecord,
4
+ snapshotClosedRecord,
5
+ snapshotExactClosedRecord
6
+ } from "../../data-boundary/closed-values.ts";
7
+ import { isNonEmptyString, isPositiveSafeInteger } from "../../data-boundary/value-shapes.ts";
8
+ import type {
9
+ AfterCommand,
10
+ CommandEnvironmentResolver,
11
+ ResolvedCommandCheckOptions
12
+ } from "./contract.ts";
13
+
14
+ const COMMAND_INPUT_OPTIONAL_KEYS = [
15
+ "admissionPriority",
16
+ "afterCommand",
17
+ "arguments",
18
+ "checks",
19
+ "dependsOn",
20
+ "enabledByFlags",
21
+ "environment",
22
+ "maxParallel",
23
+ "mutex",
24
+ "observes",
25
+ "omitQuietPassedRow",
26
+ "output",
27
+ "resourceClaims",
28
+ "resolveEnvironment",
29
+ "workingDirectory"
30
+ ] as const;
31
+ const COMMAND_INPUT_REQUIRED_KEYS = [
32
+ "checkId",
33
+ "displayName",
34
+ "executable",
35
+ "outputByteLimit",
36
+ "timeoutMs"
37
+ ] as const;
38
+ const RESOLVED_OPTION_KEYS = [
39
+ "arguments",
40
+ "environment",
41
+ "executable",
42
+ "output",
43
+ "outputByteLimit",
44
+ "timeoutMs",
45
+ "workingDirectory"
46
+ ] as const;
47
+
48
+ /** Snapshots one closed constructor input and materializes every command-owned omission. */
49
+ export function resolveCommandCheckInput(input: unknown):
50
+ | Readonly<{
51
+ readonly afterCommand: AfterCommand | undefined;
52
+ readonly options: ResolvedCommandCheckOptions;
53
+ readonly resolveEnvironment: CommandEnvironmentResolver | undefined;
54
+ }>
55
+ | undefined {
56
+ const snapshot = snapshotClosedPolicyRecord(input, {
57
+ optional: COMMAND_INPUT_OPTIONAL_KEYS,
58
+ required: COMMAND_INPUT_REQUIRED_KEYS
59
+ });
60
+ if (snapshot === undefined) return undefined;
61
+ const afterCommand = resolveAfterCommand(snapshot.afterCommand);
62
+ const environmentResolver = resolveEnvironmentResolver(snapshot.resolveEnvironment);
63
+ if (
64
+ (snapshot.afterCommand !== undefined && afterCommand === undefined) ||
65
+ (snapshot.resolveEnvironment !== undefined && environmentResolver === undefined) ||
66
+ (snapshot.environment !== undefined && snapshot.resolveEnvironment !== undefined)
67
+ ) {
68
+ return undefined;
69
+ }
70
+ const options = resolveCommandOptions(snapshot);
71
+ return options === undefined
72
+ ? undefined
73
+ : Object.freeze({
74
+ afterCommand,
75
+ options,
76
+ resolveEnvironment: environmentResolver
77
+ });
78
+ }
79
+
80
+ /** Resolves one callback-produced environment to the same complete closed shape as static input. */
81
+ export function resolveCommandCheckEnvironment(
82
+ value: unknown
83
+ ): ResolvedCommandCheckOptions["environment"] | undefined {
84
+ if (value === undefined) return undefined;
85
+ return resolveEnvironment(value);
86
+ }
87
+
88
+ /** Revalidates the complete resolved shape before execution. */
89
+ export function isValidResolvedCommandCheckOptions(
90
+ value: unknown
91
+ ): value is ResolvedCommandCheckOptions {
92
+ const options = snapshotExactClosedRecord(value, RESOLVED_OPTION_KEYS);
93
+ return (
94
+ options !== undefined &&
95
+ validCommandText(options.executable) &&
96
+ validArguments(options.arguments) &&
97
+ validWorkingDirectory(options.workingDirectory) &&
98
+ validEnvironment(options.environment) &&
99
+ validOutput(options.output) &&
100
+ isPositiveSafeInteger(options.timeoutMs) &&
101
+ isPositiveSafeInteger(options.outputByteLimit)
102
+ );
103
+ }
104
+
105
+ function resolveCommandOptions(
106
+ input: Readonly<Record<string, unknown>>
107
+ ): ResolvedCommandCheckOptions | undefined {
108
+ if (!isNonEmptyString(input.checkId) || !isNonEmptyString(input.displayName)) return undefined;
109
+ const options = resolveCommandExecutionOptions(input);
110
+ if (options === undefined) return undefined;
111
+ return isValidResolvedCommandCheckOptions(options) ? options : undefined;
112
+ }
113
+
114
+ function resolveAfterCommand(value: unknown): AfterCommand | undefined {
115
+ if (value === undefined) return undefined;
116
+ const afterCommand = snapshotClosedPolicyRecord(value, {
117
+ optional: ["parseData"],
118
+ required: ["execute"]
119
+ });
120
+ if (afterCommand === undefined || !isAfterCommandExecution(afterCommand.execute))
121
+ return undefined;
122
+ if (afterCommand.parseData !== undefined && !isCheckDataParser(afterCommand.parseData)) {
123
+ return undefined;
124
+ }
125
+ return Object.freeze({
126
+ execute: afterCommand.execute,
127
+ ...(afterCommand.parseData === undefined ? {} : { parseData: afterCommand.parseData })
128
+ });
129
+ }
130
+
131
+ function resolveEnvironmentResolver(value: unknown): CommandEnvironmentResolver | undefined {
132
+ return isCommandEnvironmentResolver(value) ? value : undefined;
133
+ }
134
+
135
+ function isAfterCommandExecution(value: unknown): value is AfterCommand["execute"] {
136
+ return typeof value === "function";
137
+ }
138
+
139
+ function isCheckDataParser(value: unknown): value is NonNullable<AfterCommand["parseData"]> {
140
+ return typeof value === "function";
141
+ }
142
+
143
+ function isCommandEnvironmentResolver(value: unknown): value is CommandEnvironmentResolver {
144
+ return typeof value === "function";
145
+ }
146
+
147
+ /** Resolves command-owned execution fields after the ordinary Check identity is known valid. */
148
+ function resolveCommandExecutionOptions(
149
+ input: Readonly<Record<string, unknown>>
150
+ ): ResolvedCommandCheckOptions | undefined {
151
+ const argumentsSnapshot = resolveArguments(input.arguments);
152
+ const environment = resolveEnvironment(input.environment);
153
+ const output = resolveOutput(input.output);
154
+ const workingDirectory = resolveWorkingDirectory(input.workingDirectory);
155
+ if (
156
+ !validCommandText(input.executable) ||
157
+ argumentsSnapshot === undefined ||
158
+ environment === undefined ||
159
+ output === undefined ||
160
+ workingDirectory === undefined ||
161
+ !isPositiveSafeInteger(input.timeoutMs) ||
162
+ !isPositiveSafeInteger(input.outputByteLimit)
163
+ ) {
164
+ return undefined;
165
+ }
166
+ return Object.freeze({
167
+ arguments: argumentsSnapshot,
168
+ environment,
169
+ executable: input.executable,
170
+ output,
171
+ outputByteLimit: input.outputByteLimit,
172
+ timeoutMs: input.timeoutMs,
173
+ workingDirectory
174
+ });
175
+ }
176
+
177
+ function resolveArguments(value: unknown): readonly string[] | undefined {
178
+ if (value === undefined) return Object.freeze([]);
179
+ const argumentsSnapshot = snapshotClosedArray(value);
180
+ if (argumentsSnapshot === undefined) return undefined;
181
+ const argumentsCopy: string[] = [];
182
+ for (const argument of argumentsSnapshot) {
183
+ if (!validArgument(argument)) return undefined;
184
+ argumentsCopy.push(argument);
185
+ }
186
+ return Object.freeze(argumentsCopy);
187
+ }
188
+
189
+ function validArguments(value: unknown): boolean {
190
+ const argumentsSnapshot = snapshotClosedArray(value);
191
+ return argumentsSnapshot?.every(validArgument) === true;
192
+ }
193
+
194
+ function validArgument(value: unknown): value is string {
195
+ return typeof value === "string" && !value.includes("\0");
196
+ }
197
+
198
+ function resolveWorkingDirectory(value: unknown): string | null | undefined {
199
+ if (value === undefined) return null;
200
+ return validCommandText(value) ? value : undefined;
201
+ }
202
+
203
+ function validWorkingDirectory(value: unknown): value is string | null {
204
+ return value === null || validCommandText(value);
205
+ }
206
+
207
+ function validCommandText(value: unknown): value is string {
208
+ return isNonEmptyString(value) && !value.includes("\0");
209
+ }
210
+
211
+ function resolveEnvironment(
212
+ value: unknown
213
+ ): ResolvedCommandCheckOptions["environment"] | undefined {
214
+ if (value === undefined) return Object.freeze({ mode: "exact", variables: Object.freeze({}) });
215
+ const environment = snapshotClosedRecord(value);
216
+ if (environment === undefined || typeof environment.mode !== "string") return undefined;
217
+ if (environment.mode === "exact") return resolveExactEnvironment(environment);
218
+ if (environment.mode === "inherit") return resolveInheritedEnvironment(environment);
219
+ return undefined;
220
+ }
221
+
222
+ function resolveExactEnvironment(
223
+ environment: Readonly<Record<string, unknown>>
224
+ ): ResolvedCommandCheckOptions["environment"] | undefined {
225
+ const exact = snapshotClosedPolicyRecord(environment, {
226
+ optional: ["variables"],
227
+ required: ["mode"]
228
+ });
229
+ if (exact === undefined) return undefined;
230
+ const variables = Object.hasOwn(exact, "variables")
231
+ ? resolveExactVariables(exact.variables)
232
+ : Object.freeze({});
233
+ if (variables === undefined) return undefined;
234
+ return Object.freeze({ mode: "exact", variables });
235
+ }
236
+
237
+ function resolveInheritedEnvironment(
238
+ environment: Readonly<Record<string, unknown>>
239
+ ): ResolvedCommandCheckOptions["environment"] | undefined {
240
+ const inherited = snapshotClosedPolicyRecord(environment, {
241
+ optional: ["overrides"],
242
+ required: ["mode"]
243
+ });
244
+ if (inherited === undefined) return undefined;
245
+ const overrides = Object.hasOwn(inherited, "overrides")
246
+ ? resolveOverrides(inherited.overrides)
247
+ : Object.freeze({});
248
+ if (overrides === undefined) return undefined;
249
+ return Object.freeze({ mode: "inherit", overrides });
250
+ }
251
+
252
+ function validEnvironment(value: unknown): boolean {
253
+ const environment = snapshotClosedRecord(value);
254
+ if (environment === undefined || typeof environment.mode !== "string") return false;
255
+ if (environment.mode === "exact") {
256
+ const exact = snapshotExactClosedRecord(environment, ["mode", "variables"]);
257
+ return exact !== undefined && validVariableMap(exact.variables, false);
258
+ }
259
+ if (environment.mode === "inherit") {
260
+ const inherited = snapshotExactClosedRecord(environment, ["mode", "overrides"]);
261
+ return inherited !== undefined && validVariableMap(inherited.overrides, true);
262
+ }
263
+ return false;
264
+ }
265
+
266
+ function resolveExactVariables(value: unknown): Readonly<Record<string, string>> | undefined {
267
+ const variables = snapshotClosedRecord(value);
268
+ if (variables === undefined) return undefined;
269
+ const copied: Record<string, string> = {};
270
+ for (const [name, variable] of Object.entries(variables)) {
271
+ if (name.includes("\0") || typeof variable !== "string" || variable.includes("\0"))
272
+ return undefined;
273
+ Object.defineProperty(copied, name, {
274
+ configurable: false,
275
+ enumerable: true,
276
+ value: variable,
277
+ writable: false
278
+ });
279
+ }
280
+ return Object.freeze(copied);
281
+ }
282
+
283
+ function resolveOverrides(value: unknown): Readonly<Record<string, string | null>> | undefined {
284
+ const overrides = snapshotClosedRecord(value);
285
+ if (overrides === undefined) return undefined;
286
+ const copied: Record<string, string | null> = {};
287
+ for (const [name, override] of Object.entries(overrides)) {
288
+ if (
289
+ name.includes("\0") ||
290
+ (override !== null && (typeof override !== "string" || override.includes("\0")))
291
+ ) {
292
+ return undefined;
293
+ }
294
+ Object.defineProperty(copied, name, {
295
+ configurable: false,
296
+ enumerable: true,
297
+ value: override,
298
+ writable: false
299
+ });
300
+ }
301
+ return Object.freeze(copied);
302
+ }
303
+
304
+ function validVariableMap(value: unknown, acceptsNull: boolean): boolean {
305
+ const variables = snapshotClosedRecord(value);
306
+ return variables !== undefined && validVariableEntries(variables, acceptsNull);
307
+ }
308
+
309
+ function validVariableEntries(
310
+ variables: Readonly<Record<string, unknown>>,
311
+ acceptsNull: boolean
312
+ ): boolean {
313
+ return Object.entries(variables).every(
314
+ ([name, variable]) =>
315
+ !name.includes("\0") &&
316
+ (typeof variable === "string" ? !variable.includes("\0") : acceptsNull && variable === null)
317
+ );
318
+ }
319
+
320
+ function resolveOutput(value: unknown): ResolvedCommandCheckOptions["output"] | undefined {
321
+ if (value === undefined) return Object.freeze({ mode: "discard" });
322
+ const output = snapshotExactClosedRecord(value, ["mode"]);
323
+ if (output === undefined) return undefined;
324
+ if (output.mode !== "discard" && output.mode !== "transcript") return undefined;
325
+ return Object.freeze({ mode: output.mode });
326
+ }
327
+
328
+ function validOutput(value: unknown): boolean {
329
+ const output = snapshotExactClosedRecord(value, ["mode"]);
330
+ return output !== undefined && (output.mode === "discard" || output.mode === "transcript");
331
+ }
@@ -0,0 +1,35 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { promises as fs } from "node:fs";
3
+ import { join } from "node:path";
4
+
5
+ const TRANSCRIPT_FILE_NAME = "process.log";
6
+
7
+ /** Atomically replaces this Check-local fixed transcript without exposing command inputs or native errors. */
8
+ export async function writeCommandTranscript(
9
+ artifactDirectory: string,
10
+ contents: string
11
+ ): Promise<boolean> {
12
+ const targetPath = join(artifactDirectory, TRANSCRIPT_FILE_NAME);
13
+ const temporaryPath = join(artifactDirectory, `.process-${randomUUID()}.tmp`);
14
+ try {
15
+ await fs.mkdir(artifactDirectory, { recursive: true });
16
+ await fs.writeFile(temporaryPath, contents, { encoding: "utf8", flag: "wx" });
17
+ await fs.rename(temporaryPath, targetPath);
18
+ return true;
19
+ } catch {
20
+ await fs.rm(temporaryPath, { force: true }).catch(() => undefined);
21
+ return false;
22
+ }
23
+ }
24
+
25
+ export function runningTranscript(): string {
26
+ return "status=running\n";
27
+ }
28
+
29
+ export function closedTranscript(input: {
30
+ readonly status: "passed" | "failed" | "unavailable";
31
+ readonly stderr: string;
32
+ readonly stdout: string;
33
+ }): string {
34
+ return `status=${input.status}\nstdout:\n${input.stdout}\nstderr:\n${input.stderr}`;
35
+ }
@@ -1,4 +1,8 @@
1
1
  import { defineCheck, type TypedCheckWithOptions } from "../../check/check.ts";
2
+ import {
3
+ resolvePackageCheckAuthoringInput,
4
+ type PackageCheckIdentityInput
5
+ } from "../check-authoring.ts";
2
6
  import { DUPLICATE_DETECTION_CHECK_DEFINITION, executeDuplicateDetection } from "./execution.ts";
3
7
  import { parseDuplicateDetectionData } from "./final-data.ts";
4
8
  import type { DuplicateDetectionOptions, ResolvedDuplicateDetectionOptions } from "./options.ts";
@@ -9,27 +13,54 @@ import { validResolvedDuplicateDetectionOptions } from "./options-validation.ts"
9
13
  * 使用可省略的区域、cache 与 scanner policy 构造一个完整 duplicate-detection Check。
10
14
  *
11
15
  * @param options - 省略字段由 package 补齐;显式 files 数组作为对应字段的完整替换值。
12
- * @returns 固定 `duplicate-detection` identity、完整冻结 options、preflight 与 execution。
16
+ * @returns 固定 `duplicate-detection` identity、完整冻结 options、preparation 与 execution。
13
17
  * @throws {TypeError} input 含未知字段、空 area、非法阈值、非法 cache 或 scanner policy 时抛出。
14
18
  */
15
19
  export function duplicateDetection(
16
- options: DuplicateDetectionOptions = {}
20
+ options?: DuplicateDetectionOptions<"duplicate-detection">
17
21
  ): TypedCheckWithOptions<
18
22
  "duplicate-detection",
19
23
  ResolvedDuplicateDetectionOptions,
20
24
  typeof parseDuplicateDetectionData
25
+ >;
26
+ export function duplicateDetection<const Id extends string>(
27
+ options: DuplicateDetectionOptions<Id> & PackageCheckIdentityInput<Id>
28
+ ): TypedCheckWithOptions<Id, ResolvedDuplicateDetectionOptions, typeof parseDuplicateDetectionData>;
29
+ export function duplicateDetection(
30
+ options: DuplicateDetectionOptions
31
+ ): TypedCheckWithOptions<
32
+ string,
33
+ ResolvedDuplicateDetectionOptions,
34
+ typeof parseDuplicateDetectionData
35
+ >;
36
+ export function duplicateDetection(
37
+ options: DuplicateDetectionOptions = {}
38
+ ): TypedCheckWithOptions<
39
+ string,
40
+ ResolvedDuplicateDetectionOptions,
41
+ typeof parseDuplicateDetectionData
21
42
  > {
22
- const resolvedOptions = resolveDuplicateDetectionOptions(options);
43
+ const input = resolvePackageCheckAuthoringInput(
44
+ options,
45
+ ["codeAreas", "cache", "findingPolicy", "findingWaivers", "scanner"],
46
+ DUPLICATE_DETECTION_CHECK_DEFINITION
47
+ );
48
+ if (input === undefined) {
49
+ throw new TypeError(
50
+ "duplicateDetection options are invalid; use the documented closed constructor policy including exact finding waivers"
51
+ );
52
+ }
53
+ const resolvedOptions = resolveDuplicateDetectionOptions(input.domainOptions);
23
54
  if (resolvedOptions === undefined) {
24
55
  throw new TypeError(
25
56
  "duplicateDetection options are invalid; use the documented closed constructor policy including exact finding waivers"
26
57
  );
27
58
  }
28
59
  return defineCheck({
29
- ...DUPLICATE_DETECTION_CHECK_DEFINITION,
30
- execution: executeDuplicateDetection,
60
+ ...input.definition,
61
+ execute: executeDuplicateDetection,
31
62
  parseData: parseDuplicateDetectionData,
32
- preflight: (preparedOptions) =>
63
+ prepare: (preparedOptions) =>
33
64
  validResolvedDuplicateDetectionOptions(preparedOptions)
34
65
  ? { status: "success", preparedOptions }
35
66
  : {
@@ -4,7 +4,7 @@ import type { CheckExecutionContext, CheckResult } from "../../check/check.ts";
4
4
  import {
5
5
  reconcileFindingWaivers,
6
6
  type FindingWaiverReconciliation
7
- } from "../../finding-waivers/reconciliation.ts";
7
+ } from "../../package-tools/finding-waivers/reconciliation.ts";
8
8
  import { collectProjectFileSets, requireProjectFileSet } from "../project-files/collection.ts";
9
9
  import { fingerprintProjectFiles } from "../project-files/file-fingerprint.ts";
10
10
  import { settleFindings } from "../code-quality-findings/policy.ts";
@@ -12,7 +12,7 @@ import {
12
12
  reportFindingWaiverAudits,
13
13
  reportReconciledCodeQualityFindingRecords
14
14
  } from "../code-quality-findings/finding-waiver-evidence.ts";
15
- import { appendCheckMessages } from "../../check/finding-presentation.ts";
15
+ import { appendCheckMessages } from "../../package-tools/finding-presentation/finding-presentation.ts";
16
16
  import { duplicateFindingMessages, duplicateWaiverMessages } from "./finding-messages.ts";
17
17
  import { getGitSha } from "./project-revision.ts";
18
18
  import { measureDuplicateDetection, type DuplicateMeasurementResult } from "./measurement.ts";
@@ -194,8 +194,6 @@ function directMeasurementFailure(
194
194
  case "unavailable":
195
195
  return unavailable("external-dependency-unavailable");
196
196
  }
197
- const exhaustiveMeasurement: never = measurement;
198
- return exhaustiveMeasurement;
199
197
  }
200
198
 
201
199
  function unavailable(
@@ -1,9 +1,9 @@
1
1
  import type { CheckMessage } from "../../check/check.ts";
2
- import { presentCheckFindings } from "../../check/finding-presentation.ts";
2
+ import { presentCheckFindings } from "../../package-tools/finding-presentation/finding-presentation.ts";
3
3
  import type {
4
4
  FindingWaiverAudit,
5
5
  FindingWaiverReconciliation
6
- } from "../../finding-waivers/reconciliation.ts";
6
+ } from "../../package-tools/finding-waivers/reconciliation.ts";
7
7
  import type { DuplicateDetectionFindingLocation } from "./options.ts";
8
8
  import { duplicateDetectionWaiverIdentity, type DuplicateRecordCandidate } from "./records.ts";
9
9
 
@@ -133,5 +133,5 @@ function commandOutput(result: ToolCommandResult): string {
133
133
  function processTermination(result: ToolCommandResult): string {
134
134
  return typeof result.status === "number"
135
135
  ? `exit ${result.status}`
136
- : `signal ${result.signal || "unknown"}`;
136
+ : `signal ${result.signal ?? "unknown"}`;
137
137
  }
@@ -1,9 +1,10 @@
1
+ import type { PackageCheckAuthoringOptions } from "../check-authoring.ts";
1
2
  import type {
2
3
  ProjectFileSelection,
3
4
  ProjectFileSelectionOptions
4
5
  } from "../project-files/configuration.ts";
5
6
  import type { FindingPolicy } from "../code-quality-findings/policy.ts";
6
- import type { FindingWaiver } from "../../finding-waivers/reconciliation.ts";
7
+ import type { FindingWaiver } from "../../package-tools/finding-waivers/reconciliation.ts";
7
8
 
8
9
  export type DuplicateDetectionScannerCommand =
9
10
  /** 使用随 `@zxyycom/vibe-check` 安装的 jscpd。 */
@@ -61,7 +62,9 @@ export interface DuplicateDetectionCodeAreaOptions {
61
62
  }
62
63
 
63
64
  /** `duplicateDetection(options?)` 接受并补齐默认值的公开策略。 */
64
- export interface DuplicateDetectionOptions {
65
+ export interface DuplicateDetectionOptions<
66
+ Id extends string = string
67
+ > extends PackageCheckAuthoringOptions<Id> {
65
68
  /** 省略时建立默认 `project` 区域;显式映射必须非空。 */
66
69
  readonly codeAreas?: Readonly<Record<string, DuplicateDetectionCodeAreaOptions>>;
67
70
  readonly cache?: DuplicateDetectionCacheOptions;
@@ -72,7 +75,7 @@ export interface DuplicateDetectionOptions {
72
75
  readonly scanner?: DuplicateDetectionScannerOptions;
73
76
  }
74
77
 
75
- /** 构造函数生成并由 Check preflight/execution 消费的完整 options。 */
78
+ /** 构造函数生成并由 Check preparation/execution 消费的完整 options。 */
76
79
  export interface ResolvedDuplicateDetectionOptions {
77
80
  readonly cache: Readonly<{ readonly directory: string; readonly enabled: boolean }>;
78
81
  readonly codeAreas: Readonly<Record<string, ResolvedDuplicateDetectionCodeAreaOptions>>;
@@ -1,7 +1,7 @@
1
1
  import { createHash } from "node:crypto";
2
2
 
3
3
  import { canonicalJsonBytes } from "../../data-boundary/canonical-data.ts";
4
- import type { MaterializedFindingWaiver } from "../../finding-waivers/reconciliation.ts";
4
+ import type { MaterializedFindingWaiver } from "../../package-tools/finding-waivers/reconciliation.ts";
5
5
  import {
6
6
  buildHashedFindingWaiverAuditRecord,
7
7
  type FindingWaiverAuditRecordData,
@@ -1,4 +1,8 @@
1
1
  import { defineCheck, type TypedCheckWithOptions } from "../../check/check.ts";
2
+ import {
3
+ resolvePackageCheckAuthoringInput,
4
+ type PackageCheckIdentityInput
5
+ } from "../check-authoring.ts";
2
6
  import { FILE_METRICS_CHECK_DEFINITION, executeFileMetrics } from "./execution.ts";
3
7
  import { parseFileMetricsData } from "./final-data.ts";
4
8
  import type { FileMetricsOptions, ResolvedFileMetricsOptions } from "./options.ts";
@@ -9,23 +13,42 @@ import { isValidResolvedFileMetricsOptions } from "./options-validation.ts";
9
13
  * 使用可省略的区域、代码行与 scanner policy 构造一个完整 file-metrics Check。
10
14
  *
11
15
  * @param options - 省略字段由 package 补齐;显式 files 数组作为对应字段的完整替换值。
12
- * @returns 固定 `file-metrics` identity、完整冻结 options、preflight 与 execution。
16
+ * @returns 固定 `file-metrics` identity、完整冻结 options、preparation 与 execution。
13
17
  * @throws {TypeError} input 含未知字段、空 area、非法代码行 policy、非法 waiver 或空 executable 时抛出。
14
18
  */
19
+ export function fileMetrics(
20
+ options?: FileMetricsOptions<"file-metrics">
21
+ ): TypedCheckWithOptions<"file-metrics", ResolvedFileMetricsOptions, typeof parseFileMetricsData>;
22
+ export function fileMetrics<const Id extends string>(
23
+ options: FileMetricsOptions<Id> & PackageCheckIdentityInput<Id>
24
+ ): TypedCheckWithOptions<Id, ResolvedFileMetricsOptions, typeof parseFileMetricsData>;
25
+ export function fileMetrics(
26
+ options: FileMetricsOptions
27
+ ): TypedCheckWithOptions<string, ResolvedFileMetricsOptions, typeof parseFileMetricsData>;
15
28
  export function fileMetrics(
16
29
  options: FileMetricsOptions = {}
17
- ): TypedCheckWithOptions<"file-metrics", ResolvedFileMetricsOptions, typeof parseFileMetricsData> {
18
- const resolvedOptions = resolveFileMetricsOptions(options);
30
+ ): TypedCheckWithOptions<string, ResolvedFileMetricsOptions, typeof parseFileMetricsData> {
31
+ const input = resolvePackageCheckAuthoringInput(
32
+ options,
33
+ ["codeAreas", "findingPolicy", "findingWaivers", "scanner"],
34
+ FILE_METRICS_CHECK_DEFINITION
35
+ );
36
+ if (input === undefined) {
37
+ throw new TypeError(
38
+ "fileMetrics options must match the documented closed { codeAreas?, findingPolicy?, findingWaivers?, scanner? } constructor policy"
39
+ );
40
+ }
41
+ const resolvedOptions = resolveFileMetricsOptions(input.domainOptions);
19
42
  if (resolvedOptions === undefined) {
20
43
  throw new TypeError(
21
44
  "fileMetrics options must match the documented closed { codeAreas?, findingPolicy?, findingWaivers?, scanner? } constructor policy"
22
45
  );
23
46
  }
24
47
  return defineCheck({
25
- ...FILE_METRICS_CHECK_DEFINITION,
26
- execution: executeFileMetrics,
48
+ ...input.definition,
49
+ execute: executeFileMetrics,
27
50
  parseData: parseFileMetricsData,
28
- preflight: (preparedOptions) =>
51
+ prepare: (preparedOptions) =>
29
52
  isValidResolvedFileMetricsOptions(preparedOptions)
30
53
  ? { status: "success", preparedOptions }
31
54
  : {
@@ -2,14 +2,14 @@ import type { CheckExecutionContext, CheckMessage, CheckResult } from "../../che
2
2
  import {
3
3
  reconcileFindingWaivers,
4
4
  type FindingWaiverReconciliation
5
- } from "../../finding-waivers/reconciliation.ts";
5
+ } from "../../package-tools/finding-waivers/reconciliation.ts";
6
6
  import { collectProjectFileSets, requireProjectFileSet } from "../project-files/collection.ts";
7
7
  import { settleFindings } from "../code-quality-findings/policy.ts";
8
8
  import {
9
9
  reportFindingWaiverAudits,
10
10
  reportReconciledCodeQualityFindingRecords
11
11
  } from "../code-quality-findings/finding-waiver-evidence.ts";
12
- import { appendCheckMessages } from "../../check/finding-presentation.ts";
12
+ import { appendCheckMessages } from "../../package-tools/finding-presentation/finding-presentation.ts";
13
13
  import { fileMetricFindingMessages } from "./finding-messages.ts";
14
14
  import { measureFileMetrics, type FileMeasurementResult } from "./measurement.ts";
15
15
  import type { FileMetricsExactInputSet } from "./measurement-model.ts";
@@ -196,8 +196,6 @@ function measurementFailureResult(
196
196
  case "unavailable":
197
197
  return unavailable("external-dependency-unavailable");
198
198
  }
199
- const exhaustiveMeasurement: never = measurement;
200
- return exhaustiveMeasurement;
201
199
  }
202
200
 
203
201
  function unavailable(code: FileMetricsUnavailableReasonCode): CheckResult<FileMetricsFinalData> {
@@ -1,5 +1,5 @@
1
1
  import type { CheckMessage } from "../../check/check.ts";
2
- import { presentCheckFindings } from "../../check/finding-presentation.ts";
2
+ import { presentCheckFindings } from "../../package-tools/finding-presentation/finding-presentation.ts";
3
3
  import type { FileRecordCandidate } from "./records.ts";
4
4
 
5
5
  const PRESENTED_FINDING_LIMIT = 10;
@@ -1,9 +1,10 @@
1
+ import type { PackageCheckAuthoringOptions } from "../check-authoring.ts";
1
2
  import type {
2
3
  ProjectFileSelection,
3
4
  ProjectFileSelectionOptions
4
5
  } from "../project-files/configuration.ts";
5
6
  import type { FindingPolicy } from "../code-quality-findings/policy.ts";
6
- import type { FindingWaiver } from "../../finding-waivers/reconciliation.ts";
7
+ import type { FindingWaiver } from "../../package-tools/finding-waivers/reconciliation.ts";
7
8
 
8
9
  /** `fileMetrics` 构造函数可省略的 SCC 可执行文件策略。 */
9
10
  export interface FileMetricsScannerOptions {
@@ -52,7 +53,9 @@ export interface FileMetricsFindingIdentity {
52
53
  export type FileMetricsFindingWaiver = FindingWaiver<FileMetricsFindingIdentity>;
53
54
 
54
55
  /** `fileMetrics(options?)` 接受并补齐默认值的公开策略。 */
55
- export interface FileMetricsOptions {
56
+ export interface FileMetricsOptions<
57
+ Id extends string = string
58
+ > extends PackageCheckAuthoringOptions<Id> {
56
59
  /** 省略时建立默认 `project` 区域;显式映射必须非空。 */
57
60
  readonly codeAreas?: Readonly<Record<string, FileMetricsCodeAreaOptions>>;
58
61
  /** 省略时为 `non-blocking`;区域可局部覆盖。 */
@@ -63,7 +66,7 @@ export interface FileMetricsOptions {
63
66
  readonly scanner?: FileMetricsScannerOptions;
64
67
  }
65
68
 
66
- /** 构造函数生成并由 Check preflight/execution 消费的完整 options。 */
69
+ /** 构造函数生成并由 Check preparation/execution 消费的完整 options。 */
67
70
  export interface ResolvedFileMetricsOptions {
68
71
  readonly codeAreas: Readonly<Record<string, ResolvedFileMetricsCodeAreaOptions>>;
69
72
  readonly findingWaivers: readonly FileMetricsFindingWaiver[];
@@ -2,7 +2,7 @@ import type { FileMetric } from "./measurement-model.ts";
2
2
  import type { FileMetricsFindingIdentity, ResolvedFileMetricsCodeAreaOptions } from "./options.ts";
3
3
  import { isBlockingFinding } from "../code-quality-findings/policy.ts";
4
4
  import { isNormalizedProjectRelativePath } from "../host-environment/path.ts";
5
- import type { MaterializedFindingWaiver } from "../../finding-waivers/reconciliation.ts";
5
+ import type { MaterializedFindingWaiver } from "../../package-tools/finding-waivers/reconciliation.ts";
6
6
  import {
7
7
  buildFindingWaiverAuditRecordData,
8
8
  type FindingWaiverAuditRecordData,
@@ -96,5 +96,5 @@ function commandOutput(commandResult: SccVersionCommandResult): string {
96
96
  function processTermination(commandResult: SccVersionCommandResult): string {
97
97
  return typeof commandResult.status === "number"
98
98
  ? `exit ${commandResult.status}`
99
- : `signal ${commandResult.signal || "unknown"}`;
99
+ : `signal ${commandResult.signal ?? "unknown"}`;
100
100
  }