@zxyycom/vibe-check 0.0.1
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/LICENSE +21 -0
- package/README.md +154 -0
- package/dist/esm/check/check.mjs +5 -0
- package/dist/esm/check/check.mjs.map +1 -0
- package/dist/esm/check/descriptor-validation.mjs +37 -0
- package/dist/esm/check/descriptor-validation.mjs.map +1 -0
- package/dist/esm/check/descriptor.mjs +2 -0
- package/dist/esm/check/descriptor.mjs.map +1 -0
- package/dist/esm/check/inherited-collection.mjs +62 -0
- package/dist/esm/check/inherited-collection.mjs.map +1 -0
- package/dist/esm/check/options-snapshot.mjs +75 -0
- package/dist/esm/check/options-snapshot.mjs.map +1 -0
- package/dist/esm/check-settlement/fact-validation.mjs +216 -0
- package/dist/esm/check-settlement/fact-validation.mjs.map +1 -0
- package/dist/esm/check-settlement/facts.mjs +2 -0
- package/dist/esm/check-settlement/facts.mjs.map +1 -0
- package/dist/esm/check-settlement/outcome-normalization.mjs +80 -0
- package/dist/esm/check-settlement/outcome-normalization.mjs.map +1 -0
- package/dist/esm/check-settlement/record-store.mjs +59 -0
- package/dist/esm/check-settlement/record-store.mjs.map +1 -0
- package/dist/esm/check-settlement/session.mjs +179 -0
- package/dist/esm/check-settlement/session.mjs.map +1 -0
- package/dist/esm/data-boundary/canonical-data.mjs +159 -0
- package/dist/esm/data-boundary/canonical-data.mjs.map +1 -0
- package/dist/esm/data-boundary/canonical-json.mjs +2 -0
- package/dist/esm/data-boundary/canonical-json.mjs.map +1 -0
- package/dist/esm/data-boundary/closed-values.mjs +98 -0
- package/dist/esm/data-boundary/closed-values.mjs.map +1 -0
- package/dist/esm/data-boundary/value-shapes.mjs +13 -0
- package/dist/esm/data-boundary/value-shapes.mjs.map +1 -0
- package/dist/esm/finding-waivers/reconciliation.mjs +84 -0
- package/dist/esm/finding-waivers/reconciliation.mjs.map +1 -0
- package/dist/esm/index.mjs +26 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/machine-output/v4/atomic-publication.mjs +102 -0
- package/dist/esm/machine-output/v4/atomic-publication.mjs.map +1 -0
- package/dist/esm/machine-output/v4/freeze-publication-value.mjs +14 -0
- package/dist/esm/machine-output/v4/freeze-publication-value.mjs.map +1 -0
- package/dist/esm/machine-output/v4/projection.mjs +23 -0
- package/dist/esm/machine-output/v4/projection.mjs.map +1 -0
- package/dist/esm/machine-output/v4/publication-invariants.mjs +59 -0
- package/dist/esm/machine-output/v4/publication-invariants.mjs.map +1 -0
- package/dist/esm/machine-output/v4/publication-model.mjs +19 -0
- package/dist/esm/machine-output/v4/publication-model.mjs.map +1 -0
- package/dist/esm/machine-output/v4/publish.mjs +20 -0
- package/dist/esm/machine-output/v4/publish.mjs.map +1 -0
- package/dist/esm/machine-output/v4/records-fingerprint.mjs +9 -0
- package/dist/esm/machine-output/v4/records-fingerprint.mjs.map +1 -0
- package/dist/esm/machine-output/v4/schema-identities.mjs +8 -0
- package/dist/esm/machine-output/v4/schema-identities.mjs.map +1 -0
- package/dist/esm/machine-output/v4/schema.mjs +50 -0
- package/dist/esm/machine-output/v4/schema.mjs.map +1 -0
- package/dist/esm/machine-output/v4/serializers.mjs +9 -0
- package/dist/esm/machine-output/v4/serializers.mjs.map +1 -0
- package/dist/esm/machine-output/v4/validation-result.mjs +16 -0
- package/dist/esm/machine-output/v4/validation-result.mjs.map +1 -0
- package/dist/esm/machine-output/v4/validation.mjs +131 -0
- package/dist/esm/machine-output/v4/validation.mjs.map +1 -0
- package/dist/esm/package-checks/code-quality-findings/policy.mjs +49 -0
- package/dist/esm/package-checks/code-quality-findings/policy.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/area-policy.mjs +71 -0
- package/dist/esm/package-checks/duplicate-detection/area-policy.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/cache/cache-contract.mjs +2 -0
- package/dist/esm/package-checks/duplicate-detection/cache/cache-contract.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs +37 -0
- package/dist/esm/package-checks/duplicate-detection/cache/identity.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/cache/key.mjs +38 -0
- package/dist/esm/package-checks/duplicate-detection/cache/key.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/cache/payload.mjs +47 -0
- package/dist/esm/package-checks/duplicate-detection/cache/payload.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/cache/store.mjs +44 -0
- package/dist/esm/package-checks/duplicate-detection/cache/store.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/default-check.mjs +39 -0
- package/dist/esm/package-checks/duplicate-detection/default-check.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/execution.mjs +124 -0
- package/dist/esm/package-checks/duplicate-detection/execution.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/final-data.mjs +6 -0
- package/dist/esm/package-checks/duplicate-detection/final-data.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs +77 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/command-path.mjs +6 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/command-path.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs +87 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/command-resolution.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs +94 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/json-report.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/scanner-contract.mjs +2 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/scanner-contract.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs +180 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/scanner.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/scoped-fragments.mjs +10 -0
- package/dist/esm/package-checks/duplicate-detection/jscpd/scoped-fragments.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/measurement-model.mjs +2 -0
- package/dist/esm/package-checks/duplicate-detection/measurement-model.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/measurement.mjs +151 -0
- package/dist/esm/package-checks/duplicate-detection/measurement.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs +126 -0
- package/dist/esm/package-checks/duplicate-detection/options-resolution.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/options-validation.mjs +60 -0
- package/dist/esm/package-checks/duplicate-detection/options-validation.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/options.mjs +2 -0
- package/dist/esm/package-checks/duplicate-detection/options.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/project-revision.mjs +5 -0
- package/dist/esm/package-checks/duplicate-detection/project-revision.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/records.mjs +119 -0
- package/dist/esm/package-checks/duplicate-detection/records.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/constructor.mjs +39 -0
- package/dist/esm/package-checks/file-metrics/constructor.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/execution.mjs +170 -0
- package/dist/esm/package-checks/file-metrics/execution.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/final-data.mjs +6 -0
- package/dist/esm/package-checks/file-metrics/final-data.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/measurement-model.mjs +2 -0
- package/dist/esm/package-checks/file-metrics/measurement-model.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/measurement.mjs +33 -0
- package/dist/esm/package-checks/file-metrics/measurement.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/options-resolution.mjs +171 -0
- package/dist/esm/package-checks/file-metrics/options-resolution.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/options-validation.mjs +82 -0
- package/dist/esm/package-checks/file-metrics/options-validation.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/options.mjs +2 -0
- package/dist/esm/package-checks/file-metrics/options.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/records.mjs +109 -0
- package/dist/esm/package-checks/file-metrics/records.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/scc/availability.mjs +59 -0
- package/dist/esm/package-checks/file-metrics/scc/availability.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/scc/csv.mjs +17 -0
- package/dist/esm/package-checks/file-metrics/scc/csv.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/scc/parser.mjs +145 -0
- package/dist/esm/package-checks/file-metrics/scc/parser.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/scc/scanner.mjs +54 -0
- package/dist/esm/package-checks/file-metrics/scc/scanner.mjs.map +1 -0
- package/dist/esm/package-checks/final-data-parsing.mjs +35 -0
- package/dist/esm/package-checks/final-data-parsing.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/analysis.mjs +96 -0
- package/dist/esm/package-checks/function-metrics/analysis.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/constructor.mjs +43 -0
- package/dist/esm/package-checks/function-metrics/constructor.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/execution.mjs +178 -0
- package/dist/esm/package-checks/function-metrics/execution.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/final-data.mjs +6 -0
- package/dist/esm/package-checks/function-metrics/final-data.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/lizard/availability.mjs +64 -0
- package/dist/esm/package-checks/function-metrics/lizard/availability.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/lizard/csv.mjs +17 -0
- package/dist/esm/package-checks/function-metrics/lizard/csv.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/lizard/parser.mjs +138 -0
- package/dist/esm/package-checks/function-metrics/lizard/parser.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs +35 -0
- package/dist/esm/package-checks/function-metrics/lizard/scanner.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/measurement-model.mjs +2 -0
- package/dist/esm/package-checks/function-metrics/measurement-model.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/measurement.mjs +35 -0
- package/dist/esm/package-checks/function-metrics/measurement.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/options-resolution.mjs +171 -0
- package/dist/esm/package-checks/function-metrics/options-resolution.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/options-validation.mjs +71 -0
- package/dist/esm/package-checks/function-metrics/options-validation.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/options.mjs +2 -0
- package/dist/esm/package-checks/function-metrics/options.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/records.mjs +133 -0
- package/dist/esm/package-checks/function-metrics/records.mjs.map +1 -0
- package/dist/esm/package-checks/function-metrics/target-files.mjs +75 -0
- package/dist/esm/package-checks/function-metrics/target-files.mjs.map +1 -0
- package/dist/esm/package-checks/host-environment/error-message.mjs +4 -0
- package/dist/esm/package-checks/host-environment/error-message.mjs.map +1 -0
- package/dist/esm/package-checks/host-environment/filesystem.mjs +81 -0
- package/dist/esm/package-checks/host-environment/filesystem.mjs.map +1 -0
- package/dist/esm/package-checks/host-environment/git.mjs +51 -0
- package/dist/esm/package-checks/host-environment/git.mjs.map +1 -0
- package/dist/esm/package-checks/host-environment/path.mjs +18 -0
- package/dist/esm/package-checks/host-environment/path.mjs.map +1 -0
- package/dist/esm/package-checks/host-environment/process/command.mjs +13 -0
- package/dist/esm/package-checks/host-environment/process/command.mjs.map +1 -0
- package/dist/esm/package-checks/host-environment/process/contract.mjs +2 -0
- package/dist/esm/package-checks/host-environment/process/contract.mjs.map +1 -0
- package/dist/esm/package-checks/host-environment/process/env.mjs +19 -0
- package/dist/esm/package-checks/host-environment/process/env.mjs.map +1 -0
- package/dist/esm/package-checks/host-environment/process/failure.mjs +34 -0
- package/dist/esm/package-checks/host-environment/process/failure.mjs.map +1 -0
- package/dist/esm/package-checks/host-environment/process/result.mjs +33 -0
- package/dist/esm/package-checks/host-environment/process/result.mjs.map +1 -0
- package/dist/esm/package-checks/host-environment/process/runner.mjs +30 -0
- package/dist/esm/package-checks/host-environment/process/runner.mjs.map +1 -0
- package/dist/esm/package-checks/json-document/strict-document.mjs +163 -0
- package/dist/esm/package-checks/json-document/strict-document.mjs.map +1 -0
- package/dist/esm/package-checks/json-schema-validation/default-check.mjs +39 -0
- package/dist/esm/package-checks/json-schema-validation/default-check.mjs.map +1 -0
- package/dist/esm/package-checks/json-schema-validation/execution-stages.mjs +141 -0
- package/dist/esm/package-checks/json-schema-validation/execution-stages.mjs.map +1 -0
- package/dist/esm/package-checks/json-schema-validation/final-data.mjs +64 -0
- package/dist/esm/package-checks/json-schema-validation/final-data.mjs.map +1 -0
- package/dist/esm/package-checks/json-schema-validation/issue-collector.mjs +35 -0
- package/dist/esm/package-checks/json-schema-validation/issue-collector.mjs.map +1 -0
- package/dist/esm/package-checks/json-schema-validation/json-schema-validation.mjs +118 -0
- package/dist/esm/package-checks/json-schema-validation/json-schema-validation.mjs.map +1 -0
- package/dist/esm/package-checks/json-schema-validation/options-resolution.mjs +45 -0
- package/dist/esm/package-checks/json-schema-validation/options-resolution.mjs.map +1 -0
- package/dist/esm/package-checks/json-schema-validation/options-validation.mjs +212 -0
- package/dist/esm/package-checks/json-schema-validation/options-validation.mjs.map +1 -0
- package/dist/esm/package-checks/json-schema-validation/options.mjs +2 -0
- package/dist/esm/package-checks/json-schema-validation/options.mjs.map +1 -0
- package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs +128 -0
- package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs.map +1 -0
- package/dist/esm/package-checks/json-schema-validation/remote-response.mjs +71 -0
- package/dist/esm/package-checks/json-schema-validation/remote-response.mjs.map +1 -0
- package/dist/esm/package-checks/json-schema-validation/schema-engine.mjs +190 -0
- package/dist/esm/package-checks/json-schema-validation/schema-engine.mjs.map +1 -0
- package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs +234 -0
- package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs.map +1 -0
- package/dist/esm/package-checks/json-validation/default-check.mjs +39 -0
- package/dist/esm/package-checks/json-validation/default-check.mjs.map +1 -0
- package/dist/esm/package-checks/json-validation/final-data.mjs +27 -0
- package/dist/esm/package-checks/json-validation/final-data.mjs.map +1 -0
- package/dist/esm/package-checks/json-validation/json-validation.mjs +138 -0
- package/dist/esm/package-checks/json-validation/json-validation.mjs.map +1 -0
- package/dist/esm/package-checks/json-validation/options-resolution.mjs +33 -0
- package/dist/esm/package-checks/json-validation/options-resolution.mjs.map +1 -0
- package/dist/esm/package-checks/json-validation/options-validation.mjs +16 -0
- package/dist/esm/package-checks/json-validation/options-validation.mjs.map +1 -0
- package/dist/esm/package-checks/json-validation/options.mjs +2 -0
- package/dist/esm/package-checks/json-validation/options.mjs.map +1 -0
- package/dist/esm/package-checks/maintenance-reminders/assessment-results.mjs +73 -0
- package/dist/esm/package-checks/maintenance-reminders/assessment-results.mjs.map +1 -0
- package/dist/esm/package-checks/maintenance-reminders/final-data.mjs +153 -0
- package/dist/esm/package-checks/maintenance-reminders/final-data.mjs.map +1 -0
- package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs +155 -0
- package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs.map +1 -0
- package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs +58 -0
- package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs.map +1 -0
- package/dist/esm/package-checks/maintenance-reminders/measurement.mjs +125 -0
- package/dist/esm/package-checks/maintenance-reminders/measurement.mjs.map +1 -0
- package/dist/esm/package-checks/maintenance-reminders/options-validation.mjs +72 -0
- package/dist/esm/package-checks/maintenance-reminders/options-validation.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/default-check.mjs +55 -0
- package/dist/esm/package-checks/markdown-link-validation/default-check.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/execution.mjs +199 -0
- package/dist/esm/package-checks/markdown-link-validation/execution.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs +109 -0
- package/dist/esm/package-checks/markdown-link-validation/filesystem-probes.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/final-data.mjs +28 -0
- package/dist/esm/package-checks/markdown-link-validation/final-data.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/local-resolution.mjs +158 -0
- package/dist/esm/package-checks/markdown-link-validation/local-resolution.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs +17 -0
- package/dist/esm/package-checks/markdown-link-validation/local-resolver.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs +191 -0
- package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs +83 -0
- package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs +50 -0
- package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/options.mjs +2 -0
- package/dist/esm/package-checks/markdown-link-validation/options.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/records.mjs +32 -0
- package/dist/esm/package-checks/markdown-link-validation/records.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs +196 -0
- package/dist/esm/package-checks/markdown-link-validation/resolver-engine.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/target-descriptor.mjs +23 -0
- package/dist/esm/package-checks/markdown-link-validation/target-descriptor.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-link-validation/traversal-result.mjs +41 -0
- package/dist/esm/package-checks/markdown-link-validation/traversal-result.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/collection.mjs +142 -0
- package/dist/esm/package-checks/project-files/collection.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/config-glob.mjs +11 -0
- package/dist/esm/package-checks/project-files/config-glob.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/configuration.mjs +104 -0
- package/dist/esm/package-checks/project-files/configuration.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/exact-input-measurement.mjs +24 -0
- package/dist/esm/package-checks/project-files/exact-input-measurement.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/file-fingerprint.mjs +36 -0
- package/dist/esm/package-checks/project-files/file-fingerprint.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/gitlink-revision.mjs +57 -0
- package/dist/esm/package-checks/project-files/gitlink-revision.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/gitlink-worktree.mjs +72 -0
- package/dist/esm/package-checks/project-files/gitlink-worktree.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/input-eligibility.mjs +13 -0
- package/dist/esm/package-checks/project-files/input-eligibility.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/reported-path.mjs +30 -0
- package/dist/esm/package-checks/project-files/reported-path.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/revision-paths.mjs +19 -0
- package/dist/esm/package-checks/project-files/revision-paths.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/revision-worktree-files.mjs +102 -0
- package/dist/esm/package-checks/project-files/revision-worktree-files.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/authoring.mjs +242 -0
- package/dist/esm/project-definition/check-tree/authoring.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/materialization.mjs +50 -0
- package/dist/esm/project-definition/check-tree/materialization.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/resolution.mjs +60 -0
- package/dist/esm/project-definition/check-tree/resolution.mjs.map +1 -0
- package/dist/esm/project-definition/output-defaults.mjs +7 -0
- package/dist/esm/project-definition/output-defaults.mjs.map +1 -0
- package/dist/esm/project-definition/output-validation.mjs +44 -0
- package/dist/esm/project-definition/output-validation.mjs.map +1 -0
- package/dist/esm/project-definition/project-definition-validation.mjs +95 -0
- package/dist/esm/project-definition/project-definition-validation.mjs.map +1 -0
- package/dist/esm/project-definition/project-definition.mjs +92 -0
- package/dist/esm/project-definition/project-definition.mjs.map +1 -0
- package/dist/esm/project-run/aggregation.mjs +66 -0
- package/dist/esm/project-run/aggregation.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/callback.mjs +70 -0
- package/dist/esm/project-run/check-execution/callback.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/dependencies.mjs +50 -0
- package/dist/esm/project-run/check-execution/dependencies.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/execution-finalization.mjs +103 -0
- package/dist/esm/project-run/check-execution/execution-finalization.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/execution-settlement.mjs +90 -0
- package/dist/esm/project-run/check-execution/execution-settlement.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/messages.mjs +38 -0
- package/dist/esm/project-run/check-execution/messages.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/plan.mjs +35 -0
- package/dist/esm/project-run/check-execution/plan.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/preflight-result.mjs +83 -0
- package/dist/esm/project-run/check-execution/preflight-result.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/preflight.mjs +186 -0
- package/dist/esm/project-run/check-execution/preflight.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/resolved-checks.mjs +168 -0
- package/dist/esm/project-run/check-execution/resolved-checks.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/terminal-result.mjs +49 -0
- package/dist/esm/project-run/check-execution/terminal-result.mjs.map +1 -0
- package/dist/esm/project-run/completion.mjs +173 -0
- package/dist/esm/project-run/completion.mjs.map +1 -0
- package/dist/esm/project-run/controls/contract.mjs +2 -0
- package/dist/esm/project-run/controls/contract.mjs.map +1 -0
- package/dist/esm/project-run/controls/outputs-override-validation.mjs +61 -0
- package/dist/esm/project-run/controls/outputs-override-validation.mjs.map +1 -0
- package/dist/esm/project-run/controls/validation-result.mjs +2 -0
- package/dist/esm/project-run/controls/validation-result.mjs.map +1 -0
- package/dist/esm/project-run/controls/validation.mjs +156 -0
- package/dist/esm/project-run/controls/validation.mjs.map +1 -0
- package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs +182 -0
- package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs.map +1 -0
- package/dist/esm/project-run/diagnostic-logging/logger.mjs +242 -0
- package/dist/esm/project-run/diagnostic-logging/logger.mjs.map +1 -0
- package/dist/esm/project-run/invocation-creation.mjs +111 -0
- package/dist/esm/project-run/invocation-creation.mjs.map +1 -0
- package/dist/esm/project-run/invocation.mjs +195 -0
- package/dist/esm/project-run/invocation.mjs.map +1 -0
- package/dist/esm/project-run/machine-publication.mjs +16 -0
- package/dist/esm/project-run/machine-publication.mjs.map +1 -0
- package/dist/esm/project-run/output-configuration.mjs +17 -0
- package/dist/esm/project-run/output-configuration.mjs.map +1 -0
- package/dist/esm/project-run/output-status.mjs +43 -0
- package/dist/esm/project-run/output-status.mjs.map +1 -0
- package/dist/esm/project-run/progress-rendering/presentation.mjs +135 -0
- package/dist/esm/project-run/progress-rendering/presentation.mjs.map +1 -0
- package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs +100 -0
- package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs.map +1 -0
- package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs +123 -0
- package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs.map +1 -0
- package/dist/esm/project-run/progress-rendering/renderer.mjs +12 -0
- package/dist/esm/project-run/progress-rendering/renderer.mjs.map +1 -0
- package/dist/esm/project-run/project-context.mjs +8 -0
- package/dist/esm/project-run/project-context.mjs.map +1 -0
- package/dist/esm/project-run/result.mjs +54 -0
- package/dist/esm/project-run/result.mjs.map +1 -0
- package/dist/esm/project-run/run.mjs +23 -0
- package/dist/esm/project-run/run.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/execution-state.mjs +66 -0
- package/dist/esm/project-run/task-scheduler/execution-state.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/graph-validation.mjs +119 -0
- package/dist/esm/project-run/task-scheduler/graph-validation.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/graph.mjs +116 -0
- package/dist/esm/project-run/task-scheduler/graph.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs +82 -0
- package/dist/esm/project-run/task-scheduler/scheduler-admission-decision.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs +27 -0
- package/dist/esm/project-run/task-scheduler/scheduler-blocker-summary.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs +125 -0
- package/dist/esm/project-run/task-scheduler/scheduler-decision-inspection.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs +45 -0
- package/dist/esm/project-run/task-scheduler/scheduler-decision-model.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs +74 -0
- package/dist/esm/project-run/task-scheduler/scheduler-decision.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/scheduler.mjs +147 -0
- package/dist/esm/project-run/task-scheduler/scheduler.mjs.map +1 -0
- package/docs/api-mechanics.md +205 -0
- package/docs/checks/duplicate-detection.md +195 -0
- package/docs/checks/file-metrics.md +229 -0
- package/docs/checks/function-metrics.md +222 -0
- package/docs/checks/json-schema-validation.md +190 -0
- package/docs/checks/json-validation.md +133 -0
- package/docs/checks/maintenance-reminders.md +158 -0
- package/docs/checks/markdown-link-validation.md +192 -0
- package/docs/examples/artifacts/mixed-outcomes/definition.ts +195 -0
- package/docs/examples/artifacts/mixed-outcomes/records.ndjson +2 -0
- package/docs/examples/artifacts/mixed-outcomes/run.json +70 -0
- package/docs/output.md +97 -0
- package/docs/schemas/vibe-check-record.schema.json +33 -0
- package/docs/schemas/vibe-check-run.schema.json +173 -0
- package/index.mjs +1 -0
- package/package.json +49 -0
- package/src/check/check.ts +497 -0
- package/src/check/descriptor-validation.ts +60 -0
- package/src/check/descriptor.ts +5 -0
- package/src/check/inherited-collection.ts +101 -0
- package/src/check/options-snapshot.ts +80 -0
- package/src/check-settlement/fact-validation.ts +289 -0
- package/src/check-settlement/facts.ts +27 -0
- package/src/check-settlement/outcome-normalization.ts +118 -0
- package/src/check-settlement/record-store.ts +73 -0
- package/src/check-settlement/session.ts +257 -0
- package/src/data-boundary/canonical-data.ts +188 -0
- package/src/data-boundary/canonical-json.ts +11 -0
- package/src/data-boundary/closed-values.ts +126 -0
- package/src/data-boundary/value-shapes.ts +15 -0
- package/src/finding-waivers/reconciliation.ts +176 -0
- package/src/index.ts +123 -0
- package/src/machine-output/v4/atomic-publication.ts +123 -0
- package/src/machine-output/v4/freeze-publication-value.ts +12 -0
- package/src/machine-output/v4/projection.ts +36 -0
- package/src/machine-output/v4/publication-invariants.ts +89 -0
- package/src/machine-output/v4/publication-model.ts +38 -0
- package/src/machine-output/v4/publish.ts +23 -0
- package/src/machine-output/v4/records-fingerprint.ts +12 -0
- package/src/machine-output/v4/schema-identities.ts +8 -0
- package/src/machine-output/v4/schema.ts +97 -0
- package/src/machine-output/v4/serializers.ts +18 -0
- package/src/machine-output/v4/validation-result.ts +59 -0
- package/src/machine-output/v4/validation.ts +166 -0
- package/src/package-checks/code-quality-findings/policy.ts +85 -0
- package/src/package-checks/duplicate-detection/area-policy.ts +103 -0
- package/src/package-checks/duplicate-detection/cache/cache-contract.ts +49 -0
- package/src/package-checks/duplicate-detection/cache/identity.ts +61 -0
- package/src/package-checks/duplicate-detection/cache/key.ts +46 -0
- package/src/package-checks/duplicate-detection/cache/payload.ts +78 -0
- package/src/package-checks/duplicate-detection/cache/store.ts +77 -0
- package/src/package-checks/duplicate-detection/default-check.ts +50 -0
- package/src/package-checks/duplicate-detection/execution.ts +168 -0
- package/src/package-checks/duplicate-detection/final-data.ts +10 -0
- package/src/package-checks/duplicate-detection/jscpd/availability.ts +137 -0
- package/src/package-checks/duplicate-detection/jscpd/command-path.ts +8 -0
- package/src/package-checks/duplicate-detection/jscpd/command-resolution.ts +112 -0
- package/src/package-checks/duplicate-detection/jscpd/json-report.ts +137 -0
- package/src/package-checks/duplicate-detection/jscpd/scanner-contract.ts +18 -0
- package/src/package-checks/duplicate-detection/jscpd/scanner.ts +257 -0
- package/src/package-checks/duplicate-detection/jscpd/scoped-fragments.ts +17 -0
- package/src/package-checks/duplicate-detection/measurement-model.ts +44 -0
- package/src/package-checks/duplicate-detection/measurement.ts +223 -0
- package/src/package-checks/duplicate-detection/options-resolution.ts +162 -0
- package/src/package-checks/duplicate-detection/options-validation.ts +75 -0
- package/src/package-checks/duplicate-detection/options.ts +72 -0
- package/src/package-checks/duplicate-detection/project-revision.ts +5 -0
- package/src/package-checks/duplicate-detection/records.ts +171 -0
- package/src/package-checks/file-metrics/constructor.ts +46 -0
- package/src/package-checks/file-metrics/execution.ts +233 -0
- package/src/package-checks/file-metrics/final-data.ts +10 -0
- package/src/package-checks/file-metrics/measurement-model.ts +10 -0
- package/src/package-checks/file-metrics/measurement.ts +52 -0
- package/src/package-checks/file-metrics/options-resolution.ts +213 -0
- package/src/package-checks/file-metrics/options-validation.ts +104 -0
- package/src/package-checks/file-metrics/options.ts +91 -0
- package/src/package-checks/file-metrics/records.ts +182 -0
- package/src/package-checks/file-metrics/scc/availability.ts +100 -0
- package/src/package-checks/file-metrics/scc/csv.ts +20 -0
- package/src/package-checks/file-metrics/scc/parser.ts +223 -0
- package/src/package-checks/file-metrics/scc/scanner.ts +68 -0
- package/src/package-checks/final-data-parsing.ts +49 -0
- package/src/package-checks/function-metrics/analysis.ts +138 -0
- package/src/package-checks/function-metrics/constructor.ts +55 -0
- package/src/package-checks/function-metrics/execution.ts +263 -0
- package/src/package-checks/function-metrics/final-data.ts +10 -0
- package/src/package-checks/function-metrics/lizard/availability.ts +90 -0
- package/src/package-checks/function-metrics/lizard/csv.ts +20 -0
- package/src/package-checks/function-metrics/lizard/parser.ts +179 -0
- package/src/package-checks/function-metrics/lizard/scanner.ts +62 -0
- package/src/package-checks/function-metrics/measurement-model.ts +30 -0
- package/src/package-checks/function-metrics/measurement.ts +57 -0
- package/src/package-checks/function-metrics/options-resolution.ts +215 -0
- package/src/package-checks/function-metrics/options-validation.ts +89 -0
- package/src/package-checks/function-metrics/options.ts +84 -0
- package/src/package-checks/function-metrics/records.ts +254 -0
- package/src/package-checks/function-metrics/target-files.ts +85 -0
- package/src/package-checks/host-environment/error-message.ts +3 -0
- package/src/package-checks/host-environment/filesystem.ts +110 -0
- package/src/package-checks/host-environment/git.ts +68 -0
- package/src/package-checks/host-environment/path.ts +20 -0
- package/src/package-checks/host-environment/process/command.ts +21 -0
- package/src/package-checks/host-environment/process/contract.ts +56 -0
- package/src/package-checks/host-environment/process/env.ts +25 -0
- package/src/package-checks/host-environment/process/failure.ts +40 -0
- package/src/package-checks/host-environment/process/result.ts +39 -0
- package/src/package-checks/host-environment/process/runner.ts +47 -0
- package/src/package-checks/json-document/strict-document.ts +209 -0
- package/src/package-checks/json-schema-validation/default-check.ts +54 -0
- package/src/package-checks/json-schema-validation/execution-stages.ts +230 -0
- package/src/package-checks/json-schema-validation/final-data.ts +115 -0
- package/src/package-checks/json-schema-validation/issue-collector.ts +43 -0
- package/src/package-checks/json-schema-validation/json-schema-validation.ts +191 -0
- package/src/package-checks/json-schema-validation/options-resolution.ts +61 -0
- package/src/package-checks/json-schema-validation/options-validation.ts +256 -0
- package/src/package-checks/json-schema-validation/options.ts +66 -0
- package/src/package-checks/json-schema-validation/reference-resolver.ts +165 -0
- package/src/package-checks/json-schema-validation/remote-response.ts +84 -0
- package/src/package-checks/json-schema-validation/schema-engine.ts +263 -0
- package/src/package-checks/json-schema-validation/schema-policy.ts +275 -0
- package/src/package-checks/json-validation/default-check.ts +48 -0
- package/src/package-checks/json-validation/final-data.ts +46 -0
- package/src/package-checks/json-validation/json-validation.ts +212 -0
- package/src/package-checks/json-validation/options-resolution.ts +50 -0
- package/src/package-checks/json-validation/options-validation.ts +27 -0
- package/src/package-checks/json-validation/options.ts +18 -0
- package/src/package-checks/maintenance-reminders/assessment-results.ts +117 -0
- package/src/package-checks/maintenance-reminders/final-data.ts +239 -0
- package/src/package-checks/maintenance-reminders/maintenance-reminders.ts +264 -0
- package/src/package-checks/maintenance-reminders/maintenance-support.ts +67 -0
- package/src/package-checks/maintenance-reminders/measurement.ts +183 -0
- package/src/package-checks/maintenance-reminders/options-validation.ts +88 -0
- package/src/package-checks/markdown-link-validation/default-check.ts +70 -0
- package/src/package-checks/markdown-link-validation/execution.ts +325 -0
- package/src/package-checks/markdown-link-validation/filesystem-probes.ts +127 -0
- package/src/package-checks/markdown-link-validation/final-data.ts +47 -0
- package/src/package-checks/markdown-link-validation/local-resolution.ts +306 -0
- package/src/package-checks/markdown-link-validation/local-resolver.ts +51 -0
- package/src/package-checks/markdown-link-validation/markdown-parser.ts +302 -0
- package/src/package-checks/markdown-link-validation/options-resolution.ts +114 -0
- package/src/package-checks/markdown-link-validation/options-validation.ts +72 -0
- package/src/package-checks/markdown-link-validation/options.ts +50 -0
- package/src/package-checks/markdown-link-validation/records.ts +77 -0
- package/src/package-checks/markdown-link-validation/resolver-engine.ts +276 -0
- package/src/package-checks/markdown-link-validation/target-descriptor.ts +34 -0
- package/src/package-checks/markdown-link-validation/traversal-result.ts +58 -0
- package/src/package-checks/project-files/collection.ts +199 -0
- package/src/package-checks/project-files/config-glob.ts +17 -0
- package/src/package-checks/project-files/configuration.ts +152 -0
- package/src/package-checks/project-files/exact-input-measurement.ts +38 -0
- package/src/package-checks/project-files/file-fingerprint.ts +46 -0
- package/src/package-checks/project-files/gitlink-revision.ts +82 -0
- package/src/package-checks/project-files/gitlink-worktree.ts +106 -0
- package/src/package-checks/project-files/input-eligibility.ts +21 -0
- package/src/package-checks/project-files/reported-path.ts +35 -0
- package/src/package-checks/project-files/revision-paths.ts +34 -0
- package/src/package-checks/project-files/revision-worktree-files.ts +148 -0
- package/src/project-definition/check-tree/authoring.ts +332 -0
- package/src/project-definition/check-tree/materialization.ts +56 -0
- package/src/project-definition/check-tree/resolution.ts +108 -0
- package/src/project-definition/output-defaults.ts +6 -0
- package/src/project-definition/output-validation.ts +54 -0
- package/src/project-definition/project-definition-validation.ts +123 -0
- package/src/project-definition/project-definition.ts +184 -0
- package/src/project-run/aggregation.ts +90 -0
- package/src/project-run/check-execution/callback.ts +106 -0
- package/src/project-run/check-execution/dependencies.ts +70 -0
- package/src/project-run/check-execution/execution-finalization.ts +177 -0
- package/src/project-run/check-execution/execution-settlement.ts +147 -0
- package/src/project-run/check-execution/messages.ts +46 -0
- package/src/project-run/check-execution/plan.ts +46 -0
- package/src/project-run/check-execution/preflight-result.ts +131 -0
- package/src/project-run/check-execution/preflight.ts +321 -0
- package/src/project-run/check-execution/resolved-checks.ts +285 -0
- package/src/project-run/check-execution/terminal-result.ts +74 -0
- package/src/project-run/completion.ts +263 -0
- package/src/project-run/controls/contract.ts +24 -0
- package/src/project-run/controls/outputs-override-validation.ts +86 -0
- package/src/project-run/controls/validation-result.ts +12 -0
- package/src/project-run/controls/validation.ts +176 -0
- package/src/project-run/diagnostic-logging/diagnostic-detail-rendering.ts +223 -0
- package/src/project-run/diagnostic-logging/logger.ts +325 -0
- package/src/project-run/invocation-creation.ts +160 -0
- package/src/project-run/invocation.ts +303 -0
- package/src/project-run/machine-publication.ts +23 -0
- package/src/project-run/output-configuration.ts +24 -0
- package/src/project-run/output-status.ts +69 -0
- package/src/project-run/progress-rendering/presentation.ts +189 -0
- package/src/project-run/progress-rendering/renderer-formatting.ts +141 -0
- package/src/project-run/progress-rendering/renderer-lifecycle.ts +152 -0
- package/src/project-run/progress-rendering/renderer.ts +68 -0
- package/src/project-run/project-context.ts +11 -0
- package/src/project-run/result.ts +175 -0
- package/src/project-run/run.ts +50 -0
- package/src/project-run/task-scheduler/execution-state.ts +153 -0
- package/src/project-run/task-scheduler/graph-validation.ts +176 -0
- package/src/project-run/task-scheduler/graph.ts +185 -0
- package/src/project-run/task-scheduler/scheduler-admission-decision.ts +177 -0
- package/src/project-run/task-scheduler/scheduler-blocker-summary.ts +42 -0
- package/src/project-run/task-scheduler/scheduler-decision-inspection.ts +199 -0
- package/src/project-run/task-scheduler/scheduler-decision-model.ts +158 -0
- package/src/project-run/task-scheduler/scheduler-decision.ts +103 -0
- package/src/project-run/task-scheduler/scheduler.ts +228 -0
- package/third-party-licenses/momoa-3.3.12-LICENSE +201 -0
- package/types/check/check.d.ts +350 -0
- package/types/check/descriptor-validation.d.ts +18 -0
- package/types/check/descriptor.d.ts +5 -0
- package/types/check/inherited-collection.d.ts +35 -0
- package/types/check/options-snapshot.d.ts +2 -0
- package/types/check-settlement/fact-validation.d.ts +14 -0
- package/types/check-settlement/facts.d.ts +19 -0
- package/types/check-settlement/outcome-normalization.d.ts +9 -0
- package/types/check-settlement/record-store.d.ts +14 -0
- package/types/check-settlement/session.d.ts +41 -0
- package/types/data-boundary/canonical-data.d.ts +13 -0
- package/types/data-boundary/canonical-json.d.ts +6 -0
- package/types/data-boundary/closed-values.d.ts +8 -0
- package/types/data-boundary/value-shapes.d.ts +4 -0
- package/types/finding-waivers/reconciliation.d.ts +66 -0
- package/types/index.d.ts +57 -0
- package/types/machine-output/v4/atomic-publication.d.ts +9 -0
- package/types/machine-output/v4/freeze-publication-value.d.ts +6 -0
- package/types/machine-output/v4/projection.d.ts +7 -0
- package/types/machine-output/v4/publication-invariants.d.ts +3 -0
- package/types/machine-output/v4/publication-model.d.ts +15 -0
- package/types/machine-output/v4/publish.d.ts +7 -0
- package/types/machine-output/v4/records-fingerprint.d.ts +4 -0
- package/types/machine-output/v4/schema-identities.d.ts +7 -0
- package/types/machine-output/v4/schema.d.ts +44 -0
- package/types/machine-output/v4/serializers.d.ts +6 -0
- package/types/machine-output/v4/validation-result.d.ts +26 -0
- package/types/machine-output/v4/validation.d.ts +6 -0
- package/types/package-checks/code-quality-findings/policy.d.ts +20 -0
- package/types/package-checks/duplicate-detection/area-policy.d.ts +3 -0
- package/types/package-checks/duplicate-detection/cache/cache-contract.d.ts +48 -0
- package/types/package-checks/duplicate-detection/cache/identity.d.ts +17 -0
- package/types/package-checks/duplicate-detection/cache/key.d.ts +4 -0
- package/types/package-checks/duplicate-detection/cache/payload.d.ts +4 -0
- package/types/package-checks/duplicate-detection/cache/store.d.ts +18 -0
- package/types/package-checks/duplicate-detection/default-check.d.ts +11 -0
- package/types/package-checks/duplicate-detection/execution.d.ts +11 -0
- package/types/package-checks/duplicate-detection/final-data.d.ts +5 -0
- package/types/package-checks/duplicate-detection/jscpd/availability.d.ts +19 -0
- package/types/package-checks/duplicate-detection/jscpd/command-path.d.ts +1 -0
- package/types/package-checks/duplicate-detection/jscpd/command-resolution.d.ts +23 -0
- package/types/package-checks/duplicate-detection/jscpd/json-report.d.ts +2 -0
- package/types/package-checks/duplicate-detection/jscpd/scanner-contract.d.ts +11 -0
- package/types/package-checks/duplicate-detection/jscpd/scanner.d.ts +21 -0
- package/types/package-checks/duplicate-detection/jscpd/scoped-fragments.d.ts +4 -0
- package/types/package-checks/duplicate-detection/measurement-model.d.ts +36 -0
- package/types/package-checks/duplicate-detection/measurement.d.ts +14 -0
- package/types/package-checks/duplicate-detection/options-resolution.d.ts +3 -0
- package/types/package-checks/duplicate-detection/options-validation.d.ts +1 -0
- package/types/package-checks/duplicate-detection/options.d.ts +65 -0
- package/types/package-checks/duplicate-detection/project-revision.d.ts +1 -0
- package/types/package-checks/duplicate-detection/records.d.ts +22 -0
- package/types/package-checks/file-metrics/constructor.d.ts +11 -0
- package/types/package-checks/file-metrics/execution.d.ts +11 -0
- package/types/package-checks/file-metrics/final-data.d.ts +5 -0
- package/types/package-checks/file-metrics/measurement-model.d.ts +12 -0
- package/types/package-checks/file-metrics/measurement.d.ts +13 -0
- package/types/package-checks/file-metrics/options-resolution.d.ts +3 -0
- package/types/package-checks/file-metrics/options-validation.d.ts +3 -0
- package/types/package-checks/file-metrics/options.d.ts +75 -0
- package/types/package-checks/file-metrics/records.d.ts +43 -0
- package/types/package-checks/file-metrics/scc/availability.d.ts +18 -0
- package/types/package-checks/file-metrics/scc/csv.d.ts +1 -0
- package/types/package-checks/file-metrics/scc/parser.d.ts +25 -0
- package/types/package-checks/file-metrics/scc/scanner.d.ts +14 -0
- package/types/package-checks/final-data-parsing.d.ts +9 -0
- package/types/package-checks/function-metrics/analysis.d.ts +10 -0
- package/types/package-checks/function-metrics/constructor.d.ts +11 -0
- package/types/package-checks/function-metrics/execution.d.ts +7 -0
- package/types/package-checks/function-metrics/final-data.d.ts +5 -0
- package/types/package-checks/function-metrics/lizard/availability.d.ts +11 -0
- package/types/package-checks/function-metrics/lizard/csv.d.ts +1 -0
- package/types/package-checks/function-metrics/lizard/parser.d.ts +17 -0
- package/types/package-checks/function-metrics/lizard/scanner.d.ts +15 -0
- package/types/package-checks/function-metrics/measurement-model.d.ts +26 -0
- package/types/package-checks/function-metrics/measurement.d.ts +21 -0
- package/types/package-checks/function-metrics/options-resolution.d.ts +3 -0
- package/types/package-checks/function-metrics/options-validation.d.ts +3 -0
- package/types/package-checks/function-metrics/options.d.ts +76 -0
- package/types/package-checks/function-metrics/records.d.ts +37 -0
- package/types/package-checks/function-metrics/target-files.d.ts +3 -0
- package/types/package-checks/host-environment/error-message.d.ts +1 -0
- package/types/package-checks/host-environment/filesystem.d.ts +19 -0
- package/types/package-checks/host-environment/git.d.ts +13 -0
- package/types/package-checks/host-environment/path.d.ts +3 -0
- package/types/package-checks/host-environment/process/command.d.ts +7 -0
- package/types/package-checks/host-environment/process/contract.d.ts +50 -0
- package/types/package-checks/host-environment/process/env.d.ts +16 -0
- package/types/package-checks/host-environment/process/failure.d.ts +4 -0
- package/types/package-checks/host-environment/process/result.d.ts +2 -0
- package/types/package-checks/host-environment/process/runner.d.ts +3 -0
- package/types/package-checks/json-document/strict-document.d.ts +35 -0
- package/types/package-checks/json-schema-validation/default-check.d.ts +11 -0
- package/types/package-checks/json-schema-validation/execution-stages.d.ts +27 -0
- package/types/package-checks/json-schema-validation/final-data.d.ts +15 -0
- package/types/package-checks/json-schema-validation/issue-collector.d.ts +12 -0
- package/types/package-checks/json-schema-validation/json-schema-validation.d.ts +42 -0
- package/types/package-checks/json-schema-validation/options-resolution.d.ts +3 -0
- package/types/package-checks/json-schema-validation/options-validation.d.ts +2 -0
- package/types/package-checks/json-schema-validation/options.d.ts +53 -0
- package/types/package-checks/json-schema-validation/reference-resolver.d.ts +23 -0
- package/types/package-checks/json-schema-validation/remote-response.d.ts +2 -0
- package/types/package-checks/json-schema-validation/schema-engine.d.ts +33 -0
- package/types/package-checks/json-schema-validation/schema-policy.d.ts +17 -0
- package/types/package-checks/json-validation/default-check.d.ts +11 -0
- package/types/package-checks/json-validation/final-data.d.ts +10 -0
- package/types/package-checks/json-validation/json-validation.d.ts +28 -0
- package/types/package-checks/json-validation/options-resolution.d.ts +3 -0
- package/types/package-checks/json-validation/options-validation.d.ts +2 -0
- package/types/package-checks/json-validation/options.d.ts +13 -0
- package/types/package-checks/maintenance-reminders/assessment-results.d.ts +10 -0
- package/types/package-checks/maintenance-reminders/final-data.d.ts +47 -0
- package/types/package-checks/maintenance-reminders/maintenance-reminders.d.ts +111 -0
- package/types/package-checks/maintenance-reminders/maintenance-support.d.ts +7 -0
- package/types/package-checks/maintenance-reminders/measurement.d.ts +10 -0
- package/types/package-checks/maintenance-reminders/options-validation.d.ts +3 -0
- package/types/package-checks/markdown-link-validation/default-check.d.ts +27 -0
- package/types/package-checks/markdown-link-validation/execution.d.ts +12 -0
- package/types/package-checks/markdown-link-validation/filesystem-probes.d.ts +10 -0
- package/types/package-checks/markdown-link-validation/final-data.d.ts +10 -0
- package/types/package-checks/markdown-link-validation/local-resolution.d.ts +92 -0
- package/types/package-checks/markdown-link-validation/local-resolver.d.ts +5 -0
- package/types/package-checks/markdown-link-validation/markdown-parser.d.ts +37 -0
- package/types/package-checks/markdown-link-validation/options-resolution.d.ts +3 -0
- package/types/package-checks/markdown-link-validation/options-validation.d.ts +2 -0
- package/types/package-checks/markdown-link-validation/options.d.ts +43 -0
- package/types/package-checks/markdown-link-validation/records.d.ts +37 -0
- package/types/package-checks/markdown-link-validation/resolver-engine.d.ts +15 -0
- package/types/package-checks/markdown-link-validation/target-descriptor.d.ts +5 -0
- package/types/package-checks/markdown-link-validation/traversal-result.d.ts +12 -0
- package/types/package-checks/project-files/collection.d.ts +9 -0
- package/types/package-checks/project-files/config-glob.d.ts +5 -0
- package/types/package-checks/project-files/configuration.d.ts +31 -0
- package/types/package-checks/project-files/exact-input-measurement.d.ts +12 -0
- package/types/package-checks/project-files/file-fingerprint.d.ts +7 -0
- package/types/package-checks/project-files/gitlink-revision.d.ts +9 -0
- package/types/package-checks/project-files/gitlink-worktree.d.ts +26 -0
- package/types/package-checks/project-files/input-eligibility.d.ts +7 -0
- package/types/package-checks/project-files/reported-path.d.ts +1 -0
- package/types/package-checks/project-files/revision-paths.d.ts +12 -0
- package/types/package-checks/project-files/revision-worktree-files.d.ts +5 -0
- package/types/project-definition/check-tree/authoring.d.ts +41 -0
- package/types/project-definition/check-tree/materialization.d.ts +4 -0
- package/types/project-definition/check-tree/resolution.d.ts +25 -0
- package/types/project-definition/output-defaults.d.ts +14 -0
- package/types/project-definition/output-validation.d.ts +3 -0
- package/types/project-definition/project-definition-validation.d.ts +6 -0
- package/types/project-definition/project-definition.d.ts +88 -0
- package/types/project-run/aggregation.d.ts +7 -0
- package/types/project-run/check-execution/callback.d.ts +24 -0
- package/types/project-run/check-execution/dependencies.d.ts +9 -0
- package/types/project-run/check-execution/execution-finalization.d.ts +18 -0
- package/types/project-run/check-execution/execution-settlement.d.ts +41 -0
- package/types/project-run/check-execution/messages.d.ts +3 -0
- package/types/project-run/check-execution/plan.d.ts +10 -0
- package/types/project-run/check-execution/preflight-result.d.ts +23 -0
- package/types/project-run/check-execution/preflight.d.ts +27 -0
- package/types/project-run/check-execution/resolved-checks.d.ts +51 -0
- package/types/project-run/check-execution/terminal-result.d.ts +27 -0
- package/types/project-run/completion.d.ts +14 -0
- package/types/project-run/controls/contract.d.ts +24 -0
- package/types/project-run/controls/outputs-override-validation.d.ts +3 -0
- package/types/project-run/controls/validation-result.d.ts +14 -0
- package/types/project-run/controls/validation.d.ts +3 -0
- package/types/project-run/diagnostic-logging/diagnostic-detail-rendering.d.ts +11 -0
- package/types/project-run/diagnostic-logging/logger.d.ts +33 -0
- package/types/project-run/invocation-creation.d.ts +12 -0
- package/types/project-run/invocation.d.ts +34 -0
- package/types/project-run/machine-publication.d.ts +10 -0
- package/types/project-run/output-configuration.d.ts +3 -0
- package/types/project-run/output-status.d.ts +21 -0
- package/types/project-run/progress-rendering/presentation.d.ts +28 -0
- package/types/project-run/progress-rendering/renderer-formatting.d.ts +23 -0
- package/types/project-run/progress-rendering/renderer-lifecycle.d.ts +24 -0
- package/types/project-run/progress-rendering/renderer.d.ts +44 -0
- package/types/project-run/project-context.d.ts +7 -0
- package/types/project-run/result.d.ts +99 -0
- package/types/project-run/run.d.ts +18 -0
- package/types/project-run/task-scheduler/execution-state.d.ts +67 -0
- package/types/project-run/task-scheduler/graph-validation.d.ts +11 -0
- package/types/project-run/task-scheduler/graph.d.ts +40 -0
- package/types/project-run/task-scheduler/scheduler-admission-decision.d.ts +8 -0
- package/types/project-run/task-scheduler/scheduler-blocker-summary.d.ts +4 -0
- package/types/project-run/task-scheduler/scheduler-decision-inspection.d.ts +24 -0
- package/types/project-run/task-scheduler/scheduler-decision-model.d.ts +94 -0
- package/types/project-run/task-scheduler/scheduler-decision.d.ts +8 -0
- package/types/project-run/task-scheduler/scheduler.d.ts +3 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/preflight.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CheckMessage, CheckOutcome } from \"../../check/check.ts\";\nimport type { NormalizedCheck } from \"../../project-definition/project-definition.ts\";\nimport { snapshotJsonObject } from \"../../check/options-snapshot.ts\";\nimport {\n diagnosticTags,\n summarizeDiagnosticValue,\n type DiagnosticLogger\n} from \"../diagnostic-logging/logger.ts\";\nimport { parseCheckPreflightResult, type ParsedCheckPreflightResult } from \"./preflight-result.ts\";\n\nconst EMPTY_MESSAGES: readonly CheckMessage[] = Object.freeze([]);\nconst INERT_SIGNAL = new AbortController().signal;\n\nexport type PreparedCheck = Omit<NormalizedCheck, \"options\" | \"preflight\"> &\n Readonly<{ readonly options: object; readonly preflightMessages: readonly CheckMessage[] }>;\n\ntype BlockedCheck = Pick<NormalizedCheck, \"definition\" | \"visibility\"> &\n Readonly<{ readonly preflightMessages: readonly CheckMessage[] }>;\n\nexport type ReadyCheckPreflightResolution = Readonly<{\n readonly kind: \"ready\";\n readonly check: PreparedCheck;\n}>;\n\nexport type BlockedCheckPreflightResolution = Readonly<{\n readonly kind: \"blocked\";\n readonly check: BlockedCheck;\n readonly outcome: CheckOutcome;\n}>;\n\nexport type CheckPreflightResolution =\n | ReadyCheckPreflightResolution\n | BlockedCheckPreflightResolution;\n\ntype PreflightResolutionResult =\n | \"skipped\"\n | \"prepared\"\n | \"continued\"\n | \"blocked\"\n | \"cancelled-before-callback\"\n | \"cancelled-after-callback\"\n | \"cancelled-after-throw\"\n | \"threw\"\n | \"malformed\";\n\ntype PrepareCheckInput = Readonly<{\n readonly check: NormalizedCheck;\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly signal: AbortSignal | undefined;\n}>;\n\ntype PreflightInvocation =\n | Readonly<{ readonly kind: \"returned\"; readonly output: unknown }>\n | Readonly<{ readonly kind: \"threw\"; readonly error: unknown }>;\n\n/** Completes the sequential invocation-wide barrier before any Check enters the Task graph. */\nexport async function prepareChecks(\n input: Readonly<{\n readonly checks: readonly NormalizedCheck[];\n readonly diagnosticLogger?: DiagnosticLogger;\n readonly signal: AbortSignal | undefined;\n }>\n): Promise<readonly CheckPreflightResolution[]> {\n const resolutions: CheckPreflightResolution[] = [];\n for (const check of input.checks) {\n resolutions.push(\n await prepareCheck({\n check,\n diagnosticLogger: input.diagnosticLogger,\n signal: input.signal\n })\n );\n }\n return Object.freeze(resolutions);\n}\n\nasync function prepareCheck(input: PrepareCheckInput): Promise<CheckPreflightResolution> {\n if (input.signal?.aborted) {\n return observeBlockedPreflight({\n check: input.check,\n diagnosticLogger: input.diagnosticLogger,\n details: {},\n result: \"cancelled-before-callback\",\n reasonCode: \"execution-cancelled\"\n });\n }\n if (input.check.preflight === undefined) {\n return resolveAuthoredOptions(input);\n }\n return resolvePreflightInvocation(input, await invokePreflight(input.check, input.signal));\n}\n\nfunction resolveAuthoredOptions(input: PrepareCheckInput): CheckPreflightResolution {\n const resolution = readyResolution({\n authoredCheck: input.check,\n messages: EMPTY_MESSAGES,\n preparedOptions: input.check.options\n });\n observeReadyOrMalformedResolution(\n input.diagnosticLogger,\n input.check.definition.checkId,\n resolution,\n \"skipped\",\n { source: \"authored\" }\n );\n return resolution;\n}\n\nfunction resolvePreflightInvocation(\n input: PrepareCheckInput,\n invocation: PreflightInvocation\n): CheckPreflightResolution {\n if (invocation.kind === \"threw\") {\n return observeBlockedPreflight({\n check: input.check,\n diagnosticLogger: input.diagnosticLogger,\n details: { error: invocation.error },\n result: input.signal?.aborted ? \"cancelled-after-throw\" : \"threw\",\n reasonCode: input.signal?.aborted ? \"execution-cancelled\" : \"preflight-threw\"\n });\n }\n return resolveReturnedPreflight(input, invocation.output);\n}\n\nfunction resolveReturnedPreflight(\n input: PrepareCheckInput,\n preflightOutput: unknown\n): CheckPreflightResolution {\n if (input.signal?.aborted) {\n return observeBlockedPreflight({\n check: input.check,\n diagnosticLogger: input.diagnosticLogger,\n details: { raw: preflightOutput },\n result: \"cancelled-after-callback\",\n reasonCode: \"execution-cancelled\"\n });\n }\n const preflightResult = parseCheckPreflightResult(preflightOutput);\n if (preflightResult === undefined) {\n return observeBlockedPreflight({\n check: input.check,\n diagnosticLogger: input.diagnosticLogger,\n details: { raw: preflightOutput },\n result: \"malformed\",\n reasonCode: \"invalid-preflight-result\"\n });\n }\n if (preflightResult.status === \"failure\" && preflightResult.action === \"block\") {\n return resolveBlockedPreflightResult(input, preflightResult);\n }\n return resolveReadyPreflightResult(input, preflightOutput, preflightResult);\n}\n\nfunction resolveBlockedPreflightResult(\n input: PrepareCheckInput,\n preflightResult: Extract<ParsedCheckPreflightResult, { readonly action: \"block\" }>\n): CheckPreflightResolution {\n const resolution = blockedResolution({\n check: input.check,\n messages: preflightResult.messages,\n reasonCode: preflightResult.reason.code\n });\n observePreflightResolution(\n input.diagnosticLogger,\n input.check.definition.checkId,\n resolution,\n \"blocked\",\n {\n ...(preflightResult.messages.length === 0 ? {} : { messages: preflightResult.messages }),\n reason: preflightResult.reason\n }\n );\n return resolution;\n}\n\nfunction resolveReadyPreflightResult(\n input: PrepareCheckInput,\n preflightOutput: unknown,\n preflightResult: Exclude<ParsedCheckPreflightResult, { readonly action: \"block\" }>\n): CheckPreflightResolution {\n const checkId = input.check.definition.checkId;\n const result = preflightResult.status === \"success\" ? \"prepared\" : \"continued\";\n const resolution = readyResolution({\n authoredCheck: input.check,\n messages: preflightResult.messages,\n preparedOptions:\n preflightResult.status === \"success\"\n ? preflightResult.preparedOptions\n : preflightResult.fallback\n });\n observeReadyOrMalformedResolution(input.diagnosticLogger, checkId, resolution, result, {\n messages: preflightResult.messages,\n ...(preflightResult.status === \"success\" ? {} : { reason: preflightResult.reason }),\n raw: preflightOutput\n });\n return resolution;\n}\n\nasync function invokePreflight(\n check: NormalizedCheck,\n signal: AbortSignal | undefined\n): Promise<PreflightInvocation> {\n try {\n return Object.freeze({\n kind: \"returned\",\n output: await check.preflight!(check.options, signal ?? INERT_SIGNAL)\n });\n } catch (error) {\n return Object.freeze({ kind: \"threw\", error });\n }\n}\n\nfunction observeBlockedPreflight(\n input: Readonly<{\n readonly check: NormalizedCheck;\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly details: Readonly<Record<string, unknown>>;\n readonly result: PreflightResolutionResult;\n readonly reasonCode: string;\n }>\n): BlockedCheckPreflightResolution {\n const resolution = blockedResolution({\n check: input.check,\n messages: EMPTY_MESSAGES,\n reasonCode: input.reasonCode\n });\n observePreflightResolution(\n input.diagnosticLogger,\n input.check.definition.checkId,\n resolution,\n input.result,\n input.details\n );\n return resolution;\n}\n\nfunction observeReadyOrMalformedResolution(\n diagnosticLogger: DiagnosticLogger | undefined,\n checkId: string,\n resolution: CheckPreflightResolution,\n result: \"skipped\" | \"prepared\" | \"continued\",\n details: Readonly<Record<string, unknown>>\n): void {\n if (resolution.kind === \"blocked\") {\n observePreflightResolution(diagnosticLogger, checkId, resolution, \"malformed\", {\n raw: \"raw\" in details ? details.raw : summarizeDiagnosticValue(details)\n });\n return;\n }\n const messages = \"messages\" in details ? details.messages : EMPTY_MESSAGES;\n observePreflightResolution(diagnosticLogger, checkId, resolution, result, {\n ...(Array.isArray(messages) && messages.length > 0 ? { messages } : {}),\n options: summarizeDiagnosticValue(resolution.check.options),\n ...(\"reason\" in details ? { reason: details.reason } : {}),\n ...(\"source\" in details ? { source: details.source } : {})\n });\n}\n\nfunction observePreflightResolution(\n diagnosticLogger: DiagnosticLogger | undefined,\n checkId: string,\n resolution: CheckPreflightResolution,\n result: PreflightResolutionResult,\n details: Readonly<Record<string, unknown>>\n): void {\n diagnosticLogger?.observe({\n event: \"preflight.resolved\",\n tags: diagnosticTags(`CHECK:${checkId}`, \"PREFLIGHT\", result.toUpperCase()),\n details: {\n ...details,\n ...(resolution.kind === \"blocked\" ? { outcome: resolution.outcome } : {})\n }\n });\n}\n\nfunction readyResolution(\n input: Readonly<{\n readonly authoredCheck: NormalizedCheck;\n readonly messages: readonly CheckMessage[];\n readonly preparedOptions: unknown;\n }>\n): CheckPreflightResolution {\n const preparedOptions = snapshotJsonObject(input.preparedOptions);\n if (preparedOptions === undefined) {\n return blockedResolution({\n check: input.authoredCheck,\n messages: EMPTY_MESSAGES,\n reasonCode: \"invalid-preflight-result\"\n });\n }\n const { preflight: _preflight, ...check } = input.authoredCheck;\n return Object.freeze({\n kind: \"ready\",\n check: Object.freeze({\n ...check,\n options: preparedOptions,\n preflightMessages: input.messages\n })\n });\n}\n\nfunction blockedResolution(\n input: Readonly<{\n readonly check: NormalizedCheck;\n readonly messages: readonly CheckMessage[];\n readonly reasonCode: string;\n }>\n): BlockedCheckPreflightResolution {\n return Object.freeze({\n kind: \"blocked\",\n check: Object.freeze({\n definition: input.check.definition,\n preflightMessages: input.messages,\n visibility: input.check.visibility\n }),\n outcome: Object.freeze({\n status: \"unavailable\",\n reason: Object.freeze({ code: input.reasonCode })\n })\n });\n}\n"]}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { createCoreCheckSession } from "../../check-settlement/session.mjs";
|
|
2
|
+
import { diagnosticTags, summarizeDiagnosticValue } from "../diagnostic-logging/logger.mjs";
|
|
3
|
+
import { prepareTaskGraph } from "../task-scheduler/graph.mjs";
|
|
4
|
+
import { runTaskGraph } from "../task-scheduler/scheduler.mjs";
|
|
5
|
+
import { executeCheckCallback } from "./callback.mjs";
|
|
6
|
+
import { createCheckDependencies } from "./dependencies.mjs";
|
|
7
|
+
import { CheckExecutionInvariantFailure, recordSettledCheck, settleCallback } from "./execution-settlement.mjs";
|
|
8
|
+
import { checkIdentity, closeCancelledExecution, closeResolvedChecks, trustedFailure } from "./execution-finalization.mjs";
|
|
9
|
+
import { planStaticCheckGraph } from "./plan.mjs";
|
|
10
|
+
import { prepareChecks } from "./preflight.mjs";
|
|
11
|
+
const INERT_SIGNAL = new AbortController().signal;
|
|
12
|
+
const SYSTEM_MONOTONIC_CLOCK = Object.freeze({ now: () => performance.now() });
|
|
13
|
+
/**
|
|
14
|
+
* Runs the already normalized executable Check collection through one generic
|
|
15
|
+
* Task per Check. Graph validation happens before Core scopes or callbacks.
|
|
16
|
+
*/
|
|
17
|
+
export async function executeResolvedChecks(input) {
|
|
18
|
+
const prepared = await prepareResolvedCheckExecution(input);
|
|
19
|
+
// The barrier is execution-phase work. A signal received while it runs must close this
|
|
20
|
+
// phase as cancelled even when every preflight already blocked and the scheduler graph is empty.
|
|
21
|
+
if (input.signal?.aborted) {
|
|
22
|
+
return closeCancelledExecution({
|
|
23
|
+
normalizedChecks: input.checks,
|
|
24
|
+
preparedChecks: prepared.readyChecks,
|
|
25
|
+
state: prepared.state
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
const readyPreflightByCheckId = new Map(prepared.readyPreflights.map((preflight) => [preflight.check.definition.checkId, preflight]));
|
|
29
|
+
const graph = planStaticCheckGraph(prepared.readyChecks, {
|
|
30
|
+
alreadySettledCheckIds: prepared.blockedCheckIds
|
|
31
|
+
});
|
|
32
|
+
let graphRun;
|
|
33
|
+
try {
|
|
34
|
+
graphRun = await runTaskGraph({
|
|
35
|
+
graph,
|
|
36
|
+
maxParallel: input.maxParallel,
|
|
37
|
+
diagnosticLogger: input.diagnosticLogger,
|
|
38
|
+
signal: input.signal,
|
|
39
|
+
execute: (task, context) => {
|
|
40
|
+
const preflight = readyPreflightByCheckId.get(task.id);
|
|
41
|
+
if (preflight === undefined) {
|
|
42
|
+
throw new CheckExecutionInvariantFailure("Task graph has no prepared Check");
|
|
43
|
+
}
|
|
44
|
+
return executeCheck({
|
|
45
|
+
...prepared.state,
|
|
46
|
+
preflight,
|
|
47
|
+
clock: input.clock ?? SYSTEM_MONOTONIC_CLOCK,
|
|
48
|
+
project: input.project,
|
|
49
|
+
signal: context.signal ?? INERT_SIGNAL
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
throw trustedFailure(error);
|
|
56
|
+
}
|
|
57
|
+
return closeResolvedChecks({
|
|
58
|
+
allChecks: input.checks,
|
|
59
|
+
graphRun,
|
|
60
|
+
readyChecks: prepared.readyChecks,
|
|
61
|
+
state: prepared.state
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
async function prepareResolvedCheckExecution(input) {
|
|
65
|
+
prepareTaskGraph(planStaticCheckGraph(input.checks), input.maxParallel);
|
|
66
|
+
const preflights = await prepareChecks({
|
|
67
|
+
checks: input.checks,
|
|
68
|
+
diagnosticLogger: input.diagnosticLogger,
|
|
69
|
+
signal: input.signal
|
|
70
|
+
});
|
|
71
|
+
const state = createExecutionState({
|
|
72
|
+
checks: input.checks,
|
|
73
|
+
diagnosticLogger: input.diagnosticLogger,
|
|
74
|
+
lifecycle: input.lifecycle
|
|
75
|
+
});
|
|
76
|
+
const partition = settlePreflightResolutions(state, preflights);
|
|
77
|
+
return Object.freeze({ ...partition, state });
|
|
78
|
+
}
|
|
79
|
+
function createExecutionState(input) {
|
|
80
|
+
return {
|
|
81
|
+
diagnosticLogger: input.diagnosticLogger,
|
|
82
|
+
settledFactsByCheckId: new Map(),
|
|
83
|
+
lifecycle: input.lifecycle,
|
|
84
|
+
session: createCoreCheckSession(input.checks.map(({ definition }) => Object.freeze({ definition })))
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function settlePreflightResolutions(state, resolutions) {
|
|
88
|
+
const readyPreflights = [];
|
|
89
|
+
const blockedCheckIds = new Set();
|
|
90
|
+
for (const resolution of resolutions) {
|
|
91
|
+
if (resolution.kind === "ready") {
|
|
92
|
+
readyPreflights.push(resolution);
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
blockedCheckIds.add(resolution.check.definition.checkId);
|
|
96
|
+
settleBlockedPreflight(state, resolution);
|
|
97
|
+
}
|
|
98
|
+
return Object.freeze({
|
|
99
|
+
blockedCheckIds,
|
|
100
|
+
readyChecks: Object.freeze(readyPreflights.map((preflight) => preflight.check)),
|
|
101
|
+
readyPreflights: Object.freeze(readyPreflights)
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
function settleBlockedPreflight(state, preflight) {
|
|
105
|
+
const scope = state.session.openCheckScope(preflight.check.definition.checkId);
|
|
106
|
+
const outcome = scope.settleProduct(preflight.outcome);
|
|
107
|
+
recordSettledCheck({
|
|
108
|
+
check: checkIdentity(preflight.check),
|
|
109
|
+
durationMs: null,
|
|
110
|
+
messages: preflight.check.preflightMessages,
|
|
111
|
+
outcome,
|
|
112
|
+
phase: "preflight",
|
|
113
|
+
state
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
async function executeCheck(input) {
|
|
117
|
+
const check = input.preflight.check;
|
|
118
|
+
const checkId = check.definition.checkId;
|
|
119
|
+
const scope = input.session.openCheckScope(checkId);
|
|
120
|
+
const identity = checkIdentity(check);
|
|
121
|
+
input.diagnosticLogger?.observe({
|
|
122
|
+
event: "check.started",
|
|
123
|
+
tags: diagnosticTags(`CHECK:${checkId}`, "EXECUTION", "STARTED"),
|
|
124
|
+
details: {
|
|
125
|
+
dependencies: check.dependsOn,
|
|
126
|
+
displayName: check.definition.displayName,
|
|
127
|
+
options: summarizeDiagnosticValue(check.options)
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
emitStarted(input.lifecycle, identity);
|
|
131
|
+
const startedAt = input.clock.now();
|
|
132
|
+
const callback = await executeCheckCallback({
|
|
133
|
+
check,
|
|
134
|
+
dependencies: createCheckDependencies({
|
|
135
|
+
checkId,
|
|
136
|
+
diagnosticLogger: input.diagnosticLogger,
|
|
137
|
+
directDependencyIds: check.dependsOn,
|
|
138
|
+
session: input.session
|
|
139
|
+
}),
|
|
140
|
+
diagnosticLogger: input.diagnosticLogger,
|
|
141
|
+
project: input.project,
|
|
142
|
+
scope,
|
|
143
|
+
signal: input.signal
|
|
144
|
+
});
|
|
145
|
+
const settled = settleCallback({
|
|
146
|
+
callback,
|
|
147
|
+
checkId,
|
|
148
|
+
diagnosticLogger: input.diagnosticLogger,
|
|
149
|
+
preflightMessages: check.preflightMessages,
|
|
150
|
+
scope
|
|
151
|
+
});
|
|
152
|
+
recordSettledCheck({
|
|
153
|
+
check: identity,
|
|
154
|
+
durationMs: durationSince(startedAt, input.clock),
|
|
155
|
+
messages: settled.messages,
|
|
156
|
+
outcome: settled.outcome,
|
|
157
|
+
phase: "execution",
|
|
158
|
+
state: input
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
function emitStarted(lifecycle, check) {
|
|
162
|
+
lifecycle?.started(Object.freeze({ checkId: check.checkId, displayName: check.displayName }));
|
|
163
|
+
}
|
|
164
|
+
function durationSince(startedAt, clock) {
|
|
165
|
+
const elapsed = clock.now() - startedAt;
|
|
166
|
+
return Number.isFinite(elapsed) && elapsed >= 0 ? elapsed : 0;
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=resolved-checks.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolved-checks.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/resolved-checks.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n CheckMessage,\n CheckOutcome,\n CheckProjectContext,\n CheckVisibility\n} from \"../../check/check.ts\";\nimport type { NormalizedCheck } from \"../../project-definition/project-definition.ts\";\nimport { createCoreCheckSession, type CoreCheckSession } from \"../../check-settlement/session.ts\";\nimport {\n diagnosticTags,\n summarizeDiagnosticValue,\n type DiagnosticLogger\n} from \"../diagnostic-logging/logger.ts\";\nimport { prepareTaskGraph } from \"../task-scheduler/graph.ts\";\nimport { runTaskGraph } from \"../task-scheduler/scheduler.ts\";\nimport { executeCheckCallback } from \"./callback.ts\";\nimport { createCheckDependencies } from \"./dependencies.ts\";\nimport {\n CheckExecutionInvariantFailure,\n recordSettledCheck,\n settleCallback,\n type CheckExecutionSettlementState,\n type CheckIdentity,\n type SettledCheckFacts\n} from \"./execution-settlement.ts\";\nimport {\n checkIdentity,\n closeCancelledExecution,\n closeResolvedChecks,\n trustedFailure\n} from \"./execution-finalization.ts\";\nimport { planStaticCheckGraph } from \"./plan.ts\";\nimport {\n prepareChecks,\n type CheckPreflightResolution,\n type PreparedCheck,\n type ReadyCheckPreflightResolution\n} from \"./preflight.ts\";\n\nconst INERT_SIGNAL = new AbortController().signal;\nconst SYSTEM_MONOTONIC_CLOCK: CheckExecutionClock = Object.freeze({ now: () => performance.now() });\n\n/** Private Run handoff for Check lifecycle presentation and accounting. */\nexport type CheckExecutionLifecycle = Readonly<{\n readonly started: (fact: CheckStartedFact) => void;\n readonly settled: (fact: CheckSettledFact) => void;\n}>;\n\n/** Package-private monotonic clock seam for execution accounting. */\nexport type CheckExecutionClock = Readonly<{ now(): number }>;\n\nexport type CheckStartedFact = Readonly<{ checkId: string; displayName: string }>;\n\nexport type CheckSettledFact = CheckStartedFact &\n Readonly<{\n durationMs: number | null;\n messages: readonly CheckMessage[];\n outcome: CheckOutcome;\n visibility: CheckVisibility;\n }>;\n\ntype ResolvedCheckExecutionFacts = Readonly<{\n readonly checkDurations: readonly import(\"../result.ts\").CheckDuration[];\n readonly checkMessages: readonly import(\"../result.ts\").CheckRunMessage[];\n readonly snapshot: import(\"../../check-settlement/facts.ts\").CoreSnapshot;\n}>;\n\nexport type ResolvedCheckExecution =\n | (Readonly<{ readonly kind: \"completed\" }> & ResolvedCheckExecutionFacts)\n | (Readonly<{ readonly kind: \"cancelled\" }> & ResolvedCheckExecutionFacts);\n\nexport interface CheckExecutionState extends CheckExecutionSettlementState {\n readonly session: CoreCheckSession;\n}\n\ninterface ExecuteCheckInput extends CheckExecutionState {\n readonly preflight: ReadyCheckPreflightResolution;\n readonly clock: CheckExecutionClock;\n readonly project: CheckProjectContext;\n readonly signal: AbortSignal;\n}\n\ntype PreparedResolvedCheckExecution = Readonly<{\n readonly blockedCheckIds: ReadonlySet<string>;\n readonly readyChecks: readonly PreparedCheck[];\n readonly readyPreflights: readonly ReadyCheckPreflightResolution[];\n readonly state: CheckExecutionState;\n}>;\n\n/**\n * Runs the already normalized executable Check collection through one generic\n * Task per Check. Graph validation happens before Core scopes or callbacks.\n */\nexport async function executeResolvedChecks(\n input: Readonly<{\n readonly checks: readonly NormalizedCheck[];\n readonly maxParallel: number;\n readonly project: CheckProjectContext;\n readonly signal: AbortSignal | undefined;\n readonly clock?: CheckExecutionClock;\n readonly diagnosticLogger?: DiagnosticLogger;\n readonly lifecycle?: CheckExecutionLifecycle;\n }>\n): Promise<ResolvedCheckExecution> {\n const prepared = await prepareResolvedCheckExecution(input);\n // The barrier is execution-phase work. A signal received while it runs must close this\n // phase as cancelled even when every preflight already blocked and the scheduler graph is empty.\n if (input.signal?.aborted) {\n return closeCancelledExecution({\n normalizedChecks: input.checks,\n preparedChecks: prepared.readyChecks,\n state: prepared.state\n });\n }\n const readyPreflightByCheckId = new Map(\n prepared.readyPreflights.map((preflight) => [preflight.check.definition.checkId, preflight])\n );\n const graph = planStaticCheckGraph(prepared.readyChecks, {\n alreadySettledCheckIds: prepared.blockedCheckIds\n });\n let graphRun: Awaited<ReturnType<typeof runTaskGraph<void>>>;\n try {\n graphRun = await runTaskGraph({\n graph,\n maxParallel: input.maxParallel,\n diagnosticLogger: input.diagnosticLogger,\n signal: input.signal,\n execute: (task, context) => {\n const preflight = readyPreflightByCheckId.get(task.id);\n if (preflight === undefined) {\n throw new CheckExecutionInvariantFailure(\"Task graph has no prepared Check\");\n }\n return executeCheck({\n ...prepared.state,\n preflight,\n clock: input.clock ?? SYSTEM_MONOTONIC_CLOCK,\n project: input.project,\n signal: context.signal ?? INERT_SIGNAL\n });\n }\n });\n } catch (error) {\n throw trustedFailure(error);\n }\n\n return closeResolvedChecks({\n allChecks: input.checks,\n graphRun,\n readyChecks: prepared.readyChecks,\n state: prepared.state\n });\n}\n\nasync function prepareResolvedCheckExecution(\n input: Readonly<{\n readonly checks: readonly NormalizedCheck[];\n readonly diagnosticLogger?: DiagnosticLogger;\n readonly lifecycle?: CheckExecutionLifecycle;\n readonly maxParallel: number;\n readonly signal: AbortSignal | undefined;\n }>\n): Promise<PreparedResolvedCheckExecution> {\n prepareTaskGraph(planStaticCheckGraph(input.checks), input.maxParallel);\n const preflights = await prepareChecks({\n checks: input.checks,\n diagnosticLogger: input.diagnosticLogger,\n signal: input.signal\n });\n const state = createExecutionState({\n checks: input.checks,\n diagnosticLogger: input.diagnosticLogger,\n lifecycle: input.lifecycle\n });\n const partition = settlePreflightResolutions(state, preflights);\n return Object.freeze({ ...partition, state });\n}\n\nfunction createExecutionState(\n input: Readonly<{\n readonly checks: readonly NormalizedCheck[];\n readonly diagnosticLogger: DiagnosticLogger | undefined;\n readonly lifecycle: CheckExecutionLifecycle | undefined;\n }>\n): CheckExecutionState {\n return {\n diagnosticLogger: input.diagnosticLogger,\n settledFactsByCheckId: new Map<string, SettledCheckFacts>(),\n lifecycle: input.lifecycle,\n session: createCoreCheckSession(\n input.checks.map(({ definition }) => Object.freeze({ definition }))\n )\n };\n}\n\nfunction settlePreflightResolutions(\n state: CheckExecutionState,\n resolutions: readonly CheckPreflightResolution[]\n): Omit<PreparedResolvedCheckExecution, \"state\"> {\n const readyPreflights: ReadyCheckPreflightResolution[] = [];\n const blockedCheckIds = new Set<string>();\n for (const resolution of resolutions) {\n if (resolution.kind === \"ready\") {\n readyPreflights.push(resolution);\n continue;\n }\n blockedCheckIds.add(resolution.check.definition.checkId);\n settleBlockedPreflight(state, resolution);\n }\n return Object.freeze({\n blockedCheckIds,\n readyChecks: Object.freeze(readyPreflights.map((preflight) => preflight.check)),\n readyPreflights: Object.freeze(readyPreflights)\n });\n}\n\nfunction settleBlockedPreflight(\n state: CheckExecutionState,\n preflight: Extract<CheckPreflightResolution, { readonly kind: \"blocked\" }>\n): void {\n const scope = state.session.openCheckScope(preflight.check.definition.checkId);\n const outcome = scope.settleProduct(preflight.outcome);\n recordSettledCheck({\n check: checkIdentity(preflight.check),\n durationMs: null,\n messages: preflight.check.preflightMessages,\n outcome,\n phase: \"preflight\",\n state\n });\n}\n\nasync function executeCheck(input: ExecuteCheckInput): Promise<void> {\n const check = input.preflight.check;\n const checkId = check.definition.checkId;\n const scope = input.session.openCheckScope(checkId);\n const identity = checkIdentity(check);\n input.diagnosticLogger?.observe({\n event: \"check.started\",\n tags: diagnosticTags(`CHECK:${checkId}`, \"EXECUTION\", \"STARTED\"),\n details: {\n dependencies: check.dependsOn,\n displayName: check.definition.displayName,\n options: summarizeDiagnosticValue(check.options)\n }\n });\n emitStarted(input.lifecycle, identity);\n const startedAt = input.clock.now();\n const callback = await executeCheckCallback({\n check,\n dependencies: createCheckDependencies({\n checkId,\n diagnosticLogger: input.diagnosticLogger,\n directDependencyIds: check.dependsOn,\n session: input.session\n }),\n diagnosticLogger: input.diagnosticLogger,\n project: input.project,\n scope,\n signal: input.signal\n });\n const settled = settleCallback({\n callback,\n checkId,\n diagnosticLogger: input.diagnosticLogger,\n preflightMessages: check.preflightMessages,\n scope\n });\n recordSettledCheck({\n check: identity,\n durationMs: durationSince(startedAt, input.clock),\n messages: settled.messages,\n outcome: settled.outcome,\n phase: \"execution\",\n state: input\n });\n}\n\nfunction emitStarted(lifecycle: CheckExecutionLifecycle | undefined, check: CheckIdentity): void {\n lifecycle?.started(Object.freeze({ checkId: check.checkId, displayName: check.displayName }));\n}\n\nfunction durationSince(startedAt: number, clock: CheckExecutionClock): number {\n const elapsed = clock.now() - startedAt;\n return Number.isFinite(elapsed) && elapsed >= 0 ? elapsed : 0;\n}\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { hasRequiredAndOptionalRecordKeys, snapshotClosedRecord } from "../../data-boundary/closed-values.mjs";
|
|
2
|
+
import { parseCheckMessages } from "./messages.mjs";
|
|
3
|
+
/**
|
|
4
|
+
* Safely removes an optional terminal-message attachment from an otherwise
|
|
5
|
+
* closed author result. Any malformed attachment rejects the whole value so a
|
|
6
|
+
* valid prefix can never escape into lifecycle or Run result state.
|
|
7
|
+
*/
|
|
8
|
+
export function parseCheckTerminalResult(value) {
|
|
9
|
+
const terminal = snapshotClosedRecord(value);
|
|
10
|
+
if (terminal === undefined || typeof terminal.status !== "string")
|
|
11
|
+
return undefined;
|
|
12
|
+
const result = strippedTerminalResult(terminal);
|
|
13
|
+
if (result === undefined)
|
|
14
|
+
return undefined;
|
|
15
|
+
const messages = parseCheckMessages(terminal.messages);
|
|
16
|
+
return messages === undefined ? undefined : Object.freeze({ messages, result });
|
|
17
|
+
}
|
|
18
|
+
function strippedTerminalResult(terminal) {
|
|
19
|
+
switch (terminal.status) {
|
|
20
|
+
case "passed":
|
|
21
|
+
case "failed":
|
|
22
|
+
return hasRequiredAndOptionalRecordKeys(terminal, {
|
|
23
|
+
required: ["status", "data"],
|
|
24
|
+
optional: ["messages"]
|
|
25
|
+
})
|
|
26
|
+
? Object.freeze({ status: terminal.status, data: terminal.data })
|
|
27
|
+
: undefined;
|
|
28
|
+
case "not-applicable":
|
|
29
|
+
if (!hasRequiredAndOptionalRecordKeys(terminal, {
|
|
30
|
+
required: ["status"],
|
|
31
|
+
optional: ["reason", "messages"]
|
|
32
|
+
})) {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
return Object.freeze(Object.hasOwn(terminal, "reason")
|
|
36
|
+
? { status: "not-applicable", reason: terminal.reason }
|
|
37
|
+
: { status: "not-applicable" });
|
|
38
|
+
case "unavailable":
|
|
39
|
+
return hasRequiredAndOptionalRecordKeys(terminal, {
|
|
40
|
+
required: ["status", "reason"],
|
|
41
|
+
optional: ["messages"]
|
|
42
|
+
})
|
|
43
|
+
? Object.freeze({ status: "unavailable", reason: terminal.reason })
|
|
44
|
+
: undefined;
|
|
45
|
+
default:
|
|
46
|
+
return undefined;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=terminal-result.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-result.mjs","sourceRoot":"","sources":["../../../../src/project-run/check-execution/terminal-result.ts"],"names":[],"mappings":"AACA,OAAO,EACL,gCAAgC,EAChC,oBAAoB,EACrB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAiBnD;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAc;IACrD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC7C,IAAI,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAEpF,MAAM,MAAM,GAAG,sBAAsB,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvD,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAA2C;IAE3C,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;QACxB,KAAK,QAAQ,CAAC;QACd,KAAK,QAAQ;YACX,OAAO,gCAAgC,CAAC,QAAQ,EAAE;gBAChD,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAC5B,QAAQ,EAAE,CAAC,UAAU,CAAC;aACvB,CAAC;gBACA,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;gBACjE,CAAC,CAAC,SAAS,CAAC;QAChB,KAAK,gBAAgB;YACnB,IACE,CAAC,gCAAgC,CAAC,QAAQ,EAAE;gBAC1C,QAAQ,EAAE,CAAC,QAAQ,CAAC;gBACpB,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;aACjC,CAAC,EACF,CAAC;gBACD,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAClB,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAC/B,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;gBACvD,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CACjC,CAAC;QACJ,KAAK,aAAa;YAChB,OAAO,gCAAgC,CAAC,QAAQ,EAAE;gBAChD,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;gBAC9B,QAAQ,EAAE,CAAC,UAAU,CAAC;aACvB,CAAC;gBACA,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACnE,CAAC,CAAC,SAAS,CAAC;QAChB;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC","sourcesContent":["import type { CheckMessage } from \"../../check/check.ts\";\nimport {\n hasRequiredAndOptionalRecordKeys,\n snapshotClosedRecord\n} from \"../../data-boundary/closed-values.ts\";\nimport { parseCheckMessages } from \"./messages.ts\";\n\n/**\n * A terminal callback result split into the Core-owned four-state result and\n * detached presentation-only messages. The caller must still pass `result` to\n * Core; this adapter never validates outcome data or reasons.\n */\nexport interface ParsedCheckTerminalResult {\n readonly messages: readonly CheckMessage[];\n readonly result: StrippedTerminalResult;\n}\n\ntype StrippedTerminalResult =\n | Readonly<{ readonly status: \"passed\" | \"failed\"; readonly data: unknown }>\n | Readonly<{ readonly status: \"not-applicable\"; readonly reason?: unknown }>\n | Readonly<{ readonly status: \"unavailable\"; readonly reason: unknown }>;\n\n/**\n * Safely removes an optional terminal-message attachment from an otherwise\n * closed author result. Any malformed attachment rejects the whole value so a\n * valid prefix can never escape into lifecycle or Run result state.\n */\nexport function parseCheckTerminalResult(value: unknown): ParsedCheckTerminalResult | undefined {\n const terminal = snapshotClosedRecord(value);\n if (terminal === undefined || typeof terminal.status !== \"string\") return undefined;\n\n const result = strippedTerminalResult(terminal);\n if (result === undefined) return undefined;\n const messages = parseCheckMessages(terminal.messages);\n return messages === undefined ? undefined : Object.freeze({ messages, result });\n}\n\nfunction strippedTerminalResult(\n terminal: Readonly<Record<string, unknown>>\n): StrippedTerminalResult | undefined {\n switch (terminal.status) {\n case \"passed\":\n case \"failed\":\n return hasRequiredAndOptionalRecordKeys(terminal, {\n required: [\"status\", \"data\"],\n optional: [\"messages\"]\n })\n ? Object.freeze({ status: terminal.status, data: terminal.data })\n : undefined;\n case \"not-applicable\":\n if (\n !hasRequiredAndOptionalRecordKeys(terminal, {\n required: [\"status\"],\n optional: [\"reason\", \"messages\"]\n })\n ) {\n return undefined;\n }\n return Object.freeze(\n Object.hasOwn(terminal, \"reason\")\n ? { status: \"not-applicable\", reason: terminal.reason }\n : { status: \"not-applicable\" }\n );\n case \"unavailable\":\n return hasRequiredAndOptionalRecordKeys(terminal, {\n required: [\"status\", \"reason\"],\n optional: [\"messages\"]\n })\n ? Object.freeze({ status: \"unavailable\", reason: terminal.reason })\n : undefined;\n default:\n return undefined;\n }\n}\n"]}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { resolve } from "node:path";
|
|
2
|
+
import { failedOutput } from "./output-status.mjs";
|
|
3
|
+
import { publishMachineOutput } from "./machine-publication.mjs";
|
|
4
|
+
import { outputFailure } from "./result.mjs";
|
|
5
|
+
import { diagnosticTags } from "./diagnostic-logging/logger.mjs";
|
|
6
|
+
import { createPublicationModelV4 } from "../machine-output/v4/publication-model.mjs";
|
|
7
|
+
export function completeInvocation(invocation, core) {
|
|
8
|
+
const facts = runFacts(core);
|
|
9
|
+
if (invocation.outputConfiguration.machinePublication.enabled) {
|
|
10
|
+
const model = createModel(invocation, core.snapshot);
|
|
11
|
+
if (isExecutionResult(model))
|
|
12
|
+
return model;
|
|
13
|
+
const published = publishMachineOutput({
|
|
14
|
+
configuration: invocation.outputConfiguration.machinePublication,
|
|
15
|
+
statuses: invocation.outputs,
|
|
16
|
+
model,
|
|
17
|
+
directory: resolve(invocation.projectRoot, invocation.outputConfiguration.machinePublication.directory)
|
|
18
|
+
});
|
|
19
|
+
if (!published)
|
|
20
|
+
return failure(invocation, facts);
|
|
21
|
+
}
|
|
22
|
+
const output = failedOutput(invocation.outputs.value());
|
|
23
|
+
return output === undefined
|
|
24
|
+
? Object.freeze({
|
|
25
|
+
kind: "completed",
|
|
26
|
+
declarativeFingerprint: invocation.declarativeFingerprint,
|
|
27
|
+
definitionWarnings: invocation.definitionWarnings,
|
|
28
|
+
outputs: invocation.outputs.value(),
|
|
29
|
+
...facts
|
|
30
|
+
})
|
|
31
|
+
: failure(invocation, facts);
|
|
32
|
+
}
|
|
33
|
+
function failure(invocation, facts) {
|
|
34
|
+
const output = failedOutput(invocation.outputs.value());
|
|
35
|
+
if (output === undefined)
|
|
36
|
+
throw new Error("Run output failed without a failed status");
|
|
37
|
+
return outputFailure(invocation.declarativeFingerprint, invocation.definitionWarnings, invocation.outputs.value(), output, facts);
|
|
38
|
+
}
|
|
39
|
+
function runFacts(core) {
|
|
40
|
+
return Object.freeze({
|
|
41
|
+
aggregate: core.aggregate,
|
|
42
|
+
checkDurations: core.checkDurations,
|
|
43
|
+
checkMessages: core.checkMessages,
|
|
44
|
+
snapshot: core.snapshot
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
function createModel(invocation, snapshot) {
|
|
48
|
+
try {
|
|
49
|
+
if (invocation.startedAtUtc === null)
|
|
50
|
+
throw new Error("Machine publication requires an invocation timestamp");
|
|
51
|
+
return createPublicationModelV4({
|
|
52
|
+
invocation: {
|
|
53
|
+
invocationId: invocation.invocationId,
|
|
54
|
+
projectRoot: ".",
|
|
55
|
+
timestamp: invocation.startedAtUtc
|
|
56
|
+
},
|
|
57
|
+
snapshot
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return Object.freeze({
|
|
62
|
+
kind: "execution",
|
|
63
|
+
declarativeFingerprint: invocation.declarativeFingerprint,
|
|
64
|
+
definitionWarnings: invocation.definitionWarnings,
|
|
65
|
+
diagnostic: Object.freeze({ code: "publication-model-failed" }),
|
|
66
|
+
outputs: invocation.outputs.value()
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function isExecutionResult(value) {
|
|
71
|
+
return "kind" in value;
|
|
72
|
+
}
|
|
73
|
+
/** Closes diagnostic logging and applies final output priority to a non-configuration candidate. */
|
|
74
|
+
export function finalizeInvocation(invocation, candidate) {
|
|
75
|
+
const preCloseOutputs = invocation.outputs.value();
|
|
76
|
+
invocation.diagnosticLogger.observe({
|
|
77
|
+
event: "run.terminal-before-log-close",
|
|
78
|
+
tags: diagnosticTags("RUN", "TERMINAL", terminalStatusTag(candidate)),
|
|
79
|
+
details: {
|
|
80
|
+
...closingFacts(candidate),
|
|
81
|
+
diagnosticLogging: "close-not-yet-confirmed",
|
|
82
|
+
outputs: preCloseOutputDetails(preCloseOutputs)
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
const diagnosticLoggingStatus = invocation.diagnosticLogger.close();
|
|
86
|
+
if (diagnosticLoggingStatus === "failed")
|
|
87
|
+
invocation.outputs.failed("diagnosticLogging");
|
|
88
|
+
if (diagnosticLoggingStatus === "succeeded")
|
|
89
|
+
invocation.outputs.succeeded("diagnosticLogging");
|
|
90
|
+
const outputs = invocation.outputs.value();
|
|
91
|
+
switch (candidate.kind) {
|
|
92
|
+
case "completed": {
|
|
93
|
+
const output = failedOutput(outputs);
|
|
94
|
+
return output === undefined
|
|
95
|
+
? Object.freeze({ ...candidate, outputs })
|
|
96
|
+
: outputFailure(candidate.declarativeFingerprint, candidate.definitionWarnings, outputs, output, finalSnapshotFacts(candidate));
|
|
97
|
+
}
|
|
98
|
+
case "output": {
|
|
99
|
+
const output = failedOutput(outputs);
|
|
100
|
+
if (output === undefined)
|
|
101
|
+
throw new Error("Run output failed without a failed status");
|
|
102
|
+
return outputFailure(candidate.declarativeFingerprint, candidate.definitionWarnings, outputs, output, finalSnapshotFacts(candidate));
|
|
103
|
+
}
|
|
104
|
+
case "planning":
|
|
105
|
+
case "cancelled":
|
|
106
|
+
case "execution":
|
|
107
|
+
return Object.freeze({ ...candidate, outputs });
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
function terminalStatusTag(candidate) {
|
|
111
|
+
if ("aggregate" in candidate && candidate.aggregate !== null)
|
|
112
|
+
return candidate.aggregate.toUpperCase();
|
|
113
|
+
if (candidate.kind === "cancelled")
|
|
114
|
+
return "CANCELLED";
|
|
115
|
+
return candidate.kind.toUpperCase();
|
|
116
|
+
}
|
|
117
|
+
function preCloseOutputDetails(outputs) {
|
|
118
|
+
return Object.freeze({
|
|
119
|
+
machinePublication: outputs.machinePublication,
|
|
120
|
+
progressRendering: outputs.progressRendering
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
function closingFacts(candidate) {
|
|
124
|
+
if (!("snapshot" in candidate)) {
|
|
125
|
+
return Object.freeze({
|
|
126
|
+
aggregate: null,
|
|
127
|
+
candidateKind: candidate.kind,
|
|
128
|
+
counts: null,
|
|
129
|
+
nonPassed: []
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
const summary = summarizeSnapshot(candidate.snapshot);
|
|
133
|
+
return Object.freeze({
|
|
134
|
+
aggregate: "aggregate" in candidate ? candidate.aggregate : null,
|
|
135
|
+
candidateKind: candidate.kind,
|
|
136
|
+
...summary
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
function summarizeSnapshot(snapshot) {
|
|
140
|
+
const counts = { failed: 0, notApplicable: 0, passed: 0, unavailable: 0 };
|
|
141
|
+
const nonPassed = [];
|
|
142
|
+
for (const check of snapshot.checks) {
|
|
143
|
+
counts[statusCountKey(check)] += 1;
|
|
144
|
+
const fact = nonPassedFact(check);
|
|
145
|
+
if (fact !== undefined)
|
|
146
|
+
nonPassed.push(fact);
|
|
147
|
+
}
|
|
148
|
+
return Object.freeze({
|
|
149
|
+
counts: Object.freeze(counts),
|
|
150
|
+
nonPassed: Object.freeze(nonPassed)
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
function statusCountKey(check) {
|
|
154
|
+
return check.outcome.status === "not-applicable" ? "notApplicable" : check.outcome.status;
|
|
155
|
+
}
|
|
156
|
+
function nonPassedFact(check) {
|
|
157
|
+
if (check.outcome.status === "passed")
|
|
158
|
+
return undefined;
|
|
159
|
+
return Object.freeze({
|
|
160
|
+
checkId: check.checkId,
|
|
161
|
+
reason: check.outcome.status === "failed" ? null : (check.outcome.reason ?? null),
|
|
162
|
+
status: check.outcome.status
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
function finalSnapshotFacts(candidate) {
|
|
166
|
+
return Object.freeze({
|
|
167
|
+
aggregate: candidate.aggregate,
|
|
168
|
+
checkDurations: candidate.checkDurations,
|
|
169
|
+
checkMessages: candidate.checkMessages,
|
|
170
|
+
snapshot: candidate.snapshot
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=completion.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.mjs","sourceRoot":"","sources":["../../../src/project-run/completion.ts"],"names":[],"mappings":"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","sourcesContent":["import { resolve } from \"node:path\";\nimport { failedOutput } from \"./output-status.ts\";\nimport { publishMachineOutput } from \"./machine-publication.ts\";\nimport {\n outputFailure,\n type CheckDuration,\n type CheckRunMessage,\n type NonConfigurationRunResult,\n type RunResultFacts\n} from \"./result.ts\";\nimport type { CheckAggregate } from \"./controls/contract.ts\";\nimport { diagnosticTags } from \"./diagnostic-logging/logger.ts\";\nimport type { Invocation } from \"./invocation.ts\";\nimport {\n createPublicationModelV4,\n type TrustedPublicationModelV4\n} from \"../machine-output/v4/publication-model.ts\";\nimport type { CoreCheck, CoreSnapshot } from \"../check-settlement/facts.ts\";\n\ntype OutcomeCounts = {\n readonly failed: number;\n readonly notApplicable: number;\n readonly passed: number;\n readonly unavailable: number;\n};\n\n/** Settled Check facts consumed by completion and output publication. */\nexport type CoreExecution = Readonly<{\n readonly aggregate: CheckAggregate | null;\n readonly checkDurations: readonly CheckDuration[];\n readonly checkMessages: readonly CheckRunMessage[];\n readonly snapshot: CoreSnapshot;\n}>;\n\nexport function completeInvocation(\n invocation: Invocation,\n core: CoreExecution\n): NonConfigurationRunResult {\n const facts = runFacts(core);\n if (invocation.outputConfiguration.machinePublication.enabled) {\n const model = createModel(invocation, core.snapshot);\n if (isExecutionResult(model)) return model;\n const published = publishMachineOutput({\n configuration: invocation.outputConfiguration.machinePublication,\n statuses: invocation.outputs,\n model,\n directory: resolve(\n invocation.projectRoot,\n invocation.outputConfiguration.machinePublication.directory\n )\n });\n if (!published) return failure(invocation, facts);\n }\n const output = failedOutput(invocation.outputs.value());\n return output === undefined\n ? Object.freeze({\n kind: \"completed\",\n declarativeFingerprint: invocation.declarativeFingerprint,\n definitionWarnings: invocation.definitionWarnings,\n outputs: invocation.outputs.value(),\n ...facts\n })\n : failure(invocation, facts);\n}\nfunction failure(invocation: Invocation, facts: RunResultFacts): ReturnType<typeof outputFailure> {\n const output = failedOutput(invocation.outputs.value());\n if (output === undefined) throw new Error(\"Run output failed without a failed status\");\n return outputFailure(\n invocation.declarativeFingerprint,\n invocation.definitionWarnings,\n invocation.outputs.value(),\n output,\n facts\n );\n}\nfunction runFacts(core: CoreExecution): RunResultFacts {\n return Object.freeze({\n aggregate: core.aggregate,\n checkDurations: core.checkDurations,\n checkMessages: core.checkMessages,\n snapshot: core.snapshot\n });\n}\nfunction createModel(\n invocation: Invocation,\n snapshot: CoreExecution[\"snapshot\"]\n): TrustedPublicationModelV4 | Extract<NonConfigurationRunResult, { readonly kind: \"execution\" }> {\n try {\n if (invocation.startedAtUtc === null)\n throw new Error(\"Machine publication requires an invocation timestamp\");\n return createPublicationModelV4({\n invocation: {\n invocationId: invocation.invocationId,\n projectRoot: \".\",\n timestamp: invocation.startedAtUtc\n },\n snapshot\n });\n } catch {\n return Object.freeze({\n kind: \"execution\",\n declarativeFingerprint: invocation.declarativeFingerprint,\n definitionWarnings: invocation.definitionWarnings,\n diagnostic: Object.freeze({ code: \"publication-model-failed\" }),\n outputs: invocation.outputs.value()\n });\n }\n}\nfunction isExecutionResult(\n value:\n | TrustedPublicationModelV4\n | Extract<NonConfigurationRunResult, { readonly kind: \"execution\" }>\n): value is Extract<NonConfigurationRunResult, { readonly kind: \"execution\" }> {\n return \"kind\" in value;\n}\n\n/** Closes diagnostic logging and applies final output priority to a non-configuration candidate. */\nexport function finalizeInvocation(\n invocation: Invocation,\n candidate: NonConfigurationRunResult\n): NonConfigurationRunResult {\n const preCloseOutputs = invocation.outputs.value();\n invocation.diagnosticLogger.observe({\n event: \"run.terminal-before-log-close\",\n tags: diagnosticTags(\"RUN\", \"TERMINAL\", terminalStatusTag(candidate)),\n details: {\n ...closingFacts(candidate),\n diagnosticLogging: \"close-not-yet-confirmed\",\n outputs: preCloseOutputDetails(preCloseOutputs)\n }\n });\n const diagnosticLoggingStatus = invocation.diagnosticLogger.close();\n if (diagnosticLoggingStatus === \"failed\") invocation.outputs.failed(\"diagnosticLogging\");\n if (diagnosticLoggingStatus === \"succeeded\") invocation.outputs.succeeded(\"diagnosticLogging\");\n\n const outputs = invocation.outputs.value();\n switch (candidate.kind) {\n case \"completed\": {\n const output = failedOutput(outputs);\n return output === undefined\n ? Object.freeze({ ...candidate, outputs })\n : outputFailure(\n candidate.declarativeFingerprint,\n candidate.definitionWarnings,\n outputs,\n output,\n finalSnapshotFacts(candidate)\n );\n }\n case \"output\": {\n const output = failedOutput(outputs);\n if (output === undefined) throw new Error(\"Run output failed without a failed status\");\n return outputFailure(\n candidate.declarativeFingerprint,\n candidate.definitionWarnings,\n outputs,\n output,\n finalSnapshotFacts(candidate)\n );\n }\n case \"planning\":\n case \"cancelled\":\n case \"execution\":\n return Object.freeze({ ...candidate, outputs });\n }\n}\n\nfunction terminalStatusTag(candidate: NonConfigurationRunResult): string {\n if (\"aggregate\" in candidate && candidate.aggregate !== null)\n return candidate.aggregate.toUpperCase();\n if (candidate.kind === \"cancelled\") return \"CANCELLED\";\n return candidate.kind.toUpperCase();\n}\n\nfunction preCloseOutputDetails(outputs: ReturnType<Invocation[\"outputs\"][\"value\"]>): Readonly<{\n readonly machinePublication: (typeof outputs)[\"machinePublication\"];\n readonly progressRendering: (typeof outputs)[\"progressRendering\"];\n}> {\n return Object.freeze({\n machinePublication: outputs.machinePublication,\n progressRendering: outputs.progressRendering\n });\n}\n\nfunction closingFacts(candidate: NonConfigurationRunResult): Readonly<{\n readonly aggregate: CheckAggregate | null;\n readonly candidateKind: NonConfigurationRunResult[\"kind\"];\n readonly counts: Readonly<{\n readonly failed: number;\n readonly notApplicable: number;\n readonly passed: number;\n readonly unavailable: number;\n }> | null;\n readonly nonPassed: readonly Readonly<{\n readonly checkId: string;\n readonly reason: unknown;\n readonly status: string;\n }>[];\n}> {\n if (!(\"snapshot\" in candidate)) {\n return Object.freeze({\n aggregate: null,\n candidateKind: candidate.kind,\n counts: null,\n nonPassed: []\n });\n }\n const summary = summarizeSnapshot(candidate.snapshot);\n return Object.freeze({\n aggregate: \"aggregate\" in candidate ? candidate.aggregate : null,\n candidateKind: candidate.kind,\n ...summary\n });\n}\n\nfunction summarizeSnapshot(snapshot: CoreSnapshot): Readonly<{\n readonly counts: OutcomeCounts;\n readonly nonPassed: readonly Readonly<{\n readonly checkId: string;\n readonly reason: unknown;\n readonly status: string;\n }>[];\n}> {\n const counts = { failed: 0, notApplicable: 0, passed: 0, unavailable: 0 };\n const nonPassed: Array<Readonly<{ checkId: string; reason: unknown; status: string }>> = [];\n for (const check of snapshot.checks) {\n counts[statusCountKey(check)] += 1;\n const fact = nonPassedFact(check);\n if (fact !== undefined) nonPassed.push(fact);\n }\n return Object.freeze({\n counts: Object.freeze(counts),\n nonPassed: Object.freeze(nonPassed)\n });\n}\n\nfunction statusCountKey(check: CoreCheck): keyof OutcomeCounts {\n return check.outcome.status === \"not-applicable\" ? \"notApplicable\" : check.outcome.status;\n}\n\nfunction nonPassedFact(\n check: CoreCheck\n):\n | Readonly<{ readonly checkId: string; readonly reason: unknown; readonly status: string }>\n | undefined {\n if (check.outcome.status === \"passed\") return undefined;\n return Object.freeze({\n checkId: check.checkId,\n reason: check.outcome.status === \"failed\" ? null : (check.outcome.reason ?? null),\n status: check.outcome.status\n });\n}\n\nfunction finalSnapshotFacts(\n candidate: Extract<NonConfigurationRunResult, RunResultFacts>\n): RunResultFacts {\n return Object.freeze({\n aggregate: candidate.aggregate,\n checkDurations: candidate.checkDurations,\n checkMessages: candidate.checkMessages,\n snapshot: candidate.snapshot\n });\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contract.mjs","sourceRoot":"","sources":["../../../../src/project-run/controls/contract.ts"],"names":[],"mappings":"","sourcesContent":["import type { ProjectOutputs } from \"../../project-definition/project-definition.ts\";\n/** 单次 run 调用的闭合上下文与 output override;Project Definition 保持为 authored input。 */\nexport interface RunControls {\n readonly checkAggregation?: CheckAggregation;\n /** 仅为本次调用覆盖 Run-owned outputs。 */\n readonly outputs?: Partial<{\n machinePublication: Partial<ProjectOutputs[\"machinePublication\"]>;\n progressRendering: Partial<ProjectOutputs[\"progressRendering\"]>;\n diagnosticLogging: Partial<ProjectOutputs[\"diagnosticLogging\"]>;\n }>;\n readonly flags?: readonly string[];\n readonly projectRoot?: string;\n readonly signal?: AbortSignal;\n}\n/** 将选定 Check statuses 折叠为 invocation aggregate 的规则。 */\nexport interface CheckAggregation {\n readonly checks: \"all\" | readonly string[];\n readonly mode: \"all\" | \"any\";\n readonly unavailable: \"propagate\" | \"fail\" | \"exclude\";\n readonly notApplicable: \"exclude\" | \"pass\" | \"fail\";\n readonly empty: \"passed\" | \"failed\" | \"not-applicable\";\n}\n/** `CheckAggregation` 计算出的 invocation 级结果。 */\nexport type CheckAggregate = \"passed\" | \"failed\" | \"not-applicable\" | \"unavailable\";\n"]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { snapshotClosedRecord } from "../../data-boundary/closed-values.mjs";
|
|
2
|
+
import { isContainedRelativeDirectory } from "../../project-definition/output-validation.mjs";
|
|
3
|
+
/** Parses invocation-local outputs without changing Definition defaults. */
|
|
4
|
+
export function parseOutputsOverride(value) {
|
|
5
|
+
const data = snapshotClosedRecord(value);
|
|
6
|
+
if (data === undefined ||
|
|
7
|
+
Object.keys(data).some((key) => key !== "machinePublication" && key !== "progressRendering" && key !== "diagnosticLogging"))
|
|
8
|
+
return undefined;
|
|
9
|
+
const machinePublication = optionalOutput(data, "machinePublication", parseDirectoryOutputOverride);
|
|
10
|
+
const progressRendering = optionalOutput(data, "progressRendering", parseProgressOutputOverride);
|
|
11
|
+
const diagnosticLogging = optionalOutput(data, "diagnosticLogging", parseDiagnosticLoggingOverride);
|
|
12
|
+
if (!machinePublication.ok || !progressRendering.ok || !diagnosticLogging.ok)
|
|
13
|
+
return undefined;
|
|
14
|
+
return Object.freeze({
|
|
15
|
+
...(machinePublication.value === undefined
|
|
16
|
+
? {}
|
|
17
|
+
: { machinePublication: machinePublication.value }),
|
|
18
|
+
...(progressRendering.value === undefined
|
|
19
|
+
? {}
|
|
20
|
+
: { progressRendering: progressRendering.value }),
|
|
21
|
+
...(diagnosticLogging.value === undefined ? {} : { diagnosticLogging: diagnosticLogging.value })
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
function optionalOutput(value, key, parse) {
|
|
25
|
+
if (value[key] === undefined)
|
|
26
|
+
return Object.freeze({ ok: true });
|
|
27
|
+
const parsed = parse(value[key]);
|
|
28
|
+
return parsed === undefined
|
|
29
|
+
? Object.freeze({ ok: false })
|
|
30
|
+
: Object.freeze({ ok: true, value: parsed });
|
|
31
|
+
}
|
|
32
|
+
function parseDirectoryOutputOverride(value) {
|
|
33
|
+
const data = snapshotClosedRecord(value);
|
|
34
|
+
if (data === undefined ||
|
|
35
|
+
Object.keys(data).some((key) => key !== "directory" && key !== "enabled"))
|
|
36
|
+
return undefined;
|
|
37
|
+
if (data.directory !== undefined && typeof data.directory !== "string")
|
|
38
|
+
return undefined;
|
|
39
|
+
if (data.enabled !== undefined && typeof data.enabled !== "boolean")
|
|
40
|
+
return undefined;
|
|
41
|
+
return Object.freeze({
|
|
42
|
+
...(data.directory === undefined ? {} : { directory: data.directory }),
|
|
43
|
+
...(data.enabled === undefined ? {} : { enabled: data.enabled })
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function parseProgressOutputOverride(value) {
|
|
47
|
+
const data = snapshotClosedRecord(value);
|
|
48
|
+
if (data === undefined || Object.keys(data).some((key) => key !== "enabled"))
|
|
49
|
+
return undefined;
|
|
50
|
+
if (data.enabled !== undefined && typeof data.enabled !== "boolean")
|
|
51
|
+
return undefined;
|
|
52
|
+
return Object.freeze(data.enabled === undefined ? {} : { enabled: data.enabled });
|
|
53
|
+
}
|
|
54
|
+
function parseDiagnosticLoggingOverride(value) {
|
|
55
|
+
const parsed = parseDirectoryOutputOverride(value);
|
|
56
|
+
return parsed === undefined ||
|
|
57
|
+
(parsed.directory !== undefined && !isContainedRelativeDirectory(parsed.directory))
|
|
58
|
+
? undefined
|
|
59
|
+
: parsed;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=outputs-override-validation.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"outputs-override-validation.mjs","sourceRoot":"","sources":["../../../../src/project-run/controls/outputs-override-validation.ts"],"names":[],"mappings":"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","sourcesContent":["import { snapshotClosedRecord } from \"../../data-boundary/closed-values.ts\";\nimport { isContainedRelativeDirectory } from \"../../project-definition/output-validation.ts\";\nimport type { ProjectOutputs } from \"../../project-definition/project-definition.ts\";\nimport type { RunControls } from \"./contract.ts\";\n\ntype DirectoryOutputOverride = Readonly<{\n readonly directory?: string;\n readonly enabled?: boolean;\n}>;\n\n/** Parses invocation-local outputs without changing Definition defaults. */\nexport function parseOutputsOverride(value: unknown): RunControls[\"outputs\"] | undefined {\n const data = snapshotClosedRecord(value);\n if (\n data === undefined ||\n Object.keys(data).some(\n (key) =>\n key !== \"machinePublication\" && key !== \"progressRendering\" && key !== \"diagnosticLogging\"\n )\n )\n return undefined;\n const machinePublication = optionalOutput(\n data,\n \"machinePublication\",\n parseDirectoryOutputOverride\n );\n const progressRendering = optionalOutput(data, \"progressRendering\", parseProgressOutputOverride);\n const diagnosticLogging = optionalOutput(\n data,\n \"diagnosticLogging\",\n parseDiagnosticLoggingOverride\n );\n if (!machinePublication.ok || !progressRendering.ok || !diagnosticLogging.ok) return undefined;\n return Object.freeze({\n ...(machinePublication.value === undefined\n ? {}\n : { machinePublication: machinePublication.value }),\n ...(progressRendering.value === undefined\n ? {}\n : { progressRendering: progressRendering.value }),\n ...(diagnosticLogging.value === undefined ? {} : { diagnosticLogging: diagnosticLogging.value })\n });\n}\nfunction optionalOutput<T>(\n value: Readonly<Record<string, unknown>>,\n key: string,\n parse: (candidate: unknown) => T | undefined\n): Readonly<{ readonly ok: boolean; readonly value?: T }> {\n if (value[key] === undefined) return Object.freeze({ ok: true });\n const parsed = parse(value[key]);\n return parsed === undefined\n ? Object.freeze({ ok: false })\n : Object.freeze({ ok: true, value: parsed });\n}\nfunction parseDirectoryOutputOverride(value: unknown): DirectoryOutputOverride | undefined {\n const data = snapshotClosedRecord(value);\n if (\n data === undefined ||\n Object.keys(data).some((key) => key !== \"directory\" && key !== \"enabled\")\n )\n return undefined;\n if (data.directory !== undefined && typeof data.directory !== \"string\") return undefined;\n if (data.enabled !== undefined && typeof data.enabled !== \"boolean\") return undefined;\n return Object.freeze({\n ...(data.directory === undefined ? {} : { directory: data.directory }),\n ...(data.enabled === undefined ? {} : { enabled: data.enabled })\n });\n}\nfunction parseProgressOutputOverride(\n value: unknown\n): Partial<ProjectOutputs[\"progressRendering\"]> | undefined {\n const data = snapshotClosedRecord(value);\n if (data === undefined || Object.keys(data).some((key) => key !== \"enabled\")) return undefined;\n if (data.enabled !== undefined && typeof data.enabled !== \"boolean\") return undefined;\n return Object.freeze(data.enabled === undefined ? {} : { enabled: data.enabled });\n}\n\nfunction parseDiagnosticLoggingOverride(\n value: unknown\n): Partial<ProjectOutputs[\"diagnosticLogging\"]> | undefined {\n const parsed = parseDirectoryOutputOverride(value);\n return parsed === undefined ||\n (parsed.directory !== undefined && !isContainedRelativeDirectory(parsed.directory))\n ? undefined\n : parsed;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation-result.mjs","sourceRoot":"","sources":["../../../../src/project-run/controls/validation-result.ts"],"names":[],"mappings":"","sourcesContent":["/** Diagnostic emitted when one invocation control is not a closed supported value. */\nexport interface RunControlDiagnostic {\n readonly kind: \"invalid-run-controls\";\n readonly path: string;\n readonly reason: \"invalid-value\" | \"unknown-key\";\n}\n\n/** Closed validation result for a Run-owned invocation control. */\nexport type RunControlValidationResult<T> = Readonly<\n | { readonly ok: true; readonly value: T }\n | { readonly ok: false; readonly error: RunControlDiagnostic }\n>;\n"]}
|