@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,107 +0,0 @@
|
|
|
1
|
-
/** Test fixtures extracted from legacy parity harness (#2083). */
|
|
2
|
-
import { mkdirSync, mkdtempSync, writeFileSync } from "node:fs";
|
|
3
|
-
import { tmpdir } from "node:os";
|
|
4
|
-
import { dirname, join, resolve } from "node:path";
|
|
5
|
-
import { fileURLToPath } from "node:url";
|
|
6
|
-
/** Strip volatile absolute paths before compare. */
|
|
7
|
-
export function normalizeOutput(text) {
|
|
8
|
-
return text
|
|
9
|
-
.replace(/project_root=[^\s)"]+/g, "project_root=<ROOT>")
|
|
10
|
-
.replace(/"project_root": "[^"]+"/g, '"project_root": "<ROOT>"')
|
|
11
|
-
.replace(/\/tmp\/[^\s"']+/g, "<TMP>")
|
|
12
|
-
.replace(/(?:\/private)?\/var\/folders\/[^\s"']+/g, "<TMP>")
|
|
13
|
-
.replace(/^WARN [^\n]*\n/gm, "")
|
|
14
|
-
.replace(/Using CPython[^\n]*\n/g, "")
|
|
15
|
-
.replace(/Creating virtual environment[^\n]*\n/g, "")
|
|
16
|
-
.replace(/Installed \d+ packages[^\n]*\n/g, "");
|
|
17
|
-
}
|
|
18
|
-
function resolveDeftRoot() {
|
|
19
|
-
if (process.env.DEFT_ROOT !== undefined && process.env.DEFT_ROOT.length > 0) {
|
|
20
|
-
return resolve(process.env.DEFT_ROOT);
|
|
21
|
-
}
|
|
22
|
-
return resolve(dirname(fileURLToPath(import.meta.url)), "..", "..", "..");
|
|
23
|
-
}
|
|
24
|
-
export { resolveDeftRoot };
|
|
25
|
-
export function diffCase(python, ts, caseName) {
|
|
26
|
-
const pyOut = normalizeOutput(python.stdout);
|
|
27
|
-
const tsOut = normalizeOutput(ts.stdout);
|
|
28
|
-
const pyErr = normalizeOutput(python.stderr);
|
|
29
|
-
const tsErr = normalizeOutput(ts.stderr);
|
|
30
|
-
return {
|
|
31
|
-
caseName,
|
|
32
|
-
exitMismatch: python.exitCode !== ts.exitCode,
|
|
33
|
-
stdoutMismatch: pyOut !== tsOut,
|
|
34
|
-
stderrMismatch: pyErr !== tsErr,
|
|
35
|
-
pythonExit: python.exitCode,
|
|
36
|
-
tsExit: ts.exitCode,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
function writeProjectDefinition(root, policy = {}) {
|
|
40
|
-
mkdirSync(join(root, "xbrief"), { recursive: true });
|
|
41
|
-
writeFileSync(join(root, "xbrief", "PROJECT-DEFINITION.xbrief.json"), `${JSON.stringify({ xBRIEFInfo: { version: "0.8" }, plan: { policy } }, null, 2)}\n`, "utf8");
|
|
42
|
-
}
|
|
43
|
-
export const PARITY_CASES = [
|
|
44
|
-
{
|
|
45
|
-
name: "welcome-default-empty",
|
|
46
|
-
script: "triage_welcome.py",
|
|
47
|
-
tsCli: "triage-welcome.js",
|
|
48
|
-
argv: ["--no-history"],
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
name: "reconcile-dry-run-json-empty",
|
|
52
|
-
script: "triage_reconcile.py",
|
|
53
|
-
tsCli: "triage-reconcile.js",
|
|
54
|
-
argv: ["--dry-run", "--json"],
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
name: "reconcile-text-empty",
|
|
58
|
-
script: "triage_reconcile.py",
|
|
59
|
-
tsCli: "triage-reconcile.js",
|
|
60
|
-
argv: [],
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
name: "scope-drift-empty-cache",
|
|
64
|
-
script: "triage_scope_drift.py",
|
|
65
|
-
tsCli: "triage-scope-drift.js",
|
|
66
|
-
argv: [],
|
|
67
|
-
setup: (root) => writeProjectDefinition(root),
|
|
68
|
-
},
|
|
69
|
-
{
|
|
70
|
-
name: "refresh-empty-active",
|
|
71
|
-
script: "triage_refresh.py",
|
|
72
|
-
tsCli: "triage-refresh.js",
|
|
73
|
-
argv: [],
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
name: "welcome-bad-root",
|
|
77
|
-
script: "triage_welcome.py",
|
|
78
|
-
tsCli: "triage-welcome.js",
|
|
79
|
-
argv: [],
|
|
80
|
-
setup: () => { },
|
|
81
|
-
},
|
|
82
|
-
];
|
|
83
|
-
export function buildFixtureRepo(setup) {
|
|
84
|
-
const root = mkdtempSync(join(tmpdir(), "deft-triage-aux-a-parity-"));
|
|
85
|
-
mkdirSync(join(root, "xbrief"), { recursive: true });
|
|
86
|
-
setup?.(root);
|
|
87
|
-
return root;
|
|
88
|
-
}
|
|
89
|
-
export function renderReport(result) {
|
|
90
|
-
if (result.ok) {
|
|
91
|
-
return `triage-aux-a parity: CLEAN -- Python and TS agree on ${PARITY_CASES.length} cases.`;
|
|
92
|
-
}
|
|
93
|
-
const lines = ["triage-aux-a parity: DIVERGENCE"];
|
|
94
|
-
for (const d of result.diffs) {
|
|
95
|
-
if (d.exitMismatch || d.stdoutMismatch || d.stderrMismatch) {
|
|
96
|
-
lines.push(` case: ${d.caseName}`);
|
|
97
|
-
if (d.exitMismatch)
|
|
98
|
-
lines.push(` exit: python=${d.pythonExit} ts=${d.tsExit}`);
|
|
99
|
-
if (d.stdoutMismatch)
|
|
100
|
-
lines.push(" stdout mismatch");
|
|
101
|
-
if (d.stderrMismatch)
|
|
102
|
-
lines.push(" stderr mismatch");
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
return lines.join("\n");
|
|
106
|
-
}
|
|
107
|
-
//# sourceMappingURL=triage-aux-a-fixtures.js.map
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
export interface CommandCapture {
|
|
2
|
-
readonly exitCode: number;
|
|
3
|
-
readonly stdout: string;
|
|
4
|
-
readonly stderr: string;
|
|
5
|
-
}
|
|
6
|
-
export interface ParityCase {
|
|
7
|
-
readonly name: string;
|
|
8
|
-
readonly verb: "help" | "subscribe" | "bulk" | "smoketest";
|
|
9
|
-
readonly argv: readonly string[];
|
|
10
|
-
readonly fixtureRoot?: string;
|
|
11
|
-
readonly env?: Record<string, string>;
|
|
12
|
-
}
|
|
13
|
-
export interface ParityDiff {
|
|
14
|
-
readonly caseName: string;
|
|
15
|
-
readonly exitMismatch: boolean;
|
|
16
|
-
readonly stdoutMismatch: boolean;
|
|
17
|
-
readonly stderrMismatch: boolean;
|
|
18
|
-
readonly pythonExit: number;
|
|
19
|
-
readonly tsExit: number;
|
|
20
|
-
}
|
|
21
|
-
export interface ParityResult {
|
|
22
|
-
readonly ok: boolean;
|
|
23
|
-
readonly diffs: ParityDiff[];
|
|
24
|
-
}
|
|
25
|
-
export declare function normalizeOutput(text: string): string;
|
|
26
|
-
export declare function buildFixtureRepo(kind: "subscribe" | "bulk-empty" | "bulk-filter"): string;
|
|
27
|
-
export declare function diffCase(python: CommandCapture, ts: CommandCapture, caseName: string): ParityDiff;
|
|
28
|
-
export declare const PARITY_CASES: readonly ParityCase[];
|
|
29
|
-
export declare function renderReport(result: ParityResult): string;
|
|
30
|
-
//# sourceMappingURL=triage-aux-b-fixtures.d.ts.map
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
/** Test fixtures extracted from legacy parity harness (#2083). */
|
|
2
|
-
import { copyFileSync, mkdirSync, mkdtempSync, readdirSync, writeFileSync } from "node:fs";
|
|
3
|
-
import { tmpdir } from "node:os";
|
|
4
|
-
import { join } from "node:path";
|
|
5
|
-
export function normalizeOutput(text) {
|
|
6
|
-
return text
|
|
7
|
-
.replace(/project_root=[^\s)]+/g, "project_root=<ROOT>")
|
|
8
|
-
.replace(/\/tmp\/deft-[^\s/]+/g, "<TMPROOT>")
|
|
9
|
-
.replace(/change_id": "[^"]+"/g, 'change_id": "<UUID>"')
|
|
10
|
-
.replace(/Using CPython[^\n]*\n/g, "")
|
|
11
|
-
.replace(/Creating virtual environment[^\n]*\n/g, "")
|
|
12
|
-
.replace(/Installed \d+ packages[^\n]*\n/g, "");
|
|
13
|
-
}
|
|
14
|
-
function writeProjectDefinition(root, policy = {}) {
|
|
15
|
-
mkdirSync(join(root, "xbrief"), { recursive: true });
|
|
16
|
-
writeFileSync(join(root, "xbrief", "PROJECT-DEFINITION.xbrief.json"), `${JSON.stringify({
|
|
17
|
-
xBRIEFInfo: { version: "0.8" },
|
|
18
|
-
plan: { title: "T", status: "running", items: [], policy },
|
|
19
|
-
}, null, 2)}\n`, { encoding: "utf8" });
|
|
20
|
-
}
|
|
21
|
-
function populateCache(cacheRoot, repo, issues) {
|
|
22
|
-
const [owner, name] = repo.split("/");
|
|
23
|
-
if (owner === undefined || name === undefined) {
|
|
24
|
-
throw new Error(`invalid repo ${repo}`);
|
|
25
|
-
}
|
|
26
|
-
for (const issue of issues) {
|
|
27
|
-
const n = String(issue.number);
|
|
28
|
-
const entryDir = join(cacheRoot, "github-issue", owner, name, n);
|
|
29
|
-
mkdirSync(entryDir, { recursive: true });
|
|
30
|
-
writeFileSync(join(entryDir, "raw.json"), JSON.stringify(issue), { encoding: "utf8" });
|
|
31
|
-
writeFileSync(join(entryDir, "meta.json"), JSON.stringify({
|
|
32
|
-
source: "github-issue",
|
|
33
|
-
key: `${repo}/${n}`,
|
|
34
|
-
fetched_at: "2026-05-05T00:00:00Z",
|
|
35
|
-
ttl_seconds: 604800,
|
|
36
|
-
expires_at: "2099-01-01T00:00:00Z",
|
|
37
|
-
scan_result: {
|
|
38
|
-
passed: true,
|
|
39
|
-
scanned_at: "2026-05-05T00:00:00Z",
|
|
40
|
-
scanner_version: "2.0.0",
|
|
41
|
-
flags: [],
|
|
42
|
-
},
|
|
43
|
-
size_bytes: 100,
|
|
44
|
-
stale: false,
|
|
45
|
-
}), { encoding: "utf8" });
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
export function buildFixtureRepo(kind) {
|
|
49
|
-
const root = mkdtempSync(join(tmpdir(), "deft-triage-aux-b-parity-"));
|
|
50
|
-
if (kind === "subscribe") {
|
|
51
|
-
writeProjectDefinition(root);
|
|
52
|
-
return root;
|
|
53
|
-
}
|
|
54
|
-
if (kind === "bulk-empty") {
|
|
55
|
-
writeProjectDefinition(root);
|
|
56
|
-
mkdirSync(join(root, ".deft-cache"), { recursive: true });
|
|
57
|
-
return root;
|
|
58
|
-
}
|
|
59
|
-
writeProjectDefinition(root);
|
|
60
|
-
populateCache(join(root, ".deft-cache"), "deftai/parity", [
|
|
61
|
-
{
|
|
62
|
-
number: 99,
|
|
63
|
-
title: "parity issue",
|
|
64
|
-
labels: [{ name: "other-label" }],
|
|
65
|
-
author: { login: "bot" },
|
|
66
|
-
createdAt: "2020-01-01T00:00:00Z",
|
|
67
|
-
},
|
|
68
|
-
]);
|
|
69
|
-
return root;
|
|
70
|
-
}
|
|
71
|
-
const _PY_SCRIPT = {
|
|
72
|
-
help: "triage_help.py",
|
|
73
|
-
subscribe: "triage_subscribe.py",
|
|
74
|
-
bulk: "triage_bulk.py",
|
|
75
|
-
smoketest: "triage_smoketest.py",
|
|
76
|
-
};
|
|
77
|
-
const _TS_CLI = {
|
|
78
|
-
help: "triage-help.js",
|
|
79
|
-
subscribe: "triage-subscribe.js",
|
|
80
|
-
bulk: "triage-bulk.js",
|
|
81
|
-
smoketest: "triage-smoketest.js",
|
|
82
|
-
};
|
|
83
|
-
export function diffCase(python, ts, caseName) {
|
|
84
|
-
return {
|
|
85
|
-
caseName,
|
|
86
|
-
exitMismatch: python.exitCode !== ts.exitCode,
|
|
87
|
-
stdoutMismatch: normalizeOutput(python.stdout) !== normalizeOutput(ts.stdout),
|
|
88
|
-
stderrMismatch: normalizeOutput(python.stderr) !== normalizeOutput(ts.stderr),
|
|
89
|
-
pythonExit: python.exitCode,
|
|
90
|
-
tsExit: ts.exitCode,
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
export const PARITY_CASES = [
|
|
94
|
-
{ name: "help-triage-list", verb: "help", argv: ["triage"] },
|
|
95
|
-
{ name: "help-scope-list", verb: "help", argv: ["scope"] },
|
|
96
|
-
{ name: "help-verb-queue", verb: "help", argv: ["help", "task triage:queue"] },
|
|
97
|
-
{ name: "help-registry-list", verb: "help", argv: ["list"] },
|
|
98
|
-
{ name: "help-bulk-intercept", verb: "bulk", argv: ["accept", "--help"] },
|
|
99
|
-
{
|
|
100
|
-
name: "subscribe-label-create",
|
|
101
|
-
verb: "subscribe",
|
|
102
|
-
argv: ["subscribe", "--label", "area:parity"],
|
|
103
|
-
fixtureRoot: "subscribe",
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
name: "subscribe-label-idempotent",
|
|
107
|
-
verb: "subscribe",
|
|
108
|
-
argv: ["subscribe", "--label", "dup-label"],
|
|
109
|
-
fixtureRoot: "subscribe",
|
|
110
|
-
env: { DEFT_TRIAGE_ACTOR: "agent:parity" },
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
name: "subscribe-unsubscribe-missing",
|
|
114
|
-
verb: "subscribe",
|
|
115
|
-
argv: ["unsubscribe", "--label", "ghost"],
|
|
116
|
-
fixtureRoot: "subscribe",
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
name: "bulk-empty-cache",
|
|
120
|
-
verb: "bulk",
|
|
121
|
-
argv: ["accept", "--repo", "deftai/parity"],
|
|
122
|
-
fixtureRoot: "bulk-empty",
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
name: "bulk-zero-match",
|
|
126
|
-
verb: "bulk",
|
|
127
|
-
argv: ["defer", "--repo", "deftai/parity", "--label", "no-such-label"],
|
|
128
|
-
fixtureRoot: "bulk-filter",
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
name: "smoketest-missing-fixture",
|
|
132
|
-
verb: "smoketest",
|
|
133
|
-
argv: ["--fixture", "/nonexistent/deft-smoketest-fixture"],
|
|
134
|
-
},
|
|
135
|
-
];
|
|
136
|
-
function _cpRecursive(src, dest) {
|
|
137
|
-
mkdirSync(dest, { recursive: true });
|
|
138
|
-
for (const entry of readdirSync(src, { withFileTypes: true })) {
|
|
139
|
-
const s = join(src, entry.name);
|
|
140
|
-
const d = join(dest, entry.name);
|
|
141
|
-
if (entry.isDirectory()) {
|
|
142
|
-
_cpRecursive(s, d);
|
|
143
|
-
}
|
|
144
|
-
else {
|
|
145
|
-
copyFileSync(s, d);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
export function renderReport(result) {
|
|
150
|
-
if (result.ok) {
|
|
151
|
-
return `triage-aux-b parity: CLEAN -- Python and TS agree on ${PARITY_CASES.length} cases.`;
|
|
152
|
-
}
|
|
153
|
-
const lines = ["triage-aux-b parity: DIVERGENCE"];
|
|
154
|
-
for (const d of result.diffs) {
|
|
155
|
-
if (d.exitMismatch || d.stdoutMismatch || d.stderrMismatch) {
|
|
156
|
-
lines.push(` case: ${d.caseName}`);
|
|
157
|
-
if (d.exitMismatch)
|
|
158
|
-
lines.push(` exit: python=${d.pythonExit} ts=${d.tsExit}`);
|
|
159
|
-
if (d.stdoutMismatch)
|
|
160
|
-
lines.push(" stdout mismatch");
|
|
161
|
-
if (d.stderrMismatch)
|
|
162
|
-
lines.push(" stderr mismatch");
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
return lines.join("\n");
|
|
166
|
-
}
|
|
167
|
-
//# sourceMappingURL=triage-aux-b-fixtures.js.map
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export interface CommandCapture {
|
|
2
|
-
readonly exitCode: number;
|
|
3
|
-
readonly stdout: string;
|
|
4
|
-
readonly stderr: string;
|
|
5
|
-
}
|
|
6
|
-
export interface ParityCase {
|
|
7
|
-
readonly name: string;
|
|
8
|
-
readonly argv: string[];
|
|
9
|
-
readonly fixture?: FixtureOptions;
|
|
10
|
-
}
|
|
11
|
-
export interface FixtureOptions {
|
|
12
|
-
readonly scopeVbriefs?: Array<{
|
|
13
|
-
folder: string;
|
|
14
|
-
slug: string;
|
|
15
|
-
issue: number;
|
|
16
|
-
}>;
|
|
17
|
-
readonly preRunBootstrap?: boolean;
|
|
18
|
-
}
|
|
19
|
-
export interface ParityDiff {
|
|
20
|
-
readonly caseName: string;
|
|
21
|
-
readonly exitMismatch: boolean;
|
|
22
|
-
readonly stdoutMismatch: boolean;
|
|
23
|
-
readonly stderrMismatch: boolean;
|
|
24
|
-
readonly pythonExit: number;
|
|
25
|
-
readonly tsExit: number;
|
|
26
|
-
}
|
|
27
|
-
export interface ParityResult {
|
|
28
|
-
readonly ok: boolean;
|
|
29
|
-
readonly diffs: ParityDiff[];
|
|
30
|
-
}
|
|
31
|
-
/** Strip volatile absolute paths before compare. */
|
|
32
|
-
export declare function normalizeOutput(text: string): string;
|
|
33
|
-
/** Compare stdout, parsing JSON payloads when present. */
|
|
34
|
-
export declare function normalizeStdout(text: string): string;
|
|
35
|
-
/** Build a throwaway project root with optional xBRIEF fixtures. */
|
|
36
|
-
export declare function buildFixtureRepo(options?: FixtureOptions): string;
|
|
37
|
-
/** Diff one parity case between Python oracle and TS CLI. */
|
|
38
|
-
export declare function diffCase(python: CommandCapture, ts: CommandCapture, caseName: string): ParityDiff;
|
|
39
|
-
export declare const PARITY_CASES: readonly ParityCase[];
|
|
40
|
-
/** Run all parity cases; returns aggregate result. */
|
|
41
|
-
export declare function renderReport(result: ParityResult): string;
|
|
42
|
-
//# sourceMappingURL=triage-bootstrap-fixtures.d.ts.map
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
/** Test fixtures extracted from legacy parity harness (#2083). */
|
|
2
|
-
import { mkdirSync, mkdtempSync, writeFileSync } from "node:fs";
|
|
3
|
-
import { tmpdir } from "node:os";
|
|
4
|
-
import { join } from "node:path";
|
|
5
|
-
/** Strip volatile absolute paths before compare. */
|
|
6
|
-
export function normalizeOutput(text) {
|
|
7
|
-
return text
|
|
8
|
-
.replace(/project_root": "[^"]+"/g, 'project_root": "<ROOT>"')
|
|
9
|
-
.replace(/"project_root": "[^"]+"/g, '"project_root": "<ROOT>"')
|
|
10
|
-
.replace(/project_root=[^\s)]+/g, "project_root=<ROOT>")
|
|
11
|
-
.replace(/under \/tmp\/[^\s)]+/g, "under <ROOT>")
|
|
12
|
-
.replace(/under \/var\/[^\s)]+/g, "under <ROOT>");
|
|
13
|
-
}
|
|
14
|
-
/** Compare stdout, parsing JSON payloads when present. */
|
|
15
|
-
export function normalizeStdout(text) {
|
|
16
|
-
const trimmed = text.trim();
|
|
17
|
-
if (trimmed.startsWith("{")) {
|
|
18
|
-
try {
|
|
19
|
-
const parsed = JSON.parse(trimmed);
|
|
20
|
-
if (typeof parsed.project_root === "string") {
|
|
21
|
-
parsed.project_root = "<ROOT>";
|
|
22
|
-
}
|
|
23
|
-
const steps = parsed.steps;
|
|
24
|
-
if (Array.isArray(steps)) {
|
|
25
|
-
for (const step of steps) {
|
|
26
|
-
if (typeof step !== "object" || step === null)
|
|
27
|
-
continue;
|
|
28
|
-
const record = step;
|
|
29
|
-
if (typeof record.message === "string") {
|
|
30
|
-
record.message = normalizeOutput(record.message);
|
|
31
|
-
}
|
|
32
|
-
const details = record.details;
|
|
33
|
-
if (typeof details === "object" && details !== null) {
|
|
34
|
-
const detailRecord = details;
|
|
35
|
-
if (typeof detailRecord.audit_path === "string") {
|
|
36
|
-
detailRecord.audit_path = "<ROOT>/xbrief/.triage-cache/candidates.jsonl";
|
|
37
|
-
}
|
|
38
|
-
if (typeof detailRecord.fetch_timeout_s === "number") {
|
|
39
|
-
detailRecord.fetch_timeout_s = Math.trunc(detailRecord.fetch_timeout_s);
|
|
40
|
-
}
|
|
41
|
-
if (typeof detailRecord.elapsed_s === "number") {
|
|
42
|
-
detailRecord.elapsed_s = Number(detailRecord.elapsed_s.toFixed(3));
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
return JSON.stringify(parsed);
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
return normalizeOutput(text);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return normalizeOutput(text);
|
|
54
|
-
}
|
|
55
|
-
function writeScopeVbrief(root, folder, slug, issueNumber) {
|
|
56
|
-
const dir = join(root, "xbrief", folder);
|
|
57
|
-
mkdirSync(dir, { recursive: true });
|
|
58
|
-
writeFileSync(join(dir, `${slug}.xbrief.json`), `${JSON.stringify({
|
|
59
|
-
xBRIEFInfo: { version: "0.8" },
|
|
60
|
-
plan: {
|
|
61
|
-
id: slug,
|
|
62
|
-
title: slug,
|
|
63
|
-
status: "proposed",
|
|
64
|
-
references: [
|
|
65
|
-
{
|
|
66
|
-
type: "x-vbrief/github-issue",
|
|
67
|
-
uri: `https://github.com/deftai/directive/issues/${issueNumber}`,
|
|
68
|
-
},
|
|
69
|
-
],
|
|
70
|
-
},
|
|
71
|
-
})}\n`, { encoding: "utf8" });
|
|
72
|
-
}
|
|
73
|
-
/** Build a throwaway project root with optional xBRIEF fixtures. */
|
|
74
|
-
export function buildFixtureRepo(options = {}) {
|
|
75
|
-
const root = mkdtempSync(join(tmpdir(), "deft-triage-bootstrap-parity-"));
|
|
76
|
-
mkdirSync(join(root, "xbrief"), { recursive: true });
|
|
77
|
-
for (const item of options.scopeVbriefs ?? []) {
|
|
78
|
-
writeScopeVbrief(root, item.folder, item.slug, item.issue);
|
|
79
|
-
}
|
|
80
|
-
return root;
|
|
81
|
-
}
|
|
82
|
-
/** Diff one parity case between Python oracle and TS CLI. */
|
|
83
|
-
export function diffCase(python, ts, caseName) {
|
|
84
|
-
const pyOut = normalizeStdout(python.stdout);
|
|
85
|
-
const tsOut = normalizeStdout(ts.stdout);
|
|
86
|
-
const pyErr = normalizeOutput(python.stderr);
|
|
87
|
-
const tsErr = normalizeOutput(ts.stderr);
|
|
88
|
-
return {
|
|
89
|
-
caseName,
|
|
90
|
-
exitMismatch: python.exitCode !== ts.exitCode,
|
|
91
|
-
stdoutMismatch: pyOut !== tsOut,
|
|
92
|
-
stderrMismatch: pyErr !== tsErr,
|
|
93
|
-
pythonExit: python.exitCode,
|
|
94
|
-
tsExit: ts.exitCode,
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
export const PARITY_CASES = [
|
|
98
|
-
{
|
|
99
|
-
name: "json-no-repo-quiet",
|
|
100
|
-
argv: ["--json", "--quiet"],
|
|
101
|
-
},
|
|
102
|
-
{
|
|
103
|
-
name: "recap-no-repo-quiet",
|
|
104
|
-
argv: ["--quiet"],
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
name: "config-error-bad-root",
|
|
108
|
-
argv: ["--json", "--project-root", "/nonexistent-deft-bootstrap-parity-root"],
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
name: "json-invalid-repo-quiet",
|
|
112
|
-
argv: ["--json", "--quiet", "--repo", "bad"],
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
name: "json-idempotent-rerun",
|
|
116
|
-
argv: ["--json", "--quiet"],
|
|
117
|
-
fixture: { preRunBootstrap: true },
|
|
118
|
-
},
|
|
119
|
-
];
|
|
120
|
-
/** Run all parity cases; returns aggregate result. */
|
|
121
|
-
export function renderReport(result) {
|
|
122
|
-
if (result.ok) {
|
|
123
|
-
return `triage:bootstrap parity: CLEAN -- Python and TS agree on ${PARITY_CASES.length} cases.`;
|
|
124
|
-
}
|
|
125
|
-
const lines = ["triage:bootstrap parity: DIVERGENCE"];
|
|
126
|
-
for (const d of result.diffs) {
|
|
127
|
-
if (d.exitMismatch || d.stdoutMismatch || d.stderrMismatch) {
|
|
128
|
-
lines.push(` case: ${d.caseName}`);
|
|
129
|
-
if (d.exitMismatch)
|
|
130
|
-
lines.push(` exit: python=${d.pythonExit} ts=${d.tsExit}`);
|
|
131
|
-
if (d.stdoutMismatch)
|
|
132
|
-
lines.push(" stdout mismatch");
|
|
133
|
-
if (d.stderrMismatch)
|
|
134
|
-
lines.push(" stderr mismatch");
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
return lines.join("\n");
|
|
138
|
-
}
|
|
139
|
-
//# sourceMappingURL=triage-bootstrap-fixtures.js.map
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
export interface ParsedArgs {
|
|
3
|
-
projectRoot: string;
|
|
4
|
-
repo: string | null;
|
|
5
|
-
limit?: number;
|
|
6
|
-
state?: string;
|
|
7
|
-
labels: string[];
|
|
8
|
-
author?: string;
|
|
9
|
-
batchSize?: number;
|
|
10
|
-
delayMs?: number;
|
|
11
|
-
fetchTimeoutS: number;
|
|
12
|
-
quiet: boolean;
|
|
13
|
-
emitJson: boolean;
|
|
14
|
-
error?: string;
|
|
15
|
-
}
|
|
16
|
-
type BootstrapModule = typeof import("@deftai/directive-core/dist/triage/bootstrap/index.js");
|
|
17
|
-
/** Parse triage-bootstrap CLI args, mirroring the Python argparse surface. */
|
|
18
|
-
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
19
|
-
/** Run triage:bootstrap with an injected core module (test seam). */
|
|
20
|
-
export declare function runWithModule(mod: BootstrapModule, argv: string[]): Promise<number>;
|
|
21
|
-
/** Run triage:bootstrap and return the process exit code. */
|
|
22
|
-
export declare function run(argv: string[]): Promise<number>;
|
|
23
|
-
export {};
|
|
24
|
-
//# sourceMappingURL=triage-bootstrap.d.ts.map
|
package/dist/triage-bootstrap.js
DELETED
|
@@ -1,175 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { statSync } from "node:fs";
|
|
3
|
-
import { resolve } from "node:path";
|
|
4
|
-
import { fileURLToPath } from "node:url";
|
|
5
|
-
async function loadBootstrapModule() {
|
|
6
|
-
// Direct dynamic import of the published package subpath -- resolves via core's
|
|
7
|
-
// "./dist/*.js" export map in both the monorepo and a flat npm install (#1993).
|
|
8
|
-
// The prior hand-built relative path broke once published (and my mechanical
|
|
9
|
-
// import rewrite turned it into a non-existent path under packages/cli/dist).
|
|
10
|
-
return import("@deftai/directive-core/dist/triage/bootstrap/index.js");
|
|
11
|
-
}
|
|
12
|
-
/** Parse triage-bootstrap CLI args, mirroring the Python argparse surface. */
|
|
13
|
-
export function parseArgs(argv) {
|
|
14
|
-
const parsed = {
|
|
15
|
-
projectRoot: process.env.DEFT_PROJECT_ROOT ?? ".",
|
|
16
|
-
repo: process.env.DEFT_TRIAGE_REPO ?? null,
|
|
17
|
-
labels: [],
|
|
18
|
-
fetchTimeoutS: Number.NaN,
|
|
19
|
-
quiet: false,
|
|
20
|
-
emitJson: false,
|
|
21
|
-
};
|
|
22
|
-
for (let i = 0; i < argv.length; i += 1) {
|
|
23
|
-
const arg = argv[i];
|
|
24
|
-
if (arg === "--quiet") {
|
|
25
|
-
parsed.quiet = true;
|
|
26
|
-
}
|
|
27
|
-
else if (arg === "--json") {
|
|
28
|
-
parsed.emitJson = true;
|
|
29
|
-
}
|
|
30
|
-
else if (arg === "--project-root") {
|
|
31
|
-
const value = argv[i + 1];
|
|
32
|
-
if (value === undefined) {
|
|
33
|
-
return { ...parsed, error: "argument --project-root: expected one argument" };
|
|
34
|
-
}
|
|
35
|
-
parsed.projectRoot = value;
|
|
36
|
-
i += 1;
|
|
37
|
-
}
|
|
38
|
-
else if (arg?.startsWith("--project-root=")) {
|
|
39
|
-
parsed.projectRoot = arg.slice("--project-root=".length);
|
|
40
|
-
}
|
|
41
|
-
else if (arg === "--repo") {
|
|
42
|
-
const value = argv[i + 1];
|
|
43
|
-
if (value === undefined) {
|
|
44
|
-
return { ...parsed, error: "argument --repo: expected one argument" };
|
|
45
|
-
}
|
|
46
|
-
parsed.repo = value;
|
|
47
|
-
i += 1;
|
|
48
|
-
}
|
|
49
|
-
else if (arg?.startsWith("--repo=")) {
|
|
50
|
-
parsed.repo = arg.slice("--repo=".length);
|
|
51
|
-
}
|
|
52
|
-
else if (arg === "--limit") {
|
|
53
|
-
const value = argv[i + 1];
|
|
54
|
-
if (value === undefined) {
|
|
55
|
-
return { ...parsed, error: "argument --limit: expected one argument" };
|
|
56
|
-
}
|
|
57
|
-
parsed.limit = Number.parseInt(value, 10);
|
|
58
|
-
i += 1;
|
|
59
|
-
}
|
|
60
|
-
else if (arg === "--state") {
|
|
61
|
-
const value = argv[i + 1];
|
|
62
|
-
if (value === undefined) {
|
|
63
|
-
return { ...parsed, error: "argument --state: expected one argument" };
|
|
64
|
-
}
|
|
65
|
-
if (value !== "open" && value !== "closed" && value !== "all") {
|
|
66
|
-
return {
|
|
67
|
-
...parsed,
|
|
68
|
-
error: `invalid choice: '${value}' (choose from 'open', 'closed', 'all')`,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
parsed.state = value;
|
|
72
|
-
i += 1;
|
|
73
|
-
}
|
|
74
|
-
else if (arg === "--label") {
|
|
75
|
-
const value = argv[i + 1];
|
|
76
|
-
if (value === undefined) {
|
|
77
|
-
return { ...parsed, error: "argument --label: expected one argument" };
|
|
78
|
-
}
|
|
79
|
-
parsed.labels.push(value);
|
|
80
|
-
i += 1;
|
|
81
|
-
}
|
|
82
|
-
else if (arg === "--author") {
|
|
83
|
-
const value = argv[i + 1];
|
|
84
|
-
if (value === undefined) {
|
|
85
|
-
return { ...parsed, error: "argument --author: expected one argument" };
|
|
86
|
-
}
|
|
87
|
-
parsed.author = value;
|
|
88
|
-
i += 1;
|
|
89
|
-
}
|
|
90
|
-
else if (arg === "--batch-size") {
|
|
91
|
-
const value = argv[i + 1];
|
|
92
|
-
if (value === undefined) {
|
|
93
|
-
return { ...parsed, error: "argument --batch-size: expected one argument" };
|
|
94
|
-
}
|
|
95
|
-
parsed.batchSize = Number.parseInt(value, 10);
|
|
96
|
-
i += 1;
|
|
97
|
-
}
|
|
98
|
-
else if (arg === "--delay-ms") {
|
|
99
|
-
const value = argv[i + 1];
|
|
100
|
-
if (value === undefined) {
|
|
101
|
-
return { ...parsed, error: "argument --delay-ms: expected one argument" };
|
|
102
|
-
}
|
|
103
|
-
parsed.delayMs = Number.parseInt(value, 10);
|
|
104
|
-
i += 1;
|
|
105
|
-
}
|
|
106
|
-
else if (arg === "--fetch-timeout-s") {
|
|
107
|
-
const value = argv[i + 1];
|
|
108
|
-
if (value === undefined) {
|
|
109
|
-
return { ...parsed, error: "argument --fetch-timeout-s: expected one argument" };
|
|
110
|
-
}
|
|
111
|
-
parsed.fetchTimeoutS = Number.parseFloat(value);
|
|
112
|
-
i += 1;
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
return { ...parsed, error: `unrecognized arguments: ${arg}` };
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return parsed;
|
|
119
|
-
}
|
|
120
|
-
/** Run triage:bootstrap with an injected core module (test seam). */
|
|
121
|
-
export async function runWithModule(mod, argv) {
|
|
122
|
-
const args = parseArgs(argv);
|
|
123
|
-
if (args.error !== undefined) {
|
|
124
|
-
process.stderr.write(`triage_bootstrap: ${args.error}\n`);
|
|
125
|
-
return 2;
|
|
126
|
-
}
|
|
127
|
-
const fetchTimeoutS = Number.isNaN(args.fetchTimeoutS)
|
|
128
|
-
? mod.defaultFetchTimeoutFromEnv()
|
|
129
|
-
: args.fetchTimeoutS;
|
|
130
|
-
const projectRoot = resolve(args.projectRoot);
|
|
131
|
-
let isDir = false;
|
|
132
|
-
try {
|
|
133
|
-
isDir = statSync(projectRoot).isDirectory();
|
|
134
|
-
}
|
|
135
|
-
catch {
|
|
136
|
-
isDir = false;
|
|
137
|
-
}
|
|
138
|
-
if (!isDir) {
|
|
139
|
-
process.stderr.write(`❌ triage:bootstrap: --project-root ${projectRoot} does not exist or is not a directory.\n`);
|
|
140
|
-
return 2;
|
|
141
|
-
}
|
|
142
|
-
const labels = mod.normaliseLabelFilter(args.labels);
|
|
143
|
-
const result = await mod.runBootstrap(projectRoot, args.repo, {
|
|
144
|
-
batchSize: args.batchSize,
|
|
145
|
-
delayMs: args.delayMs,
|
|
146
|
-
state: args.state,
|
|
147
|
-
limit: args.limit,
|
|
148
|
-
labels,
|
|
149
|
-
author: args.author,
|
|
150
|
-
fetchTimeoutS,
|
|
151
|
-
progress: args.quiet ? null : mod.PROGRESS_DEFAULT,
|
|
152
|
-
});
|
|
153
|
-
if (args.emitJson) {
|
|
154
|
-
process.stdout.write(`${mod.formatJson(result)}\n`);
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
process.stdout.write(`${mod.formatSummary(result)}\n`);
|
|
158
|
-
}
|
|
159
|
-
return result.exitCode;
|
|
160
|
-
}
|
|
161
|
-
/** Run triage:bootstrap and return the process exit code. */
|
|
162
|
-
export async function run(argv) {
|
|
163
|
-
return runWithModule(await loadBootstrapModule(), argv);
|
|
164
|
-
}
|
|
165
|
-
if (process.argv[1] !== undefined && fileURLToPath(import.meta.url) === process.argv[1]) {
|
|
166
|
-
run(process.argv.slice(2))
|
|
167
|
-
.then((code) => {
|
|
168
|
-
process.exit(code);
|
|
169
|
-
})
|
|
170
|
-
.catch((err) => {
|
|
171
|
-
process.stderr.write(`triage_bootstrap: ${String(err)}\n`);
|
|
172
|
-
process.exit(2);
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
//# sourceMappingURL=triage-bootstrap.js.map
|