@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.
- package/README.md +36 -5
- package/dist/esm/check/check.mjs +4 -0
- package/dist/esm/check/check.mjs.map +1 -1
- package/dist/esm/check/flag-enablement.mjs +32 -0
- package/dist/esm/check/flag-enablement.mjs.map +1 -0
- package/dist/esm/check/handoff-provider-identity.mjs +18 -0
- package/dist/esm/check/handoff-provider-identity.mjs.map +1 -0
- package/dist/esm/check/inherited-collection.mjs +1 -1
- package/dist/esm/check/inherited-collection.mjs.map +1 -1
- package/dist/esm/check/project-changes.mjs +2 -0
- package/dist/esm/check/project-changes.mjs.map +1 -0
- package/dist/esm/check/project-context.mjs +2 -0
- package/dist/esm/check/project-context.mjs.map +1 -0
- package/dist/esm/check-settlement/facts.mjs.map +1 -1
- package/dist/esm/check-settlement/record-store.mjs +1 -1
- package/dist/esm/check-settlement/record-store.mjs.map +1 -1
- package/dist/esm/data-boundary/canonical-data.mjs +36 -7
- package/dist/esm/data-boundary/canonical-data.mjs.map +1 -1
- package/dist/esm/data-boundary/canonical-json.mjs.map +1 -1
- package/dist/esm/data-boundary/closed-values.mjs +28 -4
- package/dist/esm/data-boundary/closed-values.mjs.map +1 -1
- package/dist/esm/{package-checks/project-files → data-boundary}/config-glob.mjs +3 -3
- package/dist/esm/data-boundary/config-glob.mjs.map +1 -0
- package/dist/esm/data-boundary/project-path.mjs +19 -0
- package/dist/esm/data-boundary/project-path.mjs.map +1 -0
- package/dist/esm/index.mjs +12 -5
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/machine-output/v4/atomic-publication.mjs +4 -1
- package/dist/esm/machine-output/v4/atomic-publication.mjs.map +1 -1
- package/dist/esm/package-checks/check-authoring.mjs +69 -0
- package/dist/esm/package-checks/check-authoring.mjs.map +1 -0
- package/dist/esm/package-checks/code-quality-findings/finding-waiver-authoring.mjs.map +1 -1
- package/dist/esm/package-checks/code-quality-findings/finding-waiver-evidence.mjs.map +1 -1
- package/dist/esm/package-checks/command-check/command-check.mjs +55 -0
- package/dist/esm/package-checks/command-check/command-check.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/contract.mjs +2 -0
- package/dist/esm/package-checks/command-check/contract.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/execution.mjs +134 -0
- package/dist/esm/package-checks/command-check/execution.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/options.mjs +284 -0
- package/dist/esm/package-checks/command-check/options.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/transcript.mjs +26 -0
- package/dist/esm/package-checks/command-check/transcript.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/default-check.mjs +9 -11
- package/dist/esm/package-checks/duplicate-detection/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/execution.mjs +2 -4
- package/dist/esm/package-checks/duplicate-detection/execution.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs +1 -1
- package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs +1 -1
- package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/options.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/records.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/constructor.mjs +9 -11
- package/dist/esm/package-checks/file-metrics/constructor.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/execution.mjs +2 -4
- package/dist/esm/package-checks/file-metrics/execution.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/finding-messages.mjs +1 -1
- package/dist/esm/package-checks/file-metrics/finding-messages.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/options.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/records.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/scc/availability.mjs +1 -1
- package/dist/esm/package-checks/file-metrics/scc/availability.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/scc/batch-planner.mjs +38 -0
- package/dist/esm/package-checks/file-metrics/scc/batch-planner.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/scc/logical-scan-resources.mjs +35 -0
- package/dist/esm/package-checks/file-metrics/scc/logical-scan-resources.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/scc/scanner.mjs +102 -29
- package/dist/esm/package-checks/file-metrics/scc/scanner.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analysis.mjs +7 -2
- package/dist/esm/package-checks/function-metrics/analysis.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs +1 -3
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/protocol.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs +3 -2
- package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs +6 -6
- package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs +9 -3
- package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs +12 -7
- package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs +6 -6
- package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs +5 -3
- package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs +2 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs +9 -3
- package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs +9 -3
- package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs +3 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs +3 -1
- package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs +12 -5
- package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs +20 -8
- package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/constructor.mjs +9 -11
- package/dist/esm/package-checks/function-metrics/constructor.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/execution.mjs +2 -4
- package/dist/esm/package-checks/function-metrics/execution.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/finding-messages.mjs +1 -1
- package/dist/esm/package-checks/function-metrics/finding-messages.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/measurement.mjs +3 -1
- package/dist/esm/package-checks/function-metrics/measurement.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/options.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/records.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/git.mjs +11 -0
- package/dist/esm/package-checks/host-environment/git.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/path.mjs +1 -17
- package/dist/esm/package-checks/host-environment/path.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/process/contract.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/process/result.mjs +43 -17
- package/dist/esm/package-checks/host-environment/process/result.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/process/runner.mjs +7 -5
- package/dist/esm/package-checks/host-environment/process/runner.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/default-check.mjs +9 -11
- package/dist/esm/package-checks/json-schema-validation/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/options.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs +6 -2
- package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs +11 -3
- package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs.map +1 -1
- package/dist/esm/package-checks/json-validation/default-check.mjs +9 -11
- package/dist/esm/package-checks/json-validation/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/json-validation/options.mjs.map +1 -1
- package/dist/esm/package-checks/local-cache-options.mjs +28 -0
- package/dist/esm/package-checks/local-cache-options.mjs.map +1 -0
- package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs +37 -45
- package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs.map +1 -1
- package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs +3 -1
- package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/default-check.mjs +19 -33
- package/dist/esm/package-checks/markdown-link-validation/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/execution.mjs +1 -1
- package/dist/esm/package-checks/markdown-link-validation/execution.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs +1 -1
- package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs +1 -3
- package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs +3 -18
- package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs +2 -14
- package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/options.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs +4 -5
- package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-lint/adapter.mjs +125 -0
- package/dist/esm/package-checks/markdown-lint/adapter.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/default-check.mjs +37 -0
- package/dist/esm/package-checks/markdown-lint/default-check.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/execution.mjs +202 -0
- package/dist/esm/package-checks/markdown-lint/execution.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/final-data.mjs +16 -0
- package/dist/esm/package-checks/markdown-lint/final-data.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/finding-messages.mjs +72 -0
- package/dist/esm/package-checks/markdown-lint/finding-messages.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/finding-waiver-identity.mjs +41 -0
- package/dist/esm/package-checks/markdown-lint/finding-waiver-identity.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/findings-cache.mjs +110 -0
- package/dist/esm/package-checks/markdown-lint/findings-cache.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/options-resolution.mjs +74 -0
- package/dist/esm/package-checks/markdown-lint/options-resolution.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/options-validation.mjs +41 -0
- package/dist/esm/package-checks/markdown-lint/options-validation.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/options.mjs +13 -0
- package/dist/esm/package-checks/markdown-lint/options.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/records.mjs +65 -0
- package/dist/esm/package-checks/markdown-lint/records.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/unavailable-reasons.mjs +14 -0
- package/dist/esm/package-checks/markdown-lint/unavailable-reasons.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/collection.mjs +23 -19
- package/dist/esm/package-checks/project-files/collection.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/configuration.mjs +1 -1
- package/dist/esm/package-checks/project-files/configuration.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/gitlink-revision.mjs +2 -5
- package/dist/esm/package-checks/project-files/gitlink-revision.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/gitlink-worktree.mjs +22 -6
- package/dist/esm/package-checks/project-files/gitlink-worktree.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/public-collection.mjs +1 -1
- package/dist/esm/package-checks/project-files/public-collection.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/revision-paths.mjs +3 -3
- package/dist/esm/package-checks/project-files/revision-paths.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/revision-worktree-files.mjs +11 -15
- package/dist/esm/package-checks/project-files/revision-worktree-files.mjs.map +1 -1
- package/dist/esm/package-checks/secret-detection/default-check.mjs +9 -11
- package/dist/esm/package-checks/secret-detection/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/secret-detection/execution.mjs +2 -2
- package/dist/esm/package-checks/secret-detection/execution.mjs.map +1 -1
- package/dist/esm/package-checks/secret-detection/input-preparation.mjs +46 -7
- package/dist/esm/package-checks/secret-detection/input-preparation.mjs.map +1 -1
- package/dist/esm/package-checks/secret-detection/options.mjs.map +1 -1
- package/dist/esm/package-checks/secret-detection/records.mjs.map +1 -1
- package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs +3 -4
- package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs.map +1 -1
- package/dist/esm/package-tools/admission-policy/define-admission-policy.mjs +10 -0
- package/dist/esm/package-tools/admission-policy/define-admission-policy.mjs.map +1 -0
- package/dist/esm/{cache → package-tools/cache}/cache-json-by-key.mjs +13 -14
- package/dist/esm/package-tools/cache/cache-json-by-key.mjs.map +1 -0
- package/dist/esm/package-tools/finding-presentation/finding-presentation.mjs.map +1 -0
- package/dist/esm/{finding-waivers → package-tools/finding-waivers}/reconciliation.mjs +14 -5
- package/dist/esm/package-tools/finding-waivers/reconciliation.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/critical-path-ranking.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/bounded-history.mjs.map +1 -0
- package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/prediction.mjs +2 -2
- package/dist/esm/package-tools/learned-critical-path/duration-model/prediction.mjs.map +1 -0
- package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/preparation.mjs +4 -2
- package/dist/esm/package-tools/learned-critical-path/duration-model/preparation.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/recording.mjs.map +1 -0
- package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/storage.mjs +8 -8
- package/dist/esm/package-tools/learned-critical-path/duration-model/storage.mjs.map +1 -0
- package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/selection-layers.mjs +1 -2
- package/dist/esm/package-tools/learned-critical-path/selection-layers.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/static-decision.mjs.map +1 -0
- package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/strategy.mjs +3 -3
- package/dist/esm/package-tools/learned-critical-path/strategy.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/authoring.mjs +8 -5
- package/dist/esm/project-definition/check-tree/authoring.mjs.map +1 -1
- package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs +79 -66
- package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs.map +1 -1
- package/dist/esm/project-definition/check-tree/flag-conditions.mjs +71 -0
- package/dist/esm/project-definition/check-tree/flag-conditions.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/materialization.mjs +13 -8
- package/dist/esm/project-definition/check-tree/materialization.mjs.map +1 -1
- package/dist/esm/project-definition/check-tree/resolution.mjs +7 -6
- package/dist/esm/project-definition/check-tree/resolution.mjs.map +1 -1
- package/dist/esm/project-definition/declarative-snapshot.mjs +2 -1
- package/dist/esm/project-definition/declarative-snapshot.mjs.map +1 -1
- package/dist/esm/project-definition/project-changes.mjs +70 -0
- package/dist/esm/project-definition/project-changes.mjs.map +1 -0
- package/dist/esm/project-definition/project-definition-validation.mjs +40 -8
- package/dist/esm/project-definition/project-definition-validation.mjs.map +1 -1
- package/dist/esm/project-definition/project-definition.mjs +22 -15
- package/dist/esm/project-definition/project-definition.mjs.map +1 -1
- package/dist/esm/project-definition/scheduler-policy.mjs.map +1 -1
- package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs +9 -6
- package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs.map +1 -1
- package/dist/esm/project-run/admission-strategy-provider/prepared-admission-strategy.mjs.map +1 -1
- package/dist/esm/project-run/aggregation.mjs +42 -59
- package/dist/esm/project-run/aggregation.mjs.map +1 -1
- package/dist/esm/project-run/changes/git.mjs +161 -0
- package/dist/esm/project-run/changes/git.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/admitted-check-execution.mjs +41 -0
- package/dist/esm/project-run/check-execution/admitted-check-execution.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/callback.mjs +3 -2
- package/dist/esm/project-run/check-execution/callback.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/dependencies.mjs +80 -5
- package/dist/esm/project-run/check-execution/dependencies.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/execution-finalization.mjs +5 -3
- package/dist/esm/project-run/check-execution/execution-finalization.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/execution-settlement.mjs +37 -16
- package/dist/esm/project-run/check-execution/execution-settlement.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/flag-controls.mjs +15 -7
- package/dist/esm/project-run/check-execution/flag-controls.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/lifecycle.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/{preflight-result.mjs → preparation-result.mjs} +24 -24
- package/dist/esm/project-run/check-execution/preparation-result.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/{preflight.mjs → preparation.mjs} +52 -52
- package/dist/esm/project-run/check-execution/preparation.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/ready-check-execution.mjs +71 -0
- package/dist/esm/project-run/check-execution/ready-check-execution.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/resolved-checks.mjs +27 -164
- package/dist/esm/project-run/check-execution/resolved-checks.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/scheduled-check-run.mjs +79 -0
- package/dist/esm/project-run/check-execution/scheduled-check-run.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/terminal-result.mjs +70 -25
- package/dist/esm/project-run/check-execution/terminal-result.mjs.map +1 -1
- package/dist/esm/project-run/completion/completion.mjs +18 -1
- package/dist/esm/project-run/completion/completion.mjs.map +1 -1
- package/dist/esm/project-run/controls/contract.mjs.map +1 -1
- package/dist/esm/project-run/controls/validation.mjs +7 -54
- package/dist/esm/project-run/controls/validation.mjs.map +1 -1
- package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs +3 -3
- package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs.map +1 -1
- package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs +1 -1
- package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs.map +1 -1
- package/dist/esm/project-run/invocation/candidate.mjs +17 -13
- package/dist/esm/project-run/invocation/candidate.mjs.map +1 -1
- package/dist/esm/project-run/invocation/candidates.mjs +26 -0
- package/dist/esm/project-run/invocation/candidates.mjs.map +1 -0
- package/dist/esm/project-run/invocation/creation.mjs +7 -3
- package/dist/esm/project-run/invocation/creation.mjs.map +1 -1
- package/dist/esm/project-run/invocation/execution.mjs +98 -0
- package/dist/esm/project-run/invocation/execution.mjs.map +1 -0
- package/dist/esm/project-run/invocation/run.mjs +13 -112
- package/dist/esm/project-run/invocation/run.mjs.map +1 -1
- package/dist/esm/project-run/invocation/scheduler.mjs +13 -6
- package/dist/esm/project-run/invocation/scheduler.mjs.map +1 -1
- package/dist/esm/project-run/outputs/status.mjs +12 -12
- package/dist/esm/project-run/outputs/status.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/presentation.mjs +31 -11
- package/dist/esm/project-run/progress-rendering/presentation.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs +11 -4
- package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs +20 -6
- package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer.mjs +6 -2
- package/dist/esm/project-run/progress-rendering/renderer.mjs.map +1 -1
- package/dist/esm/project-run/project-context.mjs +2 -1
- package/dist/esm/project-run/project-context.mjs.map +1 -1
- package/dist/esm/project-run/result.mjs +2 -2
- package/dist/esm/project-run/result.mjs.map +1 -1
- package/dist/esm/project-run/run.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph-lookup.mjs +45 -0
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph-lookup.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs +9 -4
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs +3 -5
- package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs +25 -8
- package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs +8 -8
- package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/execution-state.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs +8 -4
- package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/measurement/timing.mjs +12 -6
- package/dist/esm/project-run/task-scheduler/measurement/timing.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs +3 -1
- package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs +17 -17
- package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler.mjs +18 -6
- package/dist/esm/project-run/task-scheduler/scheduler.mjs.map +1 -1
- package/docs/api-mechanics.md +147 -28
- package/docs/changelog.md +145 -2
- package/docs/checks/duplicate-detection.md +22 -3
- package/docs/checks/file-metrics.md +25 -6
- package/docs/checks/function-metrics.md +21 -2
- package/docs/checks/json-schema-validation.md +25 -4
- package/docs/checks/json-validation.md +24 -5
- package/docs/checks/maintenance-reminders.md +30 -6
- package/docs/checks/markdown-link-validation.md +24 -4
- package/docs/checks/markdown-lint.md +167 -0
- package/docs/checks/secret-detection.md +31 -7
- package/docs/examples/artifacts/mixed-outcomes/definition.ts +10 -10
- package/docs/guides/building-project-gate.md +706 -0
- package/docs/guides/callbacks.md +81 -22
- package/docs/guides/check-dependencies.md +41 -10
- package/docs/guides/collecting-project-files.md +7 -7
- package/docs/guides/command-check.md +155 -0
- package/docs/guides/data-boundaries.md +140 -0
- package/docs/guides/extending-check-lifecycle.md +77 -25
- package/docs/guides/finding-waivers.md +43 -1
- package/docs/guides/learned-scheduling.md +1 -1
- package/docs/guides/run-outputs.md +35 -9
- package/docs/guides/scheduling.md +15 -15
- package/docs/output.md +6 -5
- package/package.json +2 -1
- package/src/check/check.ts +332 -92
- package/src/check/flag-enablement.ts +76 -0
- package/src/check/handoff-provider-identity.ts +34 -0
- package/src/check/inherited-collection.ts +1 -1
- package/src/check/project-changes.ts +14 -0
- package/src/check/project-context.ts +11 -0
- package/src/check-settlement/facts.ts +1 -1
- package/src/check-settlement/record-store.ts +1 -1
- package/src/data-boundary/canonical-data.ts +36 -9
- package/src/data-boundary/canonical-json.ts +18 -1
- package/src/data-boundary/closed-values.ts +26 -6
- package/src/data-boundary/config-glob.ts +17 -0
- package/src/data-boundary/project-path.ts +21 -0
- package/src/index.ts +72 -11
- package/src/machine-output/v4/atomic-publication.ts +3 -1
- package/src/package-checks/check-authoring.ts +136 -0
- package/src/package-checks/code-quality-findings/finding-waiver-authoring.ts +1 -1
- package/src/package-checks/code-quality-findings/finding-waiver-evidence.ts +1 -1
- package/src/package-checks/command-check/command-check.ts +152 -0
- package/src/package-checks/command-check/contract.ts +168 -0
- package/src/package-checks/command-check/execution.ts +211 -0
- package/src/package-checks/command-check/options.ts +331 -0
- package/src/package-checks/command-check/transcript.ts +35 -0
- package/src/package-checks/duplicate-detection/default-check.ts +37 -6
- package/src/package-checks/duplicate-detection/execution.ts +2 -4
- package/src/package-checks/duplicate-detection/finding-messages.ts +2 -2
- package/src/package-checks/duplicate-detection/jscpd/availability.ts +1 -1
- package/src/package-checks/duplicate-detection/options.ts +6 -3
- package/src/package-checks/duplicate-detection/records.ts +1 -1
- package/src/package-checks/file-metrics/constructor.ts +29 -6
- package/src/package-checks/file-metrics/execution.ts +2 -4
- package/src/package-checks/file-metrics/finding-messages.ts +1 -1
- package/src/package-checks/file-metrics/options.ts +6 -3
- package/src/package-checks/file-metrics/records.ts +1 -1
- package/src/package-checks/file-metrics/scc/availability.ts +1 -1
- package/src/package-checks/file-metrics/scc/batch-planner.ts +56 -0
- package/src/package-checks/file-metrics/scc/logical-scan-resources.ts +59 -0
- package/src/package-checks/file-metrics/scc/scanner.ts +134 -32
- package/src/package-checks/function-metrics/analysis.ts +7 -2
- package/src/package-checks/function-metrics/analyzer/analysis-model.ts +1 -1
- package/src/package-checks/function-metrics/analyzer/extension-output.ts +14 -6
- package/src/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.ts +1 -3
- package/src/package-checks/function-metrics/analyzer/extensions/protocol.ts +3 -3
- package/src/package-checks/function-metrics/analyzer/pipeline.ts +4 -2
- package/src/package-checks/function-metrics/analyzer/readers/erlang.ts +6 -6
- package/src/package-checks/function-metrics/analyzer/readers/fortran.ts +1 -1
- package/src/package-checks/function-metrics/analyzer/readers/objc.ts +9 -3
- package/src/package-checks/function-metrics/analyzer/readers/php-states.ts +14 -7
- package/src/package-checks/function-metrics/analyzer/readers/plsql.ts +8 -4
- package/src/package-checks/function-metrics/analyzer/readers/python.ts +4 -3
- package/src/package-checks/function-metrics/analyzer/readers/r.ts +2 -1
- package/src/package-checks/function-metrics/analyzer/readers/ttcn.ts +9 -3
- package/src/package-checks/function-metrics/analyzer/readers/typescript.ts +9 -3
- package/src/package-checks/function-metrics/analyzer/readers/zig.ts +2 -1
- package/src/package-checks/function-metrics/analyzer/shared/code-reader.ts +3 -1
- package/src/package-checks/function-metrics/analyzer/shared/js-style-regex.ts +10 -5
- package/src/package-checks/function-metrics/analyzer-worker-port.ts +20 -6
- package/src/package-checks/function-metrics/constructor.ts +30 -7
- package/src/package-checks/function-metrics/execution.ts +2 -4
- package/src/package-checks/function-metrics/finding-messages.ts +2 -2
- package/src/package-checks/function-metrics/measurement.ts +3 -1
- package/src/package-checks/function-metrics/options.ts +6 -3
- package/src/package-checks/function-metrics/records.ts +1 -1
- package/src/package-checks/host-environment/git.ts +11 -0
- package/src/package-checks/host-environment/path.ts +1 -20
- package/src/package-checks/host-environment/process/contract.ts +17 -9
- package/src/package-checks/host-environment/process/result.ts +48 -20
- package/src/package-checks/host-environment/process/runner.ts +8 -4
- package/src/package-checks/json-schema-validation/default-check.ts +38 -5
- package/src/package-checks/json-schema-validation/options.ts +4 -1
- package/src/package-checks/json-schema-validation/reference-resolver.ts +6 -2
- package/src/package-checks/json-schema-validation/schema-policy.ts +10 -5
- package/src/package-checks/json-validation/default-check.ts +27 -6
- package/src/package-checks/json-validation/options.ts +4 -1
- package/src/package-checks/local-cache-options.ts +40 -0
- package/src/package-checks/maintenance-reminders/maintenance-reminders.ts +89 -9
- package/src/package-checks/maintenance-reminders/maintenance-support.ts +3 -3
- package/src/package-checks/markdown-link-validation/default-check.ts +48 -5
- package/src/package-checks/markdown-link-validation/execution.ts +1 -1
- package/src/package-checks/markdown-link-validation/finding-messages.ts +1 -1
- package/src/package-checks/markdown-link-validation/markdown-parser.ts +1 -5
- package/src/package-checks/markdown-link-validation/options-resolution.ts +2 -19
- package/src/package-checks/markdown-link-validation/options-validation.ts +2 -17
- package/src/package-checks/markdown-link-validation/options.ts +6 -7
- package/src/package-checks/markdown-link-validation/parse-facts-cache-payload.ts +4 -5
- package/src/package-checks/markdown-lint/adapter.ts +167 -0
- package/src/package-checks/markdown-lint/default-check.ts +92 -0
- package/src/package-checks/markdown-lint/execution.ts +266 -0
- package/src/package-checks/markdown-lint/final-data.ts +33 -0
- package/src/package-checks/markdown-lint/finding-messages.ts +87 -0
- package/src/package-checks/markdown-lint/finding-waiver-identity.ts +54 -0
- package/src/package-checks/markdown-lint/findings-cache.ts +141 -0
- package/src/package-checks/markdown-lint/options-resolution.ts +102 -0
- package/src/package-checks/markdown-lint/options-validation.ts +50 -0
- package/src/package-checks/markdown-lint/options.ts +82 -0
- package/src/package-checks/markdown-lint/records.ts +132 -0
- package/src/package-checks/markdown-lint/unavailable-reasons.ts +33 -0
- package/src/package-checks/project-files/collection.ts +38 -22
- package/src/package-checks/project-files/config-glob.ts +1 -17
- package/src/package-checks/project-files/configuration.ts +1 -1
- package/src/package-checks/project-files/gitlink-revision.ts +4 -6
- package/src/package-checks/project-files/gitlink-worktree.ts +35 -7
- package/src/package-checks/project-files/public-collection.ts +1 -1
- package/src/package-checks/project-files/revision-paths.ts +3 -3
- package/src/package-checks/project-files/revision-worktree-files.ts +16 -16
- package/src/package-checks/secret-detection/default-check.ts +29 -6
- package/src/package-checks/secret-detection/execution.ts +2 -2
- package/src/package-checks/secret-detection/input-preparation.ts +64 -7
- package/src/package-checks/secret-detection/options.ts +5 -2
- package/src/package-checks/secret-detection/records.ts +1 -1
- package/src/package-checks/secret-detection/secretlint/adapter.ts +3 -4
- package/src/package-tools/admission-policy/define-admission-policy.ts +54 -0
- package/src/{cache → package-tools/cache}/cache-json-by-key.ts +13 -17
- package/src/{check → package-tools/finding-presentation}/finding-presentation.ts +3 -1
- package/src/{finding-waivers → package-tools/finding-waivers}/reconciliation.ts +16 -8
- package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/prediction.ts +5 -2
- package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/preparation.ts +5 -3
- package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/recording.ts +5 -4
- package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/storage.ts +9 -10
- package/src/{learned-critical-path → package-tools/learned-critical-path}/selection-layers.ts +2 -3
- package/src/{learned-critical-path → package-tools/learned-critical-path}/static-decision.ts +1 -1
- package/src/{learned-critical-path → package-tools/learned-critical-path}/strategy.ts +7 -4
- package/src/project-definition/check-tree/authoring.ts +15 -8
- package/src/project-definition/check-tree/check-fields-authoring.ts +106 -91
- package/src/project-definition/check-tree/flag-conditions.ts +99 -0
- package/src/project-definition/check-tree/materialization.ts +12 -8
- package/src/project-definition/check-tree/resolution.ts +13 -15
- package/src/project-definition/declarative-snapshot.ts +9 -2
- package/src/project-definition/project-changes.ts +112 -0
- package/src/project-definition/project-definition-validation.ts +58 -10
- package/src/project-definition/project-definition.ts +41 -68
- package/src/project-definition/scheduler-policy.ts +6 -3
- package/src/project-run/admission-strategy-provider/custom-strategy-preparation.ts +11 -8
- package/src/project-run/admission-strategy-provider/prepared-admission-strategy.ts +2 -2
- package/src/project-run/aggregation.ts +51 -74
- package/src/project-run/changes/git.ts +206 -0
- package/src/project-run/check-execution/admitted-check-execution.ts +62 -0
- package/src/project-run/check-execution/callback.ts +3 -2
- package/src/project-run/check-execution/dependencies.ts +120 -6
- package/src/project-run/check-execution/execution-finalization.ts +6 -4
- package/src/project-run/check-execution/execution-settlement.ts +88 -29
- package/src/project-run/check-execution/flag-controls.ts +22 -8
- package/src/project-run/check-execution/lifecycle.ts +14 -6
- package/src/project-run/check-execution/{preflight-result.ts → preparation-result.ts} +34 -32
- package/src/project-run/check-execution/{preflight.ts → preparation.ts} +92 -84
- package/src/project-run/check-execution/ready-check-execution.ts +97 -0
- package/src/project-run/check-execution/resolved-checks.ts +40 -219
- package/src/project-run/check-execution/scheduled-check-run.ts +119 -0
- package/src/project-run/check-execution/terminal-result.ts +108 -29
- package/src/project-run/completion/completion.ts +17 -3
- package/src/project-run/controls/contract.ts +6 -16
- package/src/project-run/controls/validation.ts +7 -60
- package/src/project-run/diagnostic-logging/diagnostic-detail-rendering.ts +1 -2
- package/src/project-run/diagnostic-logging/observation-rendering.ts +1 -1
- package/src/project-run/invocation/candidate.ts +28 -15
- package/src/project-run/invocation/candidates.ts +56 -0
- package/src/project-run/invocation/creation.ts +7 -3
- package/src/project-run/invocation/execution.ts +136 -0
- package/src/project-run/invocation/run.ts +15 -179
- package/src/project-run/invocation/scheduler.ts +13 -6
- package/src/project-run/outputs/status.ts +15 -15
- package/src/project-run/progress-rendering/presentation.ts +35 -13
- package/src/project-run/progress-rendering/renderer-formatting.ts +20 -7
- package/src/project-run/progress-rendering/renderer-lifecycle.ts +23 -6
- package/src/project-run/progress-rendering/renderer.ts +10 -4
- package/src/project-run/project-context.ts +8 -4
- package/src/project-run/result.ts +5 -5
- package/src/project-run/run.ts +1 -1
- package/src/project-run/task-scheduler/admission-core/compiled-graph-lookup.ts +71 -0
- package/src/project-run/task-scheduler/admission-core/compiled-graph.ts +9 -4
- package/src/project-run/task-scheduler/admission-core/selection-query.ts +6 -4
- package/src/project-run/task-scheduler/admission-core/selection-seed.ts +36 -6
- package/src/project-run/task-scheduler/admission-core/selection-transition.ts +17 -8
- package/src/project-run/task-scheduler/execution-state.ts +4 -4
- package/src/project-run/task-scheduler/measurement/diagnostics.ts +10 -4
- package/src/project-run/task-scheduler/measurement/timing.ts +13 -5
- package/src/project-run/task-scheduler/scheduler-observation.ts +3 -1
- package/src/project-run/task-scheduler/scheduler-terminal-measurement.ts +24 -22
- package/src/project-run/task-scheduler/scheduler.ts +23 -6
- package/types/check/check.d.ts +178 -67
- package/types/check/flag-enablement.d.ts +42 -0
- package/types/check/handoff-provider-identity.d.ts +12 -0
- package/types/check/project-changes.d.ts +13 -0
- package/types/check/project-context.d.ts +10 -0
- package/types/check-settlement/facts.d.ts +1 -1
- package/types/data-boundary/canonical-data.d.ts +28 -5
- package/types/data-boundary/canonical-json.d.ts +18 -1
- package/types/data-boundary/closed-values.d.ts +17 -1
- package/types/data-boundary/config-glob.d.ts +5 -0
- package/types/data-boundary/project-path.d.ts +4 -0
- package/types/index.d.ts +27 -11
- package/types/package-checks/check-authoring.d.ts +45 -0
- package/types/package-checks/code-quality-findings/finding-waiver-authoring.d.ts +1 -1
- package/types/package-checks/code-quality-findings/finding-waiver-evidence.d.ts +1 -1
- package/types/package-checks/command-check/command-check.d.ts +48 -0
- package/types/package-checks/command-check/contract.d.ts +108 -0
- package/types/package-checks/command-check/execution.d.ts +7 -0
- package/types/package-checks/command-check/options.d.ts +11 -0
- package/types/package-checks/command-check/transcript.d.ts +8 -0
- package/types/package-checks/duplicate-detection/default-check.d.ts +5 -2
- package/types/package-checks/duplicate-detection/finding-messages.d.ts +1 -1
- package/types/package-checks/duplicate-detection/options.d.ts +4 -3
- package/types/package-checks/duplicate-detection/records.d.ts +1 -1
- package/types/package-checks/file-metrics/constructor.d.ts +5 -2
- package/types/package-checks/file-metrics/options.d.ts +4 -3
- package/types/package-checks/file-metrics/records.d.ts +1 -1
- package/types/package-checks/file-metrics/scc/batch-planner.d.ts +18 -0
- package/types/package-checks/file-metrics/scc/logical-scan-resources.d.ts +14 -0
- package/types/package-checks/function-metrics/analyzer/extensions/protocol.d.ts +3 -3
- package/types/package-checks/function-metrics/constructor.d.ts +5 -2
- package/types/package-checks/function-metrics/finding-messages.d.ts +1 -1
- package/types/package-checks/function-metrics/options.d.ts +4 -3
- package/types/package-checks/function-metrics/records.d.ts +1 -1
- package/types/package-checks/host-environment/git.d.ts +2 -0
- package/types/package-checks/host-environment/path.d.ts +1 -3
- package/types/package-checks/host-environment/process/contract.d.ts +17 -9
- package/types/package-checks/json-schema-validation/default-check.d.ts +4 -1
- package/types/package-checks/json-schema-validation/options.d.ts +2 -1
- package/types/package-checks/json-validation/default-check.d.ts +4 -1
- package/types/package-checks/json-validation/options.d.ts +2 -1
- package/types/package-checks/local-cache-options.d.ts +9 -0
- package/types/package-checks/maintenance-reminders/maintenance-reminders.d.ts +11 -2
- package/types/package-checks/markdown-link-validation/default-check.d.ts +4 -1
- package/types/package-checks/markdown-link-validation/options.d.ts +4 -7
- package/types/package-checks/markdown-lint/adapter.d.ts +10 -0
- package/types/package-checks/markdown-lint/default-check.d.ts +37 -0
- package/types/package-checks/markdown-lint/execution.d.ts +24 -0
- package/types/package-checks/markdown-lint/final-data.d.ts +8 -0
- package/types/package-checks/markdown-lint/finding-messages.d.ts +6 -0
- package/types/package-checks/markdown-lint/finding-waiver-identity.d.ts +3 -0
- package/types/package-checks/markdown-lint/findings-cache.d.ts +17 -0
- package/types/package-checks/markdown-lint/options-resolution.d.ts +3 -0
- package/types/package-checks/markdown-lint/options-validation.d.ts +2 -0
- package/types/package-checks/markdown-lint/options.d.ts +65 -0
- package/types/package-checks/markdown-lint/records.d.ts +39 -0
- package/types/package-checks/markdown-lint/unavailable-reasons.d.ts +3 -0
- package/types/package-checks/secret-detection/default-check.d.ts +4 -1
- package/types/package-checks/secret-detection/options.d.ts +3 -2
- package/types/package-tools/admission-policy/define-admission-policy.d.ts +26 -0
- package/types/{check → package-tools/finding-presentation}/finding-presentation.d.ts +3 -1
- package/types/{finding-waivers → package-tools/finding-waivers}/reconciliation.d.ts +3 -3
- package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/prediction.d.ts +2 -2
- package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/preparation.d.ts +1 -1
- package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/recording.d.ts +1 -1
- package/types/{learned-critical-path → package-tools/learned-critical-path}/selection-layers.d.ts +1 -1
- package/types/{learned-critical-path → package-tools/learned-critical-path}/static-decision.d.ts +1 -1
- package/types/{learned-critical-path → package-tools/learned-critical-path}/strategy.d.ts +1 -1
- package/types/project-definition/check-tree/authoring.d.ts +5 -3
- package/types/project-definition/check-tree/check-fields-authoring.d.ts +12 -7
- package/types/project-definition/check-tree/flag-conditions.d.ts +5 -0
- package/types/project-definition/check-tree/resolution.d.ts +6 -4
- package/types/project-definition/declarative-snapshot.d.ts +4 -1
- package/types/project-definition/project-changes.d.ts +30 -0
- package/types/project-definition/project-definition.d.ts +15 -30
- package/types/project-definition/scheduler-policy.d.ts +3 -3
- package/types/project-run/admission-strategy-provider/prepared-admission-strategy.d.ts +2 -2
- package/types/project-run/aggregation.d.ts +8 -6
- package/types/project-run/changes/git.d.ts +14 -0
- package/types/project-run/check-execution/admitted-check-execution.d.ts +18 -0
- package/types/project-run/check-execution/dependencies.d.ts +3 -0
- package/types/project-run/check-execution/execution-finalization.d.ts +1 -1
- package/types/project-run/check-execution/execution-settlement.d.ts +15 -7
- package/types/project-run/check-execution/flag-controls.d.ts +1 -1
- package/types/project-run/check-execution/lifecycle.d.ts +9 -5
- package/types/project-run/check-execution/{preflight-result.d.ts → preparation-result.d.ts} +3 -3
- package/types/project-run/check-execution/{preflight.d.ts → preparation.d.ts} +10 -9
- package/types/project-run/check-execution/ready-check-execution.d.ts +18 -0
- package/types/project-run/check-execution/resolved-checks.d.ts +12 -13
- package/types/project-run/check-execution/scheduled-check-run.d.ts +10 -0
- package/types/project-run/check-execution/terminal-result.d.ts +13 -1
- package/types/project-run/completion/completion.d.ts +3 -1
- package/types/project-run/controls/contract.d.ts +6 -16
- package/types/project-run/invocation/candidates.d.ts +8 -0
- package/types/project-run/invocation/execution.d.ts +5 -0
- package/types/project-run/invocation/run.d.ts +2 -2
- package/types/project-run/outputs/status.d.ts +4 -4
- package/types/project-run/progress-rendering/presentation.d.ts +4 -3
- package/types/project-run/progress-rendering/renderer-formatting.d.ts +5 -2
- package/types/project-run/progress-rendering/renderer-lifecycle.d.ts +2 -0
- package/types/project-run/progress-rendering/renderer.d.ts +4 -2
- package/types/project-run/project-context.d.ts +3 -3
- package/types/project-run/result.d.ts +3 -3
- package/types/project-run/run.d.ts +1 -1
- package/types/project-run/task-scheduler/admission-core/compiled-graph-lookup.d.ts +10 -0
- package/types/project-run/task-scheduler/execution-state.d.ts +4 -4
- package/types/project-run/task-scheduler/measurement/diagnostics.d.ts +2 -2
- package/types/project-run/task-scheduler/scheduler-terminal-measurement.d.ts +1 -1
- package/dist/esm/cache/cache-json-by-key.mjs.map +0 -1
- package/dist/esm/check/finding-presentation.mjs.map +0 -1
- package/dist/esm/finding-waivers/reconciliation.mjs.map +0 -1
- package/dist/esm/learned-critical-path/duration-model/bounded-history.mjs.map +0 -1
- package/dist/esm/learned-critical-path/duration-model/prediction.mjs.map +0 -1
- package/dist/esm/learned-critical-path/duration-model/preparation.mjs.map +0 -1
- package/dist/esm/learned-critical-path/duration-model/recording.mjs.map +0 -1
- package/dist/esm/learned-critical-path/duration-model/storage.mjs.map +0 -1
- package/dist/esm/learned-critical-path/selection-layers.mjs.map +0 -1
- package/dist/esm/learned-critical-path/static-decision.mjs.map +0 -1
- package/dist/esm/learned-critical-path/strategy.mjs.map +0 -1
- package/dist/esm/package-checks/project-files/config-glob.mjs.map +0 -1
- package/dist/esm/project-run/check-execution/preflight-result.mjs.map +0 -1
- package/dist/esm/project-run/check-execution/preflight.mjs.map +0 -1
- package/dist/esm/project-run/task-scheduler/critical-path-ranking.mjs.map +0 -1
- package/types/package-checks/project-files/config-glob.d.ts +0 -5
- /package/dist/esm/{check → package-tools/finding-presentation}/finding-presentation.mjs +0 -0
- /package/dist/esm/{project-run/task-scheduler → package-tools/learned-critical-path}/critical-path-ranking.mjs +0 -0
- /package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/bounded-history.mjs +0 -0
- /package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/recording.mjs +0 -0
- /package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/static-decision.mjs +0 -0
- /package/src/{project-run/task-scheduler → package-tools/learned-critical-path}/critical-path-ranking.ts +0 -0
- /package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/bounded-history.ts +0 -0
- /package/types/{cache → package-tools/cache}/cache-json-by-key.d.ts +0 -0
- /package/types/{project-run/task-scheduler → package-tools/learned-critical-path}/critical-path-ranking.d.ts +0 -0
- /package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/bounded-history.d.ts +0 -0
- /package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/storage.d.ts +0 -0
|
@@ -9,6 +9,8 @@ function ownDataShape(value) {
|
|
|
9
9
|
}
|
|
10
10
|
if (keys.some((key) => {
|
|
11
11
|
const descriptor = descriptors[key];
|
|
12
|
+
if (descriptor === undefined)
|
|
13
|
+
return true;
|
|
12
14
|
return descriptor.get !== undefined || descriptor.set !== undefined;
|
|
13
15
|
}))
|
|
14
16
|
return undefined;
|
|
@@ -44,16 +46,30 @@ export function snapshotClosedRecord(value) {
|
|
|
44
46
|
return undefined;
|
|
45
47
|
const shape = ownDataShape(value);
|
|
46
48
|
if (shape === undefined ||
|
|
47
|
-
shape.keys.some((key) => shape.descriptors[key]
|
|
49
|
+
shape.keys.some((key) => shape.descriptors[key]?.enumerable !== true)) {
|
|
48
50
|
return undefined;
|
|
49
51
|
}
|
|
50
|
-
|
|
52
|
+
const entries = shape.keys.map((key) => {
|
|
53
|
+
const descriptor = shape.descriptors[key];
|
|
54
|
+
if (descriptor === undefined)
|
|
55
|
+
throw new TypeError(`Missing own descriptor: ${key}`);
|
|
56
|
+
return [key, descriptor.value];
|
|
57
|
+
});
|
|
58
|
+
return Object.freeze(Object.fromEntries(entries));
|
|
51
59
|
}
|
|
52
60
|
catch {
|
|
53
61
|
return undefined;
|
|
54
62
|
}
|
|
55
63
|
}
|
|
56
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* 取得字段集合恰好匹配调用方字段表的闭合普通记录外层浅快照。
|
|
66
|
+
*
|
|
67
|
+
* 输入必须是使用 `Object.prototype` 或 null prototype 的非数组对象,且每个自有属性都是可枚举数据属性。
|
|
68
|
+
* 调用方持有的 `keys` 必须是稳定、无重复的字符串列表;缺字段、多字段、symbol 键、存取器或不可枚举属性
|
|
69
|
+
* 均返回 `undefined`。成功结果是使用 `Object.prototype` 的冻结浅副本:只固定外层字段,保留 callback、
|
|
70
|
+
* `undefined` 与嵌套对象或数组的原引用,调用方仍须逐字段验证。这不是 JSON 验证器;不调用 getter,
|
|
71
|
+
* 但反射 Proxy 可能执行其 trap,反射失败时返回 `undefined`。
|
|
72
|
+
*/
|
|
57
73
|
export function snapshotExactClosedRecord(value, keys) {
|
|
58
74
|
const record = snapshotClosedRecord(value);
|
|
59
75
|
return record !== undefined && hasExactPlainRecordKeys(record, keys) ? record : undefined;
|
|
@@ -71,12 +87,20 @@ function closedArrayItems(shape, length) {
|
|
|
71
87
|
const items = [];
|
|
72
88
|
for (let index = 0; index < length; index += 1) {
|
|
73
89
|
const descriptor = shape.descriptors[String(index)];
|
|
74
|
-
if (descriptor
|
|
90
|
+
if (descriptor?.enumerable !== true)
|
|
75
91
|
return undefined;
|
|
76
92
|
items.push(descriptor.value);
|
|
77
93
|
}
|
|
78
94
|
return Object.freeze(items);
|
|
79
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* 取得标准无空洞数组的外层浅快照。
|
|
98
|
+
*
|
|
99
|
+
* 输入必须使用 `Array.prototype`,除标准 `length` 和可枚举索引外没有其它自有属性,也不能包含存取器;
|
|
100
|
+
* 稀疏数组、额外属性或其它不符合条件的输入返回 `undefined`。成功结果是冻结浅副本,只固定数组结构,
|
|
101
|
+
* 保留 callback、`undefined` 与嵌套值的原引用,不检查元素的业务类型或 JSON 合法性。不调用存取器,
|
|
102
|
+
* 但反射 Proxy 可能执行其 trap,反射失败时返回 `undefined`。
|
|
103
|
+
*/
|
|
80
104
|
export function snapshotClosedArray(value) {
|
|
81
105
|
try {
|
|
82
106
|
if (!Array.isArray(value) || Object.getPrototypeOf(value) !== Array.prototype)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"closed-values.mjs","sourceRoot":"","sources":["../../../src/data-boundary/closed-values.ts"],"names":[],"mappings":"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","sourcesContent":["interface OwnDataShape {\n readonly descriptors: Readonly<Record<string, PropertyDescriptor>>;\n readonly keys: readonly string[];\n}\n\nfunction ownDataShape(value: object): OwnDataShape | undefined {\n const descriptors: Readonly<Record<string, PropertyDescriptor>> =\n Object.getOwnPropertyDescriptors(value);\n const ownKeys = Reflect.ownKeys(descriptors);\n const keys: string[] = [];\n for (const key of ownKeys) {\n if (typeof key !== \"string\") return undefined;\n keys.push(key);\n }\n if (\n keys.some((key) => {\n const descriptor = descriptors[key];\n return descriptor.get !== undefined || descriptor.set !== undefined;\n })\n )\n return undefined;\n return { descriptors, keys };\n}\n\nexport function snapshotPlainRecord(value: unknown): Readonly<Record<string, unknown>> | undefined {\n try {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n return undefined;\n }\n const prototype: unknown = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n return undefined;\n }\n const descriptors: Readonly<Record<string, PropertyDescriptor>> =\n Object.getOwnPropertyDescriptors(value);\n if (\n Object.values(descriptors).some(\n (descriptor) => descriptor.get !== undefined || descriptor.set !== undefined\n )\n ) {\n return undefined;\n }\n return Object.fromEntries(\n Object.entries(descriptors)\n .filter(([, descriptor]) => descriptor.enumerable === true)\n .map(([key, descriptor]) => [key, descriptor.value as unknown])\n );\n } catch {\n return undefined;\n }\n}\n\nexport function snapshotClosedRecord(\n value: unknown\n): Readonly<Record<string, unknown>> | undefined {\n try {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) return undefined;\n const prototype: unknown = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) return undefined;\n const shape = ownDataShape(value);\n if (\n shape === undefined ||\n shape.keys.some((key) => shape.descriptors[key].enumerable !== true)\n ) {\n return undefined;\n }\n return Object.freeze(\n Object.fromEntries(shape.keys.map((key) => [key, shape.descriptors[key].value as unknown]))\n );\n } catch {\n return undefined;\n }\n}\n\n/** Snapshots a closed plain record only when it has exactly the declared own keys. */\nexport function snapshotExactClosedRecord(\n value: unknown,\n keys: readonly string[]\n): Readonly<Record<string, unknown>> | undefined {\n const record = snapshotClosedRecord(value);\n return record !== undefined && hasExactPlainRecordKeys(record, keys) ? record : undefined;\n}\n\nfunction closedArrayLength(shape: OwnDataShape): number | undefined {\n const descriptor = shape.descriptors.length;\n if (typeof descriptor?.value !== \"number\" || descriptor.enumerable !== false) return undefined;\n const length = descriptor.value;\n return Number.isSafeInteger(length) && length >= 0 && shape.keys.length === length + 1\n ? length\n : undefined;\n}\n\nfunction closedArrayItems(shape: OwnDataShape, length: number): readonly unknown[] | undefined {\n const items: unknown[] = [];\n for (let index = 0; index < length; index += 1) {\n const descriptor = shape.descriptors[String(index)];\n if (descriptor === undefined || descriptor.enumerable !== true) return undefined;\n items.push(descriptor.value as unknown);\n }\n return Object.freeze(items);\n}\n\nexport function snapshotClosedArray(value: unknown): readonly unknown[] | undefined {\n try {\n if (!Array.isArray(value) || Object.getPrototypeOf(value) !== Array.prototype) return undefined;\n const shape = ownDataShape(value);\n if (shape === undefined) return undefined;\n const length = closedArrayLength(shape);\n return length === undefined ? undefined : closedArrayItems(shape, length);\n } catch {\n return undefined;\n }\n}\n\nexport function hasExactPlainRecordKeys(\n value: Readonly<Record<string, unknown>>,\n keys: readonly string[]\n): boolean {\n const actualKeys = Object.keys(value);\n return actualKeys.length === keys.length && actualKeys.every((key) => keys.includes(key));\n}\n\nexport function hasRequiredAndOptionalRecordKeys(\n value: Readonly<Record<string, unknown>>,\n keys: Readonly<{\n readonly optional: readonly string[];\n readonly required: readonly string[];\n }>\n): boolean {\n const supportedKeys = new Set([...keys.required, ...keys.optional]);\n return (\n keys.required.every((key) => Object.hasOwn(value, key)) &&\n Object.keys(value).every((key) => supportedKeys.has(key))\n );\n}\n\nexport interface ClosedPolicyRecordKeys {\n readonly optional?: readonly string[];\n readonly required?: readonly string[];\n}\n\n/** Snapshots an authoring record whose keys are limited to one required/optional policy. */\nexport function snapshotClosedPolicyRecord(\n value: unknown,\n keys: ClosedPolicyRecordKeys\n): Readonly<Record<string, unknown>> | undefined {\n const record = snapshotClosedRecord(value);\n return record !== undefined &&\n hasRequiredAndOptionalRecordKeys(record, {\n optional: keys.optional ?? [],\n required: keys.required ?? []\n })\n ? record\n : undefined;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"closed-values.mjs","sourceRoot":"","sources":["../../../src/data-boundary/closed-values.ts"],"names":[],"mappings":"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","sourcesContent":["interface OwnDataShape {\n readonly descriptors: Readonly<Record<string, PropertyDescriptor>>;\n readonly keys: readonly string[];\n}\n\nfunction ownDataShape(value: object): OwnDataShape | undefined {\n const descriptors: Readonly<Record<string, PropertyDescriptor>> =\n Object.getOwnPropertyDescriptors(value);\n const ownKeys = Reflect.ownKeys(descriptors);\n const keys: string[] = [];\n for (const key of ownKeys) {\n if (typeof key !== \"string\") return undefined;\n keys.push(key);\n }\n if (\n keys.some((key) => {\n const descriptor = descriptors[key];\n if (descriptor === undefined) return true;\n return descriptor.get !== undefined || descriptor.set !== undefined;\n })\n )\n return undefined;\n return { descriptors, keys };\n}\n\nexport function snapshotPlainRecord(value: unknown): Readonly<Record<string, unknown>> | undefined {\n try {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) {\n return undefined;\n }\n const prototype: unknown = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) {\n return undefined;\n }\n const descriptors: Readonly<Record<string, PropertyDescriptor>> =\n Object.getOwnPropertyDescriptors(value);\n if (\n Object.values(descriptors).some(\n (descriptor) => descriptor.get !== undefined || descriptor.set !== undefined\n )\n ) {\n return undefined;\n }\n return Object.fromEntries(\n Object.entries(descriptors)\n .filter(([, descriptor]) => descriptor.enumerable === true)\n .map(([key, descriptor]) => [key, descriptor.value as unknown])\n );\n } catch {\n return undefined;\n }\n}\n\nexport function snapshotClosedRecord(\n value: unknown\n): Readonly<Record<string, unknown>> | undefined {\n try {\n if (value === null || typeof value !== \"object\" || Array.isArray(value)) return undefined;\n const prototype: unknown = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) return undefined;\n const shape = ownDataShape(value);\n if (\n shape === undefined ||\n shape.keys.some((key) => shape.descriptors[key]?.enumerable !== true)\n ) {\n return undefined;\n }\n const entries = shape.keys.map((key) => {\n const descriptor = shape.descriptors[key];\n if (descriptor === undefined) throw new TypeError(`Missing own descriptor: ${key}`);\n return [key, descriptor.value as unknown] as const;\n });\n return Object.freeze(Object.fromEntries(entries));\n } catch {\n return undefined;\n }\n}\n\n/**\n * 取得字段集合恰好匹配调用方字段表的闭合普通记录外层浅快照。\n *\n * 输入必须是使用 `Object.prototype` 或 null prototype 的非数组对象,且每个自有属性都是可枚举数据属性。\n * 调用方持有的 `keys` 必须是稳定、无重复的字符串列表;缺字段、多字段、symbol 键、存取器或不可枚举属性\n * 均返回 `undefined`。成功结果是使用 `Object.prototype` 的冻结浅副本:只固定外层字段,保留 callback、\n * `undefined` 与嵌套对象或数组的原引用,调用方仍须逐字段验证。这不是 JSON 验证器;不调用 getter,\n * 但反射 Proxy 可能执行其 trap,反射失败时返回 `undefined`。\n */\nexport function snapshotExactClosedRecord(\n value: unknown,\n keys: readonly string[]\n): Readonly<Record<string, unknown>> | undefined {\n const record = snapshotClosedRecord(value);\n return record !== undefined && hasExactPlainRecordKeys(record, keys) ? record : undefined;\n}\n\nfunction closedArrayLength(shape: OwnDataShape): number | undefined {\n const descriptor = shape.descriptors.length;\n if (typeof descriptor?.value !== \"number\" || descriptor.enumerable !== false) return undefined;\n const length = descriptor.value;\n return Number.isSafeInteger(length) && length >= 0 && shape.keys.length === length + 1\n ? length\n : undefined;\n}\n\nfunction closedArrayItems(shape: OwnDataShape, length: number): readonly unknown[] | undefined {\n const items: unknown[] = [];\n for (let index = 0; index < length; index += 1) {\n const descriptor = shape.descriptors[String(index)];\n if (descriptor?.enumerable !== true) return undefined;\n items.push(descriptor.value as unknown);\n }\n return Object.freeze(items);\n}\n\n/**\n * 取得标准无空洞数组的外层浅快照。\n *\n * 输入必须使用 `Array.prototype`,除标准 `length` 和可枚举索引外没有其它自有属性,也不能包含存取器;\n * 稀疏数组、额外属性或其它不符合条件的输入返回 `undefined`。成功结果是冻结浅副本,只固定数组结构,\n * 保留 callback、`undefined` 与嵌套值的原引用,不检查元素的业务类型或 JSON 合法性。不调用存取器,\n * 但反射 Proxy 可能执行其 trap,反射失败时返回 `undefined`。\n */\nexport function snapshotClosedArray(value: unknown): readonly unknown[] | undefined {\n try {\n if (!Array.isArray(value) || Object.getPrototypeOf(value) !== Array.prototype) return undefined;\n const shape = ownDataShape(value);\n if (shape === undefined) return undefined;\n const length = closedArrayLength(shape);\n return length === undefined ? undefined : closedArrayItems(shape, length);\n } catch {\n return undefined;\n }\n}\n\nexport function hasExactPlainRecordKeys(\n value: Readonly<Record<string, unknown>>,\n keys: readonly string[]\n): boolean {\n const actualKeys = Object.keys(value);\n return actualKeys.length === keys.length && actualKeys.every((key) => keys.includes(key));\n}\n\nexport function hasRequiredAndOptionalRecordKeys(\n value: Readonly<Record<string, unknown>>,\n keys: Readonly<{\n readonly optional: readonly string[];\n readonly required: readonly string[];\n }>\n): boolean {\n const supportedKeys = new Set([...keys.required, ...keys.optional]);\n return (\n keys.required.every((key) => Object.hasOwn(value, key)) &&\n Object.keys(value).every((key) => supportedKeys.has(key))\n );\n}\n\nexport interface ClosedPolicyRecordKeys {\n readonly optional?: readonly string[];\n readonly required?: readonly string[];\n}\n\n/** Snapshots an authoring record whose keys are limited to one required/optional policy. */\nexport function snapshotClosedPolicyRecord(\n value: unknown,\n keys: ClosedPolicyRecordKeys\n): Readonly<Record<string, unknown>> | undefined {\n const record = snapshotClosedRecord(value);\n return record !== undefined &&\n hasRequiredAndOptionalRecordKeys(record, {\n optional: keys.optional ?? [],\n required: keys.required ?? []\n })\n ? record\n : undefined;\n}\n"]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { minimatch } from "minimatch";
|
|
2
|
-
import { toSlashPath } from "
|
|
2
|
+
import { toSlashPath } from "./project-path.mjs";
|
|
3
3
|
/**
|
|
4
|
-
* Product config glob
|
|
5
|
-
*
|
|
4
|
+
* Product config glob's single matcher boundary. Candidates use slash form;
|
|
5
|
+
* dot paths participate only when an explicit glob matches them.
|
|
6
6
|
*/
|
|
7
7
|
export function matchesAnyConfigGlob(candidatePath, configGlobs) {
|
|
8
8
|
const normalizedCandidatePath = toSlashPath(candidatePath);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-glob.mjs","sourceRoot":"","sources":["../../../src/data-boundary/config-glob.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,aAAqB,EACrB,WAA8B;IAE9B,MAAM,uBAAuB,GAAG,WAAW,CAAC,aAAa,CAAC,CAAC;IAC3D,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CACrC,SAAS,CAAC,uBAAuB,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAC9D,CAAC;AACJ,CAAC","sourcesContent":["import { minimatch } from \"minimatch\";\n\nimport { toSlashPath } from \"./project-path.ts\";\n\n/**\n * Product config glob's single matcher boundary. Candidates use slash form;\n * dot paths participate only when an explicit glob matches them.\n */\nexport function matchesAnyConfigGlob(\n candidatePath: string,\n configGlobs: readonly string[]\n): boolean {\n const normalizedCandidatePath = toSlashPath(candidatePath);\n return configGlobs.some((configGlob) =>\n minimatch(normalizedCandidatePath, configGlob, { dot: true })\n );\n}\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Converts a host path spelling to the Product's slash-path form. */
|
|
2
|
+
export function toSlashPath(filePath) {
|
|
3
|
+
return filePath.replace(/\\/g, "/");
|
|
4
|
+
}
|
|
5
|
+
/** Recognizes one stable project-root-relative slash path. */
|
|
6
|
+
export function isNormalizedProjectRelativePath(value) {
|
|
7
|
+
if (typeof value !== "string" ||
|
|
8
|
+
value.length === 0 ||
|
|
9
|
+
value.startsWith("/") ||
|
|
10
|
+
value.includes("\\") ||
|
|
11
|
+
value.includes("\u0000") ||
|
|
12
|
+
/^[A-Za-z]:/u.test(value)) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
return value
|
|
16
|
+
.split("/")
|
|
17
|
+
.every((segment) => segment.length > 0 && segment !== "." && segment !== "..");
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=project-path.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-path.mjs","sourceRoot":"","sources":["../../../src/data-boundary/project-path.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC;AAED,8DAA8D;AAC9D,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":["/** Converts a host path spelling to the Product's slash-path form. */\nexport function toSlashPath(filePath: string): string {\n return filePath.replace(/\\\\/g, \"/\");\n}\n\n/** Recognizes one stable 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"]}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -4,7 +4,9 @@
|
|
|
4
4
|
*
|
|
5
5
|
* @packageDocumentation
|
|
6
6
|
*/
|
|
7
|
-
export { cacheJsonByKey } from "./cache/cache-json-by-key.mjs";
|
|
7
|
+
export { cacheJsonByKey } from "./package-tools/cache/cache-json-by-key.mjs";
|
|
8
|
+
export { canonicalizeJsonObject, canonicalizeJsonValue, canonicalJsonBytes, canonicalJsonText } from "./data-boundary/canonical-data.mjs";
|
|
9
|
+
export { snapshotClosedArray, snapshotExactClosedRecord } from "./data-boundary/closed-values.mjs";
|
|
8
10
|
export { duplicateDetection } from "./package-checks/duplicate-detection/default-check.mjs";
|
|
9
11
|
export { parseDuplicateDetectionData } from "./package-checks/duplicate-detection/final-data.mjs";
|
|
10
12
|
export { fileMetrics } from "./package-checks/file-metrics/constructor.mjs";
|
|
@@ -17,17 +19,22 @@ export { jsonSchemaValidation } from "./package-checks/json-schema-validation/de
|
|
|
17
19
|
export { parseJsonSchemaValidationData } from "./package-checks/json-schema-validation/final-data.mjs";
|
|
18
20
|
export { jsonValidation } from "./package-checks/json-validation/default-check.mjs";
|
|
19
21
|
export { parseJsonValidationData } from "./package-checks/json-validation/final-data.mjs";
|
|
22
|
+
export { commandCheck } from "./package-checks/command-check/command-check.mjs";
|
|
20
23
|
export { maintenanceReminders } from "./package-checks/maintenance-reminders/maintenance-reminders.mjs";
|
|
21
24
|
export { parseMaintenanceRemindersData } from "./package-checks/maintenance-reminders/final-data.mjs";
|
|
25
|
+
export { markdownLint } from "./package-checks/markdown-lint/default-check.mjs";
|
|
26
|
+
export { parseMarkdownLintData } from "./package-checks/markdown-lint/final-data.mjs";
|
|
22
27
|
export { markdownLinkValidation } from "./package-checks/markdown-link-validation/default-check.mjs";
|
|
23
28
|
export { parseMarkdownLinkValidationData } from "./package-checks/markdown-link-validation/final-data.mjs";
|
|
24
|
-
export { reconcileFindingWaivers } from "./finding-waivers/reconciliation.mjs";
|
|
25
|
-
export { presentCheckFindings } from "./
|
|
29
|
+
export { reconcileFindingWaivers } from "./package-tools/finding-waivers/reconciliation.mjs";
|
|
30
|
+
export { presentCheckFindings } from "./package-tools/finding-presentation/finding-presentation.mjs";
|
|
26
31
|
export { defaultProjectFileSelection } from "./package-checks/project-files/configuration.mjs";
|
|
27
32
|
export { collectProjectFiles } from "./package-checks/project-files/public-collection.mjs";
|
|
28
33
|
export { defineCheck, inherit } from "./check/check.mjs";
|
|
29
|
-
export {
|
|
30
|
-
export {
|
|
34
|
+
export { all, any, changeFlag, exactlyOne, none, not, notAll } from "./check/flag-enablement.mjs";
|
|
35
|
+
export { defineAdmissionPolicy } from "./package-tools/admission-policy/define-admission-policy.mjs";
|
|
36
|
+
export { defineConfig } from "./project-definition/project-definition.mjs";
|
|
37
|
+
export { createLearnedCriticalPathStrategy } from "./package-tools/learned-critical-path/strategy.mjs";
|
|
31
38
|
export { createAdmissionGraph } from "./project-run/task-scheduler/admission-core/core.mjs";
|
|
32
39
|
export { run } from "./project-run/run.mjs";
|
|
33
40
|
//# sourceMappingURL=index.mjs.map
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AAC3F,OAAO,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAC;AAWjG,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAUnF,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAW3F,OAAO,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAU3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,EAAE,6BAA6B,EAAE,MAAM,uDAAuD,CAAC;AAkBtG,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAWzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iEAAiE,CAAC;AAMvG,OAAO,EAAE,6BAA6B,EAAE,MAAM,sDAAsD,CAAC;AAMrG,OAAO,EAAE,sBAAsB,EAAE,MAAM,4DAA4D,CAAC;AACpG,OAAO,EAAE,+BAA+B,EAAE,MAAM,yDAAyD,CAAC;AAU1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AASvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iDAAiD,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAO1F,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAcxD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AACjG,OAAO,EAAE,iCAAiC,EAAE,MAAM,qCAAqC,CAAC;AAKxF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AA0C3F,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["/**\n * Vibe Check 是由项目在 Node runtime 中调用的 TypeScript API,用于定义并执行项目质量 Check。\n * 所有公开能力从 package root 导入;package `README.md` 说明 consumer authoring、结果读取和分发范围。\n *\n * @packageDocumentation\n */\nexport { cacheJsonByKey } from \"./cache/cache-json-by-key.ts\";\nexport type { CacheJsonByKeyOptions, CacheJsonByKeyResult } from \"./cache/cache-json-by-key.ts\";\nexport { duplicateDetection } from \"./package-checks/duplicate-detection/default-check.ts\";\nexport { parseDuplicateDetectionData } from \"./package-checks/duplicate-detection/final-data.ts\";\nexport type { DuplicateDetectionFinalData } from \"./package-checks/duplicate-detection/final-data.ts\";\nexport type {\n DuplicateDetectionFindingIdentity,\n DuplicateDetectionFindingLocation,\n DuplicateDetectionFindingWaiver,\n DuplicateDetectionOptions,\n ResolvedDuplicateDetectionOptions\n} from \"./package-checks/duplicate-detection/options.ts\";\nexport type { DuplicateDetectionUnavailableReasonCode } from \"./package-checks/duplicate-detection/execution.ts\";\nexport type { DuplicateDetectionRecordData } from \"./package-checks/duplicate-detection/records.ts\";\nexport { fileMetrics } from \"./package-checks/file-metrics/constructor.ts\";\nexport { parseFileMetricsData } from \"./package-checks/file-metrics/final-data.ts\";\nexport type { FileMetricsFinalData } from \"./package-checks/file-metrics/final-data.ts\";\nexport type {\n FileMetricsFindingIdentity,\n FileMetricsFindingWaiver,\n FileMetricsOptions,\n ResolvedFileMetricsOptions\n} from \"./package-checks/file-metrics/options.ts\";\nexport type { FileMetricsUnavailableReasonCode } from \"./package-checks/file-metrics/execution.ts\";\nexport type { FileMetricsRecordData } from \"./package-checks/file-metrics/records.ts\";\nexport { functionMetrics } from \"./package-checks/function-metrics/constructor.ts\";\nexport { parseFunctionMetricsData } from \"./package-checks/function-metrics/final-data.ts\";\nexport type { FunctionMetricsFinalData } from \"./package-checks/function-metrics/final-data.ts\";\nexport type {\n FunctionMetricsFindingIdentity,\n FunctionMetricsFindingMetric,\n FunctionMetricsFindingWaiver,\n FunctionMetricsOptions,\n ResolvedFunctionMetricsOptions\n} from \"./package-checks/function-metrics/options.ts\";\nexport type { FunctionMetricsUnavailableReasonCode } from \"./package-checks/function-metrics/execution.ts\";\nexport type { FunctionMetricsRecordData } from \"./package-checks/function-metrics/records.ts\";\nexport { secretDetection } from \"./package-checks/secret-detection/default-check.ts\";\nexport { parseSecretDetectionData } from \"./package-checks/secret-detection/final-data.ts\";\nexport type { SecretDetectionFinalData } from \"./package-checks/secret-detection/final-data.ts\";\nexport type {\n ResolvedSecretDetectionOptions,\n SecretDetectionFindingIdentity,\n SecretDetectionFindingWaiver,\n SecretDetectionOptions\n} from \"./package-checks/secret-detection/options.ts\";\nexport type { SecretDetectionUnavailableReasonCode } from \"./package-checks/secret-detection/execution.ts\";\nexport type { SecretDetectionRecordData } from \"./package-checks/secret-detection/records.ts\";\nexport { jsonSchemaValidation } from \"./package-checks/json-schema-validation/default-check.ts\";\nexport { parseJsonSchemaValidationData } from \"./package-checks/json-schema-validation/final-data.ts\";\nexport type { JsonSchemaValidationFinalData } from \"./package-checks/json-schema-validation/final-data.ts\";\nexport type {\n JsonSchemaIdentity,\n JsonSchemaIdentityMode,\n JsonSchemaInstanceBinding,\n JsonSchemaReferenceResolution,\n JsonSchemaReferenceSource,\n JsonSchemaValidationOptions,\n RegisteredJsonSchema,\n ResolvedJsonSchemaValidationOptions\n} from \"./package-checks/json-schema-validation/options.ts\";\nexport type {\n JsonSchemaDocumentReason,\n JsonSchemaValidationRecordData,\n JsonSchemaValidationRecordReason,\n JsonSchemaValidationUnavailableCode\n} from \"./package-checks/json-schema-validation/json-schema-validation.ts\";\nexport { jsonValidation } from \"./package-checks/json-validation/default-check.ts\";\nexport { parseJsonValidationData } from \"./package-checks/json-validation/final-data.ts\";\nexport type { JsonValidationFinalData } from \"./package-checks/json-validation/final-data.ts\";\nexport type {\n JsonValidationOptions,\n ResolvedJsonValidationOptions\n} from \"./package-checks/json-validation/options.ts\";\nexport type {\n JsonValidationRecordData,\n JsonValidationRecordReason,\n JsonValidationUnavailableCode\n} from \"./package-checks/json-validation/json-validation.ts\";\nexport { maintenanceReminders } from \"./package-checks/maintenance-reminders/maintenance-reminders.ts\";\nexport type {\n MaintenanceReminder,\n MaintenanceReminderOptions,\n MaintenanceRemindersUnavailableCode\n} from \"./package-checks/maintenance-reminders/maintenance-reminders.ts\";\nexport { parseMaintenanceRemindersData } from \"./package-checks/maintenance-reminders/final-data.ts\";\nexport type {\n MaintenanceReminderAssessment,\n MaintenanceReminderUnavailableReason,\n MaintenanceRemindersFinalData\n} from \"./package-checks/maintenance-reminders/final-data.ts\";\nexport { markdownLinkValidation } from \"./package-checks/markdown-link-validation/default-check.ts\";\nexport { parseMarkdownLinkValidationData } from \"./package-checks/markdown-link-validation/final-data.ts\";\nexport type { MarkdownLinkValidationFinalData } from \"./package-checks/markdown-link-validation/final-data.ts\";\nexport type {\n MarkdownLinkValidationOptions,\n ResolvedMarkdownLinkValidationOptions\n} from \"./package-checks/markdown-link-validation/options.ts\";\nexport type { MarkdownLinkValidationUnavailableReason } from \"./package-checks/markdown-link-validation/execution.ts\";\nexport type { MarkdownLinkValidationRecordData } from \"./package-checks/markdown-link-validation/records.ts\";\nexport type { MarkdownLinkFindingReason } from \"./package-checks/markdown-link-validation/local-resolver.ts\";\nexport type { FindingPolicy } from \"./package-checks/code-quality-findings/policy.ts\";\nexport { reconcileFindingWaivers } from \"./finding-waivers/reconciliation.ts\";\nexport { presentCheckFindings } from \"./check/finding-presentation.ts\";\nexport type {\n FindingWaiver,\n FindingWaiverAudit,\n FindingWaiverReconciliation,\n MaterializedFindingWaiver,\n ReconciledFinding,\n ReconcileFindingWaiversOptions\n} from \"./finding-waivers/reconciliation.ts\";\nexport { defaultProjectFileSelection } from \"./package-checks/project-files/configuration.ts\";\nexport { collectProjectFiles } from \"./package-checks/project-files/public-collection.ts\";\nexport type { CollectProjectFilesOptions } from \"./package-checks/project-files/public-collection.ts\";\nexport type {\n ProjectFileSelection,\n ProjectFileSelectionOptions,\n ProjectFileSource\n} from \"./package-checks/project-files/configuration.ts\";\nexport { defineCheck, inherit } from \"./check/check.ts\";\nexport type {\n Check,\n CheckDependencies,\n CheckExecution,\n CheckExecutionContext,\n CheckPreflight,\n CheckPreflightResult,\n CheckResourceClaims,\n CheckOutcome,\n CheckResult,\n CheckUnavailableReason,\n InheritableCheckCollection\n} from \"./check/check.ts\";\nexport { defineAdmissionPolicy, defineConfig } from \"./project-definition/project-definition.ts\";\nexport { createLearnedCriticalPathStrategy } from \"./learned-critical-path/strategy.ts\";\nexport type {\n LearnedCriticalPathObservation,\n LearnedCriticalPathStrategyOptions\n} from \"./learned-critical-path/strategy.ts\";\nexport { createAdmissionGraph } from \"./project-run/task-scheduler/admission-core/core.ts\";\nexport type {\n AdmissionPolicy,\n AdmissionPolicyContext,\n AdmissionPolicyMeasurement,\n AdmissionProposal,\n AdmissionCatalog,\n AdmissionGraph,\n AdmissionGraphInput,\n AdmissionInspection,\n AdmissionNonSelectableTask,\n AdmissionRejectionReason,\n AdmissionScopeLifecycle,\n AdmissionSelectionRejectionReason,\n AdmissionSelectionValidation,\n AdmissionSelectionValidationRejectionReason,\n AdmissionSettlementOutcome,\n AdmissionSettledTask,\n AdmissionState,\n AdmissionTransitionResult,\n CustomAdmissionPreparationContext,\n CustomAdmissionStrategy,\n PreparedCustomAdmissionStrategy,\n ProgressPreviewFormatter,\n ProjectOutputs,\n ProjectDefinition,\n SchedulerDecisionMeasurementCumulative,\n SchedulerGraphSnapshot,\n SchedulerMeasurementContext,\n SchedulerMeasurementHook,\n SchedulerMeasurementIntervalContribution,\n SchedulerMeasurementActionObservationInterval,\n SchedulerMeasurementActionObservation,\n SchedulerMeasurementEffect,\n SchedulerRawMeasurement,\n SchedulerPolicy\n} from \"./project-definition/project-definition.ts\";\nexport type {\n CheckAggregate,\n CheckAggregation,\n RunControls\n} from \"./project-run/controls/contract.ts\";\nexport { run } from \"./project-run/run.ts\";\nexport type { RunOutputStatus, RunOutputStatuses } from \"./project-run/outputs/status.ts\";\nexport type { RunResult } from \"./project-run/result.ts\";\n"]}
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAK5E,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,mCAAmC,CAAC;AAM3C,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAClG,OAAO,EAAE,kBAAkB,EAAE,MAAM,uDAAuD,CAAC;AAE3F,OAAO,EAAE,2BAA2B,EAAE,MAAM,oDAAoD,CAAC;AAWjG,OAAO,EAAE,WAAW,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAUnF,OAAO,EAAE,eAAe,EAAE,MAAM,kDAAkD,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAW3F,OAAO,EAAE,eAAe,EAAE,MAAM,oDAAoD,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAU3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,EAAE,6BAA6B,EAAE,MAAM,uDAAuD,CAAC;AAkBtG,OAAO,EAAE,cAAc,EAAE,MAAM,mDAAmD,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,gDAAgD,CAAC;AAWzF,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAiB/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iEAAiE,CAAC;AAOvG,OAAO,EAAE,6BAA6B,EAAE,MAAM,sDAAsD,CAAC;AAMrG,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAcrF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4DAA4D,CAAC;AACpG,OAAO,EAAE,+BAA+B,EAAE,MAAM,yDAAyD,CAAC;AAU1G,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,MAAM,8DAA8D,CAAC;AASpG,OAAO,EAAE,2BAA2B,EAAE,MAAM,iDAAiD,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,qDAAqD,CAAC;AAO1F,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAkBjG,OAAO,EAAE,qBAAqB,EAAE,MAAM,6DAA6D,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,iCAAiC,EAAE,MAAM,mDAAmD,CAAC;AAKtG,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAgD3F,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["/**\n * Vibe Check 是由项目在 Node runtime 中调用的 TypeScript API,用于定义并执行项目质量 Check。\n * 所有公开能力从 package root 导入;package `README.md` 说明 consumer authoring、结果读取和分发范围。\n *\n * @packageDocumentation\n */\nexport { cacheJsonByKey } from \"./package-tools/cache/cache-json-by-key.ts\";\nexport type {\n CacheJsonByKeyOptions,\n CacheJsonByKeyResult\n} from \"./package-tools/cache/cache-json-by-key.ts\";\nexport {\n canonicalizeJsonObject,\n canonicalizeJsonValue,\n canonicalJsonBytes,\n canonicalJsonText\n} from \"./data-boundary/canonical-data.ts\";\nexport type {\n CanonicalJsonObject,\n CanonicalJsonPrimitive,\n CanonicalJsonValue\n} from \"./data-boundary/canonical-data.ts\";\nexport { snapshotClosedArray, snapshotExactClosedRecord } from \"./data-boundary/closed-values.ts\";\nexport { duplicateDetection } from \"./package-checks/duplicate-detection/default-check.ts\";\nexport type { PackageCheckAuthoringOptions } from \"./package-checks/check-authoring.ts\";\nexport { parseDuplicateDetectionData } from \"./package-checks/duplicate-detection/final-data.ts\";\nexport type { DuplicateDetectionFinalData } from \"./package-checks/duplicate-detection/final-data.ts\";\nexport type {\n DuplicateDetectionFindingIdentity,\n DuplicateDetectionFindingLocation,\n DuplicateDetectionFindingWaiver,\n DuplicateDetectionOptions,\n ResolvedDuplicateDetectionOptions\n} from \"./package-checks/duplicate-detection/options.ts\";\nexport type { DuplicateDetectionUnavailableReasonCode } from \"./package-checks/duplicate-detection/execution.ts\";\nexport type { DuplicateDetectionRecordData } from \"./package-checks/duplicate-detection/records.ts\";\nexport { fileMetrics } from \"./package-checks/file-metrics/constructor.ts\";\nexport { parseFileMetricsData } from \"./package-checks/file-metrics/final-data.ts\";\nexport type { FileMetricsFinalData } from \"./package-checks/file-metrics/final-data.ts\";\nexport type {\n FileMetricsFindingIdentity,\n FileMetricsFindingWaiver,\n FileMetricsOptions,\n ResolvedFileMetricsOptions\n} from \"./package-checks/file-metrics/options.ts\";\nexport type { FileMetricsUnavailableReasonCode } from \"./package-checks/file-metrics/execution.ts\";\nexport type { FileMetricsRecordData } from \"./package-checks/file-metrics/records.ts\";\nexport { functionMetrics } from \"./package-checks/function-metrics/constructor.ts\";\nexport { parseFunctionMetricsData } from \"./package-checks/function-metrics/final-data.ts\";\nexport type { FunctionMetricsFinalData } from \"./package-checks/function-metrics/final-data.ts\";\nexport type {\n FunctionMetricsFindingIdentity,\n FunctionMetricsFindingMetric,\n FunctionMetricsFindingWaiver,\n FunctionMetricsOptions,\n ResolvedFunctionMetricsOptions\n} from \"./package-checks/function-metrics/options.ts\";\nexport type { FunctionMetricsUnavailableReasonCode } from \"./package-checks/function-metrics/execution.ts\";\nexport type { FunctionMetricsRecordData } from \"./package-checks/function-metrics/records.ts\";\nexport { secretDetection } from \"./package-checks/secret-detection/default-check.ts\";\nexport { parseSecretDetectionData } from \"./package-checks/secret-detection/final-data.ts\";\nexport type { SecretDetectionFinalData } from \"./package-checks/secret-detection/final-data.ts\";\nexport type {\n ResolvedSecretDetectionOptions,\n SecretDetectionFindingIdentity,\n SecretDetectionFindingWaiver,\n SecretDetectionOptions\n} from \"./package-checks/secret-detection/options.ts\";\nexport type { SecretDetectionUnavailableReasonCode } from \"./package-checks/secret-detection/execution.ts\";\nexport type { SecretDetectionRecordData } from \"./package-checks/secret-detection/records.ts\";\nexport { jsonSchemaValidation } from \"./package-checks/json-schema-validation/default-check.ts\";\nexport { parseJsonSchemaValidationData } from \"./package-checks/json-schema-validation/final-data.ts\";\nexport type { JsonSchemaValidationFinalData } from \"./package-checks/json-schema-validation/final-data.ts\";\nexport type {\n JsonSchemaIdentity,\n JsonSchemaIdentityMode,\n JsonSchemaInstanceBinding,\n JsonSchemaReferenceResolution,\n JsonSchemaReferenceSource,\n JsonSchemaValidationOptions,\n RegisteredJsonSchema,\n ResolvedJsonSchemaValidationOptions\n} from \"./package-checks/json-schema-validation/options.ts\";\nexport type {\n JsonSchemaDocumentReason,\n JsonSchemaValidationRecordData,\n JsonSchemaValidationRecordReason,\n JsonSchemaValidationUnavailableCode\n} from \"./package-checks/json-schema-validation/json-schema-validation.ts\";\nexport { jsonValidation } from \"./package-checks/json-validation/default-check.ts\";\nexport { parseJsonValidationData } from \"./package-checks/json-validation/final-data.ts\";\nexport type { JsonValidationFinalData } from \"./package-checks/json-validation/final-data.ts\";\nexport type {\n JsonValidationOptions,\n ResolvedJsonValidationOptions\n} from \"./package-checks/json-validation/options.ts\";\nexport type {\n JsonValidationRecordData,\n JsonValidationRecordReason,\n JsonValidationUnavailableCode\n} from \"./package-checks/json-validation/json-validation.ts\";\nexport { commandCheck } from \"./package-checks/command-check/command-check.ts\";\nexport type {\n AfterCommand,\n AfterCommandContext,\n AfterCommandExecution,\n CommandCheck,\n CommandCheckEnvironment,\n CommandCheckWithAfterCommand,\n CommandEnvironmentContext,\n CommandEnvironmentResolver,\n CompletedCommand,\n CommandCheckFinalData,\n CommandCheckInput,\n CommandCheckOutput,\n CommandCheckUnavailableReasonCode,\n TypedCommandCheck\n} from \"./package-checks/command-check/command-check.ts\";\nexport { maintenanceReminders } from \"./package-checks/maintenance-reminders/maintenance-reminders.ts\";\nexport type {\n MaintenanceReminder,\n MaintenanceReminderOptions,\n MaintenanceRemindersInput,\n MaintenanceRemindersUnavailableCode\n} from \"./package-checks/maintenance-reminders/maintenance-reminders.ts\";\nexport { parseMaintenanceRemindersData } from \"./package-checks/maintenance-reminders/final-data.ts\";\nexport type {\n MaintenanceReminderAssessment,\n MaintenanceReminderUnavailableReason,\n MaintenanceRemindersFinalData\n} from \"./package-checks/maintenance-reminders/final-data.ts\";\nexport { markdownLint } from \"./package-checks/markdown-lint/default-check.ts\";\nexport { parseMarkdownLintData } from \"./package-checks/markdown-lint/final-data.ts\";\nexport type { MarkdownLintFinalData } from \"./package-checks/markdown-lint/final-data.ts\";\nexport type {\n MarkdownLintFindingIdentity,\n MarkdownLintFindingWaiver,\n MarkdownLintOptions,\n MarkdownLintRuleName,\n ResolvedMarkdownLintOptions\n} from \"./package-checks/markdown-lint/options.ts\";\nexport type {\n MarkdownLintFindingWaiverAuditRecordData,\n MarkdownLintRecordData\n} from \"./package-checks/markdown-lint/records.ts\";\nexport type { MarkdownLintUnavailableReason } from \"./package-checks/markdown-lint/execution.ts\";\nexport { markdownLinkValidation } from \"./package-checks/markdown-link-validation/default-check.ts\";\nexport { parseMarkdownLinkValidationData } from \"./package-checks/markdown-link-validation/final-data.ts\";\nexport type { MarkdownLinkValidationFinalData } from \"./package-checks/markdown-link-validation/final-data.ts\";\nexport type {\n MarkdownLinkValidationOptions,\n ResolvedMarkdownLinkValidationOptions\n} from \"./package-checks/markdown-link-validation/options.ts\";\nexport type { MarkdownLinkValidationUnavailableReason } from \"./package-checks/markdown-link-validation/execution.ts\";\nexport type { MarkdownLinkValidationRecordData } from \"./package-checks/markdown-link-validation/records.ts\";\nexport type { MarkdownLinkFindingReason } from \"./package-checks/markdown-link-validation/local-resolver.ts\";\nexport type { FindingPolicy } from \"./package-checks/code-quality-findings/policy.ts\";\nexport { reconcileFindingWaivers } from \"./package-tools/finding-waivers/reconciliation.ts\";\nexport { presentCheckFindings } from \"./package-tools/finding-presentation/finding-presentation.ts\";\nexport type {\n FindingWaiver,\n FindingWaiverAudit,\n FindingWaiverReconciliation,\n MaterializedFindingWaiver,\n ReconciledFinding,\n ReconcileFindingWaiversOptions\n} from \"./package-tools/finding-waivers/reconciliation.ts\";\nexport { defaultProjectFileSelection } from \"./package-checks/project-files/configuration.ts\";\nexport { collectProjectFiles } from \"./package-checks/project-files/public-collection.ts\";\nexport type { CollectProjectFilesOptions } from \"./package-checks/project-files/public-collection.ts\";\nexport type {\n ProjectFileSelection,\n ProjectFileSelectionOptions,\n ProjectFileSource\n} from \"./package-checks/project-files/configuration.ts\";\nexport { defineCheck, inherit } from \"./check/check.ts\";\nexport { all, any, changeFlag, exactlyOne, none, not, notAll } from \"./check/flag-enablement.ts\";\nexport type {\n Check,\n CheckDependencies,\n CheckExecution,\n CheckExecutionContext,\n CheckFlagCondition,\n CheckFlagEnablement,\n CheckPreparation,\n CheckPreparationResult,\n CheckProjectContext,\n CheckResourceClaims,\n CheckOutcome,\n ProjectChanges,\n CheckResult,\n CheckUnavailableReason,\n InheritableCheckCollection\n} from \"./check/check.ts\";\nexport { defineAdmissionPolicy } from \"./package-tools/admission-policy/define-admission-policy.ts\";\nexport { defineConfig } from \"./project-definition/project-definition.ts\";\nexport { createLearnedCriticalPathStrategy } from \"./package-tools/learned-critical-path/strategy.ts\";\nexport type {\n LearnedCriticalPathObservation,\n LearnedCriticalPathStrategyOptions\n} from \"./package-tools/learned-critical-path/strategy.ts\";\nexport { createAdmissionGraph } from \"./project-run/task-scheduler/admission-core/core.ts\";\nexport type {\n AdmissionPolicy,\n AdmissionPolicyContext,\n AdmissionPolicyMeasurement,\n AdmissionProposal,\n AdmissionCatalog,\n AdmissionGraph,\n AdmissionGraphInput,\n AdmissionInspection,\n AdmissionNonSelectableTask,\n AdmissionRejectionReason,\n AdmissionScopeLifecycle,\n AdmissionSelectionRejectionReason,\n AdmissionSelectionValidation,\n AdmissionSelectionValidationRejectionReason,\n AdmissionSettlementOutcome,\n AdmissionSettledTask,\n AdmissionState,\n AdmissionTransitionResult,\n CustomAdmissionPreparationContext,\n CustomAdmissionStrategy,\n PreparedCustomAdmissionStrategy,\n ProgressPreviewFormatter,\n ProjectOutputs,\n ProjectDefinition,\n SchedulerDecisionMeasurementCumulative,\n SchedulerGraphSnapshot,\n SchedulerMeasurementContext,\n SchedulerTerminalEffect,\n SchedulerMeasurementIntervalContribution,\n SchedulerMeasurementActionObservationInterval,\n SchedulerMeasurementActionObservation,\n SchedulerMeasurementEffect,\n SchedulerRawMeasurement,\n SchedulerPolicy\n} from \"./project-definition/project-definition.ts\";\nexport type {\n ProjectChangeFlagRegion,\n ProjectChangeSource,\n ProjectChangesConfiguration\n} from \"./project-definition/project-changes.ts\";\nexport type { CoreCheck } from \"./check-settlement/facts.ts\";\nexport type {\n CheckAggregate,\n CheckAggregation,\n RunControls\n} from \"./project-run/controls/contract.ts\";\nexport { run } from \"./project-run/run.ts\";\nexport type { RunOutputStatus, RunOutputStatuses } from \"./project-run/outputs/status.ts\";\nexport type { RunResult } from \"./project-run/result.ts\";\n"]}
|
|
@@ -82,7 +82,10 @@ function removePaths(paths) {
|
|
|
82
82
|
firstFailure ??= error;
|
|
83
83
|
}
|
|
84
84
|
}
|
|
85
|
-
if (firstFailure
|
|
85
|
+
if (firstFailure === undefined)
|
|
86
|
+
return;
|
|
87
|
+
if (firstFailure instanceof Error)
|
|
86
88
|
throw firstFailure;
|
|
89
|
+
throw new Error("publication cleanup failed", { cause: firstFailure });
|
|
87
90
|
}
|
|
88
91
|
//# sourceMappingURL=atomic-publication.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atomic-publication.mjs","sourceRoot":"","sources":["../../../../src/machine-output/v4/atomic-publication.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"atomic-publication.mjs","sourceRoot":"","sources":["../../../../src/machine-output/v4/atomic-publication.ts"],"names":[],"mappings":"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","sourcesContent":["import { randomUUID } from \"node:crypto\";\nimport fs from \"node:fs\";\nimport { join } from \"node:path\";\n\nconst CANONICAL_NAMES = [\"records.ndjson\", \"run.json\"] as const;\nconst OWNED_TEMP_PREFIX = \".vibe-check-publication-\";\n\ninterface PublicationCandidatePath {\n readonly canonical: string;\n readonly contents: string;\n readonly temp: string;\n}\n\ninterface PublicationCandidates {\n readonly recordsNdjson: string;\n readonly runJson: string;\n}\n\n/** Writes an already validated two-file candidate set through owned temporary paths. */\nexport function publishPublicationCandidatesV4(\n artifactDir: string,\n candidates: PublicationCandidates\n): void {\n fs.mkdirSync(artifactDir, { recursive: true });\n const files = publicationCandidatePaths(artifactDir, randomUUID(), candidates);\n let hasReplacedCanonicalPath = false;\n try {\n cleanupOwnedTemps(artifactDir);\n for (const file of files) {\n fs.writeFileSync(file.temp, file.contents, { encoding: \"utf8\", flag: \"wx\" });\n }\n for (const file of files) {\n fs.renameSync(file.temp, file.canonical);\n hasReplacedCanonicalPath = true;\n }\n } catch (error: unknown) {\n if (hasReplacedCanonicalPath) cleanupPublicationV4BestEffort(artifactDir);\n else cleanupOwnedTempsBestEffort(artifactDir);\n throw error;\n }\n}\n\nexport function cleanupPublicationV4(artifactDir: string): void {\n removePaths([...artifactPaths(artifactDir, CANONICAL_NAMES), ...ownedTempPaths(artifactDir)]);\n}\n\nexport function cleanupPublicationV4BestEffort(artifactDir: string): void {\n try {\n cleanupPublicationV4(artifactDir);\n } catch {\n // Failure cleanup cannot conceal the original publication failure.\n }\n}\n\nfunction publicationCandidatePaths(\n artifactDir: string,\n token: string,\n candidates: PublicationCandidates\n): readonly PublicationCandidatePath[] {\n return [\n {\n canonical: join(artifactDir, \"run.json\"),\n contents: candidates.runJson,\n temp: join(artifactDir, `.vibe-check-publication-${token}-run.json.tmp`)\n },\n {\n canonical: join(artifactDir, \"records.ndjson\"),\n contents: candidates.recordsNdjson,\n temp: join(artifactDir, `.vibe-check-publication-${token}-records.ndjson.tmp`)\n }\n ];\n}\n\nfunction cleanupOwnedTemps(artifactDir: string): void {\n removePaths(ownedTempPaths(artifactDir));\n}\n\nfunction cleanupOwnedTempsBestEffort(artifactDir: string): void {\n try {\n cleanupOwnedTemps(artifactDir);\n } catch {\n // Failure cleanup cannot conceal the original publication failure.\n }\n}\n\nfunction artifactPaths(artifactDir: string, names: readonly string[]): readonly string[] {\n return names.map((name) => join(artifactDir, name));\n}\n\nfunction ownedTempPaths(artifactDir: string): readonly string[] {\n return fs\n .readdirSync(artifactDir, { withFileTypes: true })\n .filter((entry) => entry.name.startsWith(OWNED_TEMP_PREFIX))\n .map((entry) => join(artifactDir, entry.name))\n .sort();\n}\n\nfunction removePaths(paths: readonly string[]): void {\n let firstFailure: unknown;\n for (const path of paths) {\n try {\n fs.rmSync(path, { force: true, recursive: true });\n } catch (error: unknown) {\n firstFailure ??= error;\n }\n }\n if (firstFailure === undefined) return;\n if (firstFailure instanceof Error) throw firstFailure;\n throw new Error(\"publication cleanup failed\", { cause: firstFailure });\n}\n"]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { snapshotClosedArray, snapshotClosedPolicyRecord } from "../data-boundary/closed-values.mjs";
|
|
2
|
+
import { parseFlagEnablementControl } from "../project-definition/check-tree/check-fields-authoring.mjs";
|
|
3
|
+
import { parseCheckScheduling } from "../project-definition/check-tree/scheduling-authoring.mjs";
|
|
4
|
+
const PACKAGE_CHECK_AUTHORING_KEYS = [
|
|
5
|
+
"admissionPriority",
|
|
6
|
+
"checkId",
|
|
7
|
+
"checks",
|
|
8
|
+
"dependsOn",
|
|
9
|
+
"displayName",
|
|
10
|
+
"enabledByFlags",
|
|
11
|
+
"maxParallel",
|
|
12
|
+
"mutex",
|
|
13
|
+
"observes",
|
|
14
|
+
"omitQuietPassedRow",
|
|
15
|
+
"resourceClaims"
|
|
16
|
+
];
|
|
17
|
+
/** 对一个 closed 构造输入执行安全 shape 校验,并分流领域 policy 与普通 Check 声明字段。 */
|
|
18
|
+
export function resolvePackageCheckAuthoringInput(input, domainKeys, defaults) {
|
|
19
|
+
const snapshot = snapshotClosedPolicyRecord(input, {
|
|
20
|
+
optional: [...domainKeys, ...PACKAGE_CHECK_AUTHORING_KEYS]
|
|
21
|
+
});
|
|
22
|
+
if (snapshot === undefined)
|
|
23
|
+
return undefined;
|
|
24
|
+
const checkId = snapshot.checkId ?? defaults.checkId;
|
|
25
|
+
const displayName = snapshot.displayName ?? defaults.displayName;
|
|
26
|
+
if (!isNonEmptyString(checkId) || !isNonEmptyString(displayName))
|
|
27
|
+
return undefined;
|
|
28
|
+
if ((snapshot.omitQuietPassedRow !== undefined &&
|
|
29
|
+
typeof snapshot.omitQuietPassedRow !== "boolean") ||
|
|
30
|
+
!hasSafeProjectFieldShapes(snapshot)) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
const omitQuietPassedRow = snapshot.omitQuietPassedRow === undefined
|
|
34
|
+
? defaults.omitQuietPassedRow === true
|
|
35
|
+
: snapshot.omitQuietPassedRow === true;
|
|
36
|
+
const domainOptions = Object.freeze(Object.fromEntries(domainKeys.flatMap((key) => (Object.hasOwn(snapshot, key) ? [[key, snapshot[key]]] : []))));
|
|
37
|
+
const definition = Object.freeze({
|
|
38
|
+
...(snapshot.admissionPriority === undefined
|
|
39
|
+
? {}
|
|
40
|
+
: { admissionPriority: snapshot.admissionPriority }),
|
|
41
|
+
...(snapshot.checks === undefined ? {} : { checks: snapshot.checks }),
|
|
42
|
+
...(snapshot.dependsOn === undefined ? {} : { dependsOn: snapshot.dependsOn }),
|
|
43
|
+
...(snapshot.enabledByFlags === undefined ? {} : { enabledByFlags: snapshot.enabledByFlags }),
|
|
44
|
+
...(snapshot.maxParallel === undefined ? {} : { maxParallel: snapshot.maxParallel }),
|
|
45
|
+
...(snapshot.mutex === undefined ? {} : { mutex: snapshot.mutex }),
|
|
46
|
+
...(snapshot.observes === undefined ? {} : { observes: snapshot.observes }),
|
|
47
|
+
...(omitQuietPassedRow ? { omitQuietPassedRow: true } : {}),
|
|
48
|
+
...(snapshot.resourceClaims === undefined ? {} : { resourceClaims: snapshot.resourceClaims }),
|
|
49
|
+
// Runtime defaults are strings; constructor signatures bind this field to the input literal type.
|
|
50
|
+
// oxlint-disable-next-line typescript/no-unsafe-type-assertion -- The runtime default is fixed by the constructor, while the public signature retains an input literal ID.
|
|
51
|
+
checkId: checkId,
|
|
52
|
+
displayName
|
|
53
|
+
});
|
|
54
|
+
return Object.freeze({ definition, domainOptions });
|
|
55
|
+
}
|
|
56
|
+
function hasSafeProjectFieldShapes(input) {
|
|
57
|
+
const scheduling = parseCheckScheduling(input);
|
|
58
|
+
if (scheduling === undefined)
|
|
59
|
+
return false;
|
|
60
|
+
if (input.enabledByFlags !== undefined &&
|
|
61
|
+
parseFlagEnablementControl(input.enabledByFlags) === undefined) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
return input.checks === undefined || snapshotClosedArray(input.checks) !== undefined;
|
|
65
|
+
}
|
|
66
|
+
function isNonEmptyString(value) {
|
|
67
|
+
return typeof value === "string" && value.length > 0;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=check-authoring.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-authoring.mjs","sourceRoot":"","sources":["../../../src/package-checks/check-authoring.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n Check,\n CheckFlagEnablement,\n CheckResourceClaims,\n InheritableCheckCollection\n} from \"../check/check.ts\";\nimport { snapshotClosedArray, snapshotClosedPolicyRecord } from \"../data-boundary/closed-values.ts\";\nimport { parseFlagEnablementControl } from \"../project-definition/check-tree/check-fields-authoring.ts\";\nimport { parseCheckScheduling } from \"../project-definition/check-tree/scheduling-authoring.ts\";\n\n/** 固定身份随包 Check 构造器与领域 policy 并列接收的项目声明字段;Project Definition 保留语义校验所有权。 */\nexport interface PackageCheckAuthoringOptions<Id extends string = string> {\n /** Overrides the constructor's package default identity. */\n readonly checkId?: Id;\n /** Overrides the constructor's package default presentation name. */\n readonly displayName?: string;\n readonly enabledByFlags?: CheckFlagEnablement;\n readonly checks?: readonly Check[];\n readonly dependsOn?: InheritableCheckCollection<string>;\n readonly observes?: InheritableCheckCollection<string>;\n readonly maxParallel?: number;\n readonly admissionPriority?: number;\n readonly mutex?: InheritableCheckCollection<string>;\n readonly resourceClaims?: CheckResourceClaims;\n /** `false` explicitly restores the package default of rendering quiet passed rows. */\n readonly omitQuietPassedRow?: boolean;\n}\n\n/** 自定义随包 Check identity 时必须声明与返回类型一致的 runtime `checkId`。 */\nexport type PackageCheckIdentityInput<Id extends string> = Readonly<{ readonly checkId: Id }>;\n\nconst PACKAGE_CHECK_AUTHORING_KEYS = [\n \"admissionPriority\",\n \"checkId\",\n \"checks\",\n \"dependsOn\",\n \"displayName\",\n \"enabledByFlags\",\n \"maxParallel\",\n \"mutex\",\n \"observes\",\n \"omitQuietPassedRow\",\n \"resourceClaims\"\n] as const;\n\ntype PackageCheckDefinition<Id extends string> = Readonly<{\n readonly checkId: Id;\n readonly displayName: string;\n readonly enabledByFlags?: CheckFlagEnablement;\n readonly checks?: readonly Check[];\n readonly dependsOn?: InheritableCheckCollection<string>;\n readonly observes?: InheritableCheckCollection<string>;\n readonly maxParallel?: number;\n readonly admissionPriority?: number;\n readonly mutex?: InheritableCheckCollection<string>;\n readonly resourceClaims?: CheckResourceClaims;\n readonly omitQuietPassedRow?: true;\n}>;\n\n/** 对一个 closed 构造输入执行安全 shape 校验,并分流领域 policy 与普通 Check 声明字段。 */\nexport function resolvePackageCheckAuthoringInput<const Id extends string>(\n input: PackageCheckAuthoringOptions<Id> & object,\n domainKeys: readonly string[],\n defaults: Readonly<{\n readonly checkId: string;\n readonly displayName: string;\n readonly omitQuietPassedRow?: true;\n }>\n):\n | Readonly<{\n readonly definition: PackageCheckDefinition<Id>;\n readonly domainOptions: Readonly<Record<string, unknown>>;\n }>\n | undefined {\n const snapshot = snapshotClosedPolicyRecord(input, {\n optional: [...domainKeys, ...PACKAGE_CHECK_AUTHORING_KEYS]\n });\n if (snapshot === undefined) return undefined;\n\n const checkId = snapshot.checkId ?? defaults.checkId;\n const displayName = snapshot.displayName ?? defaults.displayName;\n if (!isNonEmptyString(checkId) || !isNonEmptyString(displayName)) return undefined;\n if (\n (snapshot.omitQuietPassedRow !== undefined &&\n typeof snapshot.omitQuietPassedRow !== \"boolean\") ||\n !hasSafeProjectFieldShapes(snapshot)\n ) {\n return undefined;\n }\n const omitQuietPassedRow =\n snapshot.omitQuietPassedRow === undefined\n ? defaults.omitQuietPassedRow === true\n : snapshot.omitQuietPassedRow === true;\n\n const domainOptions = Object.freeze(\n Object.fromEntries(\n domainKeys.flatMap((key) => (Object.hasOwn(snapshot, key) ? [[key, snapshot[key]]] : []))\n )\n );\n const definition = Object.freeze({\n ...(snapshot.admissionPriority === undefined\n ? {}\n : { admissionPriority: snapshot.admissionPriority }),\n ...(snapshot.checks === undefined ? {} : { checks: snapshot.checks }),\n ...(snapshot.dependsOn === undefined ? {} : { dependsOn: snapshot.dependsOn }),\n ...(snapshot.enabledByFlags === undefined ? {} : { enabledByFlags: snapshot.enabledByFlags }),\n ...(snapshot.maxParallel === undefined ? {} : { maxParallel: snapshot.maxParallel }),\n ...(snapshot.mutex === undefined ? {} : { mutex: snapshot.mutex }),\n ...(snapshot.observes === undefined ? {} : { observes: snapshot.observes }),\n ...(omitQuietPassedRow ? { omitQuietPassedRow: true as const } : {}),\n ...(snapshot.resourceClaims === undefined ? {} : { resourceClaims: snapshot.resourceClaims }),\n // Runtime defaults are strings; constructor signatures bind this field to the input literal type.\n // oxlint-disable-next-line typescript/no-unsafe-type-assertion -- The runtime default is fixed by the constructor, while the public signature retains an input literal ID.\n checkId: checkId as Id,\n displayName\n }) satisfies PackageCheckDefinition<Id>;\n return Object.freeze({ definition, domainOptions });\n}\n\nfunction hasSafeProjectFieldShapes(\n input: Readonly<Record<string, unknown>>\n): input is Readonly<Record<string, unknown>> & PackageCheckAuthoringOptions {\n const scheduling = parseCheckScheduling(input);\n if (scheduling === undefined) return false;\n if (\n input.enabledByFlags !== undefined &&\n parseFlagEnablementControl(input.enabledByFlags) === undefined\n ) {\n return false;\n }\n return input.checks === undefined || snapshotClosedArray(input.checks) !== undefined;\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === \"string\" && value.length > 0;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finding-waiver-authoring.mjs","sourceRoot":"","sources":["../../../../src/package-checks/code-quality-findings/finding-waiver-authoring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAGvE;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC3C,KAAc,EACd,eAAyD;IAEzD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE/C,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,0BAA0B,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7F,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,SAAS,CAAC;QACnF,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC7C,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC;YACH,WAAW,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,OAAO,SAAS,CAAC;QACtD,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,2BAA2B,CACzC,KAAc,EACd,eAAyD;IAEzD,OAAO,KAAK,KAAK,SAAS,IAAI,6BAA6B,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,SAAS,CAAC;AACpG,CAAC","sourcesContent":["import { canonicalJsonText } from \"../../data-boundary/canonical-data.ts\";\nimport {\n snapshotClosedArray,\n snapshotClosedPolicyRecord\n} from \"../../data-boundary/closed-values.ts\";\nimport { isNonEmptyString } from \"../../data-boundary/value-shapes.ts\";\nimport type { FindingWaiver } from \"../../finding-waivers/reconciliation.ts\";\n\n/**\n * Snapshots the shared closed waiver envelope while leaving identity grammar to the producing Check.\n */\nexport function resolveFindingWaiverAuthoring<Identity>(\n value: unknown,\n resolveIdentity: (value: unknown) => Identity | undefined\n): readonly FindingWaiver<Identity>[] | undefined {\n if (value === undefined) return Object.freeze([]);\n const candidates = snapshotClosedArray(value);\n if (candidates === undefined) return undefined;\n\n const waivers: FindingWaiver<Identity>[] = [];\n const seenIdentities = new Set<string>();\n for (const candidate of candidates) {\n const authored = snapshotClosedPolicyRecord(candidate, { required: [\"identity\", \"reason\"] });\n if (authored === undefined || !isNonEmptyString(authored.reason)) return undefined;\n const identity = resolveIdentity(authored.identity);\n if (identity === undefined) return undefined;\n let identityKey: string;\n try {\n identityKey = canonicalJsonText(identity);\n } catch {\n return undefined;\n }\n if (seenIdentities.has(identityKey)) return undefined;\n seenIdentities.add(identityKey);\n waivers.push(Object.freeze({ identity, reason: authored.reason }));\n }\n return Object.freeze(waivers);\n}\n\n/** Validates the complete resolved waiver list through the same authoring boundary. */\nexport function validResolvedFindingWaivers<Identity>(\n value: unknown,\n resolveIdentity: (value: unknown) => Identity | undefined\n): value is readonly FindingWaiver<Identity>[] {\n return value !== undefined && resolveFindingWaiverAuthoring(value, resolveIdentity) !== undefined;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"finding-waiver-authoring.mjs","sourceRoot":"","sources":["../../../../src/package-checks/code-quality-findings/finding-waiver-authoring.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC3B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAGvE;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAC3C,KAAc,EACd,eAAyD;IAEzD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE/C,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,0BAA0B,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7F,IAAI,QAAQ,KAAK,SAAS,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,SAAS,CAAC;QACnF,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACpD,IAAI,QAAQ,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC7C,IAAI,WAAmB,CAAC;QACxB,IAAI,CAAC;YACH,WAAW,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,OAAO,SAAS,CAAC;QACtD,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,2BAA2B,CACzC,KAAc,EACd,eAAyD;IAEzD,OAAO,KAAK,KAAK,SAAS,IAAI,6BAA6B,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,SAAS,CAAC;AACpG,CAAC","sourcesContent":["import { canonicalJsonText } from \"../../data-boundary/canonical-data.ts\";\nimport {\n snapshotClosedArray,\n snapshotClosedPolicyRecord\n} from \"../../data-boundary/closed-values.ts\";\nimport { isNonEmptyString } from \"../../data-boundary/value-shapes.ts\";\nimport type { FindingWaiver } from \"../../package-tools/finding-waivers/reconciliation.ts\";\n\n/**\n * Snapshots the shared closed waiver envelope while leaving identity grammar to the producing Check.\n */\nexport function resolveFindingWaiverAuthoring<Identity>(\n value: unknown,\n resolveIdentity: (value: unknown) => Identity | undefined\n): readonly FindingWaiver<Identity>[] | undefined {\n if (value === undefined) return Object.freeze([]);\n const candidates = snapshotClosedArray(value);\n if (candidates === undefined) return undefined;\n\n const waivers: FindingWaiver<Identity>[] = [];\n const seenIdentities = new Set<string>();\n for (const candidate of candidates) {\n const authored = snapshotClosedPolicyRecord(candidate, { required: [\"identity\", \"reason\"] });\n if (authored === undefined || !isNonEmptyString(authored.reason)) return undefined;\n const identity = resolveIdentity(authored.identity);\n if (identity === undefined) return undefined;\n let identityKey: string;\n try {\n identityKey = canonicalJsonText(identity);\n } catch {\n return undefined;\n }\n if (seenIdentities.has(identityKey)) return undefined;\n seenIdentities.add(identityKey);\n waivers.push(Object.freeze({ identity, reason: authored.reason }));\n }\n return Object.freeze(waivers);\n}\n\n/** Validates the complete resolved waiver list through the same authoring boundary. */\nexport function validResolvedFindingWaivers<Identity>(\n value: unknown,\n resolveIdentity: (value: unknown) => Identity | undefined\n): value is readonly FindingWaiver<Identity>[] {\n return value !== undefined && resolveFindingWaiverAuthoring(value, resolveIdentity) !== undefined;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finding-waiver-evidence.mjs","sourceRoot":"","sources":["../../../../src/package-checks/code-quality-findings/finding-waiver-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAa3E,MAAM,qCAAqC,GAAG,wBAAwB,CAAC;AAgBvE,mFAAmF;AACnF,MAAM,UAAU,iCAAiC,CAC/C,QAAkB,EAClB,KAA+B;IAE/B,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ;QACR,IAAI,EAAE,sBAAsB;QAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;QAC3B,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC,CAAC;AACL,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,mCAAmC,CACjD,QAAkB,EAClB,KAA+B;IAE/B,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,iCAAiC,CAAC,QAAQ,EAAE,KAAK,CAAC;QACxD,EAAE,EAAE,GAAG,qCAAqC,UAAU,MAAM,EAAE;KAC/D,CAAC,CAAC;AACL,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,yCAAyC,CAEvD,OAA6B,EAAE,cAAoD;IACnF,KAAK,MAAM,OAAO,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,GACR,OAAO,CAAC,WAAW,KAAK,QAAQ;YAC9B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACZ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI;gBACvB,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;aACzD,CAAC;YACJ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,yBAAyB,CACvC,OAA6B,EAC7B,cAAoD,EACpD,WAEgE;IAEhE,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;QAChD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAAE,SAAS;QACzC,MAAM,MAAM,GAAG,WAAW,CACxB,MAAM,CAAC,MAAM,CAAC;YACZ,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CACH,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;AACH,CAAC","sourcesContent":["import { createHash } from \"node:crypto\";\n\nimport type { CheckExecutionContext } from \"../../check/check.ts\";\nimport { canonicalJsonBytes } from \"../../data-boundary/canonical-data.ts\";\nimport type {\n FindingWaiverAudit,\n FindingWaiverReconciliation\n} from \"../../finding-waivers/reconciliation.ts\";\n\ninterface CodeQualityFindingCandidate {\n readonly data: Readonly<{ readonly blocking: boolean }>;\n readonly id: string;\n}\n\ntype FindingRecordContext = Pick<CheckExecutionContext<object>, \"records\">;\n\nconst FINDING_WAIVER_AUDIT_RECORD_ID_PREFIX = \"/finding-waiver-audit/\";\n\nexport type FindingWaiverRecordAudit = Readonly<\n Omit<FindingWaiverAudit, \"status\"> & {\n readonly status: \"overmatched\" | \"unused\";\n }\n>;\n\nexport type FindingWaiverAuditRecordData<Identity> = Readonly<{\n readonly identity: Identity;\n readonly kind: \"finding-waiver-audit\";\n readonly matchCount: number;\n readonly reason: string;\n readonly status: \"overmatched\" | \"unused\";\n}>;\n\n/** Builds the common immutable data shared by Check-owned waiver audit Records. */\nexport function buildFindingWaiverAuditRecordData<Identity>(\n identity: Identity,\n audit: FindingWaiverRecordAudit\n): FindingWaiverAuditRecordData<Identity> {\n return Object.freeze({\n identity,\n kind: \"finding-waiver-audit\",\n matchCount: audit.matchCount,\n reason: audit.waiver.reason,\n status: audit.status\n });\n}\n\n/** Builds the shared hash-addressed audit Record used by structured identities. */\nexport function buildHashedFindingWaiverAuditRecord<Identity>(\n identity: Identity,\n audit: FindingWaiverRecordAudit\n): Readonly<{ readonly data: FindingWaiverAuditRecordData<Identity>; readonly id: string }> {\n const digest = createHash(\"sha256\").update(canonicalJsonBytes(identity)).digest(\"hex\");\n return Object.freeze({\n data: buildFindingWaiverAuditRecordData(identity, audit),\n id: `${FINDING_WAIVER_AUDIT_RECORD_ID_PREFIX}sha256:${digest}`\n });\n}\n\n/** Publishes every reconciled metric Finding while preserving applied waiver evidence. */\nexport function reportReconciledCodeQualityFindingRecords<\n Finding extends CodeQualityFindingCandidate\n>(context: FindingRecordContext, reconciliation: FindingWaiverReconciliation<Finding>): void {\n for (const finding of reconciliation.findings) {\n const data =\n finding.disposition === \"waived\"\n ? Object.freeze({\n ...finding.finding.data,\n blocking: false,\n waiver: Object.freeze({ reason: finding.waiver.reason })\n })\n : finding.finding.data;\n context.records.report({ id: finding.finding.id }, data);\n }\n}\n\n/** Publishes only unused/overmatched audit rows built by the identity-owning Check. */\nexport function reportFindingWaiverAudits<Finding, AuditData extends object>(\n context: FindingRecordContext,\n reconciliation: FindingWaiverReconciliation<Finding>,\n buildRecord: (\n audit: FindingWaiverRecordAudit\n ) => Readonly<{ readonly data: AuditData; readonly id: string }>\n): void {\n for (const audit of reconciliation.waiverAudits) {\n if (audit.status === \"applied\") continue;\n const record = buildRecord(\n Object.freeze({\n matchCount: audit.matchCount,\n status: audit.status,\n waiver: audit.waiver\n })\n );\n context.records.report({ id: record.id }, record.data);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"finding-waiver-evidence.mjs","sourceRoot":"","sources":["../../../../src/package-checks/code-quality-findings/finding-waiver-evidence.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAa3E,MAAM,qCAAqC,GAAG,wBAAwB,CAAC;AAgBvE,mFAAmF;AACnF,MAAM,UAAU,iCAAiC,CAC/C,QAAkB,EAClB,KAA+B;IAE/B,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ;QACR,IAAI,EAAE,sBAAsB;QAC5B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;QAC3B,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC,CAAC;AACL,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,mCAAmC,CACjD,QAAkB,EAClB,KAA+B;IAE/B,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,IAAI,EAAE,iCAAiC,CAAC,QAAQ,EAAE,KAAK,CAAC;QACxD,EAAE,EAAE,GAAG,qCAAqC,UAAU,MAAM,EAAE;KAC/D,CAAC,CAAC;AACL,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,yCAAyC,CAEvD,OAA6B,EAAE,cAAoD;IACnF,KAAK,MAAM,OAAO,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,GACR,OAAO,CAAC,WAAW,KAAK,QAAQ;YAC9B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACZ,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI;gBACvB,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;aACzD,CAAC;YACJ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3B,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,yBAAyB,CACvC,OAA6B,EAC7B,cAAoD,EACpD,WAEgE;IAEhE,KAAK,MAAM,KAAK,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;QAChD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;YAAE,SAAS;QACzC,MAAM,MAAM,GAAG,WAAW,CACxB,MAAM,CAAC,MAAM,CAAC;YACZ,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CACH,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;AACH,CAAC","sourcesContent":["import { createHash } from \"node:crypto\";\n\nimport type { CheckExecutionContext } from \"../../check/check.ts\";\nimport { canonicalJsonBytes } from \"../../data-boundary/canonical-data.ts\";\nimport type {\n FindingWaiverAudit,\n FindingWaiverReconciliation\n} from \"../../package-tools/finding-waivers/reconciliation.ts\";\n\ninterface CodeQualityFindingCandidate {\n readonly data: Readonly<{ readonly blocking: boolean }>;\n readonly id: string;\n}\n\ntype FindingRecordContext = Pick<CheckExecutionContext<object>, \"records\">;\n\nconst FINDING_WAIVER_AUDIT_RECORD_ID_PREFIX = \"/finding-waiver-audit/\";\n\nexport type FindingWaiverRecordAudit = Readonly<\n Omit<FindingWaiverAudit, \"status\"> & {\n readonly status: \"overmatched\" | \"unused\";\n }\n>;\n\nexport type FindingWaiverAuditRecordData<Identity> = Readonly<{\n readonly identity: Identity;\n readonly kind: \"finding-waiver-audit\";\n readonly matchCount: number;\n readonly reason: string;\n readonly status: \"overmatched\" | \"unused\";\n}>;\n\n/** Builds the common immutable data shared by Check-owned waiver audit Records. */\nexport function buildFindingWaiverAuditRecordData<Identity>(\n identity: Identity,\n audit: FindingWaiverRecordAudit\n): FindingWaiverAuditRecordData<Identity> {\n return Object.freeze({\n identity,\n kind: \"finding-waiver-audit\",\n matchCount: audit.matchCount,\n reason: audit.waiver.reason,\n status: audit.status\n });\n}\n\n/** Builds the shared hash-addressed audit Record used by structured identities. */\nexport function buildHashedFindingWaiverAuditRecord<Identity>(\n identity: Identity,\n audit: FindingWaiverRecordAudit\n): Readonly<{ readonly data: FindingWaiverAuditRecordData<Identity>; readonly id: string }> {\n const digest = createHash(\"sha256\").update(canonicalJsonBytes(identity)).digest(\"hex\");\n return Object.freeze({\n data: buildFindingWaiverAuditRecordData(identity, audit),\n id: `${FINDING_WAIVER_AUDIT_RECORD_ID_PREFIX}sha256:${digest}`\n });\n}\n\n/** Publishes every reconciled metric Finding while preserving applied waiver evidence. */\nexport function reportReconciledCodeQualityFindingRecords<\n Finding extends CodeQualityFindingCandidate\n>(context: FindingRecordContext, reconciliation: FindingWaiverReconciliation<Finding>): void {\n for (const finding of reconciliation.findings) {\n const data =\n finding.disposition === \"waived\"\n ? Object.freeze({\n ...finding.finding.data,\n blocking: false,\n waiver: Object.freeze({ reason: finding.waiver.reason })\n })\n : finding.finding.data;\n context.records.report({ id: finding.finding.id }, data);\n }\n}\n\n/** Publishes only unused/overmatched audit rows built by the identity-owning Check. */\nexport function reportFindingWaiverAudits<Finding, AuditData extends object>(\n context: FindingRecordContext,\n reconciliation: FindingWaiverReconciliation<Finding>,\n buildRecord: (\n audit: FindingWaiverRecordAudit\n ) => Readonly<{ readonly data: AuditData; readonly id: string }>\n): void {\n for (const audit of reconciliation.waiverAudits) {\n if (audit.status === \"applied\") continue;\n const record = buildRecord(\n Object.freeze({\n matchCount: audit.matchCount,\n status: audit.status,\n waiver: audit.waiver\n })\n );\n context.records.report({ id: record.id }, record.data);\n }\n}\n"]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { executeCommandCheck } from "./execution.mjs";
|
|
2
|
+
import { resolveCommandCheckInput } from "./options.mjs";
|
|
3
|
+
export function commandCheck(input) {
|
|
4
|
+
const commandInput = input;
|
|
5
|
+
const resolved = resolveCommandCheckInput(input);
|
|
6
|
+
if (resolved === undefined) {
|
|
7
|
+
throw new TypeError("commandCheck input must match the documented closed command and ordinary Check authoring policy");
|
|
8
|
+
}
|
|
9
|
+
return {
|
|
10
|
+
...(commandInput.admissionPriority === undefined
|
|
11
|
+
? {}
|
|
12
|
+
: { admissionPriority: commandInput.admissionPriority }),
|
|
13
|
+
...(commandInput.checks === undefined ? {} : { checks: commandInput.checks }),
|
|
14
|
+
...(commandInput.dependsOn === undefined ? {} : { dependsOn: commandInput.dependsOn }),
|
|
15
|
+
...(commandInput.enabledByFlags === undefined
|
|
16
|
+
? {}
|
|
17
|
+
: { enabledByFlags: commandInput.enabledByFlags }),
|
|
18
|
+
...(commandInput.maxParallel === undefined ? {} : { maxParallel: commandInput.maxParallel }),
|
|
19
|
+
...(commandInput.mutex === undefined ? {} : { mutex: commandInput.mutex }),
|
|
20
|
+
...(commandInput.observes === undefined ? {} : { observes: commandInput.observes }),
|
|
21
|
+
...(commandInput.omitQuietPassedRow === undefined
|
|
22
|
+
? {}
|
|
23
|
+
: { omitQuietPassedRow: commandInput.omitQuietPassedRow }),
|
|
24
|
+
...(commandInput.resourceClaims === undefined
|
|
25
|
+
? {}
|
|
26
|
+
: { resourceClaims: commandInput.resourceClaims }),
|
|
27
|
+
checkId: commandInput.checkId,
|
|
28
|
+
displayName: commandInput.displayName,
|
|
29
|
+
execute: (context) => executeCommandCheck(context, {
|
|
30
|
+
afterCommand: resolved.afterCommand,
|
|
31
|
+
resolveEnvironment: resolved.resolveEnvironment
|
|
32
|
+
}),
|
|
33
|
+
options: resolved.options,
|
|
34
|
+
prepare: (options) => isRevalidatedCommandOptions(options, commandInput.checkId, commandInput.displayName)
|
|
35
|
+
? { status: "success", preparedOptions: options }
|
|
36
|
+
: { status: "failure", action: "block", reason: { code: "invalid-options" } },
|
|
37
|
+
...(resolved.afterCommand?.parseData === undefined
|
|
38
|
+
? {}
|
|
39
|
+
: { parseData: resolved.afterCommand.parseData })
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function isRevalidatedCommandOptions(options, checkId, displayName) {
|
|
43
|
+
return (resolveCommandCheckInput({
|
|
44
|
+
checkId,
|
|
45
|
+
displayName,
|
|
46
|
+
executable: options.executable,
|
|
47
|
+
arguments: options.arguments,
|
|
48
|
+
environment: options.environment,
|
|
49
|
+
output: options.output,
|
|
50
|
+
outputByteLimit: options.outputByteLimit,
|
|
51
|
+
timeoutMs: options.timeoutMs,
|
|
52
|
+
...(options.workingDirectory === null ? {} : { workingDirectory: options.workingDirectory })
|
|
53
|
+
}) !== undefined);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=command-check.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-check.mjs","sourceRoot":"","sources":["../../../../src/package-checks/command-check/command-check.ts"],"names":[],"mappings":"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","sourcesContent":["import { executeCommandCheck } from \"./execution.ts\";\nimport type { Check, CheckDataParser } from \"../../check/check.ts\";\nimport { resolveCommandCheckInput } from \"./options.ts\";\nimport type {\n AfterCommand,\n AfterCommandExecution,\n CommandCheck,\n CommandCheckInput,\n CommandCheckWithAfterCommand,\n ResolvedCommandCheckOptions,\n TypedCommandCheck\n} from \"./contract.ts\";\n\nexport type {\n AfterCommand,\n AfterCommandContext,\n AfterCommandExecution,\n CommandCheckWithAfterCommand,\n CommandEnvironmentContext,\n CommandEnvironmentResolver,\n CompletedCommand,\n CommandCheck,\n CommandCheckEnvironment,\n CommandCheckFinalData,\n CommandCheckInput,\n CommandCheckOutput,\n CommandCheckUnavailableReasonCode,\n TypedCommandCheck\n} from \"./contract.ts\";\n\ntype CommandCheckImplementationInput = CommandCheckInput<string, AfterCommand | undefined>;\n\n/**\n * 构造一个单一 no-shell executable 的 ordinary Check。\n *\n * @remarks constructor 会闭合并冻结 command-owned options;ordinary selection、relation 与 scheduling fields 仍按普通 Check lifecycle 传递。默认 exact-empty environment 与 discard output 不会把 ambient variables、child stdout/stderr 或 native error text 发布到 Check facts。`output: { mode: \"transcript\" }` 仅在 invocation 授予此 Check artifact directory 时,将 raw stdout/stderr 写入固定 `process.log`。\n * @example 以 process.execPath 构造无 shell command Check\n * ```ts\n * import { commandCheck, defineConfig, run } from \"@zxyycom/vibe-check\";\n *\n * const nodeProbe = commandCheck({\n * checkId: \"node-probe\",\n * displayName: \"Node probe\",\n * executable: process.execPath,\n * arguments: [\"--eval\", \"process.exit(0)\"],\n * timeoutMs: 5_000,\n * outputByteLimit: 64 * 1024\n * });\n *\n * const definition = defineConfig({\n * checks: [nodeProbe],\n * outputs: {\n * diagnosticLogging: { enabled: false },\n * machinePublication: { enabled: false },\n * progressRendering: { enabled: false }\n * }\n * });\n *\n * const result = await run(definition);\n * if (result.kind !== \"completed\") throw new Error(`Run did not complete: ${result.kind}`);\n * const outcome = result.snapshot.checks.find(\n * ({ checkId }) => checkId === nodeProbe.checkId\n * )?.outcome;\n * if (outcome?.status !== \"passed\" || outcome.data.exitCode !== 0) {\n * throw new Error(\"Node probe did not produce the expected passed outcome\");\n * }\n * ```\n */\nexport function commandCheck<const Id extends string, const FinalData extends object>(\n input: CommandCheckInput<\n Id,\n Readonly<{\n readonly execute: AfterCommandExecution<FinalData>;\n readonly parseData?: never;\n }>\n >\n): CommandCheckWithAfterCommand<Id, FinalData>;\nexport function commandCheck<const Id extends string, const Parser extends CheckDataParser>(\n input: CommandCheckInput<\n Id,\n Readonly<{\n readonly execute: AfterCommandExecution<NoInfer<ReturnType<Parser>>>;\n readonly parseData: Parser;\n }>\n >\n): TypedCommandCheck<Id, Parser>;\nexport function commandCheck<const Id extends string>(\n input: CommandCheckInput<Id>\n): CommandCheck<Id>;\nexport function commandCheck(input: CommandCheckImplementationInput): Check {\n const commandInput = input;\n const resolved = resolveCommandCheckInput(input);\n if (resolved === undefined) {\n throw new TypeError(\n \"commandCheck input must match the documented closed command and ordinary Check authoring policy\"\n );\n }\n return {\n ...(commandInput.admissionPriority === undefined\n ? {}\n : { admissionPriority: commandInput.admissionPriority }),\n ...(commandInput.checks === undefined ? {} : { checks: commandInput.checks }),\n ...(commandInput.dependsOn === undefined ? {} : { dependsOn: commandInput.dependsOn }),\n ...(commandInput.enabledByFlags === undefined\n ? {}\n : { enabledByFlags: commandInput.enabledByFlags }),\n ...(commandInput.maxParallel === undefined ? {} : { maxParallel: commandInput.maxParallel }),\n ...(commandInput.mutex === undefined ? {} : { mutex: commandInput.mutex }),\n ...(commandInput.observes === undefined ? {} : { observes: commandInput.observes }),\n ...(commandInput.omitQuietPassedRow === undefined\n ? {}\n : { omitQuietPassedRow: commandInput.omitQuietPassedRow }),\n ...(commandInput.resourceClaims === undefined\n ? {}\n : { resourceClaims: commandInput.resourceClaims }),\n checkId: commandInput.checkId,\n displayName: commandInput.displayName,\n execute: (context: Parameters<CommandCheck[\"execute\"]>[0]) =>\n executeCommandCheck(context, {\n afterCommand: resolved.afterCommand,\n resolveEnvironment: resolved.resolveEnvironment\n }),\n options: resolved.options,\n prepare: (options: ResolvedCommandCheckOptions) =>\n isRevalidatedCommandOptions(options, commandInput.checkId, commandInput.displayName)\n ? { status: \"success\", preparedOptions: options }\n : { status: \"failure\", action: \"block\", reason: { code: \"invalid-options\" } },\n ...(resolved.afterCommand?.parseData === undefined\n ? {}\n : { parseData: resolved.afterCommand.parseData })\n };\n}\n\nfunction isRevalidatedCommandOptions<Id extends string>(\n options: ResolvedCommandCheckOptions,\n checkId: Id,\n displayName: string\n): boolean {\n return (\n resolveCommandCheckInput({\n checkId,\n displayName,\n executable: options.executable,\n arguments: options.arguments,\n environment: options.environment,\n output: options.output,\n outputByteLimit: options.outputByteLimit,\n timeoutMs: options.timeoutMs,\n ...(options.workingDirectory === null ? {} : { workingDirectory: options.workingDirectory })\n }) !== undefined\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.mjs","sourceRoot":"","sources":["../../../../src/package-checks/command-check/contract.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n Check,\n CheckDataParser,\n CheckDependencies,\n CheckExecutionContext,\n CheckFlagEnablement,\n CheckProjectContext,\n CheckResourceClaims,\n CheckResult,\n CheckWithOptions,\n DeepReadonly,\n InheritableCheckCollection,\n TypedCheckWithOptions\n} from \"../../check/check.ts\";\n\n/** command Check 的显式环境策略;默认 exact-empty,避免定义时读取 ambient environment。 */\nexport type CommandCheckEnvironment =\n | Readonly<{\n readonly mode: \"exact\";\n readonly variables?: Readonly<Record<string, string>>;\n }>\n | Readonly<{\n readonly mode: \"inherit\";\n readonly overrides?: Readonly<Record<string, string | null>>;\n }>;\n\n/** child stdout/stderr 的处理边界;默认 discard。 */\nexport type CommandCheckOutput = Readonly<{ readonly mode: \"discard\" | \"transcript\" }>;\n\n/** command 以 numeric exit status 结束时发布的唯一 final data。 */\nexport interface CommandCheckFinalData {\n /** child process 的 numeric exit status。 */\n readonly exitCode: number;\n}\n\n/** 已完整结束且只在 invocation-local callback 中可见的 child material。 */\nexport interface CompletedCommand {\n readonly exitCode: number;\n readonly stderr: string;\n readonly stdout: string;\n}\n\n/** spawn 前 environment resolver 可读取的最小 invocation context。 */\nexport interface CommandEnvironmentContext {\n readonly dependencies: CheckDependencies;\n readonly options: DeepReadonly<ResolvedCommandCheckOptions>;\n readonly project: CheckProjectContext;\n readonly signal: AbortSignal;\n}\n\n/** 完整 command 后 caller-owned settlement 可读取的 context。 */\nexport type AfterCommandContext = CheckExecutionContext<ResolvedCommandCheckOptions> &\n Readonly<{ readonly command: CompletedCommand }>;\n\n/** 完整 command 的 caller-owned settlement callback。 */\nexport type AfterCommandExecution<FinalData extends object = object> = (\n this: void,\n context: AfterCommandContext\n) => CheckResult<FinalData> | Promise<CheckResult<FinalData>>;\n\n/** command 完成后的可选 caller-owned settlement 与 typed-provider parser。 */\nexport type AfterCommand<FinalData extends object = object> = Readonly<{\n readonly execute: AfterCommandExecution<FinalData>;\n readonly parseData?: CheckDataParser | undefined;\n}>;\n\n/** spawn 前解析此次 command closed environment policy 的 callback。 */\nexport type CommandEnvironmentResolver = (\n this: void,\n context: CommandEnvironmentContext\n) => CommandCheckEnvironment | Promise<CommandCheckEnvironment>;\n\n/** command Check 自己产生的 stable unavailable reason code。 */\nexport type CommandCheckUnavailableReasonCode =\n | \"command-environment-resolution-failed\"\n | \"command-output-limit-exceeded\"\n | \"command-start-failed\"\n | \"command-terminated-by-signal\"\n | \"command-timeout\"\n | \"command-transcript-unavailable\"\n | \"invalid-options\";\n\n/** `commandCheck` 的 closed authoring input;ordinary Check composition fields 原样交由 Core 处理。 */\ninterface CommandCheckBaseInput<Id extends string> {\n readonly checkId: Id;\n readonly displayName: string;\n readonly executable: string;\n readonly arguments?: readonly string[];\n readonly workingDirectory?: string;\n readonly timeoutMs: number;\n readonly outputByteLimit: number;\n readonly output?: CommandCheckOutput;\n readonly enabledByFlags?: CheckFlagEnablement;\n readonly checks?: readonly Check[];\n readonly dependsOn?: InheritableCheckCollection<string>;\n readonly observes?: InheritableCheckCollection<string>;\n readonly maxParallel?: number;\n readonly admissionPriority?: number;\n readonly mutex?: InheritableCheckCollection<string>;\n readonly resourceClaims?: CheckResourceClaims;\n readonly omitQuietPassedRow?: true;\n}\n\n/** Static environment 与 invocation-time resolver 互斥;两者都省略时使用 exact-empty。 */\nexport type CommandCheckInput<\n Id extends string = string,\n After extends AfterCommand | undefined = undefined\n> = CommandCheckBaseInput<Id> &\n (\n | Readonly<{\n readonly environment?: CommandCheckEnvironment;\n readonly resolveEnvironment?: never;\n }>\n | Readonly<{\n readonly environment?: never;\n readonly resolveEnvironment: CommandEnvironmentResolver;\n }>\n ) &\n (After extends undefined\n ? Readonly<{ readonly afterCommand?: undefined }>\n : Readonly<{ readonly afterCommand: After }>);\n\n/** command constructor materializes、冻结并在 preparation 再次验证的内部完整 options。 */\nexport interface ResolvedCommandCheckOptions {\n readonly arguments: readonly string[];\n readonly environment:\n | Readonly<{ readonly mode: \"exact\"; readonly variables: Readonly<Record<string, string>> }>\n | Readonly<{\n readonly mode: \"inherit\";\n readonly overrides: Readonly<Record<string, string | null>>;\n }>;\n readonly executable: string;\n readonly output: Readonly<{ readonly mode: \"discard\" | \"transcript\" }>;\n readonly outputByteLimit: number;\n readonly timeoutMs: number;\n /** `null` 表示 execution 时使用 invocation project root。 */\n readonly workingDirectory: string | null;\n}\n\n/** 可放入普通 Project Definition 的 process-backed Check。 */\nexport type CommandCheck<Id extends string = string> = CheckWithOptions<\n Id,\n ResolvedCommandCheckOptions\n> &\n Readonly<{\n execute(\n this: void,\n context: CheckExecutionContext<ResolvedCommandCheckOptions>\n ): CheckResult<CommandCheckFinalData> | Promise<CheckResult<CommandCheckFinalData>>;\n }>;\n\n/** 带 caller-owned completion callback 的 ordinary command Check。 */\nexport type CommandCheckWithAfterCommand<Id extends string, FinalData extends object> = Omit<\n CheckWithOptions<Id, ResolvedCommandCheckOptions>,\n \"execute\"\n> &\n Readonly<{\n execute(\n this: void,\n context: CheckExecutionContext<ResolvedCommandCheckOptions>\n ): CheckResult<FinalData> | Promise<CheckResult<FinalData>>;\n }>;\n\n/** 带 caller-owned completion callback 与 parser 的 typed-provider command Check。 */\nexport type TypedCommandCheck<\n Id extends string,\n Parser extends CheckDataParser\n> = TypedCheckWithOptions<Id, ResolvedCommandCheckOptions, Parser>;\n"]}
|