@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,333 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/**
|
|
3
|
-
* Parent write surface for deft.subagent.steer.v1 (#5278 / #4286).
|
|
4
|
-
* Wraps writeSteer so status steers are reachable before pre-cancel.
|
|
5
|
-
* Writer authority is checked against child occupancy / heartbeat — not self-attested.
|
|
6
|
-
*/
|
|
7
|
-
import { resolve } from "node:path";
|
|
8
|
-
import { fileURLToPath } from "node:url";
|
|
9
|
-
import { defaultSteerDir, isSafeAgentId, STEER_KINDS, STEER_WRITER_KINDS, writeSteer, } from "@deftai/directive-core/orchestration";
|
|
10
|
-
import { liveOccupant, readChildOccupancyLease } from "@deftai/directive-core/session";
|
|
11
|
-
export const EXIT_STEER_WRITE_OK = 0 * 1;
|
|
12
|
-
export const EXIT_STEER_WRITE_CONFIG = 2 * 1;
|
|
13
|
-
export const SUBAGENT_STEER_WRITE_HELP = `subagent:steer — write a closed parent-steer inbox (#5278 / #4286)
|
|
14
|
-
|
|
15
|
-
Usage:
|
|
16
|
-
task subagent:steer -- --agent <id> --writer-id <id> --kind <kind> --text <text> [options]
|
|
17
|
-
|
|
18
|
-
Options:
|
|
19
|
-
--agent ID Child agent_id (inbox file stem)
|
|
20
|
-
--writer-id ID Writer identity (must match independent parent/owner record)
|
|
21
|
-
--writer-kind KIND occupancy-owner | dispatching-parent (default: dispatching-parent)
|
|
22
|
-
--kind KIND constraint | correction | halt | note
|
|
23
|
-
--text TEXT Steer body (≤2000 chars)
|
|
24
|
-
--steer-id ID Optional stable steer id (default: uuid)
|
|
25
|
-
--ttl-seconds N Expiry TTL (default: 1800)
|
|
26
|
-
--target-id PATH Worktree root for dest inbox
|
|
27
|
-
--steer-dir PATH Inbox directory override
|
|
28
|
-
--scratch-dir PATH Heartbeat dir (not used for writer authority)
|
|
29
|
-
--parent-id ID Must match child occupancy lease parentId
|
|
30
|
-
--occupancy-owner-id ID Must match live occupancy session under --target-id
|
|
31
|
-
--json Emit written record
|
|
32
|
-
|
|
33
|
-
Exit codes:
|
|
34
|
-
0 Wrote inbox
|
|
35
|
-
2 Config / validation error
|
|
36
|
-
`;
|
|
37
|
-
/**
|
|
38
|
-
* Resolve parent/owner from dispatcher-recorded child occupancy + live occupancy.
|
|
39
|
-
* Heartbeat alone is never authority (caller-selected --scratch-dir cannot mint parent_id).
|
|
40
|
-
*/
|
|
41
|
-
export function resolveIndependentSteerAuthority(input) {
|
|
42
|
-
const writerId = input.writerId.trim();
|
|
43
|
-
const lease = readChildOccupancyLease(input.root, input.agentId);
|
|
44
|
-
const occupancy = liveOccupant(input.root);
|
|
45
|
-
if (input.writerKind === "dispatching-parent") {
|
|
46
|
-
const expected = (lease?.parentId ?? "").trim();
|
|
47
|
-
if (expected.length === 0) {
|
|
48
|
-
return {
|
|
49
|
-
error: "dispatching-parent requires child occupancy lease parentId under --target-id (heartbeat alone is not authority)",
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
if (writerId !== expected) {
|
|
53
|
-
return {
|
|
54
|
-
error: `dispatching-parent writer_id ${JSON.stringify(writerId)} does not match child occupancy parent ${JSON.stringify(expected)}`,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
const claimed = input.claimedParentId?.trim() ?? "";
|
|
58
|
-
if (claimed.length > 0 && claimed !== expected) {
|
|
59
|
-
return {
|
|
60
|
-
error: `--parent-id ${JSON.stringify(claimed)} does not match child occupancy parent ${JSON.stringify(expected)}`,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
return { parentId: expected };
|
|
64
|
-
}
|
|
65
|
-
// occupancy-owner: liveOccupant (TTL/age-cap) is SoT; expired/stale leases refuse.
|
|
66
|
-
const liveOwner = (occupancy?.sessionId ?? "").trim();
|
|
67
|
-
if (liveOwner.length === 0) {
|
|
68
|
-
return {
|
|
69
|
-
error: "occupancy-owner requires a live (non-expired) occupancy session under --target-id",
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
const leaseOwner = (lease?.occupancyOwner ?? "").trim();
|
|
73
|
-
if (leaseOwner.length > 0 && leaseOwner !== liveOwner) {
|
|
74
|
-
return {
|
|
75
|
-
error: `child occupancy owner ${JSON.stringify(leaseOwner)} is superseded by live occupancy ${JSON.stringify(liveOwner)}`,
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
if (writerId !== liveOwner) {
|
|
79
|
-
return {
|
|
80
|
-
error: `occupancy-owner writer_id ${JSON.stringify(writerId)} does not match live occupancy ${JSON.stringify(liveOwner)}`,
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
const claimedOwner = input.claimedOccupancyOwnerId?.trim() ?? "";
|
|
84
|
-
if (claimedOwner.length > 0 && claimedOwner !== liveOwner) {
|
|
85
|
-
return {
|
|
86
|
-
error: `--occupancy-owner-id ${JSON.stringify(claimedOwner)} does not match live occupancy ${JSON.stringify(liveOwner)}`,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
return { occupancyOwnerId: liveOwner };
|
|
90
|
-
}
|
|
91
|
-
export function parseSubagentSteerWriteArgs(argv) {
|
|
92
|
-
const acc = {
|
|
93
|
-
agentId: null,
|
|
94
|
-
writerId: null,
|
|
95
|
-
writerKind: "dispatching-parent",
|
|
96
|
-
kind: null,
|
|
97
|
-
text: null,
|
|
98
|
-
steerId: null,
|
|
99
|
-
ttlSeconds: null,
|
|
100
|
-
targetId: null,
|
|
101
|
-
steerDir: null,
|
|
102
|
-
scratchDir: null,
|
|
103
|
-
parentId: null,
|
|
104
|
-
occupancyOwnerId: null,
|
|
105
|
-
emitJson: false,
|
|
106
|
-
help: false,
|
|
107
|
-
};
|
|
108
|
-
for (let i = 0; i < argv.length; i += 1) {
|
|
109
|
-
const arg = argv[i];
|
|
110
|
-
if (arg === "--help" || arg === "-h") {
|
|
111
|
-
return { ...acc, help: true };
|
|
112
|
-
}
|
|
113
|
-
if (arg === "--json") {
|
|
114
|
-
acc.emitJson = true;
|
|
115
|
-
}
|
|
116
|
-
else if (arg === "--agent" || arg === "--agent-id") {
|
|
117
|
-
const value = argv[i + 1];
|
|
118
|
-
if (value === undefined)
|
|
119
|
-
return { ...acc, error: `argument ${arg}: expected one argument` };
|
|
120
|
-
acc.agentId = value;
|
|
121
|
-
i += 1;
|
|
122
|
-
}
|
|
123
|
-
else if (arg?.startsWith("--agent=") || arg?.startsWith("--agent-id=")) {
|
|
124
|
-
acc.agentId = arg.slice(arg.indexOf("=") + 1);
|
|
125
|
-
}
|
|
126
|
-
else if (arg === "--writer-id") {
|
|
127
|
-
const value = argv[i + 1];
|
|
128
|
-
if (value === undefined)
|
|
129
|
-
return { ...acc, error: "argument --writer-id: expected one argument" };
|
|
130
|
-
acc.writerId = value;
|
|
131
|
-
i += 1;
|
|
132
|
-
}
|
|
133
|
-
else if (arg?.startsWith("--writer-id=")) {
|
|
134
|
-
acc.writerId = arg.slice("--writer-id=".length);
|
|
135
|
-
}
|
|
136
|
-
else if (arg === "--writer-kind") {
|
|
137
|
-
const value = argv[i + 1];
|
|
138
|
-
if (value === undefined)
|
|
139
|
-
return { ...acc, error: "argument --writer-kind: expected one argument" };
|
|
140
|
-
if (!STEER_WRITER_KINDS.includes(value)) {
|
|
141
|
-
return { ...acc, error: `writer-kind must be one of ${STEER_WRITER_KINDS.join(", ")}` };
|
|
142
|
-
}
|
|
143
|
-
acc.writerKind = value;
|
|
144
|
-
i += 1;
|
|
145
|
-
}
|
|
146
|
-
else if (arg?.startsWith("--writer-kind=")) {
|
|
147
|
-
const value = arg.slice("--writer-kind=".length);
|
|
148
|
-
if (!STEER_WRITER_KINDS.includes(value)) {
|
|
149
|
-
return { ...acc, error: `writer-kind must be one of ${STEER_WRITER_KINDS.join(", ")}` };
|
|
150
|
-
}
|
|
151
|
-
acc.writerKind = value;
|
|
152
|
-
}
|
|
153
|
-
else if (arg === "--kind") {
|
|
154
|
-
const value = argv[i + 1];
|
|
155
|
-
if (value === undefined)
|
|
156
|
-
return { ...acc, error: "argument --kind: expected one argument" };
|
|
157
|
-
if (!STEER_KINDS.includes(value)) {
|
|
158
|
-
return { ...acc, error: `kind must be one of ${STEER_KINDS.join(", ")}` };
|
|
159
|
-
}
|
|
160
|
-
acc.kind = value;
|
|
161
|
-
i += 1;
|
|
162
|
-
}
|
|
163
|
-
else if (arg?.startsWith("--kind=")) {
|
|
164
|
-
const value = arg.slice("--kind=".length);
|
|
165
|
-
if (!STEER_KINDS.includes(value)) {
|
|
166
|
-
return { ...acc, error: `kind must be one of ${STEER_KINDS.join(", ")}` };
|
|
167
|
-
}
|
|
168
|
-
acc.kind = value;
|
|
169
|
-
}
|
|
170
|
-
else if (arg === "--text") {
|
|
171
|
-
const value = argv[i + 1];
|
|
172
|
-
if (value === undefined)
|
|
173
|
-
return { ...acc, error: "argument --text: expected one argument" };
|
|
174
|
-
acc.text = value;
|
|
175
|
-
i += 1;
|
|
176
|
-
}
|
|
177
|
-
else if (arg?.startsWith("--text=")) {
|
|
178
|
-
acc.text = arg.slice("--text=".length);
|
|
179
|
-
}
|
|
180
|
-
else if (arg === "--steer-id") {
|
|
181
|
-
const value = argv[i + 1];
|
|
182
|
-
if (value === undefined)
|
|
183
|
-
return { ...acc, error: "argument --steer-id: expected one argument" };
|
|
184
|
-
acc.steerId = value;
|
|
185
|
-
i += 1;
|
|
186
|
-
}
|
|
187
|
-
else if (arg?.startsWith("--steer-id=")) {
|
|
188
|
-
acc.steerId = arg.slice("--steer-id=".length);
|
|
189
|
-
}
|
|
190
|
-
else if (arg === "--ttl-seconds") {
|
|
191
|
-
const value = argv[i + 1];
|
|
192
|
-
if (value === undefined)
|
|
193
|
-
return { ...acc, error: "argument --ttl-seconds: expected one argument" };
|
|
194
|
-
acc.ttlSeconds = Number(value);
|
|
195
|
-
i += 1;
|
|
196
|
-
}
|
|
197
|
-
else if (arg?.startsWith("--ttl-seconds=")) {
|
|
198
|
-
acc.ttlSeconds = Number(arg.slice("--ttl-seconds=".length));
|
|
199
|
-
}
|
|
200
|
-
else if (arg === "--target-id" || arg === "--target") {
|
|
201
|
-
const value = argv[i + 1];
|
|
202
|
-
if (value === undefined)
|
|
203
|
-
return { ...acc, error: `argument ${arg}: expected one argument` };
|
|
204
|
-
acc.targetId = value;
|
|
205
|
-
i += 1;
|
|
206
|
-
}
|
|
207
|
-
else if (arg?.startsWith("--target-id=") || arg?.startsWith("--target=")) {
|
|
208
|
-
acc.targetId = arg.slice(arg.indexOf("=") + 1);
|
|
209
|
-
}
|
|
210
|
-
else if (arg === "--steer-dir") {
|
|
211
|
-
const value = argv[i + 1];
|
|
212
|
-
if (value === undefined)
|
|
213
|
-
return { ...acc, error: "argument --steer-dir: expected one argument" };
|
|
214
|
-
acc.steerDir = value;
|
|
215
|
-
i += 1;
|
|
216
|
-
}
|
|
217
|
-
else if (arg?.startsWith("--steer-dir=")) {
|
|
218
|
-
acc.steerDir = arg.slice("--steer-dir=".length);
|
|
219
|
-
}
|
|
220
|
-
else if (arg === "--scratch-dir") {
|
|
221
|
-
const value = argv[i + 1];
|
|
222
|
-
if (value === undefined)
|
|
223
|
-
return { ...acc, error: "argument --scratch-dir: expected one argument" };
|
|
224
|
-
acc.scratchDir = value;
|
|
225
|
-
i += 1;
|
|
226
|
-
}
|
|
227
|
-
else if (arg?.startsWith("--scratch-dir=")) {
|
|
228
|
-
acc.scratchDir = arg.slice("--scratch-dir=".length);
|
|
229
|
-
}
|
|
230
|
-
else if (arg === "--parent-id") {
|
|
231
|
-
const value = argv[i + 1];
|
|
232
|
-
if (value === undefined)
|
|
233
|
-
return { ...acc, error: "argument --parent-id: expected one argument" };
|
|
234
|
-
acc.parentId = value;
|
|
235
|
-
i += 1;
|
|
236
|
-
}
|
|
237
|
-
else if (arg?.startsWith("--parent-id=")) {
|
|
238
|
-
acc.parentId = arg.slice("--parent-id=".length);
|
|
239
|
-
}
|
|
240
|
-
else if (arg === "--occupancy-owner-id") {
|
|
241
|
-
const value = argv[i + 1];
|
|
242
|
-
if (value === undefined) {
|
|
243
|
-
return { ...acc, error: "argument --occupancy-owner-id: expected one argument" };
|
|
244
|
-
}
|
|
245
|
-
acc.occupancyOwnerId = value;
|
|
246
|
-
i += 1;
|
|
247
|
-
}
|
|
248
|
-
else if (arg?.startsWith("--occupancy-owner-id=")) {
|
|
249
|
-
acc.occupancyOwnerId = arg.slice("--occupancy-owner-id=".length);
|
|
250
|
-
}
|
|
251
|
-
else if (arg?.startsWith("-")) {
|
|
252
|
-
return { ...acc, error: `unrecognized argument: ${arg}` };
|
|
253
|
-
}
|
|
254
|
-
else {
|
|
255
|
-
return { ...acc, error: `unrecognized argument: ${arg}` };
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
return acc;
|
|
259
|
-
}
|
|
260
|
-
export function run(argv, cwd = process.cwd()) {
|
|
261
|
-
const args = parseSubagentSteerWriteArgs(argv);
|
|
262
|
-
if (args.help) {
|
|
263
|
-
process.stdout.write(SUBAGENT_STEER_WRITE_HELP);
|
|
264
|
-
return EXIT_STEER_WRITE_OK;
|
|
265
|
-
}
|
|
266
|
-
if (args.error !== undefined) {
|
|
267
|
-
process.stderr.write(`subagent:steer: ${args.error}\n`);
|
|
268
|
-
return EXIT_STEER_WRITE_CONFIG;
|
|
269
|
-
}
|
|
270
|
-
if (args.agentId === null || !isSafeAgentId(args.agentId)) {
|
|
271
|
-
process.stderr.write("subagent:steer: --agent is required and must be a filesystem-safe slug\n");
|
|
272
|
-
return EXIT_STEER_WRITE_CONFIG;
|
|
273
|
-
}
|
|
274
|
-
if (args.writerId === null || args.writerId.trim().length === 0) {
|
|
275
|
-
process.stderr.write("subagent:steer: --writer-id is required\n");
|
|
276
|
-
return EXIT_STEER_WRITE_CONFIG;
|
|
277
|
-
}
|
|
278
|
-
if (args.kind === null) {
|
|
279
|
-
process.stderr.write(`subagent:steer: --kind is required (${STEER_KINDS.join("|")})\n`);
|
|
280
|
-
return EXIT_STEER_WRITE_CONFIG;
|
|
281
|
-
}
|
|
282
|
-
if (args.text === null || args.text.trim().length === 0) {
|
|
283
|
-
process.stderr.write("subagent:steer: --text is required\n");
|
|
284
|
-
return EXIT_STEER_WRITE_CONFIG;
|
|
285
|
-
}
|
|
286
|
-
if (args.ttlSeconds !== null && (!Number.isFinite(args.ttlSeconds) || args.ttlSeconds <= 0)) {
|
|
287
|
-
process.stderr.write("subagent:steer: --ttl-seconds must be positive\n");
|
|
288
|
-
return EXIT_STEER_WRITE_CONFIG;
|
|
289
|
-
}
|
|
290
|
-
const root = args.targetId !== null && args.targetId.trim().length > 0 ? resolve(cwd, args.targetId) : cwd;
|
|
291
|
-
const steerDir = resolve(root, args.steerDir ?? defaultSteerDir(root));
|
|
292
|
-
const writerId = args.writerId.trim();
|
|
293
|
-
const authority = resolveIndependentSteerAuthority({
|
|
294
|
-
root,
|
|
295
|
-
agentId: args.agentId,
|
|
296
|
-
writerKind: args.writerKind,
|
|
297
|
-
writerId,
|
|
298
|
-
claimedParentId: args.parentId,
|
|
299
|
-
claimedOccupancyOwnerId: args.occupancyOwnerId,
|
|
300
|
-
});
|
|
301
|
-
if (authority.error !== undefined) {
|
|
302
|
-
process.stderr.write(`subagent:steer: ${authority.error}\n`);
|
|
303
|
-
return EXIT_STEER_WRITE_CONFIG;
|
|
304
|
-
}
|
|
305
|
-
try {
|
|
306
|
-
const record = writeSteer(steerDir, {
|
|
307
|
-
agentId: args.agentId,
|
|
308
|
-
writerKind: args.writerKind,
|
|
309
|
-
writerId,
|
|
310
|
-
kind: args.kind,
|
|
311
|
-
text: args.text,
|
|
312
|
-
steerId: args.steerId ?? undefined,
|
|
313
|
-
ttlSeconds: args.ttlSeconds ?? undefined,
|
|
314
|
-
parentId: authority.parentId,
|
|
315
|
-
occupancyOwnerId: authority.occupancyOwnerId,
|
|
316
|
-
});
|
|
317
|
-
if (args.emitJson) {
|
|
318
|
-
process.stdout.write(`${JSON.stringify(record, null, 2)}\n`);
|
|
319
|
-
}
|
|
320
|
-
else {
|
|
321
|
-
process.stdout.write(`subagent:steer: wrote ${record.agent_id} steer_id=${record.steer_id} kind=${record.kind}\n`);
|
|
322
|
-
}
|
|
323
|
-
return EXIT_STEER_WRITE_OK;
|
|
324
|
-
}
|
|
325
|
-
catch (err) {
|
|
326
|
-
process.stderr.write(`subagent:steer: ${String(err.message ?? err)}\n`);
|
|
327
|
-
return EXIT_STEER_WRITE_CONFIG;
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
if (process.argv[1] !== undefined && fileURLToPath(import.meta.url) === process.argv[1]) {
|
|
331
|
-
process.exit(run(process.argv.slice(2)));
|
|
332
|
-
}
|
|
333
|
-
//# sourceMappingURL=subagent-steer-write.js.map
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { type CommandRunner } from "@deftai/directive-core/verify-env";
|
|
3
|
-
export interface ToolchainCheckRunOptions {
|
|
4
|
-
readonly runner?: CommandRunner;
|
|
5
|
-
readonly env?: NodeJS.ProcessEnv;
|
|
6
|
-
}
|
|
7
|
-
export declare function run(argv?: readonly string[], options?: ToolchainCheckRunOptions): number;
|
|
8
|
-
//# sourceMappingURL=toolchain-check.d.ts.map
|
package/dist/toolchain-check.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { fileURLToPath } from "node:url";
|
|
3
|
-
import { runToolchainCheck } from "@deftai/directive-core/verify-env";
|
|
4
|
-
function parseArgs(argv) {
|
|
5
|
-
let consumer = false;
|
|
6
|
-
let projectRoot = process.cwd();
|
|
7
|
-
for (let index = 0; index < argv.length; index += 1) {
|
|
8
|
-
const arg = argv[index] ?? "";
|
|
9
|
-
if (arg === "--consumer") {
|
|
10
|
-
consumer = true;
|
|
11
|
-
continue;
|
|
12
|
-
}
|
|
13
|
-
if (arg === "--project-root") {
|
|
14
|
-
const value = argv[index + 1];
|
|
15
|
-
if (value === undefined || value.trim() === "" || value.startsWith("-")) {
|
|
16
|
-
return { consumer, projectRoot, error: "--project-root requires a path" };
|
|
17
|
-
}
|
|
18
|
-
projectRoot = value;
|
|
19
|
-
index += 1;
|
|
20
|
-
continue;
|
|
21
|
-
}
|
|
22
|
-
if (arg.startsWith("--project-root=")) {
|
|
23
|
-
const value = arg.slice("--project-root=".length);
|
|
24
|
-
if (value.trim() === "") {
|
|
25
|
-
return { consumer, projectRoot, error: "--project-root requires a path" };
|
|
26
|
-
}
|
|
27
|
-
projectRoot = value;
|
|
28
|
-
continue;
|
|
29
|
-
}
|
|
30
|
-
return { consumer, projectRoot, error: `unrecognized argument: ${arg}` };
|
|
31
|
-
}
|
|
32
|
-
return { consumer, projectRoot };
|
|
33
|
-
}
|
|
34
|
-
export function run(argv = process.argv.slice(2), options = {}) {
|
|
35
|
-
const parsed = parseArgs(argv);
|
|
36
|
-
if (parsed.error !== undefined) {
|
|
37
|
-
process.stderr.write(`toolchain-check: ${parsed.error}\n`);
|
|
38
|
-
process.stderr.write("Usage: deft toolchain-check [--consumer] [--project-root <path>]\n");
|
|
39
|
-
return 2;
|
|
40
|
-
}
|
|
41
|
-
const result = runToolchainCheck(options.runner, {
|
|
42
|
-
consumer: parsed.consumer,
|
|
43
|
-
projectRoot: parsed.projectRoot,
|
|
44
|
-
env: options.env ?? process.env,
|
|
45
|
-
});
|
|
46
|
-
for (const line of result.lines) {
|
|
47
|
-
process.stdout.write(`${line}\n`);
|
|
48
|
-
}
|
|
49
|
-
return result.exitCode;
|
|
50
|
-
}
|
|
51
|
-
if (process.argv[1] !== undefined && fileURLToPath(import.meta.url) === process.argv[1]) {
|
|
52
|
-
process.exit(run());
|
|
53
|
-
}
|
|
54
|
-
//# sourceMappingURL=toolchain-check.js.map
|
package/dist/triage-actions.d.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
interface ParsedArgs {
|
|
3
|
-
cmd?: string;
|
|
4
|
-
issue?: number;
|
|
5
|
-
repo?: string;
|
|
6
|
-
reason?: string;
|
|
7
|
-
resumeOn?: string;
|
|
8
|
-
actor?: string;
|
|
9
|
-
comment?: string;
|
|
10
|
-
ofN?: number;
|
|
11
|
-
projectRoot: string;
|
|
12
|
-
/** After accept+ingest, promote to pending (#1136). */
|
|
13
|
-
autoPromote?: boolean;
|
|
14
|
-
/** WIP-cap override for auto-promote leg (#1136). */
|
|
15
|
-
force?: boolean;
|
|
16
|
-
error?: string;
|
|
17
|
-
}
|
|
18
|
-
/** Parse triage-actions CLI argv mirroring ``triage_actions.py`` argparse. */
|
|
19
|
-
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
20
|
-
/** Run triage-actions CLI and return exit code. */
|
|
21
|
-
export declare function run(argv: string[]): number;
|
|
22
|
-
export {};
|
|
23
|
-
//# sourceMappingURL=triage-actions.d.ts.map
|
package/dist/triage-actions.js
DELETED
|
@@ -1,233 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { resolve } from "node:path";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { accept, createDefaultDeps, deferAction, formatAcceptOutput, formatDecision, history, markDuplicate, needsAc, reject, reset, status, TriageError, UpstreamCloseError, } from "@deftai/directive-core/dist/triage/actions/index.js";
|
|
5
|
-
const VALID_CMDS = new Set([
|
|
6
|
-
"accept",
|
|
7
|
-
"reject",
|
|
8
|
-
"defer",
|
|
9
|
-
"needs-ac",
|
|
10
|
-
"mark-duplicate",
|
|
11
|
-
"status",
|
|
12
|
-
"reset",
|
|
13
|
-
"history",
|
|
14
|
-
]);
|
|
15
|
-
/** Parse triage-actions CLI argv mirroring ``triage_actions.py`` argparse. */
|
|
16
|
-
export function parseArgs(argv) {
|
|
17
|
-
const parsed = { projectRoot: process.cwd() };
|
|
18
|
-
if (argv.length === 0) {
|
|
19
|
-
return { ...parsed, error: "missing subcommand" };
|
|
20
|
-
}
|
|
21
|
-
parsed.cmd = argv[0];
|
|
22
|
-
for (let i = 1; i < argv.length; i += 1) {
|
|
23
|
-
const arg = argv[i];
|
|
24
|
-
if (arg === "--")
|
|
25
|
-
continue;
|
|
26
|
-
if (arg === "--issue") {
|
|
27
|
-
const value = argv[i + 1];
|
|
28
|
-
if (value === undefined)
|
|
29
|
-
return { ...parsed, error: "argument --issue: expected one argument" };
|
|
30
|
-
parsed.issue = Number.parseInt(value, 10);
|
|
31
|
-
i += 1;
|
|
32
|
-
}
|
|
33
|
-
else if (arg?.startsWith("--issue=")) {
|
|
34
|
-
parsed.issue = Number.parseInt(arg.slice("--issue=".length), 10);
|
|
35
|
-
}
|
|
36
|
-
else if (arg === "--repo") {
|
|
37
|
-
const value = argv[i + 1];
|
|
38
|
-
if (value === undefined)
|
|
39
|
-
return { ...parsed, error: "argument --repo: expected one argument" };
|
|
40
|
-
parsed.repo = value;
|
|
41
|
-
i += 1;
|
|
42
|
-
}
|
|
43
|
-
else if (arg?.startsWith("--repo=")) {
|
|
44
|
-
parsed.repo = arg.slice("--repo=".length);
|
|
45
|
-
}
|
|
46
|
-
else if (arg === "--reason") {
|
|
47
|
-
const value = argv[i + 1];
|
|
48
|
-
if (value === undefined)
|
|
49
|
-
return { ...parsed, error: "argument --reason: expected one argument" };
|
|
50
|
-
parsed.reason = value;
|
|
51
|
-
i += 1;
|
|
52
|
-
}
|
|
53
|
-
else if (arg?.startsWith("--reason=")) {
|
|
54
|
-
parsed.reason = arg.slice("--reason=".length);
|
|
55
|
-
}
|
|
56
|
-
else if (arg === "--resume-on") {
|
|
57
|
-
const value = argv[i + 1];
|
|
58
|
-
if (value === undefined)
|
|
59
|
-
return { ...parsed, error: "argument --resume-on: expected one argument" };
|
|
60
|
-
parsed.resumeOn = value;
|
|
61
|
-
i += 1;
|
|
62
|
-
}
|
|
63
|
-
else if (arg?.startsWith("--resume-on=")) {
|
|
64
|
-
parsed.resumeOn = arg.slice("--resume-on=".length);
|
|
65
|
-
}
|
|
66
|
-
else if (arg === "--actor") {
|
|
67
|
-
const value = argv[i + 1];
|
|
68
|
-
if (value === undefined)
|
|
69
|
-
return { ...parsed, error: "argument --actor: expected one argument" };
|
|
70
|
-
parsed.actor = value;
|
|
71
|
-
i += 1;
|
|
72
|
-
}
|
|
73
|
-
else if (arg?.startsWith("--actor=")) {
|
|
74
|
-
parsed.actor = arg.slice("--actor=".length);
|
|
75
|
-
}
|
|
76
|
-
else if (arg === "--comment") {
|
|
77
|
-
const value = argv[i + 1];
|
|
78
|
-
if (value === undefined)
|
|
79
|
-
return { ...parsed, error: "argument --comment: expected one argument" };
|
|
80
|
-
parsed.comment = value;
|
|
81
|
-
i += 1;
|
|
82
|
-
}
|
|
83
|
-
else if (arg?.startsWith("--comment=")) {
|
|
84
|
-
parsed.comment = arg.slice("--comment=".length);
|
|
85
|
-
}
|
|
86
|
-
else if (arg === "--of") {
|
|
87
|
-
const value = argv[i + 1];
|
|
88
|
-
if (value === undefined)
|
|
89
|
-
return { ...parsed, error: "argument --of: expected one argument" };
|
|
90
|
-
parsed.ofN = Number.parseInt(value, 10);
|
|
91
|
-
i += 1;
|
|
92
|
-
}
|
|
93
|
-
else if (arg?.startsWith("--of=")) {
|
|
94
|
-
parsed.ofN = Number.parseInt(arg.slice("--of=".length), 10);
|
|
95
|
-
}
|
|
96
|
-
else if (arg === "--project-root") {
|
|
97
|
-
const value = argv[i + 1];
|
|
98
|
-
if (value === undefined)
|
|
99
|
-
return { ...parsed, error: "argument --project-root: expected one argument" };
|
|
100
|
-
parsed.projectRoot = value;
|
|
101
|
-
i += 1;
|
|
102
|
-
}
|
|
103
|
-
else if (arg?.startsWith("--project-root=")) {
|
|
104
|
-
parsed.projectRoot = arg.slice("--project-root=".length);
|
|
105
|
-
}
|
|
106
|
-
else if (arg === "--auto-promote") {
|
|
107
|
-
parsed.autoPromote = true;
|
|
108
|
-
}
|
|
109
|
-
else if (arg === "--force") {
|
|
110
|
-
parsed.force = true;
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
return { ...parsed, error: `unrecognized argument: ${arg}` };
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
return parsed;
|
|
117
|
-
}
|
|
118
|
-
/** Run triage-actions CLI and return exit code. */
|
|
119
|
-
export function run(argv) {
|
|
120
|
-
const args = parseArgs(argv);
|
|
121
|
-
if (args.error !== undefined) {
|
|
122
|
-
process.stderr.write(`triage_actions: ${args.error}\n`);
|
|
123
|
-
return 2;
|
|
124
|
-
}
|
|
125
|
-
if (!VALID_CMDS.has(args.cmd ?? "")) {
|
|
126
|
-
process.stderr.write(`triage_actions: unknown subcommand ${args.cmd ?? ""}\n`);
|
|
127
|
-
return 2;
|
|
128
|
-
}
|
|
129
|
-
if (args.issue === undefined || Number.isNaN(args.issue)) {
|
|
130
|
-
process.stderr.write("triage_actions: argument --issue: expected one argument\n");
|
|
131
|
-
return 2;
|
|
132
|
-
}
|
|
133
|
-
if (args.repo === undefined) {
|
|
134
|
-
process.stderr.write("triage_actions: argument --repo: expected one argument\n");
|
|
135
|
-
return 2;
|
|
136
|
-
}
|
|
137
|
-
if (args.cmd === "reject" && args.reason === undefined) {
|
|
138
|
-
process.stderr.write("triage_actions: argument --reason: expected one argument\n");
|
|
139
|
-
return 2;
|
|
140
|
-
}
|
|
141
|
-
if (args.cmd === "defer" && args.reason === undefined) {
|
|
142
|
-
process.stderr.write("triage_actions: argument --reason: expected one argument\n");
|
|
143
|
-
return 2;
|
|
144
|
-
}
|
|
145
|
-
if (args.cmd === "mark-duplicate" && (args.ofN === undefined || Number.isNaN(args.ofN))) {
|
|
146
|
-
process.stderr.write("triage_actions: argument --of: expected one argument\n");
|
|
147
|
-
return 2;
|
|
148
|
-
}
|
|
149
|
-
const projectRoot = resolve(args.projectRoot);
|
|
150
|
-
const deps = createDefaultDeps(projectRoot);
|
|
151
|
-
const n = args.issue;
|
|
152
|
-
const repo = args.repo;
|
|
153
|
-
try {
|
|
154
|
-
if (args.cmd === "accept") {
|
|
155
|
-
const outcome = accept(n, repo, deps, {
|
|
156
|
-
actor: args.actor,
|
|
157
|
-
projectRoot,
|
|
158
|
-
autoPromote: args.autoPromote === true,
|
|
159
|
-
force: args.force === true,
|
|
160
|
-
});
|
|
161
|
-
process.stdout.write(`${formatAcceptOutput(n, repo, outcome.decisionId, {
|
|
162
|
-
autoPromote: args.autoPromote === true,
|
|
163
|
-
disposition: outcome.disposition,
|
|
164
|
-
relativePath: outcome.relativePath,
|
|
165
|
-
ingestMessage: outcome.ingestMessage,
|
|
166
|
-
})}\n`);
|
|
167
|
-
if (outcome.disposition === "refused") {
|
|
168
|
-
return 1;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
else if (args.cmd === "reject") {
|
|
172
|
-
const decisionId = reject(n, repo, args.reason ?? "", deps, {
|
|
173
|
-
actor: args.actor,
|
|
174
|
-
projectRoot,
|
|
175
|
-
});
|
|
176
|
-
process.stdout.write(`reject #${n} (${repo}) -> ${decisionId}\n`);
|
|
177
|
-
}
|
|
178
|
-
else if (args.cmd === "defer") {
|
|
179
|
-
const decisionId = deferAction(n, repo, args.reason, deps, {
|
|
180
|
-
actor: args.actor,
|
|
181
|
-
resumeOn: args.resumeOn,
|
|
182
|
-
projectRoot,
|
|
183
|
-
});
|
|
184
|
-
process.stdout.write(`defer #${n} (${repo}) -> ${decisionId}\n`);
|
|
185
|
-
}
|
|
186
|
-
else if (args.cmd === "needs-ac") {
|
|
187
|
-
const decisionId = needsAc(n, repo, deps, {
|
|
188
|
-
actor: args.actor,
|
|
189
|
-
comment: args.comment,
|
|
190
|
-
projectRoot,
|
|
191
|
-
});
|
|
192
|
-
process.stdout.write(`needs-ac #${n} (${repo}) -> ${decisionId}\n`);
|
|
193
|
-
}
|
|
194
|
-
else if (args.cmd === "mark-duplicate") {
|
|
195
|
-
const ofN = args.ofN;
|
|
196
|
-
const decisionId = markDuplicate(n, repo, ofN, deps, {
|
|
197
|
-
actor: args.actor,
|
|
198
|
-
projectRoot,
|
|
199
|
-
});
|
|
200
|
-
process.stdout.write(`mark-duplicate #${n} -> #${ofN} (${repo}) -> ${decisionId}\n`);
|
|
201
|
-
}
|
|
202
|
-
else if (args.cmd === "status") {
|
|
203
|
-
process.stdout.write(`${formatDecision(status(n, repo, deps, { projectRoot }))}\n`);
|
|
204
|
-
}
|
|
205
|
-
else if (args.cmd === "reset") {
|
|
206
|
-
const decisionId = reset(n, repo, deps, { actor: args.actor, projectRoot });
|
|
207
|
-
process.stdout.write(`reset #${n} (${repo}) -> ${decisionId}\n`);
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
const entries = history(n, repo, deps, { projectRoot });
|
|
211
|
-
if (entries.length === 0) {
|
|
212
|
-
process.stdout.write(`${formatDecision(null)}\n`);
|
|
213
|
-
}
|
|
214
|
-
else {
|
|
215
|
-
for (const entry of entries) {
|
|
216
|
-
process.stdout.write(`${formatDecision(entry)}\n`);
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
catch (err) {
|
|
222
|
-
if (err instanceof TriageError || err instanceof UpstreamCloseError) {
|
|
223
|
-
process.stderr.write(`triage_actions: ${err.message}\n`);
|
|
224
|
-
return 1;
|
|
225
|
-
}
|
|
226
|
-
throw err;
|
|
227
|
-
}
|
|
228
|
-
return 0;
|
|
229
|
-
}
|
|
230
|
-
if (process.argv[1] !== undefined && fileURLToPath(import.meta.url) === process.argv[1]) {
|
|
231
|
-
process.exit(run(process.argv.slice(2)));
|
|
232
|
-
}
|
|
233
|
-
//# sourceMappingURL=triage-actions.js.map
|
|
@@ -1,33 +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 script: "triage_welcome.py" | "triage_reconcile.py" | "triage_scope_drift.py" | "triage_refresh.py";
|
|
9
|
-
readonly tsCli: "triage-welcome.js" | "triage-reconcile.js" | "triage-scope-drift.js" | "triage-refresh.js";
|
|
10
|
-
readonly argv: readonly string[];
|
|
11
|
-
readonly setup?: (root: string) => void;
|
|
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
|
-
/** Strip volatile absolute paths before compare. */
|
|
26
|
-
export declare function normalizeOutput(text: string): string;
|
|
27
|
-
declare function resolveDeftRoot(): string;
|
|
28
|
-
export { resolveDeftRoot };
|
|
29
|
-
export declare function diffCase(python: CommandCapture, ts: CommandCapture, caseName: string): ParityDiff;
|
|
30
|
-
export declare const PARITY_CASES: readonly ParityCase[];
|
|
31
|
-
export declare function buildFixtureRepo(setup?: (root: string) => void): string;
|
|
32
|
-
export declare function renderReport(result: ParityResult): string;
|
|
33
|
-
//# sourceMappingURL=triage-aux-a-fixtures.d.ts.map
|