@deftai/directive 0.126.2 → 0.128.0
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/bin/deft-hook +14 -0
- package/bin/deft-hook.cmd +14 -0
- package/dist/bin.js +4319 -3
- package/package.json +11 -21
- package/dist/agents-refresh.d.ts +0 -11
- package/dist/agents-refresh.js +0 -90
- package/dist/authz.d.ts +0 -7
- package/dist/authz.js +0 -732
- package/dist/bin.d.ts +0 -3
- package/dist/branch-fixtures.d.ts +0 -45
- package/dist/branch-fixtures.js +0 -156
- package/dist/cache.d.ts +0 -4
- package/dist/cache.js +0 -10
- package/dist/capacity-backfill.d.ts +0 -3
- package/dist/capacity-backfill.js +0 -9
- package/dist/capacity-show.d.ts +0 -3
- package/dist/capacity-show.js +0 -9
- package/dist/change-init.d.ts +0 -3
- package/dist/change-init.js +0 -59
- package/dist/changelog-check.d.ts +0 -3
- package/dist/changelog-check.js +0 -52
- package/dist/check.d.ts +0 -15
- package/dist/check.js +0 -150
- package/dist/cli-package-version.d.ts +0 -3
- package/dist/cli-package-version.js +0 -23
- package/dist/cli-router/index.d.ts +0 -8
- package/dist/cli-router/index.js +0 -44
- package/dist/cli-router/route-argv.d.ts +0 -40
- package/dist/cli-router/route-argv.js +0 -371
- package/dist/codebase-default-extractor.d.ts +0 -3
- package/dist/codebase-default-extractor.js +0 -9
- package/dist/codebase-map-fresh.d.ts +0 -3
- package/dist/codebase-map-fresh.js +0 -9
- package/dist/codebase-map.d.ts +0 -3
- package/dist/codebase-map.js +0 -9
- package/dist/codebase-projection-registry.d.ts +0 -3
- package/dist/codebase-projection-registry.js +0 -9
- package/dist/codebase-provider.d.ts +0 -3
- package/dist/codebase-provider.js +0 -9
- package/dist/commit-lint.d.ts +0 -3
- package/dist/commit-lint.js +0 -44
- package/dist/content-validate-cli/validate-links.d.ts +0 -11
- package/dist/content-validate-cli/validate-links.js +0 -37
- package/dist/content-validate-cli/validate-strategy-output.d.ts +0 -13
- package/dist/content-validate-cli/validate-strategy-output.js +0 -56
- package/dist/content-validate-cli/verify-capacity.d.ts +0 -12
- package/dist/content-validate-cli/verify-capacity.js +0 -54
- package/dist/coverage-hotspots.d.ts +0 -21
- package/dist/coverage-hotspots.js +0 -198
- package/dist/design-critique-spend-resolve.d.ts +0 -18
- package/dist/design-critique-spend-resolve.js +0 -191
- package/dist/directive-finish-loop.d.ts +0 -3
- package/dist/directive-finish-loop.js +0 -10
- package/dist/dispatch.d.ts +0 -193
- package/dist/dispatch.js +0 -3091
- package/dist/doctor.d.ts +0 -19
- package/dist/doctor.js +0 -155
- package/dist/entrypoint.d.ts +0 -6
- package/dist/entrypoint.js +0 -19
- package/dist/escalation-cli.d.ts +0 -4
- package/dist/escalation-cli.js +0 -301
- package/dist/eval-health.d.ts +0 -13
- package/dist/eval-health.js +0 -63
- package/dist/eval-report.d.ts +0 -15
- package/dist/eval-report.js +0 -97
- package/dist/eval-run.d.ts +0 -17
- package/dist/eval-run.js +0 -122
- package/dist/eval-triggers.d.ts +0 -12
- package/dist/eval-triggers.js +0 -56
- package/dist/framework-check-updates.d.ts +0 -10
- package/dist/framework-check-updates.js +0 -68
- package/dist/gates-cli/_helpers.d.ts +0 -24
- package/dist/gates-cli/_helpers.js +0 -115
- package/dist/gates-cli/verify-bridge-drift.d.ts +0 -11
- package/dist/gates-cli/verify-bridge-drift.js +0 -47
- package/dist/gates-cli/verify-go-freeze.d.ts +0 -11
- package/dist/gates-cli/verify-go-freeze.js +0 -48
- package/dist/hook-bin.d.ts +0 -3
- package/dist/hook-bin.js +0 -11
- package/dist/hook-dispatch.d.ts +0 -80
- package/dist/hook-dispatch.js +0 -186
- package/dist/human-presence-mint.d.ts +0 -70
- package/dist/human-presence-mint.js +0 -204
- package/dist/identity-banner.d.ts +0 -13
- package/dist/identity-banner.js +0 -19
- package/dist/index.d.ts +0 -11
- package/dist/index.js +0 -14
- package/dist/init-cli/constants.d.ts +0 -42
- package/dist/init-cli/constants.js +0 -42
- package/dist/init-cli/help.d.ts +0 -9
- package/dist/init-cli/help.js +0 -43
- package/dist/init-cli/init.d.ts +0 -26
- package/dist/init-cli/init.js +0 -80
- package/dist/init-cli/migrate.d.ts +0 -3
- package/dist/init-cli/migrate.js +0 -51
- package/dist/init-cli/resolve-binary.d.ts +0 -34
- package/dist/init-cli/resolve-binary.js +0 -78
- package/dist/init-cli/run-deft-install.d.ts +0 -23
- package/dist/init-cli/run-deft-install.js +0 -71
- package/dist/init-cli/update.d.ts +0 -5
- package/dist/init-cli/update.js +0 -38
- package/dist/install-cli/coverage-map.d.ts +0 -14
- package/dist/install-cli/coverage-map.js +0 -113
- package/dist/install-uninstall.d.ts +0 -3
- package/dist/install-uninstall.js +0 -44
- package/dist/install-upgrade.d.ts +0 -41
- package/dist/install-upgrade.js +0 -86
- package/dist/lifecycle-cli/coverage-map.d.ts +0 -16
- package/dist/lifecycle-cli/coverage-map.js +0 -254
- package/dist/lifecycle-cli/helpers.d.ts +0 -8
- package/dist/lifecycle-cli/helpers.js +0 -20
- package/dist/lifecycle-event.d.ts +0 -11
- package/dist/lifecycle-event.js +0 -45
- package/dist/lifecycle-stats.d.ts +0 -12
- package/dist/lifecycle-stats.js +0 -100
- package/dist/migrate-category-b.d.ts +0 -9
- package/dist/migrate-category-b.js +0 -52
- package/dist/migrate-preflight.d.ts +0 -10
- package/dist/migrate-preflight.js +0 -85
- package/dist/migrate-xbrief.d.ts +0 -11
- package/dist/migrate-xbrief.js +0 -88
- package/dist/occupancy-grant.d.ts +0 -18
- package/dist/occupancy-grant.js +0 -121
- package/dist/occupancy-heartbeat.d.ts +0 -8
- package/dist/occupancy-heartbeat.js +0 -63
- package/dist/occupancy-release.d.ts +0 -23
- package/dist/occupancy-release.js +0 -102
- package/dist/occupancy-steal.d.ts +0 -10
- package/dist/occupancy-steal.js +0 -83
- package/dist/occupancy-unrecognized.d.ts +0 -3
- package/dist/occupancy-unrecognized.js +0 -5
- package/dist/orchestration-cli/coverage-map.d.ts +0 -21
- package/dist/orchestration-cli/coverage-map.js +0 -225
- package/dist/orchestration-cli/helpers.d.ts +0 -11
- package/dist/orchestration-cli/helpers.js +0 -35
- package/dist/ownership-doctor.d.ts +0 -10
- package/dist/ownership-doctor.js +0 -96
- package/dist/ownership-fix.d.ts +0 -10
- package/dist/ownership-fix.js +0 -93
- package/dist/plan-sequence.d.ts +0 -14
- package/dist/plan-sequence.js +0 -258
- package/dist/policy-fixtures.d.ts +0 -33
- package/dist/policy-fixtures.js +0 -118
- package/dist/policy.d.ts +0 -37
- package/dist/policy.js +0 -744
- package/dist/pr-closing-keywords.d.ts +0 -3
- package/dist/pr-closing-keywords.js +0 -10
- package/dist/pr-finish-loop.d.ts +0 -3
- package/dist/pr-finish-loop.js +0 -10
- package/dist/pr-merge-readiness.d.ts +0 -3
- package/dist/pr-merge-readiness.js +0 -10
- package/dist/pr-monitor.d.ts +0 -3
- package/dist/pr-monitor.js +0 -10
- package/dist/pr-protected-issues.d.ts +0 -3
- package/dist/pr-protected-issues.js +0 -10
- package/dist/pr-wait-mergeable.d.ts +0 -3
- package/dist/pr-wait-mergeable.js +0 -10
- package/dist/pr-watch.d.ts +0 -3
- package/dist/pr-watch.js +0 -10
- package/dist/pre-pr-run.d.ts +0 -39
- package/dist/pre-pr-run.js +0 -514
- package/dist/preflight-cache.d.ts +0 -18
- package/dist/preflight-cache.js +0 -113
- package/dist/preflight-gh.d.ts +0 -15
- package/dist/preflight-gh.js +0 -143
- package/dist/probe-session.d.ts +0 -3
- package/dist/probe-session.js +0 -10
- package/dist/release-e2e-fixtures.d.ts +0 -29
- package/dist/release-e2e-fixtures.js +0 -38
- package/dist/release-e2e.d.ts +0 -3
- package/dist/release-e2e.js +0 -10
- package/dist/release-publish.d.ts +0 -3
- package/dist/release-publish.js +0 -10
- package/dist/release-rollback.d.ts +0 -3
- package/dist/release-rollback.js +0 -10
- package/dist/release-wait-npm.d.ts +0 -3
- package/dist/release-wait-npm.js +0 -10
- package/dist/release.d.ts +0 -3
- package/dist/release.js +0 -10
- package/dist/render-cli/deft-ts-runner.d.ts +0 -17
- package/dist/render-cli/deft-ts-runner.js +0 -19
- package/dist/render-cli/export-spec-cli.d.ts +0 -2
- package/dist/render-cli/export-spec-cli.js +0 -6
- package/dist/render-cli/prd-render-cli.d.ts +0 -2
- package/dist/render-cli/prd-render-cli.js +0 -37
- package/dist/render-cli/project-render-cli.d.ts +0 -2
- package/dist/render-cli/project-render-cli.js +0 -6
- package/dist/render-cli/rule-map-cli.d.ts +0 -2
- package/dist/render-cli/rule-map-cli.js +0 -5
- package/dist/render-cli/spec-reconstruct-cli.d.ts +0 -3
- package/dist/render-cli/spec-reconstruct-cli.js +0 -15
- package/dist/render-cli/spec-render-cli.d.ts +0 -2
- package/dist/render-cli/spec-render-cli.js +0 -39
- package/dist/render-cli/spec-validate-cli.d.ts +0 -2
- package/dist/render-cli/spec-validate-cli.js +0 -38
- package/dist/review-monitor-register.d.ts +0 -19
- package/dist/review-monitor-register.js +0 -183
- package/dist/review-monitor-release.d.ts +0 -14
- package/dist/review-monitor-release.js +0 -123
- package/dist/scm-sync-default.d.ts +0 -34
- package/dist/scm-sync-default.js +0 -210
- package/dist/scope-lifecycle.d.ts +0 -4
- package/dist/scope-lifecycle.js +0 -34
- package/dist/scope-record-approved-scope.d.ts +0 -29
- package/dist/scope-record-approved-scope.js +0 -319
- package/dist/scope-record-intent-constraint.d.ts +0 -16
- package/dist/scope-record-intent-constraint.js +0 -202
- package/dist/scope-record-observable-scope.d.ts +0 -16
- package/dist/scope-record-observable-scope.js +0 -204
- package/dist/session-ready.d.ts +0 -15
- package/dist/session-ready.js +0 -144
- package/dist/session-start.d.ts +0 -56
- package/dist/session-start.js +0 -581
- package/dist/slice.d.ts +0 -4
- package/dist/slice.js +0 -34
- package/dist/story-ready-fixtures.d.ts +0 -47
- package/dist/story-ready-fixtures.js +0 -137
- package/dist/subagent-monitor.d.ts +0 -3
- package/dist/subagent-monitor.js +0 -10
- package/dist/subagent-pre-cancel.d.ts +0 -21
- package/dist/subagent-pre-cancel.js +0 -240
- package/dist/subagent-steer-write.d.ts +0 -41
- package/dist/subagent-steer-write.js +0 -333
- package/dist/toolchain-check.d.ts +0 -8
- package/dist/toolchain-check.js +0 -54
- package/dist/triage-actions.d.ts +0 -23
- package/dist/triage-actions.js +0 -233
- package/dist/triage-aux-a-fixtures.d.ts +0 -33
- package/dist/triage-aux-a-fixtures.js +0 -107
- package/dist/triage-aux-b-fixtures.d.ts +0 -30
- package/dist/triage-aux-b-fixtures.js +0 -167
- package/dist/triage-bootstrap-fixtures.d.ts +0 -42
- package/dist/triage-bootstrap-fixtures.js +0 -139
- package/dist/triage-bootstrap.d.ts +0 -24
- package/dist/triage-bootstrap.js +0 -175
- package/dist/triage-bulk.d.ts +0 -17
- package/dist/triage-bulk.js +0 -154
- package/dist/triage-classify-fixtures.d.ts +0 -38
- package/dist/triage-classify-fixtures.js +0 -137
- package/dist/triage-classify.d.ts +0 -45
- package/dist/triage-classify.js +0 -287
- package/dist/triage-evaluate.d.ts +0 -14
- package/dist/triage-evaluate.js +0 -153
- package/dist/triage-help.d.ts +0 -3
- package/dist/triage-help.js +0 -10
- package/dist/triage-queue-fixtures.d.ts +0 -59
- package/dist/triage-queue-fixtures.js +0 -284
- package/dist/triage-queue.d.ts +0 -38
- package/dist/triage-queue.js +0 -391
- package/dist/triage-reconcile.d.ts +0 -11
- package/dist/triage-reconcile.js +0 -76
- package/dist/triage-refresh.d.ts +0 -7
- package/dist/triage-refresh.js +0 -37
- package/dist/triage-scope-drift.d.ts +0 -12
- package/dist/triage-scope-drift.js +0 -117
- package/dist/triage-scope-fixtures.d.ts +0 -32
- package/dist/triage-scope-fixtures.js +0 -131
- package/dist/triage-scope.d.ts +0 -4
- package/dist/triage-scope.js +0 -34
- package/dist/triage-smoketest.d.ts +0 -3
- package/dist/triage-smoketest.js +0 -43
- package/dist/triage-strip-withdrawn.d.ts +0 -21
- package/dist/triage-strip-withdrawn.js +0 -102
- package/dist/triage-subscribe.d.ts +0 -15
- package/dist/triage-subscribe.js +0 -157
- package/dist/triage-summary.d.ts +0 -14
- package/dist/triage-summary.js +0 -83
- package/dist/triage-welcome.d.ts +0 -14
- package/dist/triage-welcome.js +0 -121
- package/dist/ts-check-lane.d.ts +0 -9
- package/dist/ts-check-lane.js +0 -49
- package/dist/umbrella-current-shape.d.ts +0 -9
- package/dist/umbrella-current-shape.js +0 -56
- package/dist/vbrief-activate.d.ts +0 -3
- package/dist/vbrief-activate.js +0 -7
- package/dist/vbrief-build.d.ts +0 -3
- package/dist/vbrief-build.js +0 -8
- package/dist/vbrief-preflight-fixtures.d.ts +0 -32
- package/dist/vbrief-preflight-fixtures.js +0 -79
- package/dist/vbrief-preflight.d.ts +0 -13
- package/dist/vbrief-preflight.js +0 -141
- package/dist/vbrief-reconcile.d.ts +0 -3
- package/dist/vbrief-reconcile.js +0 -7
- package/dist/vbrief-validate.d.ts +0 -3
- package/dist/vbrief-validate.js +0 -8
- package/dist/vbrief-validation.d.ts +0 -3
- package/dist/vbrief-validation.js +0 -8
- package/dist/verify-ac.d.ts +0 -28
- package/dist/verify-ac.js +0 -439
- package/dist/verify-agents-md-advisory.d.ts +0 -19
- package/dist/verify-agents-md-advisory.js +0 -65
- package/dist/verify-agents-md-budget.d.ts +0 -12
- package/dist/verify-agents-md-budget.js +0 -71
- package/dist/verify-branch.d.ts +0 -14
- package/dist/verify-branch.js +0 -81
- package/dist/verify-class-checks.d.ts +0 -11
- package/dist/verify-class-checks.js +0 -71
- package/dist/verify-cohort-review-monitors.d.ts +0 -5
- package/dist/verify-cohort-review-monitors.js +0 -11
- package/dist/verify-completed-tracked.d.ts +0 -19
- package/dist/verify-completed-tracked.js +0 -202
- package/dist/verify-completed-write-guard.d.ts +0 -13
- package/dist/verify-completed-write-guard.js +0 -84
- package/dist/verify-consumer-check-contract.d.ts +0 -12
- package/dist/verify-consumer-check-contract.js +0 -70
- package/dist/verify-consumer-header-placeholder.d.ts +0 -12
- package/dist/verify-consumer-header-placeholder.js +0 -73
- package/dist/verify-consumer-test-lane.d.ts +0 -12
- package/dist/verify-consumer-test-lane.js +0 -57
- package/dist/verify-durable-effect-acquisition.d.ts +0 -13
- package/dist/verify-durable-effect-acquisition.js +0 -70
- package/dist/verify-encoding.d.ts +0 -15
- package/dist/verify-encoding.js +0 -83
- package/dist/verify-eval-health-relocation.d.ts +0 -16
- package/dist/verify-eval-health-relocation.js +0 -93
- package/dist/verify-eval-triggers-relocation.d.ts +0 -14
- package/dist/verify-eval-triggers-relocation.js +0 -74
- package/dist/verify-evaluator-surface.d.ts +0 -15
- package/dist/verify-evaluator-surface.js +0 -87
- package/dist/verify-forward-coverage.d.ts +0 -19
- package/dist/verify-forward-coverage.js +0 -144
- package/dist/verify-hooks-installed.d.ts +0 -24
- package/dist/verify-hooks-installed.js +0 -140
- package/dist/verify-intent-constraint.d.ts +0 -17
- package/dist/verify-intent-constraint.js +0 -110
- package/dist/verify-investigation.d.ts +0 -3
- package/dist/verify-investigation.js +0 -10
- package/dist/verify-judgment-gates.d.ts +0 -3
- package/dist/verify-judgment-gates.js +0 -10
- package/dist/verify-l4-owner.d.ts +0 -15
- package/dist/verify-l4-owner.js +0 -132
- package/dist/verify-lifecycle-visible.d.ts +0 -13
- package/dist/verify-lifecycle-visible.js +0 -68
- package/dist/verify-literal-ac.d.ts +0 -14
- package/dist/verify-literal-ac.js +0 -168
- package/dist/verify-no-task-runtime.d.ts +0 -3
- package/dist/verify-no-task-runtime.js +0 -16
- package/dist/verify-observable-scope.d.ts +0 -17
- package/dist/verify-observable-scope.js +0 -110
- package/dist/verify-operator-scope-limit.d.ts +0 -17
- package/dist/verify-operator-scope-limit.js +0 -285
- package/dist/verify-orphan-active.d.ts +0 -17
- package/dist/verify-orphan-active.js +0 -135
- package/dist/verify-ownership.d.ts +0 -10
- package/dist/verify-ownership.js +0 -90
- package/dist/verify-persisted-planning-narratives.d.ts +0 -12
- package/dist/verify-persisted-planning-narratives.js +0 -82
- package/dist/verify-plan-sequence.d.ts +0 -14
- package/dist/verify-plan-sequence.js +0 -138
- package/dist/verify-pr-closeout-attestable.d.ts +0 -15
- package/dist/verify-pr-closeout-attestable.js +0 -114
- package/dist/verify-presentation-ceiling.d.ts +0 -11
- package/dist/verify-presentation-ceiling.js +0 -71
- package/dist/verify-presentation-coverage.d.ts +0 -14
- package/dist/verify-presentation-coverage.js +0 -90
- package/dist/verify-review-monitor.d.ts +0 -32
- package/dist/verify-review-monitor.js +0 -362
- package/dist/verify-scope-provenance.d.ts +0 -16
- package/dist/verify-scope-provenance.js +0 -91
- package/dist/verify-session-ritual.d.ts +0 -23
- package/dist/verify-session-ritual.js +0 -144
- package/dist/verify-source-cli/rule-ownership-lint.d.ts +0 -12
- package/dist/verify-source-cli/rule-ownership-lint.js +0 -61
- package/dist/verify-source-cli/verify-biome-config.d.ts +0 -11
- package/dist/verify-source-cli/verify-biome-config.js +0 -46
- package/dist/verify-source-cli/verify-closing-keywords.d.ts +0 -35
- package/dist/verify-source-cli/verify-closing-keywords.js +0 -139
- package/dist/verify-source-cli/verify-consumer-hard-stops.d.ts +0 -16
- package/dist/verify-source-cli/verify-consumer-hard-stops.js +0 -99
- package/dist/verify-source-cli/verify-contained-writes.d.ts +0 -13
- package/dist/verify-source-cli/verify-contained-writes.js +0 -67
- package/dist/verify-source-cli/verify-content-manifest.d.ts +0 -12
- package/dist/verify-source-cli/verify-content-manifest.js +0 -61
- package/dist/verify-source-cli/verify-contract-drift.d.ts +0 -11
- package/dist/verify-source-cli/verify-contract-drift.js +0 -47
- package/dist/verify-source-cli/verify-cursor-tier1.d.ts +0 -12
- package/dist/verify-source-cli/verify-cursor-tier1.js +0 -51
- package/dist/verify-source-cli/verify-deposit-closure.d.ts +0 -12
- package/dist/verify-source-cli/verify-deposit-closure.js +0 -52
- package/dist/verify-source-cli/verify-openclaw-tier1.d.ts +0 -12
- package/dist/verify-source-cli/verify-openclaw-tier1.js +0 -51
- package/dist/verify-source-cli/verify-scm-boundary.d.ts +0 -13
- package/dist/verify-source-cli/verify-scm-boundary.js +0 -66
- package/dist/verify-source-cli/verify-semantic-single-source.d.ts +0 -11
- package/dist/verify-source-cli/verify-semantic-single-source.js +0 -49
- package/dist/verify-source-cli/verify-skill-external-fetch-gate.d.ts +0 -11
- package/dist/verify-source-cli/verify-skill-external-fetch-gate.js +0 -46
- package/dist/verify-source-cli/verify-spec-drift.d.ts +0 -3
- package/dist/verify-source-cli/verify-spec-drift.js +0 -15
- package/dist/verify-source-cli/verify-spec-prd-fresh.d.ts +0 -3
- package/dist/verify-source-cli/verify-spec-prd-fresh.js +0 -15
- package/dist/verify-source-cli/verify-stubs.d.ts +0 -11
- package/dist/verify-source-cli/verify-stubs.js +0 -27
- package/dist/verify-source-cli/verify-telemetry-coverage.d.ts +0 -13
- package/dist/verify-source-cli/verify-telemetry-coverage.js +0 -67
- package/dist/verify-source-cli/verify-xbrief-drift.d.ts +0 -15
- package/dist/verify-source-cli/verify-xbrief-drift.js +0 -80
- package/dist/verify-story-ready.d.ts +0 -18
- package/dist/verify-story-ready.js +0 -190
- package/dist/verify-subagent-alive.d.ts +0 -21
- package/dist/verify-subagent-alive.js +0 -219
- package/dist/verify-subagent-steer.d.ts +0 -19
- package/dist/verify-subagent-steer.js +0 -136
- package/dist/verify-test-boundary.d.ts +0 -12
- package/dist/verify-test-boundary.js +0 -80
- package/dist/verify-tools.d.ts +0 -13
- package/dist/verify-tools.js +0 -67
- package/dist/verify-wip-cap.d.ts +0 -13
- package/dist/verify-wip-cap.js +0 -62
- package/dist/windows-bin-ps1.d.ts +0 -39
- package/dist/windows-bin-ps1.js +0 -226
- package/dist/wip-cap-fixtures.d.ts +0 -37
- package/dist/wip-cap-fixtures.js +0 -122
- package/dist/wsl-ownership-guard.d.ts +0 -2
- package/dist/wsl-ownership-guard.js +0 -15
- package/dist/xbrief-create.d.ts +0 -3
- package/dist/xbrief-create.js +0 -9
- package/dist/xbrief-verify.d.ts +0 -3
- package/dist/xbrief-verify.js +0 -9
- package/scripts/remove-windows-ps1-shims.mjs +0 -26
|
@@ -1,362 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { resolve } from "node:path";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { bindLivePhaseCorrectWait, evaluateMergePathArm, } from "@deftai/directive-core/dist/pr-watch/main.js";
|
|
5
|
-
import { evaluateApproach1ArmStartup } from "@deftai/directive-core/orchestration";
|
|
6
|
-
import { EXIT_CONFIG_ERROR, EXIT_NOT_READY, evaluateReviewMonitorGate, formatApproach1BabysitterOneLiner, isTier1, REVIEW_MONITOR_HELP, spawnRedirect, verifyResultToJson, } from "@deftai/directive-core/review-monitor";
|
|
7
|
-
import { writeMergePathExplicitFinishAttestation } from "@deftai/directive-core/swarm";
|
|
8
|
-
const CALL_SITES = new Set([
|
|
9
|
-
"solo",
|
|
10
|
-
"swarm-phase5-6",
|
|
11
|
-
"swarm-phase6-cascade",
|
|
12
|
-
"unspecified",
|
|
13
|
-
]);
|
|
14
|
-
export function parseVerifyReviewMonitorArgs(argv) {
|
|
15
|
-
const acc = {
|
|
16
|
-
pr: null,
|
|
17
|
-
projectRoot: ".",
|
|
18
|
-
repo: null,
|
|
19
|
-
headSha: null,
|
|
20
|
-
callSite: "unspecified",
|
|
21
|
-
approach3: false,
|
|
22
|
-
approach3Warned: false,
|
|
23
|
-
emitJson: false,
|
|
24
|
-
mergePathArm: false,
|
|
25
|
-
liveWait: false,
|
|
26
|
-
explicitFinish: false,
|
|
27
|
-
mintGateBlocked: false,
|
|
28
|
-
reason: null,
|
|
29
|
-
stickyLease: false,
|
|
30
|
-
dispatchStartedAt: null,
|
|
31
|
-
help: false,
|
|
32
|
-
};
|
|
33
|
-
for (let i = 0; i < argv.length; i += 1) {
|
|
34
|
-
const arg = argv[i];
|
|
35
|
-
if (arg === "--help" || arg === "-h") {
|
|
36
|
-
return { ...acc, help: true };
|
|
37
|
-
}
|
|
38
|
-
if (arg === "--json") {
|
|
39
|
-
acc.emitJson = true;
|
|
40
|
-
}
|
|
41
|
-
else if (arg === "--merge-path-arm") {
|
|
42
|
-
acc.mergePathArm = true;
|
|
43
|
-
}
|
|
44
|
-
else if (arg === "--live-wait") {
|
|
45
|
-
acc.liveWait = true;
|
|
46
|
-
}
|
|
47
|
-
else if (arg === "--explicit-finish") {
|
|
48
|
-
acc.explicitFinish = true;
|
|
49
|
-
}
|
|
50
|
-
else if (arg === "--mint-gate-blocked") {
|
|
51
|
-
acc.mintGateBlocked = true;
|
|
52
|
-
}
|
|
53
|
-
else if (arg === "--reason") {
|
|
54
|
-
const value = argv[i + 1];
|
|
55
|
-
if (value === undefined) {
|
|
56
|
-
return { ...acc, error: "argument --reason: expected one argument" };
|
|
57
|
-
}
|
|
58
|
-
acc.reason = value;
|
|
59
|
-
i += 1;
|
|
60
|
-
}
|
|
61
|
-
else if (arg?.startsWith("--reason=")) {
|
|
62
|
-
acc.reason = arg.slice("--reason=".length);
|
|
63
|
-
}
|
|
64
|
-
else if (arg === "--sticky-lease") {
|
|
65
|
-
acc.stickyLease = true;
|
|
66
|
-
}
|
|
67
|
-
else if (arg === "--dispatch-started-at") {
|
|
68
|
-
const value = argv[i + 1];
|
|
69
|
-
if (value === undefined) {
|
|
70
|
-
return { ...acc, error: "argument --dispatch-started-at: expected one argument" };
|
|
71
|
-
}
|
|
72
|
-
acc.dispatchStartedAt = value;
|
|
73
|
-
i += 1;
|
|
74
|
-
}
|
|
75
|
-
else if (arg?.startsWith("--dispatch-started-at=")) {
|
|
76
|
-
acc.dispatchStartedAt = arg.slice("--dispatch-started-at=".length);
|
|
77
|
-
}
|
|
78
|
-
else if (arg === "--approach3") {
|
|
79
|
-
acc.approach3 = true;
|
|
80
|
-
}
|
|
81
|
-
else if (arg === "--approach3-warned") {
|
|
82
|
-
acc.approach3Warned = true;
|
|
83
|
-
}
|
|
84
|
-
else if (arg === "--pr") {
|
|
85
|
-
const value = argv[i + 1];
|
|
86
|
-
if (value === undefined) {
|
|
87
|
-
return { ...acc, error: "argument --pr: expected one argument" };
|
|
88
|
-
}
|
|
89
|
-
const n = Number(value);
|
|
90
|
-
if (!Number.isInteger(n) || n <= 0) {
|
|
91
|
-
return { ...acc, error: `invalid --pr value: ${value}` };
|
|
92
|
-
}
|
|
93
|
-
acc.pr = n;
|
|
94
|
-
i += 1;
|
|
95
|
-
}
|
|
96
|
-
else if (arg?.startsWith("--pr=")) {
|
|
97
|
-
const n = Number(arg.slice("--pr=".length));
|
|
98
|
-
if (!Number.isInteger(n) || n <= 0) {
|
|
99
|
-
return { ...acc, error: `invalid --pr value: ${arg}` };
|
|
100
|
-
}
|
|
101
|
-
acc.pr = n;
|
|
102
|
-
}
|
|
103
|
-
else if (arg === "--repo") {
|
|
104
|
-
const value = argv[i + 1];
|
|
105
|
-
if (value === undefined) {
|
|
106
|
-
return { ...acc, error: "argument --repo: expected one argument" };
|
|
107
|
-
}
|
|
108
|
-
acc.repo = value;
|
|
109
|
-
i += 1;
|
|
110
|
-
}
|
|
111
|
-
else if (arg?.startsWith("--repo=")) {
|
|
112
|
-
acc.repo = arg.slice("--repo=".length);
|
|
113
|
-
}
|
|
114
|
-
else if (arg === "--head-sha") {
|
|
115
|
-
const value = argv[i + 1];
|
|
116
|
-
if (value === undefined) {
|
|
117
|
-
return { ...acc, error: "argument --head-sha: expected one argument" };
|
|
118
|
-
}
|
|
119
|
-
acc.headSha = value;
|
|
120
|
-
i += 1;
|
|
121
|
-
}
|
|
122
|
-
else if (arg?.startsWith("--head-sha=")) {
|
|
123
|
-
acc.headSha = arg.slice("--head-sha=".length);
|
|
124
|
-
}
|
|
125
|
-
else if (arg === "--project-root") {
|
|
126
|
-
const value = argv[i + 1];
|
|
127
|
-
if (value === undefined) {
|
|
128
|
-
return { ...acc, error: "argument --project-root: expected one argument" };
|
|
129
|
-
}
|
|
130
|
-
acc.projectRoot = value;
|
|
131
|
-
i += 1;
|
|
132
|
-
}
|
|
133
|
-
else if (arg?.startsWith("--project-root=")) {
|
|
134
|
-
acc.projectRoot = arg.slice("--project-root=".length);
|
|
135
|
-
}
|
|
136
|
-
else if (arg === "--call-site") {
|
|
137
|
-
const value = argv[i + 1];
|
|
138
|
-
if (value === undefined) {
|
|
139
|
-
return { ...acc, error: "argument --call-site: expected one argument" };
|
|
140
|
-
}
|
|
141
|
-
if (!CALL_SITES.has(value)) {
|
|
142
|
-
return { ...acc, error: `invalid --call-site: ${value}` };
|
|
143
|
-
}
|
|
144
|
-
acc.callSite = value;
|
|
145
|
-
i += 1;
|
|
146
|
-
}
|
|
147
|
-
else if (arg?.startsWith("--call-site=")) {
|
|
148
|
-
const value = arg.slice("--call-site=".length);
|
|
149
|
-
if (!CALL_SITES.has(value)) {
|
|
150
|
-
return { ...acc, error: `invalid --call-site: ${value}` };
|
|
151
|
-
}
|
|
152
|
-
acc.callSite = value;
|
|
153
|
-
}
|
|
154
|
-
else if (arg?.startsWith("-")) {
|
|
155
|
-
return { ...acc, error: `unrecognized argument: ${arg}` };
|
|
156
|
-
}
|
|
157
|
-
else {
|
|
158
|
-
return { ...acc, error: `unrecognized argument: ${arg}` };
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return acc;
|
|
162
|
-
}
|
|
163
|
-
export function run(argv) {
|
|
164
|
-
const args = parseVerifyReviewMonitorArgs(argv);
|
|
165
|
-
if (args.help) {
|
|
166
|
-
process.stdout.write(REVIEW_MONITOR_HELP);
|
|
167
|
-
process.stdout.write("\n#4882 / #5020 / #5219 merge-path arm observer (optional):\n" +
|
|
168
|
-
" --merge-path-arm Fail closed when neither live wait nor explicit finish\n" +
|
|
169
|
-
" --live-wait Require still-running wait evidence for this PR\n" +
|
|
170
|
-
" (Tier 1: lease + active polling heartbeat with pid liveness;\n" +
|
|
171
|
-
" lease+flag alone is not armed — #5020).\n" +
|
|
172
|
-
" On spawn_subagent hosts, lease platform_primitive must be\n" +
|
|
173
|
-
" spawn_subagent and heartbeat parent_id must match the lease\n" +
|
|
174
|
-
" monitor_agent_id, or pr-wait-mergeable only after local\n" +
|
|
175
|
-
" pr:watch CLEAN attestation — #5219;\n" +
|
|
176
|
-
" parent-shell pr:watch (parent_id=pr-watch) does not arm.\n" +
|
|
177
|
-
" --explicit-finish Attest option-C BLOCKED/FAILED finish for this PR\n" +
|
|
178
|
-
" --mint-gate-blocked Refuse --explicit-finish write for product mint-gate\n" +
|
|
179
|
-
" BLOCKED (non-option-C; #5690)\n" +
|
|
180
|
-
" --reason TEXT Attestation reason; mint markers also refuse write (#5690)\n" +
|
|
181
|
-
" --sticky-lease Attest a fresh sticky lease (not sufficient alone)\n" +
|
|
182
|
-
" --dispatch-started-at DeliveryAttemptRecord.startedAt ISO for Approach 1\n" +
|
|
183
|
-
" arm-startup halt (#5278); when merge-path-arm stays\n" +
|
|
184
|
-
" red past the 3m allowance, emit approach1-arm-startup.\n" +
|
|
185
|
-
" Prefer Approach 1 / native pr:watch --monitor-agent-id <id> or post-CLEAN\n" +
|
|
186
|
-
" pr:wait-mergeable-and-merge; homemade line-parsed --json is not an arm.\n");
|
|
187
|
-
return 0;
|
|
188
|
-
}
|
|
189
|
-
if (args.error !== undefined) {
|
|
190
|
-
process.stderr.write(`verify_review_monitor: ${args.error}\n`);
|
|
191
|
-
process.stderr.write("Try: task verify:review-monitor -- --help\n");
|
|
192
|
-
return 2;
|
|
193
|
-
}
|
|
194
|
-
if (args.pr === null) {
|
|
195
|
-
process.stderr.write("verify_review_monitor: --pr is required\n");
|
|
196
|
-
process.stderr.write("Try: task verify:review-monitor -- --help\n");
|
|
197
|
-
return 2;
|
|
198
|
-
}
|
|
199
|
-
// Always evaluate the gate first so --project-root / repo config errors stay
|
|
200
|
-
// exit 2 even when --merge-path-arm would otherwise fail closed as unarmed.
|
|
201
|
-
const result = evaluateReviewMonitorGate({
|
|
202
|
-
pr: args.pr,
|
|
203
|
-
projectRoot: resolve(args.projectRoot),
|
|
204
|
-
repo: args.repo,
|
|
205
|
-
headSha: args.headSha,
|
|
206
|
-
callSite: args.callSite,
|
|
207
|
-
approach3: args.approach3,
|
|
208
|
-
approach3Warned: args.approach3Warned,
|
|
209
|
-
environ: process.env,
|
|
210
|
-
});
|
|
211
|
-
let arm = null;
|
|
212
|
-
if (args.mergePathArm) {
|
|
213
|
-
// Durable option-C attestation for cohort inventory halted-explicit (#5318).
|
|
214
|
-
// Do not write (or arm from) --explicit-finish when the monitor gate is a config error,
|
|
215
|
-
// and fail closed if the durable write itself fails.
|
|
216
|
-
let explicitFinishDurable = false;
|
|
217
|
-
if (args.explicitFinish) {
|
|
218
|
-
if (result.exitCode === EXIT_CONFIG_ERROR) {
|
|
219
|
-
explicitFinishDurable = false;
|
|
220
|
-
}
|
|
221
|
-
else {
|
|
222
|
-
const written = writeMergePathExplicitFinishAttestation(resolve(args.projectRoot), args.pr, {
|
|
223
|
-
source: "verify:review-monitor --explicit-finish",
|
|
224
|
-
reason: args.reason ?? undefined,
|
|
225
|
-
mintGateBlocked: args.mintGateBlocked,
|
|
226
|
-
});
|
|
227
|
-
if (!written.ok) {
|
|
228
|
-
process.stderr.write(`verify_review_monitor: ${written.reason}
|
|
229
|
-
`);
|
|
230
|
-
return EXIT_CONFIG_ERROR;
|
|
231
|
-
}
|
|
232
|
-
explicitFinishDurable = true;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
// Bind --live-wait to lease (#5018) + process-liveness heartbeat (#5020) on Tier 1.
|
|
236
|
-
// spawn_subagent identity join is already applied in evaluateReviewMonitorGate (#5219).
|
|
237
|
-
const leaseEvidence = result.monitorRecord !== null;
|
|
238
|
-
const liveBind = bindLivePhaseCorrectWait({
|
|
239
|
-
liveWaitFlag: args.liveWait,
|
|
240
|
-
tierIs1: isTier1(result.tier),
|
|
241
|
-
leaseEvidence,
|
|
242
|
-
heartbeatActive: result.heartbeatActive,
|
|
243
|
-
pr: args.pr,
|
|
244
|
-
});
|
|
245
|
-
arm = evaluateMergePathArm({
|
|
246
|
-
livePhaseCorrectWait: liveBind.livePhaseCorrectWait,
|
|
247
|
-
explicitFinish: explicitFinishDurable,
|
|
248
|
-
stickyLeaseActive: args.stickyLease || leaseEvidence,
|
|
249
|
-
});
|
|
250
|
-
if (args.liveWait && !liveBind.livePhaseCorrectWait && !args.explicitFinish && !arm.armed) {
|
|
251
|
-
const spawnHost = result.tier.primitive === "spawn_subagent";
|
|
252
|
-
const lease = result.monitorRecord;
|
|
253
|
-
let message = liveBind.message;
|
|
254
|
-
if (spawnHost && lease !== null && lease.platform_primitive !== "spawn_subagent") {
|
|
255
|
-
message =
|
|
256
|
-
`unarmed stand-down: Tier-1 spawn_subagent requires lease ` +
|
|
257
|
-
`platform_primitive=spawn_subagent for PR #${args.pr} (#5219); ` +
|
|
258
|
-
`got ${lease.platform_primitive}.\n` +
|
|
259
|
-
` ${spawnRedirect(result.tier)}`;
|
|
260
|
-
}
|
|
261
|
-
else if (spawnHost &&
|
|
262
|
-
lease !== null &&
|
|
263
|
-
lease.platform_primitive === "spawn_subagent" &&
|
|
264
|
-
liveBind.reason === "missing_process_liveness") {
|
|
265
|
-
message =
|
|
266
|
-
`unarmed stand-down: --live-wait for PR #${args.pr} has spawn_subagent lease ` +
|
|
267
|
-
`(monitor_agent_id=${lease.monitor_agent_id}) but no child-bound wait identity ` +
|
|
268
|
-
`(heartbeat parent_id must match monitor_agent_id, or pr-wait-mergeable after ` +
|
|
269
|
-
`pr:watch CLEAN attestation; start child pr:watch before verify; ` +
|
|
270
|
-
`parent-shell pr:watch does not arm) (#5219).\n` +
|
|
271
|
-
` Cheaper path:\n` +
|
|
272
|
-
` ${formatApproach1BabysitterOneLiner(args.pr, lease.monitor_agent_id)}\n` +
|
|
273
|
-
` ${spawnRedirect(result.tier)}`;
|
|
274
|
-
}
|
|
275
|
-
else if (message === null) {
|
|
276
|
-
message = arm.message;
|
|
277
|
-
}
|
|
278
|
-
arm = {
|
|
279
|
-
armed: false,
|
|
280
|
-
reason: "unarmed_stand_down",
|
|
281
|
-
message,
|
|
282
|
-
};
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
// Approach 1 arm-startup halt (#5278 P3): production caller for evaluateApproach1ArmStartup.
|
|
286
|
-
let armStartupHalt = null;
|
|
287
|
-
if (args.mergePathArm &&
|
|
288
|
-
args.dispatchStartedAt !== null &&
|
|
289
|
-
args.dispatchStartedAt.trim().length > 0 &&
|
|
290
|
-
arm !== null &&
|
|
291
|
-
!arm.armed &&
|
|
292
|
-
!args.explicitFinish) {
|
|
293
|
-
armStartupHalt = evaluateApproach1ArmStartup({
|
|
294
|
-
dispatchStartedAt: args.dispatchStartedAt,
|
|
295
|
-
probeReady: false,
|
|
296
|
-
});
|
|
297
|
-
if (armStartupHalt.halt && armStartupHalt.message.length > 0) {
|
|
298
|
-
arm = {
|
|
299
|
-
armed: false,
|
|
300
|
-
reason: "unarmed_stand_down",
|
|
301
|
-
message: `${arm.message}\n${armStartupHalt.message}`,
|
|
302
|
-
};
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
if (args.emitJson) {
|
|
306
|
-
const payload = verifyResultToJson(result);
|
|
307
|
-
if (arm !== null) {
|
|
308
|
-
payload.merge_path_arm = {
|
|
309
|
-
armed: arm.armed,
|
|
310
|
-
reason: arm.reason,
|
|
311
|
-
message: arm.message,
|
|
312
|
-
live_wait: args.liveWait,
|
|
313
|
-
explicit_finish: args.explicitFinish,
|
|
314
|
-
sticky_lease: args.stickyLease,
|
|
315
|
-
lease_evidence: result.monitorRecord !== null,
|
|
316
|
-
heartbeat_active: result.heartbeatActive,
|
|
317
|
-
};
|
|
318
|
-
if (armStartupHalt !== null) {
|
|
319
|
-
payload.approach1_arm_startup = {
|
|
320
|
-
halt: armStartupHalt.halt,
|
|
321
|
-
halt_class: armStartupHalt.halt_class,
|
|
322
|
-
elapsed_seconds: armStartupHalt.elapsed_seconds,
|
|
323
|
-
message: armStartupHalt.message,
|
|
324
|
-
};
|
|
325
|
-
}
|
|
326
|
-
// Combined gate+arm: unarmed fails closed even when the monitor gate is ready.
|
|
327
|
-
if (!arm.armed && result.exitCode !== EXIT_CONFIG_ERROR) {
|
|
328
|
-
payload.ready = false;
|
|
329
|
-
payload.exit_code = EXIT_NOT_READY;
|
|
330
|
-
// Gate-ready → arm diagnosis; both failing → keep both messages.
|
|
331
|
-
payload.message = result.exitCode === 0 ? arm.message : `${result.message}\n${arm.message}`;
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
process.stdout.write(`${JSON.stringify(payload, null, 2)}\n`);
|
|
335
|
-
}
|
|
336
|
-
else if (result.exitCode === EXIT_CONFIG_ERROR) {
|
|
337
|
-
process.stderr.write(`${result.message}\n`);
|
|
338
|
-
}
|
|
339
|
-
else if (arm !== null && !arm.armed) {
|
|
340
|
-
process.stderr.write(`${arm.message}\n`);
|
|
341
|
-
}
|
|
342
|
-
else if (result.exitCode === 0) {
|
|
343
|
-
process.stdout.write(`${result.message}\n`);
|
|
344
|
-
if (arm !== null) {
|
|
345
|
-
process.stdout.write(`${arm.message}\n`);
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
else {
|
|
349
|
-
process.stderr.write(`${result.message}\n`);
|
|
350
|
-
}
|
|
351
|
-
if (result.exitCode === EXIT_CONFIG_ERROR) {
|
|
352
|
-
return EXIT_CONFIG_ERROR;
|
|
353
|
-
}
|
|
354
|
-
if (arm !== null && !arm.armed) {
|
|
355
|
-
return EXIT_NOT_READY;
|
|
356
|
-
}
|
|
357
|
-
return result.exitCode;
|
|
358
|
-
}
|
|
359
|
-
if (process.argv[1] !== undefined && fileURLToPath(import.meta.url) === process.argv[1]) {
|
|
360
|
-
process.exit(run(process.argv.slice(2)));
|
|
361
|
-
}
|
|
362
|
-
//# sourceMappingURL=verify-review-monitor.js.map
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/** Stderr line when argv includes `--enforce`. Exit code is unchanged. */
|
|
3
|
-
export declare const ENFORCE_NOOP_NOTICE = "verify_scope_provenance: --enforce has no effect after #4956 / #5002";
|
|
4
|
-
interface ParsedArgs {
|
|
5
|
-
projectRoot: string;
|
|
6
|
-
baseRef: string;
|
|
7
|
-
enforce: boolean;
|
|
8
|
-
/** Raw `--enforce` token present, even when a later `--warn` wins `enforce`. */
|
|
9
|
-
enforcePresent: boolean;
|
|
10
|
-
quiet: boolean;
|
|
11
|
-
error?: string;
|
|
12
|
-
}
|
|
13
|
-
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
14
|
-
export declare function run(argv: string[]): number;
|
|
15
|
-
export {};
|
|
16
|
-
//# sourceMappingURL=verify-scope-provenance.d.ts.map
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* CLI for verify:scope-provenance (#3145 / #4956 / #4774 / #5057).
|
|
4
|
-
*
|
|
5
|
-
* Membership against the declared allowlist (mint / brief file_scope) is
|
|
6
|
-
* evaluated inside evaluateScopeProvenance. This CLI forwards --base-ref.
|
|
7
|
-
* `--enforce` / `--warn` stay parsed for compatibility; `--enforce` is a
|
|
8
|
-
* no-op after #4956 / #5002 and prints a stderr notice when present.
|
|
9
|
-
*/
|
|
10
|
-
import { resolve } from "node:path";
|
|
11
|
-
import { scopeProvenance } from "@deftai/directive-core";
|
|
12
|
-
import { isDirectEntrypoint } from "./entrypoint.js";
|
|
13
|
-
/** Stderr line when argv includes `--enforce`. Exit code is unchanged. */
|
|
14
|
-
export const ENFORCE_NOOP_NOTICE = "verify_scope_provenance: --enforce has no effect after #4956 / #5002";
|
|
15
|
-
export function parseArgs(argv) {
|
|
16
|
-
const parsed = {
|
|
17
|
-
projectRoot: ".",
|
|
18
|
-
// Empty means use PR-aware default (origin/master...), not bare HEAD.
|
|
19
|
-
baseRef: "",
|
|
20
|
-
enforce: false,
|
|
21
|
-
enforcePresent: false,
|
|
22
|
-
quiet: false,
|
|
23
|
-
};
|
|
24
|
-
for (let i = 0; i < argv.length; i += 1) {
|
|
25
|
-
const arg = argv[i];
|
|
26
|
-
if (arg === "--quiet") {
|
|
27
|
-
parsed.quiet = true;
|
|
28
|
-
}
|
|
29
|
-
else if (arg === "--enforce") {
|
|
30
|
-
parsed.enforce = true;
|
|
31
|
-
parsed.enforcePresent = true;
|
|
32
|
-
}
|
|
33
|
-
else if (arg === "--warn") {
|
|
34
|
-
parsed.enforce = false;
|
|
35
|
-
}
|
|
36
|
-
else if (arg === "--project-root") {
|
|
37
|
-
const value = argv[i + 1];
|
|
38
|
-
if (value === undefined) {
|
|
39
|
-
return { ...parsed, error: "argument --project-root: expected one argument" };
|
|
40
|
-
}
|
|
41
|
-
parsed.projectRoot = value;
|
|
42
|
-
i += 1;
|
|
43
|
-
}
|
|
44
|
-
else if (arg?.startsWith("--project-root=")) {
|
|
45
|
-
parsed.projectRoot = arg.slice("--project-root=".length);
|
|
46
|
-
}
|
|
47
|
-
else if (arg === "--base-ref") {
|
|
48
|
-
const value = argv[i + 1];
|
|
49
|
-
if (value === undefined) {
|
|
50
|
-
return { ...parsed, error: "argument --base-ref: expected one argument" };
|
|
51
|
-
}
|
|
52
|
-
parsed.baseRef = value;
|
|
53
|
-
i += 1;
|
|
54
|
-
}
|
|
55
|
-
else if (arg?.startsWith("--base-ref=")) {
|
|
56
|
-
parsed.baseRef = arg.slice("--base-ref=".length);
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
return { ...parsed, error: `unrecognized argument: ${arg}` };
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
return parsed;
|
|
63
|
-
}
|
|
64
|
-
export function run(argv) {
|
|
65
|
-
const args = parseArgs(argv);
|
|
66
|
-
if (args.error !== undefined) {
|
|
67
|
-
process.stderr.write(`verify_scope_provenance: ${args.error}\n`);
|
|
68
|
-
return 2;
|
|
69
|
-
}
|
|
70
|
-
const projectRoot = resolve(args.projectRoot);
|
|
71
|
-
const result = scopeProvenance.evaluateScopeProvenance(projectRoot, {
|
|
72
|
-
...(args.baseRef.length > 0 ? { baseRef: args.baseRef } : {}),
|
|
73
|
-
enforce: args.enforce,
|
|
74
|
-
});
|
|
75
|
-
if (args.enforcePresent) {
|
|
76
|
-
process.stderr.write(`${ENFORCE_NOOP_NOTICE}\n`);
|
|
77
|
-
}
|
|
78
|
-
if (result.exitCode === 0) {
|
|
79
|
-
if (!args.quiet) {
|
|
80
|
-
process.stdout.write(`${result.message}\n`);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
process.stderr.write(`${result.message}\n`);
|
|
85
|
-
}
|
|
86
|
-
return result.exitCode;
|
|
87
|
-
}
|
|
88
|
-
if (isDirectEntrypoint(import.meta.url)) {
|
|
89
|
-
process.exit(run(process.argv.slice(2)));
|
|
90
|
-
}
|
|
91
|
-
//# sourceMappingURL=verify-scope-provenance.js.map
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { type DirectivePosture, type VerifyResult } from "@deftai/directive-core/session";
|
|
3
|
-
export interface VerifySessionRitualRunDeps {
|
|
4
|
-
readonly verifySessionRitual?: (projectRoot: string, options: {
|
|
5
|
-
tier: "quick" | "gated";
|
|
6
|
-
posture?: DirectivePosture;
|
|
7
|
-
}) => VerifyResult;
|
|
8
|
-
}
|
|
9
|
-
interface ParsedArgs {
|
|
10
|
-
projectRoot: string;
|
|
11
|
-
tier: "quick" | "gated";
|
|
12
|
-
posture: DirectivePosture | null;
|
|
13
|
-
emitJson: boolean;
|
|
14
|
-
error?: string;
|
|
15
|
-
}
|
|
16
|
-
/** Parse verify-session-ritual CLI args, mirroring scripts/verify_session_ritual.py. */
|
|
17
|
-
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
18
|
-
/** True when the ritual failure is the gated cache_fresh step (#3506 / #3507). */
|
|
19
|
-
export declare function isCacheFreshFailureMessage(message: string): boolean;
|
|
20
|
-
/** Run the gate and return the process exit code. */
|
|
21
|
-
export declare function run(argv: string[], deps?: VerifySessionRitualRunDeps): number;
|
|
22
|
-
export {};
|
|
23
|
-
//# sourceMappingURL=verify-session-ritual.d.ts.map
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { resolve } from "node:path";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { emitBypassWarning, emitVerifyJson, formatCacheFreshDeferSoftPath, occupancyAwareDenialMessage, verifySessionRitual, } from "@deftai/directive-core/session";
|
|
5
|
-
function parsePosture(value) {
|
|
6
|
-
if (value === "read-only")
|
|
7
|
-
return "read-only";
|
|
8
|
-
if (value === "mutation" || value === "mutating")
|
|
9
|
-
return "mutation";
|
|
10
|
-
return null;
|
|
11
|
-
}
|
|
12
|
-
/** Parse verify-session-ritual CLI args, mirroring scripts/verify_session_ritual.py. */
|
|
13
|
-
export function parseArgs(argv) {
|
|
14
|
-
const parsed = {
|
|
15
|
-
projectRoot: ".",
|
|
16
|
-
tier: "quick",
|
|
17
|
-
posture: null,
|
|
18
|
-
emitJson: false,
|
|
19
|
-
};
|
|
20
|
-
for (let i = 0; i < argv.length; i += 1) {
|
|
21
|
-
const arg = argv[i];
|
|
22
|
-
if (arg === "--") {
|
|
23
|
-
continue;
|
|
24
|
-
}
|
|
25
|
-
if (arg === "--json") {
|
|
26
|
-
parsed.emitJson = true;
|
|
27
|
-
}
|
|
28
|
-
else if (arg === "--project-root") {
|
|
29
|
-
const value = argv[i + 1];
|
|
30
|
-
if (value === undefined) {
|
|
31
|
-
return { ...parsed, error: "argument --project-root: expected one argument" };
|
|
32
|
-
}
|
|
33
|
-
parsed.projectRoot = value;
|
|
34
|
-
i += 1;
|
|
35
|
-
}
|
|
36
|
-
else if (arg?.startsWith("--project-root=")) {
|
|
37
|
-
parsed.projectRoot = arg.slice("--project-root=".length);
|
|
38
|
-
}
|
|
39
|
-
else if (arg === "--tier") {
|
|
40
|
-
const value = argv[i + 1];
|
|
41
|
-
if (value === undefined) {
|
|
42
|
-
return { ...parsed, error: "argument --tier: expected one argument" };
|
|
43
|
-
}
|
|
44
|
-
if (value !== "quick" && value !== "gated") {
|
|
45
|
-
return { ...parsed, error: `argument --tier: invalid choice: '${value}'` };
|
|
46
|
-
}
|
|
47
|
-
parsed.tier = value;
|
|
48
|
-
i += 1;
|
|
49
|
-
}
|
|
50
|
-
else if (arg?.startsWith("--tier=")) {
|
|
51
|
-
const value = arg.slice("--tier=".length);
|
|
52
|
-
if (value !== "quick" && value !== "gated") {
|
|
53
|
-
return { ...parsed, error: `argument --tier: invalid choice: '${value}'` };
|
|
54
|
-
}
|
|
55
|
-
parsed.tier = value;
|
|
56
|
-
}
|
|
57
|
-
else if (arg === "--posture") {
|
|
58
|
-
const value = argv[i + 1];
|
|
59
|
-
if (value === undefined) {
|
|
60
|
-
return { ...parsed, error: "argument --posture: expected one argument" };
|
|
61
|
-
}
|
|
62
|
-
const posture = parsePosture(value);
|
|
63
|
-
if (posture === null) {
|
|
64
|
-
return {
|
|
65
|
-
...parsed,
|
|
66
|
-
error: `argument --posture: invalid choice: '${value}' (expected read-only|mutation)`,
|
|
67
|
-
};
|
|
68
|
-
}
|
|
69
|
-
parsed.posture = posture;
|
|
70
|
-
i += 1;
|
|
71
|
-
}
|
|
72
|
-
else if (arg?.startsWith("--posture=")) {
|
|
73
|
-
const value = arg.slice("--posture=".length);
|
|
74
|
-
const posture = parsePosture(value);
|
|
75
|
-
if (posture === null) {
|
|
76
|
-
return {
|
|
77
|
-
...parsed,
|
|
78
|
-
error: `argument --posture: invalid choice: '${value}' (expected read-only|mutation)`,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
parsed.posture = posture;
|
|
82
|
-
}
|
|
83
|
-
else {
|
|
84
|
-
const error = `unrecognized argument: ${arg}`;
|
|
85
|
-
if (arg === "--session-id" || arg?.startsWith("--session-id=")) {
|
|
86
|
-
return {
|
|
87
|
-
...parsed,
|
|
88
|
-
error: `${error} Drop the flag and retry deft verify:session-ritual -- --tier=gated.`,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
return { ...parsed, error };
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return parsed;
|
|
95
|
-
}
|
|
96
|
-
/** True when the ritual failure is the gated cache_fresh step (#3506 / #3507). */
|
|
97
|
-
export function isCacheFreshFailureMessage(message) {
|
|
98
|
-
return message.includes("cache_fresh") || message.includes("cache-fresh");
|
|
99
|
-
}
|
|
100
|
-
/** Run the gate and return the process exit code. */
|
|
101
|
-
export function run(argv, deps = {}) {
|
|
102
|
-
const args = parseArgs(argv);
|
|
103
|
-
if (args.error !== undefined) {
|
|
104
|
-
process.stderr.write(`verify_session_ritual: ${args.error}\n`);
|
|
105
|
-
return 2;
|
|
106
|
-
}
|
|
107
|
-
const projectRoot = resolve(args.projectRoot);
|
|
108
|
-
const verify = deps.verifySessionRitual ?? verifySessionRitual;
|
|
109
|
-
const result = verify(projectRoot, {
|
|
110
|
-
tier: args.tier,
|
|
111
|
-
posture: args.posture ?? undefined,
|
|
112
|
-
});
|
|
113
|
-
const warning = emitBypassWarning(result);
|
|
114
|
-
const warningNeeded = result.bypassed && result.wouldFailCode !== null;
|
|
115
|
-
if (args.emitJson) {
|
|
116
|
-
process.stdout.write(`${emitVerifyJson(result)}\n`);
|
|
117
|
-
}
|
|
118
|
-
else if (result.code === 0) {
|
|
119
|
-
if (!warningNeeded) {
|
|
120
|
-
process.stdout.write(`${result.message}\n`);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
else if (result.code === 1) {
|
|
124
|
-
const recoveryTier = result.recoveryTier ?? "cold";
|
|
125
|
-
const lines = [
|
|
126
|
-
occupancyAwareDenialMessage(projectRoot, result.message, { env: process.env }, recoveryTier),
|
|
127
|
-
];
|
|
128
|
-
if (isCacheFreshFailureMessage(result.message)) {
|
|
129
|
-
lines.push(formatCacheFreshDeferSoftPath());
|
|
130
|
-
}
|
|
131
|
-
process.stderr.write(`${lines.join("\n")}\n`);
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
process.stderr.write(`${result.message}\n`);
|
|
135
|
-
}
|
|
136
|
-
if (warning.length > 0) {
|
|
137
|
-
process.stderr.write(`${warning}\n`);
|
|
138
|
-
}
|
|
139
|
-
return result.code;
|
|
140
|
-
}
|
|
141
|
-
if (process.argv[1] !== undefined && fileURLToPath(import.meta.url) === process.argv[1]) {
|
|
142
|
-
process.exit(run(process.argv.slice(2)));
|
|
143
|
-
}
|
|
144
|
-
//# sourceMappingURL=verify-session-ritual.js.map
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
interface ParsedArgs {
|
|
3
|
-
mapPath: string | null;
|
|
4
|
-
root: string | null;
|
|
5
|
-
error?: string;
|
|
6
|
-
}
|
|
7
|
-
/** Parse rule-ownership-lint CLI args, mirroring scripts/rule_ownership_lint.py. */
|
|
8
|
-
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
9
|
-
/** Run the gate and return the process exit code. */
|
|
10
|
-
export declare function run(argv: string[]): number;
|
|
11
|
-
export {};
|
|
12
|
-
//# sourceMappingURL=rule-ownership-lint.d.ts.map
|