@zxyycom/vibe-check 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -5
- package/dist/esm/check/check.mjs +4 -0
- package/dist/esm/check/check.mjs.map +1 -1
- package/dist/esm/check/flag-enablement.mjs +32 -0
- package/dist/esm/check/flag-enablement.mjs.map +1 -0
- package/dist/esm/check/handoff-provider-identity.mjs +18 -0
- package/dist/esm/check/handoff-provider-identity.mjs.map +1 -0
- package/dist/esm/check/inherited-collection.mjs +1 -1
- package/dist/esm/check/inherited-collection.mjs.map +1 -1
- package/dist/esm/check/project-changes.mjs +2 -0
- package/dist/esm/check/project-changes.mjs.map +1 -0
- package/dist/esm/check/project-context.mjs +2 -0
- package/dist/esm/check/project-context.mjs.map +1 -0
- package/dist/esm/check-settlement/facts.mjs.map +1 -1
- package/dist/esm/check-settlement/record-store.mjs +1 -1
- package/dist/esm/check-settlement/record-store.mjs.map +1 -1
- package/dist/esm/data-boundary/canonical-data.mjs +36 -7
- package/dist/esm/data-boundary/canonical-data.mjs.map +1 -1
- package/dist/esm/data-boundary/canonical-json.mjs.map +1 -1
- package/dist/esm/data-boundary/closed-values.mjs +28 -4
- package/dist/esm/data-boundary/closed-values.mjs.map +1 -1
- package/dist/esm/{package-checks/project-files → data-boundary}/config-glob.mjs +3 -3
- package/dist/esm/data-boundary/config-glob.mjs.map +1 -0
- package/dist/esm/data-boundary/project-path.mjs +19 -0
- package/dist/esm/data-boundary/project-path.mjs.map +1 -0
- package/dist/esm/index.mjs +12 -5
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/machine-output/v4/atomic-publication.mjs +4 -1
- package/dist/esm/machine-output/v4/atomic-publication.mjs.map +1 -1
- package/dist/esm/package-checks/check-authoring.mjs +69 -0
- package/dist/esm/package-checks/check-authoring.mjs.map +1 -0
- package/dist/esm/package-checks/code-quality-findings/finding-waiver-authoring.mjs.map +1 -1
- package/dist/esm/package-checks/code-quality-findings/finding-waiver-evidence.mjs.map +1 -1
- package/dist/esm/package-checks/command-check/command-check.mjs +55 -0
- package/dist/esm/package-checks/command-check/command-check.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/contract.mjs +2 -0
- package/dist/esm/package-checks/command-check/contract.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/execution.mjs +134 -0
- package/dist/esm/package-checks/command-check/execution.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/options.mjs +284 -0
- package/dist/esm/package-checks/command-check/options.mjs.map +1 -0
- package/dist/esm/package-checks/command-check/transcript.mjs +26 -0
- package/dist/esm/package-checks/command-check/transcript.mjs.map +1 -0
- package/dist/esm/package-checks/duplicate-detection/default-check.mjs +9 -11
- package/dist/esm/package-checks/duplicate-detection/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/execution.mjs +2 -4
- package/dist/esm/package-checks/duplicate-detection/execution.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs +1 -1
- package/dist/esm/package-checks/duplicate-detection/finding-messages.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs +1 -1
- package/dist/esm/package-checks/duplicate-detection/jscpd/availability.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/options.mjs.map +1 -1
- package/dist/esm/package-checks/duplicate-detection/records.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/constructor.mjs +9 -11
- package/dist/esm/package-checks/file-metrics/constructor.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/execution.mjs +2 -4
- package/dist/esm/package-checks/file-metrics/execution.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/finding-messages.mjs +1 -1
- package/dist/esm/package-checks/file-metrics/finding-messages.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/options.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/records.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/scc/availability.mjs +1 -1
- package/dist/esm/package-checks/file-metrics/scc/availability.mjs.map +1 -1
- package/dist/esm/package-checks/file-metrics/scc/batch-planner.mjs +38 -0
- package/dist/esm/package-checks/file-metrics/scc/batch-planner.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/scc/logical-scan-resources.mjs +35 -0
- package/dist/esm/package-checks/file-metrics/scc/logical-scan-resources.mjs.map +1 -0
- package/dist/esm/package-checks/file-metrics/scc/scanner.mjs +102 -29
- package/dist/esm/package-checks/file-metrics/scc/scanner.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analysis.mjs +7 -2
- package/dist/esm/package-checks/function-metrics/analysis.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/analysis-model.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs +1 -3
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/extensions/protocol.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs +3 -2
- package/dist/esm/package-checks/function-metrics/analyzer/pipeline.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs +6 -6
- package/dist/esm/package-checks/function-metrics/analyzer/readers/erlang.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/fortran.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs +9 -3
- package/dist/esm/package-checks/function-metrics/analyzer/readers/objc.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs +12 -7
- package/dist/esm/package-checks/function-metrics/analyzer/readers/php-states.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs +6 -6
- package/dist/esm/package-checks/function-metrics/analyzer/readers/plsql.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs +5 -3
- package/dist/esm/package-checks/function-metrics/analyzer/readers/python.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs +2 -0
- package/dist/esm/package-checks/function-metrics/analyzer/readers/r.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs +9 -3
- package/dist/esm/package-checks/function-metrics/analyzer/readers/ttcn.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs +9 -3
- package/dist/esm/package-checks/function-metrics/analyzer/readers/typescript.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs +3 -1
- package/dist/esm/package-checks/function-metrics/analyzer/readers/zig.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs +3 -1
- package/dist/esm/package-checks/function-metrics/analyzer/shared/code-reader.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs +12 -5
- package/dist/esm/package-checks/function-metrics/analyzer/shared/js-style-regex.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs +20 -8
- package/dist/esm/package-checks/function-metrics/analyzer-worker-port.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/constructor.mjs +9 -11
- package/dist/esm/package-checks/function-metrics/constructor.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/execution.mjs +2 -4
- package/dist/esm/package-checks/function-metrics/execution.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/finding-messages.mjs +1 -1
- package/dist/esm/package-checks/function-metrics/finding-messages.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/measurement.mjs +3 -1
- package/dist/esm/package-checks/function-metrics/measurement.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/options.mjs.map +1 -1
- package/dist/esm/package-checks/function-metrics/records.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/git.mjs +11 -0
- package/dist/esm/package-checks/host-environment/git.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/path.mjs +1 -17
- package/dist/esm/package-checks/host-environment/path.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/process/contract.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/process/result.mjs +43 -17
- package/dist/esm/package-checks/host-environment/process/result.mjs.map +1 -1
- package/dist/esm/package-checks/host-environment/process/runner.mjs +7 -5
- package/dist/esm/package-checks/host-environment/process/runner.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/default-check.mjs +9 -11
- package/dist/esm/package-checks/json-schema-validation/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/options.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs +6 -2
- package/dist/esm/package-checks/json-schema-validation/reference-resolver.mjs.map +1 -1
- package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs +11 -3
- package/dist/esm/package-checks/json-schema-validation/schema-policy.mjs.map +1 -1
- package/dist/esm/package-checks/json-validation/default-check.mjs +9 -11
- package/dist/esm/package-checks/json-validation/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/json-validation/options.mjs.map +1 -1
- package/dist/esm/package-checks/local-cache-options.mjs +28 -0
- package/dist/esm/package-checks/local-cache-options.mjs.map +1 -0
- package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs +37 -45
- package/dist/esm/package-checks/maintenance-reminders/maintenance-reminders.mjs.map +1 -1
- package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs +3 -1
- package/dist/esm/package-checks/maintenance-reminders/maintenance-support.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/default-check.mjs +19 -33
- package/dist/esm/package-checks/markdown-link-validation/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/execution.mjs +1 -1
- package/dist/esm/package-checks/markdown-link-validation/execution.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs +1 -1
- package/dist/esm/package-checks/markdown-link-validation/finding-messages.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs +1 -3
- package/dist/esm/package-checks/markdown-link-validation/markdown-parser.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs +3 -18
- package/dist/esm/package-checks/markdown-link-validation/options-resolution.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs +2 -14
- package/dist/esm/package-checks/markdown-link-validation/options-validation.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/options.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs +4 -5
- package/dist/esm/package-checks/markdown-link-validation/parse-facts-cache-payload.mjs.map +1 -1
- package/dist/esm/package-checks/markdown-lint/adapter.mjs +125 -0
- package/dist/esm/package-checks/markdown-lint/adapter.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/default-check.mjs +37 -0
- package/dist/esm/package-checks/markdown-lint/default-check.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/execution.mjs +202 -0
- package/dist/esm/package-checks/markdown-lint/execution.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/final-data.mjs +16 -0
- package/dist/esm/package-checks/markdown-lint/final-data.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/finding-messages.mjs +72 -0
- package/dist/esm/package-checks/markdown-lint/finding-messages.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/finding-waiver-identity.mjs +41 -0
- package/dist/esm/package-checks/markdown-lint/finding-waiver-identity.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/findings-cache.mjs +110 -0
- package/dist/esm/package-checks/markdown-lint/findings-cache.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/options-resolution.mjs +74 -0
- package/dist/esm/package-checks/markdown-lint/options-resolution.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/options-validation.mjs +41 -0
- package/dist/esm/package-checks/markdown-lint/options-validation.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/options.mjs +13 -0
- package/dist/esm/package-checks/markdown-lint/options.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/records.mjs +65 -0
- package/dist/esm/package-checks/markdown-lint/records.mjs.map +1 -0
- package/dist/esm/package-checks/markdown-lint/unavailable-reasons.mjs +14 -0
- package/dist/esm/package-checks/markdown-lint/unavailable-reasons.mjs.map +1 -0
- package/dist/esm/package-checks/project-files/collection.mjs +23 -19
- package/dist/esm/package-checks/project-files/collection.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/configuration.mjs +1 -1
- package/dist/esm/package-checks/project-files/configuration.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/gitlink-revision.mjs +2 -5
- package/dist/esm/package-checks/project-files/gitlink-revision.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/gitlink-worktree.mjs +22 -6
- package/dist/esm/package-checks/project-files/gitlink-worktree.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/public-collection.mjs +1 -1
- package/dist/esm/package-checks/project-files/public-collection.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/revision-paths.mjs +3 -3
- package/dist/esm/package-checks/project-files/revision-paths.mjs.map +1 -1
- package/dist/esm/package-checks/project-files/revision-worktree-files.mjs +11 -15
- package/dist/esm/package-checks/project-files/revision-worktree-files.mjs.map +1 -1
- package/dist/esm/package-checks/secret-detection/default-check.mjs +9 -11
- package/dist/esm/package-checks/secret-detection/default-check.mjs.map +1 -1
- package/dist/esm/package-checks/secret-detection/execution.mjs +2 -2
- package/dist/esm/package-checks/secret-detection/execution.mjs.map +1 -1
- package/dist/esm/package-checks/secret-detection/input-preparation.mjs +46 -7
- package/dist/esm/package-checks/secret-detection/input-preparation.mjs.map +1 -1
- package/dist/esm/package-checks/secret-detection/options.mjs.map +1 -1
- package/dist/esm/package-checks/secret-detection/records.mjs.map +1 -1
- package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs +3 -4
- package/dist/esm/package-checks/secret-detection/secretlint/adapter.mjs.map +1 -1
- package/dist/esm/package-tools/admission-policy/define-admission-policy.mjs +10 -0
- package/dist/esm/package-tools/admission-policy/define-admission-policy.mjs.map +1 -0
- package/dist/esm/{cache → package-tools/cache}/cache-json-by-key.mjs +13 -14
- package/dist/esm/package-tools/cache/cache-json-by-key.mjs.map +1 -0
- package/dist/esm/package-tools/finding-presentation/finding-presentation.mjs.map +1 -0
- package/dist/esm/{finding-waivers → package-tools/finding-waivers}/reconciliation.mjs +14 -5
- package/dist/esm/package-tools/finding-waivers/reconciliation.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/critical-path-ranking.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/bounded-history.mjs.map +1 -0
- package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/prediction.mjs +2 -2
- package/dist/esm/package-tools/learned-critical-path/duration-model/prediction.mjs.map +1 -0
- package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/preparation.mjs +4 -2
- package/dist/esm/package-tools/learned-critical-path/duration-model/preparation.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/duration-model/recording.mjs.map +1 -0
- package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/storage.mjs +8 -8
- package/dist/esm/package-tools/learned-critical-path/duration-model/storage.mjs.map +1 -0
- package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/selection-layers.mjs +1 -2
- package/dist/esm/package-tools/learned-critical-path/selection-layers.mjs.map +1 -0
- package/dist/esm/package-tools/learned-critical-path/static-decision.mjs.map +1 -0
- package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/strategy.mjs +3 -3
- package/dist/esm/package-tools/learned-critical-path/strategy.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/authoring.mjs +8 -5
- package/dist/esm/project-definition/check-tree/authoring.mjs.map +1 -1
- package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs +79 -66
- package/dist/esm/project-definition/check-tree/check-fields-authoring.mjs.map +1 -1
- package/dist/esm/project-definition/check-tree/flag-conditions.mjs +71 -0
- package/dist/esm/project-definition/check-tree/flag-conditions.mjs.map +1 -0
- package/dist/esm/project-definition/check-tree/materialization.mjs +13 -8
- package/dist/esm/project-definition/check-tree/materialization.mjs.map +1 -1
- package/dist/esm/project-definition/check-tree/resolution.mjs +7 -6
- package/dist/esm/project-definition/check-tree/resolution.mjs.map +1 -1
- package/dist/esm/project-definition/declarative-snapshot.mjs +2 -1
- package/dist/esm/project-definition/declarative-snapshot.mjs.map +1 -1
- package/dist/esm/project-definition/project-changes.mjs +70 -0
- package/dist/esm/project-definition/project-changes.mjs.map +1 -0
- package/dist/esm/project-definition/project-definition-validation.mjs +40 -8
- package/dist/esm/project-definition/project-definition-validation.mjs.map +1 -1
- package/dist/esm/project-definition/project-definition.mjs +22 -15
- package/dist/esm/project-definition/project-definition.mjs.map +1 -1
- package/dist/esm/project-definition/scheduler-policy.mjs.map +1 -1
- package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs +9 -6
- package/dist/esm/project-run/admission-strategy-provider/custom-strategy-preparation.mjs.map +1 -1
- package/dist/esm/project-run/admission-strategy-provider/prepared-admission-strategy.mjs.map +1 -1
- package/dist/esm/project-run/aggregation.mjs +42 -59
- package/dist/esm/project-run/aggregation.mjs.map +1 -1
- package/dist/esm/project-run/changes/git.mjs +161 -0
- package/dist/esm/project-run/changes/git.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/admitted-check-execution.mjs +41 -0
- package/dist/esm/project-run/check-execution/admitted-check-execution.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/callback.mjs +3 -2
- package/dist/esm/project-run/check-execution/callback.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/dependencies.mjs +80 -5
- package/dist/esm/project-run/check-execution/dependencies.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/execution-finalization.mjs +5 -3
- package/dist/esm/project-run/check-execution/execution-finalization.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/execution-settlement.mjs +37 -16
- package/dist/esm/project-run/check-execution/execution-settlement.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/flag-controls.mjs +15 -7
- package/dist/esm/project-run/check-execution/flag-controls.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/lifecycle.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/{preflight-result.mjs → preparation-result.mjs} +24 -24
- package/dist/esm/project-run/check-execution/preparation-result.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/{preflight.mjs → preparation.mjs} +52 -52
- package/dist/esm/project-run/check-execution/preparation.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/ready-check-execution.mjs +71 -0
- package/dist/esm/project-run/check-execution/ready-check-execution.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/resolved-checks.mjs +27 -164
- package/dist/esm/project-run/check-execution/resolved-checks.mjs.map +1 -1
- package/dist/esm/project-run/check-execution/scheduled-check-run.mjs +79 -0
- package/dist/esm/project-run/check-execution/scheduled-check-run.mjs.map +1 -0
- package/dist/esm/project-run/check-execution/terminal-result.mjs +70 -25
- package/dist/esm/project-run/check-execution/terminal-result.mjs.map +1 -1
- package/dist/esm/project-run/completion/completion.mjs +18 -1
- package/dist/esm/project-run/completion/completion.mjs.map +1 -1
- package/dist/esm/project-run/controls/contract.mjs.map +1 -1
- package/dist/esm/project-run/controls/validation.mjs +7 -54
- package/dist/esm/project-run/controls/validation.mjs.map +1 -1
- package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs +3 -3
- package/dist/esm/project-run/diagnostic-logging/diagnostic-detail-rendering.mjs.map +1 -1
- package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs +1 -1
- package/dist/esm/project-run/diagnostic-logging/observation-rendering.mjs.map +1 -1
- package/dist/esm/project-run/invocation/candidate.mjs +17 -13
- package/dist/esm/project-run/invocation/candidate.mjs.map +1 -1
- package/dist/esm/project-run/invocation/candidates.mjs +26 -0
- package/dist/esm/project-run/invocation/candidates.mjs.map +1 -0
- package/dist/esm/project-run/invocation/creation.mjs +7 -3
- package/dist/esm/project-run/invocation/creation.mjs.map +1 -1
- package/dist/esm/project-run/invocation/execution.mjs +98 -0
- package/dist/esm/project-run/invocation/execution.mjs.map +1 -0
- package/dist/esm/project-run/invocation/run.mjs +13 -112
- package/dist/esm/project-run/invocation/run.mjs.map +1 -1
- package/dist/esm/project-run/invocation/scheduler.mjs +13 -6
- package/dist/esm/project-run/invocation/scheduler.mjs.map +1 -1
- package/dist/esm/project-run/outputs/status.mjs +12 -12
- package/dist/esm/project-run/outputs/status.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/presentation.mjs +31 -11
- package/dist/esm/project-run/progress-rendering/presentation.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs +11 -4
- package/dist/esm/project-run/progress-rendering/renderer-formatting.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs +20 -6
- package/dist/esm/project-run/progress-rendering/renderer-lifecycle.mjs.map +1 -1
- package/dist/esm/project-run/progress-rendering/renderer.mjs +6 -2
- package/dist/esm/project-run/progress-rendering/renderer.mjs.map +1 -1
- package/dist/esm/project-run/project-context.mjs +2 -1
- package/dist/esm/project-run/project-context.mjs.map +1 -1
- package/dist/esm/project-run/result.mjs +2 -2
- package/dist/esm/project-run/result.mjs.map +1 -1
- package/dist/esm/project-run/run.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph-lookup.mjs +45 -0
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph-lookup.mjs.map +1 -0
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs +9 -4
- package/dist/esm/project-run/task-scheduler/admission-core/compiled-graph.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs +3 -5
- package/dist/esm/project-run/task-scheduler/admission-core/selection-query.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs +25 -8
- package/dist/esm/project-run/task-scheduler/admission-core/selection-seed.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs +8 -8
- package/dist/esm/project-run/task-scheduler/admission-core/selection-transition.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/execution-state.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs +8 -4
- package/dist/esm/project-run/task-scheduler/measurement/diagnostics.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/measurement/timing.mjs +12 -6
- package/dist/esm/project-run/task-scheduler/measurement/timing.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs +3 -1
- package/dist/esm/project-run/task-scheduler/scheduler-observation.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs +17 -17
- package/dist/esm/project-run/task-scheduler/scheduler-terminal-measurement.mjs.map +1 -1
- package/dist/esm/project-run/task-scheduler/scheduler.mjs +18 -6
- package/dist/esm/project-run/task-scheduler/scheduler.mjs.map +1 -1
- package/docs/api-mechanics.md +147 -28
- package/docs/changelog.md +145 -2
- package/docs/checks/duplicate-detection.md +22 -3
- package/docs/checks/file-metrics.md +25 -6
- package/docs/checks/function-metrics.md +21 -2
- package/docs/checks/json-schema-validation.md +25 -4
- package/docs/checks/json-validation.md +24 -5
- package/docs/checks/maintenance-reminders.md +30 -6
- package/docs/checks/markdown-link-validation.md +24 -4
- package/docs/checks/markdown-lint.md +167 -0
- package/docs/checks/secret-detection.md +31 -7
- package/docs/examples/artifacts/mixed-outcomes/definition.ts +10 -10
- package/docs/guides/building-project-gate.md +706 -0
- package/docs/guides/callbacks.md +81 -22
- package/docs/guides/check-dependencies.md +41 -10
- package/docs/guides/collecting-project-files.md +7 -7
- package/docs/guides/command-check.md +155 -0
- package/docs/guides/data-boundaries.md +140 -0
- package/docs/guides/extending-check-lifecycle.md +77 -25
- package/docs/guides/finding-waivers.md +43 -1
- package/docs/guides/learned-scheduling.md +1 -1
- package/docs/guides/run-outputs.md +35 -9
- package/docs/guides/scheduling.md +15 -15
- package/docs/output.md +6 -5
- package/package.json +2 -1
- package/src/check/check.ts +332 -92
- package/src/check/flag-enablement.ts +76 -0
- package/src/check/handoff-provider-identity.ts +34 -0
- package/src/check/inherited-collection.ts +1 -1
- package/src/check/project-changes.ts +14 -0
- package/src/check/project-context.ts +11 -0
- package/src/check-settlement/facts.ts +1 -1
- package/src/check-settlement/record-store.ts +1 -1
- package/src/data-boundary/canonical-data.ts +36 -9
- package/src/data-boundary/canonical-json.ts +18 -1
- package/src/data-boundary/closed-values.ts +26 -6
- package/src/data-boundary/config-glob.ts +17 -0
- package/src/data-boundary/project-path.ts +21 -0
- package/src/index.ts +72 -11
- package/src/machine-output/v4/atomic-publication.ts +3 -1
- package/src/package-checks/check-authoring.ts +136 -0
- package/src/package-checks/code-quality-findings/finding-waiver-authoring.ts +1 -1
- package/src/package-checks/code-quality-findings/finding-waiver-evidence.ts +1 -1
- package/src/package-checks/command-check/command-check.ts +152 -0
- package/src/package-checks/command-check/contract.ts +168 -0
- package/src/package-checks/command-check/execution.ts +211 -0
- package/src/package-checks/command-check/options.ts +331 -0
- package/src/package-checks/command-check/transcript.ts +35 -0
- package/src/package-checks/duplicate-detection/default-check.ts +37 -6
- package/src/package-checks/duplicate-detection/execution.ts +2 -4
- package/src/package-checks/duplicate-detection/finding-messages.ts +2 -2
- package/src/package-checks/duplicate-detection/jscpd/availability.ts +1 -1
- package/src/package-checks/duplicate-detection/options.ts +6 -3
- package/src/package-checks/duplicate-detection/records.ts +1 -1
- package/src/package-checks/file-metrics/constructor.ts +29 -6
- package/src/package-checks/file-metrics/execution.ts +2 -4
- package/src/package-checks/file-metrics/finding-messages.ts +1 -1
- package/src/package-checks/file-metrics/options.ts +6 -3
- package/src/package-checks/file-metrics/records.ts +1 -1
- package/src/package-checks/file-metrics/scc/availability.ts +1 -1
- package/src/package-checks/file-metrics/scc/batch-planner.ts +56 -0
- package/src/package-checks/file-metrics/scc/logical-scan-resources.ts +59 -0
- package/src/package-checks/file-metrics/scc/scanner.ts +134 -32
- package/src/package-checks/function-metrics/analysis.ts +7 -2
- package/src/package-checks/function-metrics/analyzer/analysis-model.ts +1 -1
- package/src/package-checks/function-metrics/analyzer/extension-output.ts +14 -6
- package/src/package-checks/function-metrics/analyzer/extensions/lizardcomplextags.ts +1 -3
- package/src/package-checks/function-metrics/analyzer/extensions/protocol.ts +3 -3
- package/src/package-checks/function-metrics/analyzer/pipeline.ts +4 -2
- package/src/package-checks/function-metrics/analyzer/readers/erlang.ts +6 -6
- package/src/package-checks/function-metrics/analyzer/readers/fortran.ts +1 -1
- package/src/package-checks/function-metrics/analyzer/readers/objc.ts +9 -3
- package/src/package-checks/function-metrics/analyzer/readers/php-states.ts +14 -7
- package/src/package-checks/function-metrics/analyzer/readers/plsql.ts +8 -4
- package/src/package-checks/function-metrics/analyzer/readers/python.ts +4 -3
- package/src/package-checks/function-metrics/analyzer/readers/r.ts +2 -1
- package/src/package-checks/function-metrics/analyzer/readers/ttcn.ts +9 -3
- package/src/package-checks/function-metrics/analyzer/readers/typescript.ts +9 -3
- package/src/package-checks/function-metrics/analyzer/readers/zig.ts +2 -1
- package/src/package-checks/function-metrics/analyzer/shared/code-reader.ts +3 -1
- package/src/package-checks/function-metrics/analyzer/shared/js-style-regex.ts +10 -5
- package/src/package-checks/function-metrics/analyzer-worker-port.ts +20 -6
- package/src/package-checks/function-metrics/constructor.ts +30 -7
- package/src/package-checks/function-metrics/execution.ts +2 -4
- package/src/package-checks/function-metrics/finding-messages.ts +2 -2
- package/src/package-checks/function-metrics/measurement.ts +3 -1
- package/src/package-checks/function-metrics/options.ts +6 -3
- package/src/package-checks/function-metrics/records.ts +1 -1
- package/src/package-checks/host-environment/git.ts +11 -0
- package/src/package-checks/host-environment/path.ts +1 -20
- package/src/package-checks/host-environment/process/contract.ts +17 -9
- package/src/package-checks/host-environment/process/result.ts +48 -20
- package/src/package-checks/host-environment/process/runner.ts +8 -4
- package/src/package-checks/json-schema-validation/default-check.ts +38 -5
- package/src/package-checks/json-schema-validation/options.ts +4 -1
- package/src/package-checks/json-schema-validation/reference-resolver.ts +6 -2
- package/src/package-checks/json-schema-validation/schema-policy.ts +10 -5
- package/src/package-checks/json-validation/default-check.ts +27 -6
- package/src/package-checks/json-validation/options.ts +4 -1
- package/src/package-checks/local-cache-options.ts +40 -0
- package/src/package-checks/maintenance-reminders/maintenance-reminders.ts +89 -9
- package/src/package-checks/maintenance-reminders/maintenance-support.ts +3 -3
- package/src/package-checks/markdown-link-validation/default-check.ts +48 -5
- package/src/package-checks/markdown-link-validation/execution.ts +1 -1
- package/src/package-checks/markdown-link-validation/finding-messages.ts +1 -1
- package/src/package-checks/markdown-link-validation/markdown-parser.ts +1 -5
- package/src/package-checks/markdown-link-validation/options-resolution.ts +2 -19
- package/src/package-checks/markdown-link-validation/options-validation.ts +2 -17
- package/src/package-checks/markdown-link-validation/options.ts +6 -7
- package/src/package-checks/markdown-link-validation/parse-facts-cache-payload.ts +4 -5
- package/src/package-checks/markdown-lint/adapter.ts +167 -0
- package/src/package-checks/markdown-lint/default-check.ts +92 -0
- package/src/package-checks/markdown-lint/execution.ts +266 -0
- package/src/package-checks/markdown-lint/final-data.ts +33 -0
- package/src/package-checks/markdown-lint/finding-messages.ts +87 -0
- package/src/package-checks/markdown-lint/finding-waiver-identity.ts +54 -0
- package/src/package-checks/markdown-lint/findings-cache.ts +141 -0
- package/src/package-checks/markdown-lint/options-resolution.ts +102 -0
- package/src/package-checks/markdown-lint/options-validation.ts +50 -0
- package/src/package-checks/markdown-lint/options.ts +82 -0
- package/src/package-checks/markdown-lint/records.ts +132 -0
- package/src/package-checks/markdown-lint/unavailable-reasons.ts +33 -0
- package/src/package-checks/project-files/collection.ts +38 -22
- package/src/package-checks/project-files/config-glob.ts +1 -17
- package/src/package-checks/project-files/configuration.ts +1 -1
- package/src/package-checks/project-files/gitlink-revision.ts +4 -6
- package/src/package-checks/project-files/gitlink-worktree.ts +35 -7
- package/src/package-checks/project-files/public-collection.ts +1 -1
- package/src/package-checks/project-files/revision-paths.ts +3 -3
- package/src/package-checks/project-files/revision-worktree-files.ts +16 -16
- package/src/package-checks/secret-detection/default-check.ts +29 -6
- package/src/package-checks/secret-detection/execution.ts +2 -2
- package/src/package-checks/secret-detection/input-preparation.ts +64 -7
- package/src/package-checks/secret-detection/options.ts +5 -2
- package/src/package-checks/secret-detection/records.ts +1 -1
- package/src/package-checks/secret-detection/secretlint/adapter.ts +3 -4
- package/src/package-tools/admission-policy/define-admission-policy.ts +54 -0
- package/src/{cache → package-tools/cache}/cache-json-by-key.ts +13 -17
- package/src/{check → package-tools/finding-presentation}/finding-presentation.ts +3 -1
- package/src/{finding-waivers → package-tools/finding-waivers}/reconciliation.ts +16 -8
- package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/prediction.ts +5 -2
- package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/preparation.ts +5 -3
- package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/recording.ts +5 -4
- package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/storage.ts +9 -10
- package/src/{learned-critical-path → package-tools/learned-critical-path}/selection-layers.ts +2 -3
- package/src/{learned-critical-path → package-tools/learned-critical-path}/static-decision.ts +1 -1
- package/src/{learned-critical-path → package-tools/learned-critical-path}/strategy.ts +7 -4
- package/src/project-definition/check-tree/authoring.ts +15 -8
- package/src/project-definition/check-tree/check-fields-authoring.ts +106 -91
- package/src/project-definition/check-tree/flag-conditions.ts +99 -0
- package/src/project-definition/check-tree/materialization.ts +12 -8
- package/src/project-definition/check-tree/resolution.ts +13 -15
- package/src/project-definition/declarative-snapshot.ts +9 -2
- package/src/project-definition/project-changes.ts +112 -0
- package/src/project-definition/project-definition-validation.ts +58 -10
- package/src/project-definition/project-definition.ts +41 -68
- package/src/project-definition/scheduler-policy.ts +6 -3
- package/src/project-run/admission-strategy-provider/custom-strategy-preparation.ts +11 -8
- package/src/project-run/admission-strategy-provider/prepared-admission-strategy.ts +2 -2
- package/src/project-run/aggregation.ts +51 -74
- package/src/project-run/changes/git.ts +206 -0
- package/src/project-run/check-execution/admitted-check-execution.ts +62 -0
- package/src/project-run/check-execution/callback.ts +3 -2
- package/src/project-run/check-execution/dependencies.ts +120 -6
- package/src/project-run/check-execution/execution-finalization.ts +6 -4
- package/src/project-run/check-execution/execution-settlement.ts +88 -29
- package/src/project-run/check-execution/flag-controls.ts +22 -8
- package/src/project-run/check-execution/lifecycle.ts +14 -6
- package/src/project-run/check-execution/{preflight-result.ts → preparation-result.ts} +34 -32
- package/src/project-run/check-execution/{preflight.ts → preparation.ts} +92 -84
- package/src/project-run/check-execution/ready-check-execution.ts +97 -0
- package/src/project-run/check-execution/resolved-checks.ts +40 -219
- package/src/project-run/check-execution/scheduled-check-run.ts +119 -0
- package/src/project-run/check-execution/terminal-result.ts +108 -29
- package/src/project-run/completion/completion.ts +17 -3
- package/src/project-run/controls/contract.ts +6 -16
- package/src/project-run/controls/validation.ts +7 -60
- package/src/project-run/diagnostic-logging/diagnostic-detail-rendering.ts +1 -2
- package/src/project-run/diagnostic-logging/observation-rendering.ts +1 -1
- package/src/project-run/invocation/candidate.ts +28 -15
- package/src/project-run/invocation/candidates.ts +56 -0
- package/src/project-run/invocation/creation.ts +7 -3
- package/src/project-run/invocation/execution.ts +136 -0
- package/src/project-run/invocation/run.ts +15 -179
- package/src/project-run/invocation/scheduler.ts +13 -6
- package/src/project-run/outputs/status.ts +15 -15
- package/src/project-run/progress-rendering/presentation.ts +35 -13
- package/src/project-run/progress-rendering/renderer-formatting.ts +20 -7
- package/src/project-run/progress-rendering/renderer-lifecycle.ts +23 -6
- package/src/project-run/progress-rendering/renderer.ts +10 -4
- package/src/project-run/project-context.ts +8 -4
- package/src/project-run/result.ts +5 -5
- package/src/project-run/run.ts +1 -1
- package/src/project-run/task-scheduler/admission-core/compiled-graph-lookup.ts +71 -0
- package/src/project-run/task-scheduler/admission-core/compiled-graph.ts +9 -4
- package/src/project-run/task-scheduler/admission-core/selection-query.ts +6 -4
- package/src/project-run/task-scheduler/admission-core/selection-seed.ts +36 -6
- package/src/project-run/task-scheduler/admission-core/selection-transition.ts +17 -8
- package/src/project-run/task-scheduler/execution-state.ts +4 -4
- package/src/project-run/task-scheduler/measurement/diagnostics.ts +10 -4
- package/src/project-run/task-scheduler/measurement/timing.ts +13 -5
- package/src/project-run/task-scheduler/scheduler-observation.ts +3 -1
- package/src/project-run/task-scheduler/scheduler-terminal-measurement.ts +24 -22
- package/src/project-run/task-scheduler/scheduler.ts +23 -6
- package/types/check/check.d.ts +178 -67
- package/types/check/flag-enablement.d.ts +42 -0
- package/types/check/handoff-provider-identity.d.ts +12 -0
- package/types/check/project-changes.d.ts +13 -0
- package/types/check/project-context.d.ts +10 -0
- package/types/check-settlement/facts.d.ts +1 -1
- package/types/data-boundary/canonical-data.d.ts +28 -5
- package/types/data-boundary/canonical-json.d.ts +18 -1
- package/types/data-boundary/closed-values.d.ts +17 -1
- package/types/data-boundary/config-glob.d.ts +5 -0
- package/types/data-boundary/project-path.d.ts +4 -0
- package/types/index.d.ts +27 -11
- package/types/package-checks/check-authoring.d.ts +45 -0
- package/types/package-checks/code-quality-findings/finding-waiver-authoring.d.ts +1 -1
- package/types/package-checks/code-quality-findings/finding-waiver-evidence.d.ts +1 -1
- package/types/package-checks/command-check/command-check.d.ts +48 -0
- package/types/package-checks/command-check/contract.d.ts +108 -0
- package/types/package-checks/command-check/execution.d.ts +7 -0
- package/types/package-checks/command-check/options.d.ts +11 -0
- package/types/package-checks/command-check/transcript.d.ts +8 -0
- package/types/package-checks/duplicate-detection/default-check.d.ts +5 -2
- package/types/package-checks/duplicate-detection/finding-messages.d.ts +1 -1
- package/types/package-checks/duplicate-detection/options.d.ts +4 -3
- package/types/package-checks/duplicate-detection/records.d.ts +1 -1
- package/types/package-checks/file-metrics/constructor.d.ts +5 -2
- package/types/package-checks/file-metrics/options.d.ts +4 -3
- package/types/package-checks/file-metrics/records.d.ts +1 -1
- package/types/package-checks/file-metrics/scc/batch-planner.d.ts +18 -0
- package/types/package-checks/file-metrics/scc/logical-scan-resources.d.ts +14 -0
- package/types/package-checks/function-metrics/analyzer/extensions/protocol.d.ts +3 -3
- package/types/package-checks/function-metrics/constructor.d.ts +5 -2
- package/types/package-checks/function-metrics/finding-messages.d.ts +1 -1
- package/types/package-checks/function-metrics/options.d.ts +4 -3
- package/types/package-checks/function-metrics/records.d.ts +1 -1
- package/types/package-checks/host-environment/git.d.ts +2 -0
- package/types/package-checks/host-environment/path.d.ts +1 -3
- package/types/package-checks/host-environment/process/contract.d.ts +17 -9
- package/types/package-checks/json-schema-validation/default-check.d.ts +4 -1
- package/types/package-checks/json-schema-validation/options.d.ts +2 -1
- package/types/package-checks/json-validation/default-check.d.ts +4 -1
- package/types/package-checks/json-validation/options.d.ts +2 -1
- package/types/package-checks/local-cache-options.d.ts +9 -0
- package/types/package-checks/maintenance-reminders/maintenance-reminders.d.ts +11 -2
- package/types/package-checks/markdown-link-validation/default-check.d.ts +4 -1
- package/types/package-checks/markdown-link-validation/options.d.ts +4 -7
- package/types/package-checks/markdown-lint/adapter.d.ts +10 -0
- package/types/package-checks/markdown-lint/default-check.d.ts +37 -0
- package/types/package-checks/markdown-lint/execution.d.ts +24 -0
- package/types/package-checks/markdown-lint/final-data.d.ts +8 -0
- package/types/package-checks/markdown-lint/finding-messages.d.ts +6 -0
- package/types/package-checks/markdown-lint/finding-waiver-identity.d.ts +3 -0
- package/types/package-checks/markdown-lint/findings-cache.d.ts +17 -0
- package/types/package-checks/markdown-lint/options-resolution.d.ts +3 -0
- package/types/package-checks/markdown-lint/options-validation.d.ts +2 -0
- package/types/package-checks/markdown-lint/options.d.ts +65 -0
- package/types/package-checks/markdown-lint/records.d.ts +39 -0
- package/types/package-checks/markdown-lint/unavailable-reasons.d.ts +3 -0
- package/types/package-checks/secret-detection/default-check.d.ts +4 -1
- package/types/package-checks/secret-detection/options.d.ts +3 -2
- package/types/package-tools/admission-policy/define-admission-policy.d.ts +26 -0
- package/types/{check → package-tools/finding-presentation}/finding-presentation.d.ts +3 -1
- package/types/{finding-waivers → package-tools/finding-waivers}/reconciliation.d.ts +3 -3
- package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/prediction.d.ts +2 -2
- package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/preparation.d.ts +1 -1
- package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/recording.d.ts +1 -1
- package/types/{learned-critical-path → package-tools/learned-critical-path}/selection-layers.d.ts +1 -1
- package/types/{learned-critical-path → package-tools/learned-critical-path}/static-decision.d.ts +1 -1
- package/types/{learned-critical-path → package-tools/learned-critical-path}/strategy.d.ts +1 -1
- package/types/project-definition/check-tree/authoring.d.ts +5 -3
- package/types/project-definition/check-tree/check-fields-authoring.d.ts +12 -7
- package/types/project-definition/check-tree/flag-conditions.d.ts +5 -0
- package/types/project-definition/check-tree/resolution.d.ts +6 -4
- package/types/project-definition/declarative-snapshot.d.ts +4 -1
- package/types/project-definition/project-changes.d.ts +30 -0
- package/types/project-definition/project-definition.d.ts +15 -30
- package/types/project-definition/scheduler-policy.d.ts +3 -3
- package/types/project-run/admission-strategy-provider/prepared-admission-strategy.d.ts +2 -2
- package/types/project-run/aggregation.d.ts +8 -6
- package/types/project-run/changes/git.d.ts +14 -0
- package/types/project-run/check-execution/admitted-check-execution.d.ts +18 -0
- package/types/project-run/check-execution/dependencies.d.ts +3 -0
- package/types/project-run/check-execution/execution-finalization.d.ts +1 -1
- package/types/project-run/check-execution/execution-settlement.d.ts +15 -7
- package/types/project-run/check-execution/flag-controls.d.ts +1 -1
- package/types/project-run/check-execution/lifecycle.d.ts +9 -5
- package/types/project-run/check-execution/{preflight-result.d.ts → preparation-result.d.ts} +3 -3
- package/types/project-run/check-execution/{preflight.d.ts → preparation.d.ts} +10 -9
- package/types/project-run/check-execution/ready-check-execution.d.ts +18 -0
- package/types/project-run/check-execution/resolved-checks.d.ts +12 -13
- package/types/project-run/check-execution/scheduled-check-run.d.ts +10 -0
- package/types/project-run/check-execution/terminal-result.d.ts +13 -1
- package/types/project-run/completion/completion.d.ts +3 -1
- package/types/project-run/controls/contract.d.ts +6 -16
- package/types/project-run/invocation/candidates.d.ts +8 -0
- package/types/project-run/invocation/execution.d.ts +5 -0
- package/types/project-run/invocation/run.d.ts +2 -2
- package/types/project-run/outputs/status.d.ts +4 -4
- package/types/project-run/progress-rendering/presentation.d.ts +4 -3
- package/types/project-run/progress-rendering/renderer-formatting.d.ts +5 -2
- package/types/project-run/progress-rendering/renderer-lifecycle.d.ts +2 -0
- package/types/project-run/progress-rendering/renderer.d.ts +4 -2
- package/types/project-run/project-context.d.ts +3 -3
- package/types/project-run/result.d.ts +3 -3
- package/types/project-run/run.d.ts +1 -1
- package/types/project-run/task-scheduler/admission-core/compiled-graph-lookup.d.ts +10 -0
- package/types/project-run/task-scheduler/execution-state.d.ts +4 -4
- package/types/project-run/task-scheduler/measurement/diagnostics.d.ts +2 -2
- package/types/project-run/task-scheduler/scheduler-terminal-measurement.d.ts +1 -1
- package/dist/esm/cache/cache-json-by-key.mjs.map +0 -1
- package/dist/esm/check/finding-presentation.mjs.map +0 -1
- package/dist/esm/finding-waivers/reconciliation.mjs.map +0 -1
- package/dist/esm/learned-critical-path/duration-model/bounded-history.mjs.map +0 -1
- package/dist/esm/learned-critical-path/duration-model/prediction.mjs.map +0 -1
- package/dist/esm/learned-critical-path/duration-model/preparation.mjs.map +0 -1
- package/dist/esm/learned-critical-path/duration-model/recording.mjs.map +0 -1
- package/dist/esm/learned-critical-path/duration-model/storage.mjs.map +0 -1
- package/dist/esm/learned-critical-path/selection-layers.mjs.map +0 -1
- package/dist/esm/learned-critical-path/static-decision.mjs.map +0 -1
- package/dist/esm/learned-critical-path/strategy.mjs.map +0 -1
- package/dist/esm/package-checks/project-files/config-glob.mjs.map +0 -1
- package/dist/esm/project-run/check-execution/preflight-result.mjs.map +0 -1
- package/dist/esm/project-run/check-execution/preflight.mjs.map +0 -1
- package/dist/esm/project-run/task-scheduler/critical-path-ranking.mjs.map +0 -1
- package/types/package-checks/project-files/config-glob.d.ts +0 -5
- /package/dist/esm/{check → package-tools/finding-presentation}/finding-presentation.mjs +0 -0
- /package/dist/esm/{project-run/task-scheduler → package-tools/learned-critical-path}/critical-path-ranking.mjs +0 -0
- /package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/bounded-history.mjs +0 -0
- /package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/duration-model/recording.mjs +0 -0
- /package/dist/esm/{learned-critical-path → package-tools/learned-critical-path}/static-decision.mjs +0 -0
- /package/src/{project-run/task-scheduler → package-tools/learned-critical-path}/critical-path-ranking.ts +0 -0
- /package/src/{learned-critical-path → package-tools/learned-critical-path}/duration-model/bounded-history.ts +0 -0
- /package/types/{cache → package-tools/cache}/cache-json-by-key.d.ts +0 -0
- /package/types/{project-run/task-scheduler → package-tools/learned-critical-path}/critical-path-ranking.d.ts +0 -0
- /package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/bounded-history.d.ts +0 -0
- /package/types/{learned-critical-path → package-tools/learned-critical-path}/duration-model/storage.d.ts +0 -0
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { CheckProjectContext } from "../../check/check.ts";
|
|
2
1
|
import {
|
|
3
2
|
normalizeProjectDefinition,
|
|
4
3
|
type DefinitionWarning,
|
|
@@ -7,33 +6,20 @@ import {
|
|
|
7
6
|
type ResolvedProjectOutputs
|
|
8
7
|
} from "../../project-definition/project-definition.ts";
|
|
9
8
|
import type { CheckAggregation, RunControls } from "../controls/contract.ts";
|
|
10
|
-
import {
|
|
11
|
-
createAdmissionStrategyProvider,
|
|
12
|
-
type AdmissionStrategyProviderFactory
|
|
13
|
-
} from "../admission-strategy-provider/provider.ts";
|
|
14
|
-
import { AdmissionStrategyPreparationFailure } from "../admission-strategy-provider/custom-strategy-preparation.ts";
|
|
15
|
-
import type { PreparedAdmissionStrategy } from "../admission-strategy-provider/prepared-admission-strategy.ts";
|
|
9
|
+
import type { AdmissionStrategyProviderFactory } from "../admission-strategy-provider/provider.ts";
|
|
16
10
|
import { prepareTaskGraph } from "../task-scheduler/graph.ts";
|
|
17
|
-
import {
|
|
11
|
+
import { CheckAggregationFailure } from "../aggregation.ts";
|
|
18
12
|
import { type CheckExecutionClock } from "../check-execution/resolved-checks.ts";
|
|
19
|
-
import type { ResolvedCheckExecution } from "../check-execution/resolved-execution-result.ts";
|
|
20
13
|
import { planStaticCheckGraph } from "../check-execution/plan.ts";
|
|
21
14
|
import {
|
|
22
15
|
type ProgressRefreshScheduler,
|
|
23
16
|
type ProgressRendering,
|
|
24
17
|
type ProgressWriterFactory
|
|
25
18
|
} from "../progress-rendering/presentation.ts";
|
|
26
|
-
import { finalizeInvocation } from "../completion/completion.ts";
|
|
27
|
-
import { createProjectContext } from "../project-context.ts";
|
|
19
|
+
import { closeAggregationFailure, finalizeInvocation } from "../completion/completion.ts";
|
|
28
20
|
import type { ResolvedInvocationPaths } from "./paths.ts";
|
|
29
|
-
import {
|
|
30
|
-
|
|
31
|
-
planning,
|
|
32
|
-
preExecutionCancellation,
|
|
33
|
-
type NonConfigurationRunResult,
|
|
34
|
-
type RunDiagnostic,
|
|
35
|
-
type RunResult
|
|
36
|
-
} from "../result.ts";
|
|
21
|
+
import type { OutputStatuses } from "../outputs/status.ts";
|
|
22
|
+
import { isCancelled, type NonConfigurationRunResult, type RunResult } from "../result.ts";
|
|
37
23
|
import {
|
|
38
24
|
diagnosticTags,
|
|
39
25
|
summarizeDiagnosticValue,
|
|
@@ -41,9 +27,8 @@ import {
|
|
|
41
27
|
type DiagnosticLoggingRouter
|
|
42
28
|
} from "../diagnostic-logging/logger.ts";
|
|
43
29
|
import { createInvocation } from "./creation.ts";
|
|
44
|
-
import
|
|
45
|
-
import {
|
|
46
|
-
import { mapResolvedExecutionToRunCandidate } from "./candidate.ts";
|
|
30
|
+
import { cancelledBeforeExecution, executionResult, planningResult } from "./candidates.ts";
|
|
31
|
+
import { executePlannedInvocation } from "./execution.ts";
|
|
47
32
|
export type Invocation = Readonly<{
|
|
48
33
|
/** Product-private test seam; package `run` never accepts a provider factory. */
|
|
49
34
|
readonly admissionStrategyProviderFactory: AdmissionStrategyProviderFactory | undefined;
|
|
@@ -83,17 +68,6 @@ export async function executeValidatedRun(
|
|
|
83
68
|
dependencies: RunInvocationDependencies = {}
|
|
84
69
|
): Promise<RunResult> {
|
|
85
70
|
const normalized = normalizeProjectDefinition(definition);
|
|
86
|
-
const aggregation = validateCheckAggregationSelection(
|
|
87
|
-
controls.checkAggregation,
|
|
88
|
-
normalized.checks.map((check) => check.definition.checkId)
|
|
89
|
-
);
|
|
90
|
-
if (!aggregation.ok)
|
|
91
|
-
return Object.freeze({
|
|
92
|
-
kind: "configuration",
|
|
93
|
-
definitionWarnings: Object.freeze([...definitionWarnings]),
|
|
94
|
-
diagnostic: aggregation.error
|
|
95
|
-
});
|
|
96
|
-
|
|
97
71
|
const invocation = createInvocation({
|
|
98
72
|
controls,
|
|
99
73
|
definition,
|
|
@@ -103,15 +77,19 @@ export async function executeValidatedRun(
|
|
|
103
77
|
});
|
|
104
78
|
let candidate: NonConfigurationRunResult;
|
|
105
79
|
try {
|
|
106
|
-
observeInvocationStarted(invocation,
|
|
80
|
+
observeInvocationStarted(invocation, controls.checkAggregation);
|
|
107
81
|
if (isCancelled(controls)) {
|
|
108
82
|
candidate = cancelledBeforeExecution(invocation, "pre-work");
|
|
109
83
|
} else if (!validateTaskGraph(invocation)) {
|
|
110
84
|
candidate = planningResult(invocation, "task-graph-invalid");
|
|
111
85
|
} else {
|
|
112
|
-
candidate = await executePlannedInvocation(invocation,
|
|
86
|
+
candidate = await executePlannedInvocation(invocation, controls.checkAggregation);
|
|
87
|
+
}
|
|
88
|
+
} catch (error) {
|
|
89
|
+
if (error instanceof CheckAggregationFailure) {
|
|
90
|
+
closeAggregationFailure(invocation);
|
|
91
|
+
throw error.originalError;
|
|
113
92
|
}
|
|
114
|
-
} catch {
|
|
115
93
|
candidate = executionResult(invocation, "task-engine-failed");
|
|
116
94
|
}
|
|
117
95
|
return finalizeInvocation(invocation, candidate);
|
|
@@ -125,7 +103,7 @@ function observeInvocationStarted(
|
|
|
125
103
|
event: "run.started",
|
|
126
104
|
tags: diagnosticTags("RUN", "STARTED"),
|
|
127
105
|
details: {
|
|
128
|
-
aggregation: aggregation
|
|
106
|
+
aggregation: aggregation === undefined ? "default" : "custom",
|
|
129
107
|
checkCount: invocation.normalized.checks.length,
|
|
130
108
|
flags: summarizeDiagnosticValue(invocation.controls.flags ?? []),
|
|
131
109
|
outputs: invocation.outputConfiguration,
|
|
@@ -164,145 +142,3 @@ function validateTaskGraph(invocation: Invocation): boolean {
|
|
|
164
142
|
return false;
|
|
165
143
|
}
|
|
166
144
|
}
|
|
167
|
-
async function executePlannedInvocation(
|
|
168
|
-
invocation: Invocation,
|
|
169
|
-
aggregation: CheckAggregation | undefined
|
|
170
|
-
): Promise<NonConfigurationRunResult> {
|
|
171
|
-
if (isCancelled(invocation.controls)) return cancelledBeforeExecution(invocation, "pre-work");
|
|
172
|
-
return executePreparedInvocation(
|
|
173
|
-
invocation,
|
|
174
|
-
aggregation,
|
|
175
|
-
createProjectContext({ controls: invocation.controls, paths: invocation.paths })
|
|
176
|
-
);
|
|
177
|
-
}
|
|
178
|
-
async function executePreparedInvocation(
|
|
179
|
-
invocation: Invocation,
|
|
180
|
-
aggregation: CheckAggregation | undefined,
|
|
181
|
-
project: CheckProjectContext
|
|
182
|
-
): Promise<NonConfigurationRunResult> {
|
|
183
|
-
if (isCancelled(invocation.controls)) return cancelledBeforeExecution(invocation, "planning");
|
|
184
|
-
let preparedStrategy: PreparedAdmissionStrategy;
|
|
185
|
-
try {
|
|
186
|
-
preparedStrategy = await prepareAdmissionStrategy(invocation);
|
|
187
|
-
} catch (error) {
|
|
188
|
-
if (error instanceof AdmissionStrategyPreparationFailure) {
|
|
189
|
-
return executionResult(invocation, "admission-strategy-preparation-failed");
|
|
190
|
-
}
|
|
191
|
-
throw error;
|
|
192
|
-
}
|
|
193
|
-
if (preparedStrategy.completion.kind === "measurement-hook") {
|
|
194
|
-
invocation.outputs.enableMeasurementHooks();
|
|
195
|
-
}
|
|
196
|
-
invocation.progressRendering.prepared(invocation.normalized.checks.length);
|
|
197
|
-
const executionStartedAt = invocation.clock.now();
|
|
198
|
-
const executed = await executeScheduler({ invocation, preparedStrategy, project });
|
|
199
|
-
if (isExecutionRunResult(executed)) return executed;
|
|
200
|
-
await completeAdmissionStrategyAfterTerminalMeasurement(
|
|
201
|
-
preparedStrategy,
|
|
202
|
-
executed,
|
|
203
|
-
invocation.outputs
|
|
204
|
-
);
|
|
205
|
-
return mapResolvedExecutionToRunCandidate({
|
|
206
|
-
aggregation,
|
|
207
|
-
executed,
|
|
208
|
-
executionStartedAt,
|
|
209
|
-
invocation
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
/** Composes one invocation-local strategy only after the static Task graph is valid. */
|
|
214
|
-
async function prepareAdmissionStrategy(
|
|
215
|
-
invocation: Invocation
|
|
216
|
-
): Promise<PreparedAdmissionStrategy> {
|
|
217
|
-
const graph = prepareTaskGraph(
|
|
218
|
-
planStaticCheckGraph(
|
|
219
|
-
invocation.normalized.checks,
|
|
220
|
-
invocation.normalized.declarative.scheduler.resourceCapacities
|
|
221
|
-
),
|
|
222
|
-
invocation.normalized.declarative.scheduler.maxParallel
|
|
223
|
-
);
|
|
224
|
-
const admissionStrategyProviderFactory =
|
|
225
|
-
invocation.admissionStrategyProviderFactory ?? createAdmissionStrategyProvider;
|
|
226
|
-
const provider = admissionStrategyProviderFactory({
|
|
227
|
-
admissionPolicy: invocation.normalized.scheduler.admissionPolicy,
|
|
228
|
-
graph: graph.schedulerGraphSnapshot
|
|
229
|
-
});
|
|
230
|
-
return provider.prepare();
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
/** The prepared provider closes only after Scheduler terminal measurement and Hooks have settled. */
|
|
234
|
-
async function completeAdmissionStrategyAfterTerminalMeasurement(
|
|
235
|
-
preparedStrategy: PreparedAdmissionStrategy,
|
|
236
|
-
executed: ResolvedCheckExecution,
|
|
237
|
-
outputs: OutputStatuses
|
|
238
|
-
): Promise<void> {
|
|
239
|
-
const terminalMeasurement = executed.terminalSchedulerMeasurement;
|
|
240
|
-
if (terminalMeasurement === undefined) return;
|
|
241
|
-
switch (preparedStrategy.completion.kind) {
|
|
242
|
-
case "none":
|
|
243
|
-
return;
|
|
244
|
-
case "internal":
|
|
245
|
-
try {
|
|
246
|
-
await preparedStrategy.completion.complete(Object.freeze({ terminalMeasurement }));
|
|
247
|
-
} catch {
|
|
248
|
-
// Private learned lifecycle cannot revise sealed execution or public output facts.
|
|
249
|
-
}
|
|
250
|
-
return;
|
|
251
|
-
case "measurement-hook":
|
|
252
|
-
try {
|
|
253
|
-
await preparedStrategy.completion.complete(terminalMeasurement);
|
|
254
|
-
outputs.succeeded("measurementHooks");
|
|
255
|
-
} catch {
|
|
256
|
-
outputs.failed("measurementHooks");
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
function cancelledBeforeExecution(
|
|
262
|
-
invocation: Invocation,
|
|
263
|
-
phase: "pre-work" | "planning"
|
|
264
|
-
): NonConfigurationRunResult {
|
|
265
|
-
invocation.diagnosticLogging.core.observe({
|
|
266
|
-
event: "run.cancelled",
|
|
267
|
-
tags: diagnosticTags("RUN", "CANCELLED"),
|
|
268
|
-
details: { phase }
|
|
269
|
-
});
|
|
270
|
-
return preExecutionCancellation(
|
|
271
|
-
invocation.declarativeFingerprint,
|
|
272
|
-
invocation.definitionWarnings,
|
|
273
|
-
invocation.outputs.value(),
|
|
274
|
-
phase
|
|
275
|
-
);
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
function planningResult(
|
|
279
|
-
invocation: Invocation,
|
|
280
|
-
code: Extract<RunDiagnostic["code"], "task-graph-invalid">
|
|
281
|
-
): NonConfigurationRunResult {
|
|
282
|
-
return planning(
|
|
283
|
-
invocation.declarativeFingerprint,
|
|
284
|
-
invocation.definitionWarnings,
|
|
285
|
-
invocation.outputs.value(),
|
|
286
|
-
code
|
|
287
|
-
);
|
|
288
|
-
}
|
|
289
|
-
function executionResult(
|
|
290
|
-
invocation: Invocation,
|
|
291
|
-
code: Extract<
|
|
292
|
-
RunDiagnostic["code"],
|
|
293
|
-
"admission-strategy-preparation-failed" | "task-engine-failed"
|
|
294
|
-
>
|
|
295
|
-
): NonConfigurationRunResult {
|
|
296
|
-
return Object.freeze({
|
|
297
|
-
kind: "execution",
|
|
298
|
-
declarativeFingerprint: invocation.declarativeFingerprint,
|
|
299
|
-
definitionWarnings: invocation.definitionWarnings,
|
|
300
|
-
diagnostic: Object.freeze({ code }),
|
|
301
|
-
outputs: invocation.outputs.value()
|
|
302
|
-
});
|
|
303
|
-
}
|
|
304
|
-
function isExecutionRunResult(
|
|
305
|
-
value: SchedulerExecution
|
|
306
|
-
): value is Extract<NonConfigurationRunResult, { readonly kind: "execution" }> {
|
|
307
|
-
return "declarativeFingerprint" in value;
|
|
308
|
-
}
|
|
@@ -28,14 +28,21 @@ export async function executeScheduler(input: SchedulerAdapterInput): Promise<Sc
|
|
|
28
28
|
...(invocation.diagnosticLoggingEnabled
|
|
29
29
|
? { schedulerDiagnosticLogger: invocation.diagnosticLogging.scheduler }
|
|
30
30
|
: {}),
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
...(performanceDiagnostics === undefined
|
|
32
|
+
? {}
|
|
33
|
+
: { schedulerPerformanceDiagnostics: performanceDiagnostics }),
|
|
34
|
+
schedulerTerminalEffects: invocation.normalized.scheduler.terminalEffects,
|
|
35
|
+
onSchedulerTerminalEffectFailure: () => {
|
|
36
|
+
invocation.outputs.failed("terminalEffects");
|
|
37
|
+
},
|
|
38
|
+
onSchedulerTerminalEffectsSettled: () => {
|
|
39
|
+
invocation.outputs.succeeded("terminalEffects");
|
|
40
|
+
},
|
|
35
41
|
maxParallel: invocation.normalized.declarative.scheduler.maxParallel,
|
|
36
42
|
resourceCapacities: invocation.normalized.declarative.scheduler.resourceCapacities,
|
|
37
43
|
invocationId: invocation.invocationId,
|
|
38
|
-
|
|
44
|
+
checkLifecycle: invocation.progressRendering.checkLifecycle,
|
|
45
|
+
invocationLifecycle: invocation.progressRendering.invocationLifecycle,
|
|
39
46
|
paths: invocation.paths,
|
|
40
47
|
project: input.project,
|
|
41
48
|
signal: invocation.controls.signal
|
|
@@ -49,7 +56,7 @@ function schedulerPerformanceDiagnostics(input: SchedulerAdapterInput) {
|
|
|
49
56
|
const { invocation, preparedStrategy } = input;
|
|
50
57
|
const shouldCollectSchedulerPerformanceDiagnostics =
|
|
51
58
|
invocation.diagnosticLoggingEnabled ||
|
|
52
|
-
invocation.normalized.scheduler.
|
|
59
|
+
invocation.normalized.scheduler.terminalEffects.length > 0 ||
|
|
53
60
|
preparedStrategy.admissionPolicy.requiresMeasurement === true ||
|
|
54
61
|
preparedStrategy.requiresTerminalMeasurement;
|
|
55
62
|
if (!shouldCollectSchedulerPerformanceDiagnostics) return undefined;
|
|
@@ -33,15 +33,15 @@ export interface RunOutputStatuses {
|
|
|
33
33
|
/** core 与 scheduler diagnostic channels 的 aggregate 状态。 */
|
|
34
34
|
readonly diagnosticLogging: RunDiagnosticLoggingOutputStatus;
|
|
35
35
|
/**
|
|
36
|
-
* Definition generic
|
|
36
|
+
* Definition generic effects 与 prepared custom strategy 的 optional `terminalEffect` 所形成的 terminal participant
|
|
37
37
|
* 状态;它不能由 RunControls 注入或覆盖。
|
|
38
38
|
*/
|
|
39
|
-
readonly
|
|
39
|
+
readonly terminalEffects: RunOutputStatus;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
export interface OutputStatuses {
|
|
43
43
|
/** Enables a runtime-only terminal participant after successful preparation. */
|
|
44
|
-
readonly
|
|
44
|
+
readonly enableTerminalEffects: () => void;
|
|
45
45
|
/** A diagnostic channel failure is isolated but updates the aggregate diagnostic output. */
|
|
46
46
|
readonly failedDiagnosticChannel: (channel: DiagnosticChannel) => void;
|
|
47
47
|
readonly failed: (output: keyof RunOutputStatuses) => void;
|
|
@@ -53,9 +53,9 @@ export interface OutputStatuses {
|
|
|
53
53
|
export function createOutputStatuses(
|
|
54
54
|
configuration: ProjectOutputs,
|
|
55
55
|
diagnosticLoggingFiles: Readonly<Record<DiagnosticChannel, string | null>>,
|
|
56
|
-
|
|
56
|
+
initialTerminalEffectsEnabled: boolean
|
|
57
57
|
): OutputStatuses {
|
|
58
|
-
let
|
|
58
|
+
let terminalEffectsEnabled = initialTerminalEffectsEnabled;
|
|
59
59
|
const diagnosticChannelEnabled: Readonly<Record<DiagnosticChannel, boolean>> = Object.freeze({
|
|
60
60
|
core: configuration.diagnosticLogging.enabled,
|
|
61
61
|
scheduler: configuration.diagnosticLogging.enabled
|
|
@@ -64,14 +64,14 @@ export function createOutputStatuses(
|
|
|
64
64
|
machinePublication: initialStatus(configuration.machinePublication.enabled),
|
|
65
65
|
progressRendering: initialStatus(configuration.progressRendering.enabled),
|
|
66
66
|
diagnosticLogging: initialStatus(configuration.diagnosticLogging.enabled),
|
|
67
|
-
|
|
67
|
+
terminalEffects: initialStatus(terminalEffectsEnabled)
|
|
68
68
|
};
|
|
69
69
|
const diagnosticChannelStatuses: Record<DiagnosticChannel, RunOutputStatus["status"]> = {
|
|
70
70
|
core: initialStatus(diagnosticChannelEnabled.core),
|
|
71
71
|
scheduler: initialStatus(diagnosticChannelEnabled.scheduler)
|
|
72
72
|
};
|
|
73
73
|
const enabled = (output: keyof RunOutputStatuses): boolean =>
|
|
74
|
-
output === "
|
|
74
|
+
output === "terminalEffects" ? terminalEffectsEnabled : configuration[output].enabled;
|
|
75
75
|
const refreshDiagnosticAggregate = (): void => {
|
|
76
76
|
const enabledStatuses = DIAGNOSTIC_CHANNELS.filter(
|
|
77
77
|
(channel) => diagnosticChannelEnabled[channel]
|
|
@@ -89,10 +89,10 @@ export function createOutputStatuses(
|
|
|
89
89
|
: "not-run";
|
|
90
90
|
};
|
|
91
91
|
return Object.freeze({
|
|
92
|
-
|
|
93
|
-
if (
|
|
94
|
-
|
|
95
|
-
statuses.
|
|
92
|
+
enableTerminalEffects: () => {
|
|
93
|
+
if (terminalEffectsEnabled) return;
|
|
94
|
+
terminalEffectsEnabled = true;
|
|
95
|
+
statuses.terminalEffects = "not-run";
|
|
96
96
|
},
|
|
97
97
|
failedDiagnosticChannel: (channel: DiagnosticChannel) => {
|
|
98
98
|
if (!diagnosticChannelEnabled[channel]) return;
|
|
@@ -129,9 +129,9 @@ export function createOutputStatuses(
|
|
|
129
129
|
enabled: configuration.diagnosticLogging.enabled,
|
|
130
130
|
status: statuses.diagnosticLogging
|
|
131
131
|
}),
|
|
132
|
-
|
|
133
|
-
enabled:
|
|
134
|
-
status: statuses.
|
|
132
|
+
terminalEffects: Object.freeze({
|
|
133
|
+
enabled: terminalEffectsEnabled,
|
|
134
|
+
status: statuses.terminalEffects
|
|
135
135
|
})
|
|
136
136
|
})
|
|
137
137
|
});
|
|
@@ -150,7 +150,7 @@ export function failedOutput(statuses: RunOutputStatuses): keyof RunOutputStatus
|
|
|
150
150
|
"progressRendering",
|
|
151
151
|
"machinePublication",
|
|
152
152
|
"diagnosticLogging",
|
|
153
|
-
"
|
|
153
|
+
"terminalEffects"
|
|
154
154
|
] as const)
|
|
155
155
|
if (statuses[output].status === "failed") return output;
|
|
156
156
|
return undefined;
|
|
@@ -3,6 +3,7 @@ import { dirname } from "node:path";
|
|
|
3
3
|
|
|
4
4
|
import type {
|
|
5
5
|
CheckExecutionLifecycle,
|
|
6
|
+
InvocationLifecycle,
|
|
6
7
|
CheckSettledFact,
|
|
7
8
|
CheckStartedFact
|
|
8
9
|
} from "../check-execution/lifecycle.ts";
|
|
@@ -19,8 +20,9 @@ export interface ProgressRendering {
|
|
|
19
20
|
/** Closes only an already-created file tee; it never creates a writer after pre-work termination. */
|
|
20
21
|
readonly close: () => void;
|
|
21
22
|
readonly final: (input: ProgressFinalFeedback) => void;
|
|
22
|
-
readonly
|
|
23
|
-
readonly
|
|
23
|
+
readonly checkLifecycle: CheckExecutionLifecycle;
|
|
24
|
+
readonly invocationLifecycle: InvocationLifecycle;
|
|
25
|
+
readonly prepared: (totalChecks: number, quietPassOmissionConfiguredCount: number) => void;
|
|
24
26
|
}
|
|
25
27
|
export interface ProgressFinalFeedback {
|
|
26
28
|
readonly counts: ProgressOutcomeCounts;
|
|
@@ -51,7 +53,11 @@ const defaultProgressRefreshScheduler: ProgressRefreshScheduler = Object.freeze(
|
|
|
51
53
|
schedule: (refresh: () => void, intervalMs: number) => {
|
|
52
54
|
const interval = setInterval(refresh, intervalMs);
|
|
53
55
|
interval.unref();
|
|
54
|
-
return Object.freeze({
|
|
56
|
+
return Object.freeze({
|
|
57
|
+
cancel: () => {
|
|
58
|
+
clearInterval(interval);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
55
61
|
}
|
|
56
62
|
});
|
|
57
63
|
|
|
@@ -96,7 +102,9 @@ export function createProgressRendering(
|
|
|
96
102
|
if (renderer !== undefined) return renderer;
|
|
97
103
|
writer = createProgressTee({
|
|
98
104
|
file: dependencies.file ?? null,
|
|
99
|
-
onFileFailure: () =>
|
|
105
|
+
onFileFailure: () => {
|
|
106
|
+
statuses.failed("progressRendering");
|
|
107
|
+
},
|
|
100
108
|
terminal: (dependencies.writerFactory ?? defaultProgressWriter)()
|
|
101
109
|
});
|
|
102
110
|
renderer = createProgressRenderer(writer, dependencies.clock, configuration);
|
|
@@ -156,9 +164,15 @@ export function createProgressRendering(
|
|
|
156
164
|
|
|
157
165
|
return Object.freeze({
|
|
158
166
|
close,
|
|
159
|
-
prepared: (totalChecks: number) =>
|
|
160
|
-
|
|
161
|
-
|
|
167
|
+
prepared: (totalChecks: number, quietPassOmissionConfiguredCount: number) => {
|
|
168
|
+
render(Object.freeze({ kind: "prepared", quietPassOmissionConfiguredCount, totalChecks }));
|
|
169
|
+
},
|
|
170
|
+
invocationLifecycle: Object.freeze({
|
|
171
|
+
selectionSettled: () => {
|
|
172
|
+
render(Object.freeze({ kind: "flag-control-completed" }));
|
|
173
|
+
}
|
|
174
|
+
}),
|
|
175
|
+
checkLifecycle: Object.freeze({
|
|
162
176
|
settled: (fact: CheckSettledFact) => {
|
|
163
177
|
render(
|
|
164
178
|
Object.freeze({
|
|
@@ -169,7 +183,7 @@ export function createProgressRendering(
|
|
|
169
183
|
messages: fact.messages,
|
|
170
184
|
outcome: fact.outcome,
|
|
171
185
|
records: fact.records,
|
|
172
|
-
|
|
186
|
+
omitQuietPassedRow: fact.omitQuietPassedRow
|
|
173
187
|
})
|
|
174
188
|
);
|
|
175
189
|
runningCheckIds.delete(fact.checkId);
|
|
@@ -178,7 +192,12 @@ export function createProgressRendering(
|
|
|
178
192
|
started: (fact: CheckStartedFact) => {
|
|
179
193
|
runningCheckIds.add(fact.checkId);
|
|
180
194
|
render(
|
|
181
|
-
Object.freeze({
|
|
195
|
+
Object.freeze({
|
|
196
|
+
kind: "started",
|
|
197
|
+
checkId: fact.checkId,
|
|
198
|
+
displayName: fact.displayName,
|
|
199
|
+
omitQuietPassedRow: fact.omitQuietPassedRow
|
|
200
|
+
})
|
|
182
201
|
);
|
|
183
202
|
startRefresh();
|
|
184
203
|
}
|
|
@@ -198,15 +217,18 @@ export function createProgressRendering(
|
|
|
198
217
|
});
|
|
199
218
|
}
|
|
200
219
|
function inertProgressRendering(): ProgressRendering {
|
|
201
|
-
const
|
|
202
|
-
|
|
220
|
+
const invocationLifecycle = Object.freeze({
|
|
221
|
+
selectionSettled: (): void => undefined
|
|
222
|
+
});
|
|
223
|
+
const checkLifecycle = Object.freeze({
|
|
203
224
|
settled: (_fact: CheckSettledFact): void => undefined,
|
|
204
225
|
started: (_fact: CheckStartedFact): void => undefined
|
|
205
226
|
});
|
|
206
227
|
return Object.freeze({
|
|
207
228
|
close: (): void => undefined,
|
|
208
|
-
prepared: (_totalChecks: number): void => undefined,
|
|
209
|
-
|
|
229
|
+
prepared: (_totalChecks: number, _quietPassOmissionConfiguredCount: number): void => undefined,
|
|
230
|
+
checkLifecycle,
|
|
231
|
+
invocationLifecycle,
|
|
210
232
|
final: (_input: ProgressFinalFeedback): void => undefined
|
|
211
233
|
});
|
|
212
234
|
}
|
|
@@ -24,21 +24,23 @@ const NAMED_CONTROL_ESCAPES: Readonly<Partial<Record<string, string>>> = Object.
|
|
|
24
24
|
|
|
25
25
|
export function formatRunningRow(
|
|
26
26
|
input: Readonly<{
|
|
27
|
-
readonly displayIndex: number;
|
|
27
|
+
readonly displayIndex: number | undefined;
|
|
28
28
|
readonly displayName: string;
|
|
29
29
|
readonly elapsedMs: number | null;
|
|
30
30
|
readonly totalChecks: number;
|
|
31
31
|
}>
|
|
32
32
|
): string {
|
|
33
33
|
const elapsed = input.elapsedMs === null ? "" : ` | ${formatDuration(input.elapsedMs)}`;
|
|
34
|
-
|
|
34
|
+
const ordinal =
|
|
35
|
+
input.displayIndex === undefined ? "·" : `[${input.displayIndex}/${input.totalChecks}]`;
|
|
36
|
+
return ` ${ordinal} ${escapeTerminalText(input.displayName)} | running${elapsed}\n`;
|
|
35
37
|
}
|
|
36
38
|
|
|
37
39
|
export function shouldPresentSettledFeedback(
|
|
38
40
|
feedback: Extract<ProgressFeedback, { readonly kind: "settled" }>
|
|
39
41
|
): boolean {
|
|
40
42
|
return (
|
|
41
|
-
feedback.
|
|
43
|
+
!feedback.omitQuietPassedRow ||
|
|
42
44
|
feedback.outcome.status !== "passed" ||
|
|
43
45
|
feedback.messages.length > 0 ||
|
|
44
46
|
feedback.records.length > 0
|
|
@@ -71,7 +73,7 @@ export function formatFlagConditionNotMatchedBlock(
|
|
|
71
73
|
|
|
72
74
|
export function formatSettledBlock(
|
|
73
75
|
input: Readonly<{
|
|
74
|
-
readonly completionOrdinal: number;
|
|
76
|
+
readonly completionOrdinal: number | undefined;
|
|
75
77
|
readonly displayName: string;
|
|
76
78
|
readonly durationMs: number | null;
|
|
77
79
|
readonly messages: readonly CheckMessage[];
|
|
@@ -86,14 +88,22 @@ export function formatSettledBlock(
|
|
|
86
88
|
const reason = reasonForOutcome(input.outcome);
|
|
87
89
|
const duration = input.durationMs === null ? "not run" : formatDuration(input.durationMs);
|
|
88
90
|
const reasonSuffix = reason === undefined ? "" : ` | ${escapeTerminalText(reason)}`;
|
|
89
|
-
const
|
|
91
|
+
const ordinal =
|
|
92
|
+
input.completionOrdinal === undefined
|
|
93
|
+
? "·"
|
|
94
|
+
: `[${input.completionOrdinal}/${input.totalChecks}]`;
|
|
95
|
+
const row = ` ${ordinal} ${escapeTerminalText(input.displayName)} | ${status} | ${duration}${reasonSuffix}\n`;
|
|
90
96
|
const recordPreview = formatRecords(input.records, input.progressRendering);
|
|
91
97
|
const messagePreview = formatMessages(input.messages, input.usesColor, input.progressRendering);
|
|
92
98
|
return `${row}${recordPreview}${messagePreview}`;
|
|
93
99
|
}
|
|
94
100
|
|
|
95
101
|
export function formatFinalSummary(
|
|
96
|
-
input: Extract<ProgressFeedback, { readonly kind: "final" }>
|
|
102
|
+
input: Extract<ProgressFeedback, { readonly kind: "final" }> &
|
|
103
|
+
Readonly<{
|
|
104
|
+
readonly quietPassOmissionConfiguredCount: number;
|
|
105
|
+
readonly quietPassOmittedCount: number;
|
|
106
|
+
}>
|
|
97
107
|
): string {
|
|
98
108
|
return [
|
|
99
109
|
"",
|
|
@@ -104,6 +114,9 @@ export function formatFinalSummary(
|
|
|
104
114
|
` failed: ${input.counts.failed}`,
|
|
105
115
|
` not applicable: ${input.counts.notApplicable}`,
|
|
106
116
|
` unavailable: ${input.counts.unavailable}`,
|
|
117
|
+
...(input.quietPassOmissionConfiguredCount === 0
|
|
118
|
+
? []
|
|
119
|
+
: [` quiet-pass rows omitted: ${input.quietPassOmittedCount}`]),
|
|
107
120
|
` elapsed: ${formatDuration(input.elapsedMs)}`,
|
|
108
121
|
""
|
|
109
122
|
].join("\n");
|
|
@@ -194,7 +207,7 @@ function formattedPreviewText(
|
|
|
194
207
|
function observeRejectedPromise(value: unknown): void {
|
|
195
208
|
if (types.isPromise(value)) {
|
|
196
209
|
// The intrinsic call observes a real Promise without reading a caller-controlled `.then`.
|
|
197
|
-
//
|
|
210
|
+
// oxlint-disable-next-line typescript/no-floating-promises -- rendering must not await formatter misuse.
|
|
198
211
|
void Promise.prototype.then.call(value, undefined, () => undefined);
|
|
199
212
|
}
|
|
200
213
|
}
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
interface RunningCheck {
|
|
18
18
|
readonly checkId: string;
|
|
19
19
|
readonly displayName: string;
|
|
20
|
+
readonly omitQuietPassedRow: boolean;
|
|
20
21
|
readonly startedAtMs: number;
|
|
21
22
|
elapsedMs: number | null;
|
|
22
23
|
}
|
|
@@ -29,6 +30,8 @@ export class ProgressRendererController implements ProgressRenderer {
|
|
|
29
30
|
private readonly writer: ProgressWriter;
|
|
30
31
|
private completedCount = 0;
|
|
31
32
|
private readonly flagConditionNotMatchedDisplayNames: string[] = [];
|
|
33
|
+
private quietPassOmissionConfiguredCount = 0;
|
|
34
|
+
private quietPassOmittedCount = 0;
|
|
32
35
|
private preparedTotal: number | undefined;
|
|
33
36
|
private renderedRunningRows = 0;
|
|
34
37
|
private readonly running: RunningCheck[] = [];
|
|
@@ -58,7 +61,7 @@ export class ProgressRendererController implements ProgressRenderer {
|
|
|
58
61
|
render(feedback: ProgressFeedback): void {
|
|
59
62
|
switch (feedback.kind) {
|
|
60
63
|
case "prepared":
|
|
61
|
-
this.prepare(feedback.totalChecks);
|
|
64
|
+
this.prepare(feedback.totalChecks, feedback.quietPassOmissionConfiguredCount);
|
|
62
65
|
return;
|
|
63
66
|
case "flag-control-completed":
|
|
64
67
|
this.completeFlagControl();
|
|
@@ -74,10 +77,15 @@ export class ProgressRendererController implements ProgressRenderer {
|
|
|
74
77
|
}
|
|
75
78
|
}
|
|
76
79
|
|
|
77
|
-
private prepare(totalChecks: number): void {
|
|
80
|
+
private prepare(totalChecks: number, quietPassOmissionConfiguredCount: number): void {
|
|
78
81
|
if (this.preparedTotal !== undefined) throw new Error("Progress feedback was prepared twice");
|
|
79
82
|
this.preparedTotal = totalChecks;
|
|
80
|
-
this.
|
|
83
|
+
this.quietPassOmissionConfiguredCount = quietPassOmissionConfiguredCount;
|
|
84
|
+
const configuredSuffix =
|
|
85
|
+
quietPassOmissionConfiguredCount === 0
|
|
86
|
+
? ""
|
|
87
|
+
: ` · ${quietPassOmissionConfiguredCount} configured for quiet-pass omission`;
|
|
88
|
+
this.writer.write(`Vibe Check\ntotal ${totalChecks} checks${configuredSuffix}\n\nChecks:\n`);
|
|
81
89
|
}
|
|
82
90
|
|
|
83
91
|
private start(feedback: Extract<ProgressFeedback, { readonly kind: "started" }>): void {
|
|
@@ -87,6 +95,7 @@ export class ProgressRendererController implements ProgressRenderer {
|
|
|
87
95
|
this.running.push({
|
|
88
96
|
checkId: feedback.checkId,
|
|
89
97
|
displayName: feedback.displayName,
|
|
98
|
+
omitQuietPassedRow: feedback.omitQuietPassedRow,
|
|
90
99
|
elapsedMs: null,
|
|
91
100
|
startedAtMs: this.clock.now()
|
|
92
101
|
});
|
|
@@ -103,7 +112,7 @@ export class ProgressRendererController implements ProgressRenderer {
|
|
|
103
112
|
} else if (shouldPresentSettledFeedback(feedback)) {
|
|
104
113
|
this.writer.write(
|
|
105
114
|
formatSettledBlock({
|
|
106
|
-
completionOrdinal: this.completedCount,
|
|
115
|
+
completionOrdinal: feedback.omitQuietPassedRow ? undefined : this.completedCount,
|
|
107
116
|
displayName: feedback.displayName,
|
|
108
117
|
durationMs: feedback.durationMs,
|
|
109
118
|
messages: feedback.messages,
|
|
@@ -114,6 +123,8 @@ export class ProgressRendererController implements ProgressRenderer {
|
|
|
114
123
|
progressRendering: this.progressRendering
|
|
115
124
|
})
|
|
116
125
|
);
|
|
126
|
+
} else {
|
|
127
|
+
this.quietPassOmittedCount += 1;
|
|
117
128
|
}
|
|
118
129
|
if (this.refreshesRunningRegion) this.redrawRunningRegion();
|
|
119
130
|
}
|
|
@@ -124,7 +135,13 @@ export class ProgressRendererController implements ProgressRenderer {
|
|
|
124
135
|
throw new Error("Progress feedback finalized while Checks are still running");
|
|
125
136
|
}
|
|
126
137
|
this.flushFlagConditionNotMatchedChecks();
|
|
127
|
-
this.writer.write(
|
|
138
|
+
this.writer.write(
|
|
139
|
+
formatFinalSummary({
|
|
140
|
+
...feedback,
|
|
141
|
+
quietPassOmissionConfiguredCount: this.quietPassOmissionConfiguredCount,
|
|
142
|
+
quietPassOmittedCount: this.quietPassOmittedCount
|
|
143
|
+
})
|
|
144
|
+
);
|
|
128
145
|
}
|
|
129
146
|
|
|
130
147
|
private completeFlagControl(): void {
|
|
@@ -156,9 +173,9 @@ export class ProgressRendererController implements ProgressRenderer {
|
|
|
156
173
|
for (const [index, check] of this.running.entries()) {
|
|
157
174
|
this.writer.write(
|
|
158
175
|
formatRunningRow({
|
|
159
|
-
displayIndex: this.completedCount + index + 1,
|
|
160
176
|
displayName: check.displayName,
|
|
161
177
|
elapsedMs: check.elapsedMs,
|
|
178
|
+
displayIndex: check.omitQuietPassedRow ? undefined : this.completedCount + index + 1,
|
|
162
179
|
totalChecks
|
|
163
180
|
})
|
|
164
181
|
);
|