mandrel 2.59.0 → 2.61.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/.agents/README.md +21 -19
- package/.agents/agents/acceptance-critic.md +24 -43
- package/.agents/agents/story-worker.md +20 -21
- package/.agents/docs/agentrc-reference.json +5 -84
- package/.agents/docs/configuration.md +48 -132
- package/.agents/docs/workflows.md +2 -2
- package/.agents/instructions.md +5 -8
- package/.agents/rules/ci-remediation.md +41 -8
- package/.agents/rules/gherkin-standards.md +4 -0
- package/.agents/schemas/acceptance-eval-verdict.schema.json +1 -1
- package/.agents/schemas/agentrc.schema.json +16 -496
- package/.agents/schemas/story-deliver-terminal.schema.json +13 -3
- package/.agents/schemas/validation-evidence.schema.json +2 -1
- package/.agents/scripts/README.md +23 -13
- package/.agents/scripts/acceptance-eval.js +35 -169
- package/.agents/scripts/agents-bootstrap-github.js +27 -129
- package/.agents/scripts/apply-quality-bootstrap.js +4 -40
- package/.agents/scripts/audit-baselines.js +6 -27
- package/.agents/scripts/audit-labels-bootstrap.js +5 -29
- package/.agents/scripts/audit-to-stories.js +91 -361
- package/.agents/scripts/boot-sweep.js +19 -72
- package/.agents/scripts/bootstrap.js +74 -395
- package/.agents/scripts/ceremony-derive.js +10 -41
- package/.agents/scripts/check-arch-cycles.js +14 -64
- package/.agents/scripts/check-baselines.js +8 -48
- package/.agents/scripts/check-context-budget.js +105 -311
- package/.agents/scripts/check-cyclomatic.js +12 -44
- package/.agents/scripts/check-dead-exports.js +13 -64
- package/.agents/scripts/check-doc-links.js +38 -186
- package/.agents/scripts/check-gherkin-corpus.js +24 -127
- package/.agents/scripts/check-test-temp-hygiene.js +28 -169
- package/.agents/scripts/coverage-capture.js +34 -98
- package/.agents/scripts/deliver-light.js +25 -171
- package/.agents/scripts/deliver-recover.js +6 -42
- package/.agents/scripts/deliver-run.js +534 -0
- package/.agents/scripts/diagnose-friction.js +24 -116
- package/.agents/scripts/drain-pending-cleanup.js +1 -1
- package/.agents/scripts/evidence-gate.js +23 -85
- package/.agents/scripts/file-ci-gap.js +57 -49
- package/.agents/scripts/generate-config-docs.js +30 -170
- package/.agents/scripts/generate-lens-checklists.js +8 -52
- package/.agents/scripts/generate-skills-index.js +14 -112
- package/.agents/scripts/generate-workflows-doc.js +10 -70
- package/.agents/scripts/git-cleanup.js +2 -34
- package/.agents/scripts/lib/Graph.js +24 -81
- package/.agents/scripts/lib/ITicketingProvider.js +47 -143
- package/.agents/scripts/lib/Logger.js +14 -76
- package/.agents/scripts/lib/audit-baselines/engine.js +11 -31
- package/.agents/scripts/lib/audit-baselines/gate-surface.js +3 -17
- package/.agents/scripts/lib/audit-baselines/headroom.js +4 -20
- package/.agents/scripts/lib/audit-baselines/hotspots.js +3 -15
- package/.agents/scripts/lib/audit-baselines/kinds.js +23 -89
- package/.agents/scripts/lib/audit-baselines/outliers.js +6 -23
- package/.agents/scripts/lib/audit-baselines/read.js +3 -16
- package/.agents/scripts/lib/audit-baselines/staleness.js +7 -26
- package/.agents/scripts/lib/audit-baselines/surface-entry.js +7 -28
- package/.agents/scripts/lib/audit-baselines/trend.js +7 -20
- package/.agents/scripts/lib/audit-baselines/weights.js +9 -37
- package/.agents/scripts/lib/audit-suite/audit-rules-reader.js +3 -18
- package/.agents/scripts/lib/audit-suite/checklist-threading.js +26 -124
- package/.agents/scripts/lib/audit-suite/dispatch-checklist.js +14 -45
- package/.agents/scripts/lib/audit-suite/findings.js +12 -52
- package/.agents/scripts/lib/audit-suite/frontmatter.js +5 -29
- package/.agents/scripts/lib/audit-suite/index.js +1 -15
- package/.agents/scripts/lib/audit-suite/lens-checklist.js +10 -45
- package/.agents/scripts/lib/audit-suite/lens-diff-floor.js +11 -76
- package/.agents/scripts/lib/audit-suite/runner.js +13 -43
- package/.agents/scripts/lib/audit-suite/selector.js +49 -349
- package/.agents/scripts/lib/audit-suite/substitutions.js +12 -40
- package/.agents/scripts/lib/audit-suite/workflow-loader.js +3 -15
- package/.agents/scripts/lib/audit-to-stories/audit-label-taxonomy.js +11 -73
- package/.agents/scripts/lib/audit-to-stories/audit-lenses.js +8 -37
- package/.agents/scripts/lib/audit-to-stories/build-story-body.js +25 -143
- package/.agents/scripts/lib/audit-to-stories/dedupe-against-github.js +14 -80
- package/.agents/scripts/lib/audit-to-stories/epic-grouping-directive.js +4 -18
- package/.agents/scripts/lib/audit-to-stories/finding-adapter.js +7 -40
- package/.agents/scripts/lib/audit-to-stories/group-findings.js +9 -39
- package/.agents/scripts/lib/audit-to-stories/issue-corpus.js +10 -66
- package/.agents/scripts/lib/audit-to-stories/issue-index.js +6 -30
- package/.agents/scripts/lib/audit-to-stories/issues-file.js +6 -36
- package/.agents/scripts/lib/audit-to-stories/ledger-commit.js +17 -69
- package/.agents/scripts/lib/audit-to-stories/ledger-pr.js +17 -85
- package/.agents/scripts/lib/audit-to-stories/ledger-record.js +10 -48
- package/.agents/scripts/lib/audit-to-stories/parse-audit-md.js +38 -146
- package/.agents/scripts/lib/audit-to-stories/seed-from-findings.js +7 -42
- package/.agents/scripts/lib/audit-to-stories/wire-dependencies.js +10 -57
- package/.agents/scripts/lib/baseline-loader.js +12 -51
- package/.agents/scripts/lib/baseline-schema-registry.js +5 -22
- package/.agents/scripts/lib/baselines/component-matcher.js +3 -12
- package/.agents/scripts/lib/baselines/components.js +10 -61
- package/.agents/scripts/lib/baselines/coverage-updater-cli.js +7 -36
- package/.agents/scripts/lib/baselines/crap-preview-incremental.js +7 -19
- package/.agents/scripts/lib/baselines/crap-preview-scan.js +19 -45
- package/.agents/scripts/lib/baselines/crap-updater-cli.js +16 -65
- package/.agents/scripts/lib/baselines/diff-scope-cli.js +5 -33
- package/.agents/scripts/lib/baselines/duplication-scanner.js +11 -60
- package/.agents/scripts/lib/baselines/env-overrides.js +12 -67
- package/.agents/scripts/lib/baselines/envelope.js +13 -129
- package/.agents/scripts/lib/baselines/exit-codes.js +6 -49
- package/.agents/scripts/lib/baselines/git-base.js +23 -142
- package/.agents/scripts/lib/baselines/kernel.js +11 -111
- package/.agents/scripts/lib/baselines/kinds/_crap-new-method-gate.js +9 -47
- package/.agents/scripts/lib/baselines/kinds/_crap-read.js +8 -51
- package/.agents/scripts/lib/baselines/kinds/_shared-metric.js +7 -62
- package/.agents/scripts/lib/baselines/kinds/bundle-size.js +8 -29
- package/.agents/scripts/lib/baselines/kinds/coverage.js +3 -15
- package/.agents/scripts/lib/baselines/kinds/crap.js +94 -415
- package/.agents/scripts/lib/baselines/kinds/duplication.js +4 -30
- package/.agents/scripts/lib/baselines/kinds/kind-factory.js +7 -53
- package/.agents/scripts/lib/baselines/kinds/maintainability.js +15 -80
- package/.agents/scripts/lib/baselines/kinds/mutation.js +12 -72
- package/.agents/scripts/lib/baselines/maintainability-baseline-io.js +4 -11
- package/.agents/scripts/lib/baselines/merge-envelopes.js +30 -146
- package/.agents/scripts/lib/baselines/path-canon.js +19 -128
- package/.agents/scripts/lib/baselines/preview-gates.js +8 -37
- package/.agents/scripts/lib/baselines/reader.js +14 -107
- package/.agents/scripts/lib/baselines/refresh-service.js +35 -252
- package/.agents/scripts/lib/baselines/scope.js +11 -135
- package/.agents/scripts/lib/baselines/writer.js +16 -149
- package/.agents/scripts/lib/bdd-runner-detect.js +18 -113
- package/.agents/scripts/lib/bdd-scenario-budget.js +9 -36
- package/.agents/scripts/lib/bdd-scenario-scanner.js +11 -73
- package/.agents/scripts/lib/bdd-step-index.js +26 -100
- package/.agents/scripts/lib/bootstrap/baseline-merge-driver.js +23 -103
- package/.agents/scripts/lib/bootstrap/branch-protection.js +2 -5
- package/.agents/scripts/lib/bootstrap/commit-push.js +12 -50
- package/.agents/scripts/lib/bootstrap/gh-preflight.js +14 -101
- package/.agents/scripts/lib/bootstrap/hitl-confirm.js +5 -30
- package/.agents/scripts/lib/bootstrap/install-ledger.js +17 -73
- package/.agents/scripts/lib/bootstrap/issue-forms-template.js +17 -121
- package/.agents/scripts/lib/bootstrap/manifest.js +15 -86
- package/.agents/scripts/lib/bootstrap/merge-methods.js +4 -33
- package/.agents/scripts/lib/bootstrap/preflight.js +12 -61
- package/.agents/scripts/lib/bootstrap/project-bootstrap.js +34 -235
- package/.agents/scripts/lib/bootstrap/prompt.js +21 -129
- package/.agents/scripts/lib/bootstrap/quality-bootstrap.js +27 -141
- package/.agents/scripts/lib/bootstrap/summary.js +1 -8
- package/.agents/scripts/lib/bootstrap/workflow-audit.js +11 -84
- package/.agents/scripts/lib/branch-name-guard.js +4 -23
- package/.agents/scripts/lib/changed-files.js +39 -121
- package/.agents/scripts/lib/checks/core-bare-clean.js +4 -24
- package/.agents/scripts/lib/checks/index.js +18 -101
- package/.agents/scripts/lib/checks/loop-health.js +11 -53
- package/.agents/scripts/lib/checks/state.js +16 -91
- package/.agents/scripts/lib/checks/story-init-not-backgrounded.js +10 -61
- package/.agents/scripts/lib/checks/subagent-agent-tool-required.js +14 -83
- package/.agents/scripts/lib/child-exec.js +39 -108
- package/.agents/scripts/lib/cli/standard-args.js +9 -116
- package/.agents/scripts/lib/cli-args.js +31 -146
- package/.agents/scripts/lib/cli-usage.js +5 -27
- package/.agents/scripts/lib/cli-utils.js +2 -12
- package/.agents/scripts/lib/close-validation/commands.js +13 -76
- package/.agents/scripts/lib/close-validation/gates.js +92 -331
- package/.agents/scripts/lib/close-validation/process.js +121 -151
- package/.agents/scripts/lib/close-validation/projections/advisories.js +5 -31
- package/.agents/scripts/lib/close-validation/projections/crap.js +19 -67
- package/.agents/scripts/lib/close-validation/projections/head-sha.js +1 -17
- package/.agents/scripts/lib/close-validation/projections/inputs.js +4 -34
- package/.agents/scripts/lib/close-validation/projections/maintainability.js +11 -58
- package/.agents/scripts/lib/close-validation/runner.js +53 -110
- package/.agents/scripts/lib/command-header.js +6 -28
- package/.agents/scripts/lib/config/acceptance-eval.js +4 -30
- package/.agents/scripts/lib/config/baselines.js +3 -14
- package/.agents/scripts/lib/config/ci.js +8 -38
- package/.agents/scripts/lib/config/commands.js +1 -15
- package/.agents/scripts/lib/config/defaults.js +4 -33
- package/.agents/scripts/lib/config/delivery-routing.js +6 -34
- package/.agents/scripts/lib/config/explain.js +10 -83
- package/.agents/scripts/lib/config/gates/coverage.schema.js +0 -12
- package/.agents/scripts/lib/config/gates/crap-incremental-coverage.schema.js +3 -31
- package/.agents/scripts/lib/config/gates/crap.schema.js +1 -34
- package/.agents/scripts/lib/config/gates/duplication.schema.js +1 -8
- package/.agents/scripts/lib/config/gates/index.js +2 -17
- package/.agents/scripts/lib/config/gates/maintainability.schema.js +1 -20
- package/.agents/scripts/lib/config/gates/mutation.schema.js +1 -7
- package/.agents/scripts/lib/config/gates/shared.js +4 -64
- package/.agents/scripts/lib/config/github.js +4 -22
- package/.agents/scripts/lib/config/limits.js +4 -57
- package/.agents/scripts/lib/config/paths.js +2 -21
- package/.agents/scripts/lib/config/qa.js +4 -38
- package/.agents/scripts/lib/config/quality.js +76 -432
- package/.agents/scripts/lib/config/runners.js +12 -56
- package/.agents/scripts/lib/config/runtime.js +13 -57
- package/.agents/scripts/lib/config/shared.js +2 -16
- package/.agents/scripts/lib/config/sync-agentrc.js +9 -50
- package/.agents/scripts/lib/config/temp-paths.js +40 -280
- package/.agents/scripts/lib/config/validate-orchestration.js +5 -17
- package/.agents/scripts/lib/config/worktree-isolation.js +9 -28
- package/.agents/scripts/lib/config-resolver.js +11 -52
- package/.agents/scripts/lib/config-schema-shared.js +1 -4
- package/.agents/scripts/lib/config-settings-schema-delivery.js +16 -291
- package/.agents/scripts/lib/config-settings-schema-quality.js +7 -219
- package/.agents/scripts/lib/config-settings-schema.js +37 -274
- package/.agents/scripts/lib/coverage-baseline.js +20 -110
- package/.agents/scripts/lib/coverage-capture-fullscope.js +18 -35
- package/.agents/scripts/lib/coverage-capture-incremental.js +15 -45
- package/.agents/scripts/lib/coverage-capture-usage.js +8 -25
- package/.agents/scripts/lib/coverage-capture.js +99 -224
- package/.agents/scripts/lib/coverage-utils.js +14 -79
- package/.agents/scripts/lib/cpu-pool.js +17 -123
- package/.agents/scripts/lib/crap-baseline-join.js +16 -88
- package/.agents/scripts/lib/crap-coordinates.js +6 -25
- package/.agents/scripts/lib/crap-engine.js +40 -153
- package/.agents/scripts/lib/crap-method-identity.js +16 -78
- package/.agents/scripts/lib/crap-utils.js +31 -155
- package/.agents/scripts/lib/cyclomatic-ceiling.js +14 -87
- package/.agents/scripts/lib/cyclomatic-scope.js +10 -50
- package/.agents/scripts/lib/dead-exports-knip.js +18 -56
- package/.agents/scripts/lib/dead-exports-mode.js +5 -24
- package/.agents/scripts/lib/degraded-mode.js +3 -26
- package/.agents/scripts/lib/dependency-parser.js +8 -40
- package/.agents/scripts/lib/dependency-version.js +13 -35
- package/.agents/scripts/lib/detect-package-manager.js +6 -36
- package/.agents/scripts/lib/doc-tiers.js +22 -124
- package/.agents/scripts/lib/duplicate-search.js +8 -72
- package/.agents/scripts/lib/env-loader.js +5 -27
- package/.agents/scripts/lib/error-redactor.js +6 -31
- package/.agents/scripts/lib/errors/index.js +2 -22
- package/.agents/scripts/lib/escomplex-ast-compat.js +22 -163
- package/.agents/scripts/lib/escomplex-kernel.js +21 -123
- package/.agents/scripts/lib/feedback-loop/graduator-core.js +94 -419
- package/.agents/scripts/lib/feedback-loop/prior-feedback-fetcher.js +20 -98
- package/.agents/scripts/lib/feedback-loop/retro-proposals-graduator.js +27 -149
- package/.agents/scripts/lib/findings/audit-ledger.js +23 -97
- package/.agents/scripts/lib/findings/classify-finding.js +14 -69
- package/.agents/scripts/lib/findings/promote-finding.js +14 -112
- package/.agents/scripts/lib/findings/provenance-field.js +11 -52
- package/.agents/scripts/lib/findings/route-finding.js +37 -255
- package/.agents/scripts/lib/findings/semantic-issue-search.js +14 -59
- package/.agents/scripts/lib/findings/severity.js +18 -104
- package/.agents/scripts/lib/format-generated-json.js +12 -44
- package/.agents/scripts/lib/full-suite-lock.js +160 -429
- package/.agents/scripts/lib/full-suite-queue.js +213 -0
- package/.agents/scripts/lib/gates/baseline-store.js +5 -9
- package/.agents/scripts/lib/gates/friction.js +1 -3
- package/.agents/scripts/lib/generated/agentrc-validator.js +2 -2
- package/.agents/scripts/lib/gh-exec.js +123 -191
- package/.agents/scripts/lib/git/cached-fetch.js +9 -52
- package/.agents/scripts/lib/git/sync-from-base.js +15 -107
- package/.agents/scripts/lib/git-branch-cleanup.js +14 -61
- package/.agents/scripts/lib/git-branch-lifecycle.js +16 -87
- package/.agents/scripts/lib/git-utils.js +37 -161
- package/.agents/scripts/lib/github/framework-repo.js +8 -71
- package/.agents/scripts/lib/github-url.js +2 -17
- package/.agents/scripts/lib/import-graph.js +11 -38
- package/.agents/scripts/lib/install-cmd-parser.js +4 -13
- package/.agents/scripts/lib/json-utils.js +3 -18
- package/.agents/scripts/lib/label-constants.js +16 -111
- package/.agents/scripts/lib/label-taxonomy.js +4 -30
- package/.agents/scripts/lib/maintainability-engine.js +12 -80
- package/.agents/scripts/lib/maintainability-unscorable.js +5 -25
- package/.agents/scripts/lib/maintainability-utils.js +16 -92
- package/.agents/scripts/lib/mandrel-catalog.js +12 -70
- package/.agents/scripts/lib/notifications/notifier.js +13 -38
- package/.agents/scripts/lib/npm-scripts.js +4 -23
- package/.agents/scripts/lib/observability/metrics-ledger.js +16 -76
- package/.agents/scripts/lib/observability/runtime-friction.js +44 -286
- package/.agents/scripts/lib/observability/signal-validator.js +5 -37
- package/.agents/scripts/lib/observability/signals-writer.js +11 -121
- package/.agents/scripts/lib/observability/source-classifier.js +22 -203
- package/.agents/scripts/lib/observability/terse-result.js +14 -47
- package/.agents/scripts/lib/onboard/init-tail.js +13 -74
- package/.agents/scripts/lib/onboard/scaffold-docs.js +11 -34
- package/.agents/scripts/lib/orchestration/acceptance-eval-decision.js +25 -139
- package/.agents/scripts/lib/orchestration/auto-merge-cwd.js +11 -66
- package/.agents/scripts/lib/orchestration/behind-recovery.js +10 -55
- package/.agents/scripts/lib/orchestration/ceremony-routing.js +28 -156
- package/.agents/scripts/lib/orchestration/change-set.js +7 -36
- package/.agents/scripts/lib/orchestration/check-baselines/phases/compare.js +9 -46
- package/.agents/scripts/lib/orchestration/check-baselines/phases/evaluate.js +11 -44
- package/.agents/scripts/lib/orchestration/check-baselines/phases/floors.js +5 -24
- package/.agents/scripts/lib/orchestration/check-baselines/phases/friction.js +3 -12
- package/.agents/scripts/lib/orchestration/check-baselines/phases/parse-args.js +5 -38
- package/.agents/scripts/lib/orchestration/check-baselines/phases/pipeline.js +3 -8
- package/.agents/scripts/lib/orchestration/check-baselines/phases/refresh-ack.js +28 -136
- package/.agents/scripts/lib/orchestration/check-baselines/phases/report.js +3 -13
- package/.agents/scripts/lib/orchestration/check-state.js +92 -0
- package/.agents/scripts/lib/orchestration/ci-gap-intake.js +37 -144
- package/.agents/scripts/lib/orchestration/ci-rerun-guard.js +121 -157
- package/.agents/scripts/lib/orchestration/code-review.js +24 -128
- package/.agents/scripts/lib/orchestration/column-sync.js +23 -111
- package/.agents/scripts/lib/orchestration/complexity-gate.js +118 -462
- package/.agents/scripts/lib/orchestration/deliver-recover.js +36 -168
- package/.agents/scripts/lib/orchestration/dependency-analyzer.js +4 -35
- package/.agents/scripts/lib/orchestration/dependency-candidates.js +9 -41
- package/.agents/scripts/lib/orchestration/diff-magnitude.js +25 -115
- package/.agents/scripts/lib/orchestration/doc-reader.js +2 -6
- package/.agents/scripts/lib/orchestration/docs-digest.js +13 -51
- package/.agents/scripts/lib/orchestration/epic-candidates.js +13 -53
- package/.agents/scripts/lib/orchestration/epic-checklist.js +9 -33
- package/.agents/scripts/lib/orchestration/epic-container.js +41 -167
- package/.agents/scripts/lib/orchestration/epic-expansion.js +10 -40
- package/.agents/scripts/lib/orchestration/epic-rollup.js +55 -207
- package/.agents/scripts/lib/orchestration/file-assumption-enum.js +2 -22
- package/.agents/scripts/lib/orchestration/file-assumptions.js +45 -253
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-detect.js +9 -46
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches-reap.js +7 -57
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/branches.js +21 -126
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/cli.js +2 -6
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/fast-forward.js +1 -4
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/filters.js +1 -5
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes-ff.js +9 -34
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/git-probes.js +41 -190
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/merged-tip.js +9 -45
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/parse-args.js +1 -4
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/phase-drivers.js +19 -85
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prompts.js +3 -17
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/prune.js +1 -5
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/render.js +16 -100
- package/.agents/scripts/lib/orchestration/git-cleanup/phases/stashes.js +1 -4
- package/.agents/scripts/lib/orchestration/lease-guard-shared.js +16 -67
- package/.agents/scripts/lib/orchestration/lifecycle/emit-ledger-event.js +9 -33
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-flip-failed.js +8 -29
- package/.agents/scripts/lib/orchestration/lifecycle/emit-merge-unlanded.js +15 -68
- package/.agents/scripts/lib/orchestration/light-backstop.js +11 -49
- package/.agents/scripts/lib/orchestration/light-escalation.js +21 -89
- package/.agents/scripts/lib/orchestration/light-suitability.js +37 -307
- package/.agents/scripts/lib/orchestration/merge-block-class.js +39 -216
- package/.agents/scripts/lib/orchestration/merge-poll.js +104 -377
- package/.agents/scripts/lib/orchestration/pinned-identifier-lint.js +17 -57
- package/.agents/scripts/lib/orchestration/plan-context.js +55 -318
- package/.agents/scripts/lib/orchestration/plan-critic-conditions.js +22 -79
- package/.agents/scripts/lib/orchestration/plan-critics-evaluate.js +5 -31
- package/.agents/scripts/lib/orchestration/plan-metrics.js +29 -108
- package/.agents/scripts/lib/orchestration/plan-navigation.js +8 -27
- package/.agents/scripts/lib/orchestration/plan-persist/acceptance-handle-repair.js +12 -49
- package/.agents/scripts/lib/orchestration/plan-persist/audit-provenance.js +18 -73
- package/.agents/scripts/lib/orchestration/plan-persist/changes-repair.js +16 -78
- package/.agents/scripts/lib/orchestration/plan-persist/cross-plan-links.js +6 -30
- package/.agents/scripts/lib/orchestration/plan-persist/epic-adoption.js +14 -65
- package/.agents/scripts/lib/orchestration/plan-persist/epic-ops.js +21 -76
- package/.agents/scripts/lib/orchestration/plan-persist/external-deps.js +6 -43
- package/.agents/scripts/lib/orchestration/plan-persist/persist-helpers.js +14 -68
- package/.agents/scripts/lib/orchestration/plan-persist/plan-context-source.js +9 -41
- package/.agents/scripts/lib/orchestration/plan-persist/run-plan-persist.js +71 -289
- package/.agents/scripts/lib/orchestration/plan-persist/soft-findings.js +2 -12
- package/.agents/scripts/lib/orchestration/plan-persist/story-ops.js +96 -362
- package/.agents/scripts/lib/orchestration/plan-persist/summary.js +9 -39
- package/.agents/scripts/lib/orchestration/plan-persist/supersede-ops.js +60 -186
- package/.agents/scripts/lib/orchestration/plan-persist/wave-collision-gate.js +9 -49
- package/.agents/scripts/lib/orchestration/plan-persist/wave-serialisation.js +7 -28
- package/.agents/scripts/lib/orchestration/plan-reachability.js +13 -42
- package/.agents/scripts/lib/orchestration/plan-run-labels/reap.js +16 -91
- package/.agents/scripts/lib/orchestration/plan-runner/worktree-sweep.js +16 -54
- package/.agents/scripts/lib/orchestration/plan-text-hygiene.js +10 -52
- package/.agents/scripts/lib/orchestration/planning/authoring-context.js +14 -109
- package/.agents/scripts/lib/orchestration/planning/memory-pool-advisory.js +11 -83
- package/.agents/scripts/lib/orchestration/pr-watch.js +48 -306
- package/.agents/scripts/lib/orchestration/project-meta-cache.js +15 -80
- package/.agents/scripts/lib/orchestration/project-meta-resolver.js +10 -51
- package/.agents/scripts/lib/orchestration/reassert-status-column.js +12 -76
- package/.agents/scripts/lib/orchestration/remote-verifier.js +12 -36
- package/.agents/scripts/lib/orchestration/resolve-stories.js +33 -164
- package/.agents/scripts/lib/orchestration/retro-proposals.js +66 -361
- package/.agents/scripts/lib/orchestration/review-base-ref.js +9 -43
- package/.agents/scripts/lib/orchestration/review-depth.js +12 -91
- package/.agents/scripts/lib/orchestration/review-providers/codex.js +10 -111
- package/.agents/scripts/lib/orchestration/review-providers/degraded-gates.js +13 -71
- package/.agents/scripts/lib/orchestration/review-providers/findings-renderer.js +7 -51
- package/.agents/scripts/lib/orchestration/review-providers/mi-exemptions.js +8 -53
- package/.agents/scripts/lib/orchestration/review-providers/native.js +30 -214
- package/.agents/scripts/lib/orchestration/review-providers/parse-findings.js +7 -52
- package/.agents/scripts/lib/orchestration/review-providers/review-depth.js +4 -33
- package/.agents/scripts/lib/orchestration/review-providers/review-provider-factory.js +11 -71
- package/.agents/scripts/lib/orchestration/review-providers/scoped-lint.js +19 -131
- package/.agents/scripts/lib/orchestration/review-providers/security-review.js +6 -89
- package/.agents/scripts/lib/orchestration/review-providers/types.js +26 -56
- package/.agents/scripts/lib/orchestration/review-providers/ultrareview.js +3 -46
- package/.agents/scripts/lib/orchestration/run-epilogue.js +245 -326
- package/.agents/scripts/lib/orchestration/run-scoped-config.js +55 -159
- package/.agents/scripts/lib/orchestration/single-story-close/close-note.js +7 -34
- package/.agents/scripts/lib/orchestration/single-story-close/failed-terminal.js +16 -89
- package/.agents/scripts/lib/orchestration/single-story-close/gate-log.js +18 -109
- package/.agents/scripts/lib/orchestration/single-story-close/phases/auto-merge.js +83 -239
- package/.agents/scripts/lib/orchestration/single-story-close/phases/base-sync.js +20 -82
- package/.agents/scripts/lib/orchestration/single-story-close/phases/close-validation.js +103 -97
- package/.agents/scripts/lib/orchestration/single-story-close/phases/code-review.js +8 -64
- package/.agents/scripts/lib/orchestration/single-story-close/phases/confirm-merge.js +136 -486
- package/.agents/scripts/lib/orchestration/single-story-close/phases/conventional-subject.js +30 -134
- package/.agents/scripts/lib/orchestration/single-story-close/phases/graphql-preflight.js +96 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/lock-wait-pending.js +49 -0
- package/.agents/scripts/lib/orchestration/single-story-close/phases/normalize-pr-title.js +13 -86
- package/.agents/scripts/lib/orchestration/single-story-close/phases/options.js +20 -95
- package/.agents/scripts/lib/orchestration/single-story-close/phases/post-land.js +46 -203
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pre-gate-steps.js +8 -50
- package/.agents/scripts/lib/orchestration/single-story-close/phases/pull-request.js +12 -83
- package/.agents/scripts/lib/orchestration/single-story-close/phases/push.js +6 -39
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-block.js +1 -6
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-outcome.js +4 -28
- package/.agents/scripts/lib/orchestration/single-story-close/phases/review-override.js +6 -51
- package/.agents/scripts/lib/orchestration/single-story-close/phases/worktree-reap.js +6 -34
- package/.agents/scripts/lib/orchestration/single-story-close/phases/wrong-tree-guard.js +23 -121
- package/.agents/scripts/lib/orchestration/single-story-close/runner.js +180 -273
- package/.agents/scripts/lib/orchestration/single-story-lease-guard.js +15 -69
- package/.agents/scripts/lib/orchestration/story-body-gate.js +4 -23
- package/.agents/scripts/lib/orchestration/story-close/baseline-upward-writeback.js +50 -179
- package/.agents/scripts/lib/orchestration/story-close/context-budget-writeback.js +11 -41
- package/.agents/scripts/lib/orchestration/story-close/format-autofix.js +23 -311
- package/.agents/scripts/lib/orchestration/story-close/phases/local-lens-review.js +22 -147
- package/.agents/scripts/lib/orchestration/story-close/phases/review-core.js +16 -67
- package/.agents/scripts/lib/orchestration/story-deliver-terminal-schema.js +12 -68
- package/.agents/scripts/lib/orchestration/story-deliver-terminal.js +42 -200
- package/.agents/scripts/lib/orchestration/story-follow-ups.js +167 -252
- package/.agents/scripts/lib/orchestration/story-init-envelope.js +52 -0
- package/.agents/scripts/lib/orchestration/story-init-remote.js +2 -6
- package/.agents/scripts/lib/orchestration/story-reachability.js +3 -23
- package/.agents/scripts/lib/orchestration/task-body-validator.js +12 -135
- package/.agents/scripts/lib/orchestration/ticket-lease.js +28 -131
- package/.agents/scripts/lib/orchestration/ticket-validator-conflicts.js +15 -149
- package/.agents/scripts/lib/orchestration/ticket-validator-sizing.js +5 -33
- package/.agents/scripts/lib/orchestration/ticket-validator.js +63 -344
- package/.agents/scripts/lib/orchestration/ticketing/bulk.js +51 -244
- package/.agents/scripts/lib/orchestration/ticketing/reads.js +39 -261
- package/.agents/scripts/lib/orchestration/ticketing/state.js +14 -68
- package/.agents/scripts/lib/orchestration/ticketing/transition.js +46 -263
- package/.agents/scripts/lib/orchestration/ticketing.js +2 -26
- package/.agents/scripts/lib/orchestration/verify-credit.js +18 -79
- package/.agents/scripts/lib/orchestration/worktree-dirty.js +5 -30
- package/.agents/scripts/lib/path-security.js +3 -6
- package/.agents/scripts/lib/plan-phase-cleanup.js +9 -49
- package/.agents/scripts/lib/preflight-runner.js +13 -69
- package/.agents/scripts/lib/process-group.js +143 -0
- package/.agents/scripts/lib/project-root.js +2 -8
- package/.agents/scripts/lib/provider-factory.js +2 -25
- package/.agents/scripts/lib/qa/console-allowlist.js +10 -59
- package/.agents/scripts/lib/qa/qa-session.js +15 -69
- package/.agents/scripts/lib/qa/redact-evidence.js +18 -129
- package/.agents/scripts/lib/qa/resolve-qa-contract.js +26 -135
- package/.agents/scripts/lib/qa/resolve-selection.js +16 -84
- package/.agents/scripts/lib/reserved-test-ids.js +9 -47
- package/.agents/scripts/lib/runtime-deps/dep-resolution.js +13 -53
- package/.agents/scripts/lib/runtime-deps/ensure-installed.js +10 -44
- package/.agents/scripts/lib/runtime-deps/manifest.js +10 -30
- package/.agents/scripts/lib/runtime-deps/parser-major.js +15 -51
- package/.agents/scripts/lib/runtime-deps/preflight.js +4 -22
- package/.agents/scripts/lib/runtime-deps/scan-imports.js +11 -55
- package/.agents/scripts/lib/signals/detectors/common.js +12 -38
- package/.agents/scripts/lib/signals/index.js +2 -19
- package/.agents/scripts/lib/signals/schema.js +14 -109
- package/.agents/scripts/lib/signals/write.js +2 -11
- package/.agents/scripts/lib/single-story/confirm-merge.js +31 -72
- package/.agents/scripts/lib/single-story/story-merged-notify.js +8 -49
- package/.agents/scripts/lib/single-story-sweep/protection-ctx.js +4 -26
- package/.agents/scripts/lib/single-story-sweep/protection.js +13 -100
- package/.agents/scripts/lib/single-story-sweep/sweep-lock.js +60 -258
- package/.agents/scripts/lib/single-story-sweep.js +14 -97
- package/.agents/scripts/lib/skills/parse-skill.js +13 -59
- package/.agents/scripts/lib/skills/skills-index.js +8 -29
- package/.agents/scripts/lib/skills/walk-skill-files.js +17 -78
- package/.agents/scripts/lib/source-extensions.js +11 -42
- package/.agents/scripts/lib/source-text/strip-js-comments.js +8 -41
- package/.agents/scripts/lib/stdio-flush.js +9 -36
- package/.agents/scripts/lib/story-adjacency.js +8 -40
- package/.agents/scripts/lib/story-body/body-format-lints.js +51 -66
- package/.agents/scripts/lib/story-body/footer-block.js +11 -44
- package/.agents/scripts/lib/story-body/story-body.js +123 -344
- package/.agents/scripts/lib/temp-retention.js +42 -143
- package/.agents/scripts/lib/templates/decomposer-prompts.js +18 -80
- package/.agents/scripts/lib/test-env.js +12 -65
- package/.agents/scripts/lib/test-run-credit.js +10 -65
- package/.agents/scripts/lib/test-runner-contract.js +19 -74
- package/.agents/scripts/lib/test-temp.js +38 -184
- package/.agents/scripts/lib/test-tiers.js +12 -96
- package/.agents/scripts/lib/ticket-body-sections.js +21 -96
- package/.agents/scripts/lib/transpile.js +15 -74
- package/.agents/scripts/lib/util/concurrent-map.js +6 -25
- package/.agents/scripts/lib/util/parse-id-list.js +8 -34
- package/.agents/scripts/lib/util/poll-loop.js +8 -28
- package/.agents/scripts/lib/util/with-timeout.js +2 -11
- package/.agents/scripts/lib/validation-evidence.js +21 -96
- package/.agents/scripts/lib/wave-runner/footprint.js +17 -70
- package/.agents/scripts/lib/wave-runner/live-probe.js +67 -209
- package/.agents/scripts/lib/wave-runner/ready-set.js +72 -301
- package/.agents/scripts/lib/workers/crap-worker.js +11 -64
- package/.agents/scripts/lib/workers/maintainability-report-worker.js +8 -45
- package/.agents/scripts/lib/workers/maintainability-worker.js +5 -21
- package/.agents/scripts/lib/workers/serve-worker-messages.js +2 -18
- package/.agents/scripts/lib/workflow-closure.js +22 -105
- package/.agents/scripts/lib/workspace-provisioner.js +16 -54
- package/.agents/scripts/lib/worktree/git-hooks.js +15 -60
- package/.agents/scripts/lib/worktree/lifecycle/force-drain.js +20 -60
- package/.agents/scripts/lib/worktree/lifecycle/merge-reachability.js +10 -62
- package/.agents/scripts/lib/worktree/lifecycle/pending-cleanup.js +22 -86
- package/.agents/scripts/lib/worktree/lifecycle/reap.js +24 -126
- package/.agents/scripts/lib/worktree/lifecycle-manager.js +2 -20
- package/.agents/scripts/lib/worktree/node-modules-strategy.js +46 -180
- package/.agents/scripts/lib/worktree-manager.js +15 -40
- package/.agents/scripts/lint-issue-body.js +12 -68
- package/.agents/scripts/mandrel-update-preflight.js +10 -70
- package/.agents/scripts/merge-baseline.js +30 -105
- package/.agents/scripts/nav-registry-diff.js +22 -108
- package/.agents/scripts/notify.js +12 -69
- package/.agents/scripts/plan-context.js +97 -92
- package/.agents/scripts/plan-critics.js +12 -66
- package/.agents/scripts/plan-persist.js +71 -137
- package/.agents/scripts/plan-run-epilogue.js +20 -43
- package/.agents/scripts/pr-watch-with-update.js +79 -263
- package/.agents/scripts/providers/github/auth.js +3 -8
- package/.agents/scripts/providers/github/blocked-by-add.js +14 -61
- package/.agents/scripts/providers/github/board-add.js +5 -21
- package/.agents/scripts/providers/github/branch-protection.js +11 -43
- package/.agents/scripts/providers/github/cache.js +2 -14
- package/.agents/scripts/providers/github/comments.js +7 -40
- package/.agents/scripts/providers/github/compose.js +3 -19
- package/.agents/scripts/providers/github/errors.js +22 -125
- package/.agents/scripts/providers/github/issues.js +31 -123
- package/.agents/scripts/providers/github/labels.js +24 -124
- package/.agents/scripts/providers/github/mappers.js +5 -27
- package/.agents/scripts/providers/github/merge-methods.js +3 -22
- package/.agents/scripts/providers/github/project-board.js +2 -17
- package/.agents/scripts/providers/github/projects-v2-graphql.js +3 -6
- package/.agents/scripts/providers/github/request-helpers.js +5 -32
- package/.agents/scripts/providers/github/search-budget.js +9 -39
- package/.agents/scripts/providers/github/search-query.js +5 -26
- package/.agents/scripts/providers/github/sub-issue-add.js +15 -65
- package/.agents/scripts/providers/github/sub-issues.js +7 -36
- package/.agents/scripts/providers/github/tickets.js +32 -134
- package/.agents/scripts/providers/github.js +18 -59
- package/.agents/scripts/prune-plan-run-labels.js +12 -46
- package/.agents/scripts/quality-preview.js +35 -220
- package/.agents/scripts/resolve-doc-tiers.js +3 -26
- package/.agents/scripts/resolve-stories.js +16 -67
- package/.agents/scripts/resync-status-column.js +6 -25
- package/.agents/scripts/run-tests.js +29 -104
- package/.agents/scripts/single-story-close.js +23 -135
- package/.agents/scripts/single-story-confirm-merge.js +32 -139
- package/.agents/scripts/single-story-init.js +47 -259
- package/.agents/scripts/stories-wave-tick.js +179 -415
- package/.agents/scripts/sync-agentrc.js +3 -21
- package/.agents/scripts/sync-claude-agents.js +9 -55
- package/.agents/scripts/sync-claude-commands.js +20 -110
- package/.agents/scripts/test-wrapper.js +6 -43
- package/.agents/scripts/update-coverage-baseline.js +5 -22
- package/.agents/scripts/update-crap-baseline.js +7 -30
- package/.agents/scripts/update-duplication-baseline.js +16 -92
- package/.agents/scripts/update-maintainability-baseline.js +8 -62
- package/.agents/scripts/update-ticket-state.js +1 -7
- package/.agents/scripts/validate-skills.js +6 -26
- package/.agents/skills/core/gates-and-baselines/reference.md +0 -1
- package/.agents/skills/skills.index.json +2 -2
- package/.agents/skills/stack/qa/playwright/SKILL.md +26 -0
- package/.agents/templates/agent-protocol.md +2 -2
- package/.agents/templates/docs/audit-sweep-runbook.md +3 -4
- package/.agents/workflows/audit-accessibility.md +4 -7
- package/.agents/workflows/audit-adrs.md +3 -6
- package/.agents/workflows/audit-architecture.md +3 -11
- package/.agents/workflows/audit-baselines.md +6 -9
- package/.agents/workflows/audit-clean-code.md +8 -12
- package/.agents/workflows/audit-data-model.md +3 -7
- package/.agents/workflows/audit-dependencies.md +4 -7
- package/.agents/workflows/audit-devops.md +4 -8
- package/.agents/workflows/audit-documentation.md +1 -4
- package/.agents/workflows/audit-mobile.md +4 -7
- package/.agents/workflows/audit-navigability.md +3 -6
- package/.agents/workflows/audit-performance.md +2 -4
- package/.agents/workflows/audit-privacy.md +4 -7
- package/.agents/workflows/audit-quality.md +4 -7
- package/.agents/workflows/audit-security.md +4 -7
- package/.agents/workflows/audit-seo.md +4 -7
- package/.agents/workflows/audit-sre.md +4 -7
- package/.agents/workflows/audit-to-stories.md +17 -30
- package/.agents/workflows/audit-ux-ui.md +4 -7
- package/.agents/workflows/helpers/acceptance-self-eval.md +84 -157
- package/.agents/workflows/helpers/audit-lens-core.md +1 -1
- package/.agents/workflows/helpers/code-quality-guardrails.md +12 -15
- package/.agents/workflows/helpers/code-review.md +4 -2
- package/.agents/workflows/helpers/deliver-digest.md +37 -28
- package/.agents/workflows/helpers/deliver-light.md +92 -101
- package/.agents/workflows/helpers/deliver-reference.md +162 -220
- package/.agents/workflows/helpers/deliver-story-reference.md +197 -607
- package/.agents/workflows/helpers/deliver-story.md +17 -18
- package/.agents/workflows/helpers/plan-reference.md +125 -167
- package/.agents/workflows/helpers/qa-core.md +12 -0
- package/.agents/workflows/mandrel-deliver.md +47 -31
- package/.agents/workflows/mandrel-plan.md +22 -21
- package/.agents/workflows/mandrel-update.md +36 -21
- package/.agents/workflows/memory-consolidate.md +1 -1
- package/.agents/workflows/qa-assist.md +27 -71
- package/.agents/workflows/qa-explore.md +19 -59
- package/.agents/workflows/qa-run.md +11 -33
- package/README.md +1 -1
- package/bin/mandrel.js +5 -46
- package/bin/postinstall.js +18 -107
- package/docs/CHANGELOG.md +60 -0
- package/lib/cli/doctor.js +11 -71
- package/lib/cli/init.js +26 -165
- package/lib/cli/migrate.js +5 -64
- package/lib/cli/registry.js +84 -467
- package/lib/cli/sync-agents.js +4 -64
- package/lib/cli/sync-commands.js +11 -64
- package/lib/cli/sync.js +34 -213
- package/lib/cli/uninstall.js +40 -219
- package/lib/cli/update.js +326 -523
- package/lib/cli/version-check.js +8 -72
- package/lib/cli/version-helpers.js +14 -87
- package/lib/migrations/helpers/retire-agentrc-key.js +11 -52
- package/lib/migrations/index.js +17 -92
- package/lib/migrations/steps/2.1.0-retire-mi-drop-knobs.js +2 -15
- package/lib/migrations/steps/2.1.0-retire-verify-concurrency-cap.js +1 -13
- package/lib/migrations/steps/2.11.0-retire-max-seed-words.js +2 -15
- package/lib/migrations/steps/2.2.0-retire-epic-ac-tags.js +9 -38
- package/lib/migrations/steps/2.20.0-retire-codebase-snapshot.js +1 -13
- package/lib/migrations/steps/2.32.0-retire-lint-baseline-command.js +2 -27
- package/lib/migrations/steps/2.57.0-retire-delivery-limit-knobs.js +2 -23
- package/lib/migrations/steps/2.57.0-retire-planning-limit-knobs.js +2 -27
- package/lib/migrations/steps/2.60.0-retire-audit-results-autofile.js +21 -0
- package/lib/migrations/steps/strip-removed-agentrc-keys.js +333 -0
- package/package.json +17 -14
- package/.agents/docs/SDLC.md +0 -590
- package/.agents/docs/quality-gates.md +0 -1179
- package/.agents/rules/known-tooling-behavior.md +0 -150
- package/.agents/rules/orchestration-error-handling.md +0 -61
- package/.agents/rules/test-seams.md +0 -59
- package/.agents/schemas/baselines/lighthouse.schema.json +0 -59
- package/.agents/schemas/baselines/lint.schema.json +0 -47
- package/.agents/schemas/model-attribution.schema.json +0 -53
- package/.agents/scripts/check-action-pinning.js +0 -260
- package/.agents/scripts/check-audit-attribution.js +0 -302
- package/.agents/scripts/check-baseline-drift.js +0 -211
- package/.agents/scripts/check-baseline-scope.js +0 -362
- package/.agents/scripts/check-generated-validator.js +0 -202
- package/.agents/scripts/check-knip-entries.js +0 -159
- package/.agents/scripts/check-lifecycle-lint.js +0 -294
- package/.agents/scripts/check-pinned-override-notes.js +0 -102
- package/.agents/scripts/check-schema-references.js +0 -366
- package/.agents/scripts/check-test-portability.js +0 -512
- package/.agents/scripts/check-workflow-citations.js +0 -332
- package/.agents/scripts/check-workflow-cli-lint.js +0 -299
- package/.agents/scripts/check-workflow-timeouts.js +0 -291
- package/.agents/scripts/install-matrix-assert.js +0 -326
- package/.agents/scripts/lib/audit-advisories.js +0 -195
- package/.agents/scripts/lib/audit-attribution.js +0 -134
- package/.agents/scripts/lib/baselines/drift-detector.js +0 -351
- package/.agents/scripts/lib/baselines/kinds/lighthouse.js +0 -87
- package/.agents/scripts/lib/baselines/kinds/lint.js +0 -184
- package/.agents/scripts/lib/baselines/orphan-pruner.js +0 -233
- package/.agents/scripts/lib/baselines/scope-assert.js +0 -223
- package/.agents/scripts/lib/baselines/scope-inventory.js +0 -314
- package/.agents/scripts/lib/c8-cli-path.js +0 -21
- package/.agents/scripts/lib/config/gates/lighthouse.schema.js +0 -51
- package/.agents/scripts/lib/config/gates/lint.schema.js +0 -18
- package/.agents/scripts/lib/dynamic-workflow/architecture-report-contract.js +0 -70
- package/.agents/scripts/lib/dynamic-workflow/audit-orchestrator.js +0 -284
- package/.agents/scripts/lib/dynamic-workflow/clean-code-report-contract.js +0 -80
- package/.agents/scripts/lib/dynamic-workflow/degraded-coverage.js +0 -81
- package/.agents/scripts/lib/dynamic-workflow/documentation-report-contract.js +0 -87
- package/.agents/scripts/lib/dynamic-workflow/performance-report-contract.js +0 -74
- package/.agents/scripts/lib/dynamic-workflow/quality-report-contract.js +0 -90
- package/.agents/scripts/lib/dynamic-workflow/report-contract-core.js +0 -43
- package/.agents/scripts/lib/dynamic-workflow/security-report-contract.js +0 -83
- package/.agents/scripts/lib/fs-walk.js +0 -52
- package/.agents/scripts/lib/knip-config-resolver.js +0 -181
- package/.agents/scripts/lib/knip-entry-sync.js +0 -452
- package/.agents/scripts/lib/orchestration/model-attribution.js +0 -418
- package/.agents/scripts/lib/orchestration/story-plan-state.js +0 -33
- package/.agents/scripts/lib/orchestration/structured-comment-parser.js +0 -67
- package/.agents/scripts/lib/pinned-override-notes.js +0 -88
- package/.agents/scripts/lib/pinned-override-resolve.js +0 -212
- package/.agents/scripts/lib/test-isolate/cli-options.js +0 -93
- package/.agents/scripts/lib/test-isolate/env-snapshot-loader.js +0 -52
- package/.agents/scripts/lib/test-isolate/list-files.js +0 -90
- package/.agents/scripts/lib/test-isolate/parse-tap.js +0 -75
- package/.agents/scripts/lib/test-isolate/progress-log.js +0 -45
- package/.agents/scripts/lib/test-isolate/render-report.js +0 -97
- package/.agents/scripts/lib/test-isolate/run-isolate.js +0 -87
- package/.agents/scripts/lib/test-isolate/runner.js +0 -483
- package/.agents/scripts/lib/test-profile/parse-tap.js +0 -136
- package/.agents/scripts/lib/test-profile/render-report.js +0 -45
- package/.agents/scripts/lint-label-vocabulary.js +0 -214
- package/.agents/scripts/post-structured-comment.js +0 -127
- package/.agents/scripts/provision-git-hooks.js +0 -85
- package/.agents/scripts/prune-baseline-orphans.js +0 -181
- package/.agents/scripts/run-coverage.js +0 -197
- package/.agents/scripts/run-lint.js +0 -133
- package/.agents/scripts/run-test-profile.js +0 -129
- package/.agents/scripts/run-verify.js +0 -118
- package/.agents/scripts/test-isolate.js +0 -55
- package/.agents/scripts/update-dead-exports-baseline.js +0 -321
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
// .agents/scripts/lib/dynamic-workflow/quality-report-contract.js
|
|
2
|
-
import { assertSectionsContract } from './report-contract-core.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* The `audit-quality` report contract (Epic #3597, Story #3614).
|
|
6
|
-
*
|
|
7
|
-
* This is the **single source of truth** for the report shape that BOTH the
|
|
8
|
-
* sequential lens (`.agents/workflows/audit-quality.md` Step 3) and the
|
|
9
|
-
* orchestrated dynamic-workflow path
|
|
10
|
-
* (`.claude/workflows/audit-quality.workflow.js`) MUST emit to
|
|
11
|
-
* `{{auditOutputDir}}/audit-quality-results.md`. Keeping it here lets the
|
|
12
|
-
* contract-tier test assert report conformance against one definition rather
|
|
13
|
-
* than re-deriving headings from prose in two places.
|
|
14
|
-
*
|
|
15
|
-
* Generalising the orchestrated dual path to the quality lens is explicitly
|
|
16
|
-
* **report-contract-preserving** — this module documents the existing shape the
|
|
17
|
-
* sequential lens already emits, it does not introduce a new one.
|
|
18
|
-
*
|
|
19
|
-
* @module dynamic-workflow/quality-report-contract
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
/** The artifact filename the lens writes under `auditOutputDir`. */
|
|
23
|
-
export const REPORT_ARTIFACT_BASENAME = 'audit-quality-results.md';
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* The required top-level (`##`) section headings, in document order, that the
|
|
27
|
-
* lens markdown's Step 3 template defines. A conformant report MUST contain
|
|
28
|
-
* each of these headings; the orchestrated path assembles its cross-checked
|
|
29
|
-
* findings into exactly this skeleton.
|
|
30
|
-
*/
|
|
31
|
-
export const REQUIRED_SECTIONS = Object.freeze([
|
|
32
|
-
'Executive Summary',
|
|
33
|
-
'Test Strategy Assessment',
|
|
34
|
-
'Detailed Findings',
|
|
35
|
-
]);
|
|
36
|
-
|
|
37
|
-
/** The H1 title the report opens with. */
|
|
38
|
-
export const REPORT_TITLE = 'Testing & Quality Assurance Audit';
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* The required field labels inside each `### <finding>` block under
|
|
42
|
-
* `## Detailed Findings`. Mirrors the strict per-finding structure in the
|
|
43
|
-
* lens template.
|
|
44
|
-
*/
|
|
45
|
-
export const FINDING_FIELDS = Object.freeze([
|
|
46
|
-
'Category',
|
|
47
|
-
'Impact',
|
|
48
|
-
'Current State',
|
|
49
|
-
'Recommendation & Rationale',
|
|
50
|
-
'Agent Prompt',
|
|
51
|
-
]);
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* The finding categories the per-finding `Category` field draws from. These
|
|
55
|
-
* mirror the lens's Step 3 template enumeration and the Step 2 analysis
|
|
56
|
-
* dimensions the quality audit decomposes into.
|
|
57
|
-
*/
|
|
58
|
-
export const FINDING_CATEGORIES = Object.freeze([
|
|
59
|
-
'Flakiness',
|
|
60
|
-
'Coverage',
|
|
61
|
-
'Performance',
|
|
62
|
-
'Mocking',
|
|
63
|
-
'Test Plans',
|
|
64
|
-
]);
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* The impact buckets the Executive Summary and per-finding `Impact` field draw
|
|
68
|
-
* from. The lens speaks in High/Medium/Low; this list is the canonical
|
|
69
|
-
* taxonomy the downstream `audit-to-stories` consumer maps onto Story
|
|
70
|
-
* priority.
|
|
71
|
-
*/
|
|
72
|
-
export const IMPACT_LEVELS = Object.freeze(['High', 'Medium', 'Low']);
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Assert that a rendered markdown report conforms to the contract: it has the
|
|
76
|
-
* H1 title and every required `##` section heading. Returns a structured
|
|
77
|
-
* result rather than throwing, so callers (tests, the orchestrated path's
|
|
78
|
-
* self-check) can report precisely which sections are missing.
|
|
79
|
-
*
|
|
80
|
-
* Pure function — string analysis only.
|
|
81
|
-
*
|
|
82
|
-
* @param {string} markdown - The rendered report body.
|
|
83
|
-
* @returns {{ conformant: boolean, missingSections: string[], hasTitle: boolean }}
|
|
84
|
-
*/
|
|
85
|
-
export function assertReportContract(markdown) {
|
|
86
|
-
return assertSectionsContract(markdown, {
|
|
87
|
-
title: REPORT_TITLE,
|
|
88
|
-
requiredSections: REQUIRED_SECTIONS,
|
|
89
|
-
});
|
|
90
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
// .agents/scripts/lib/dynamic-workflow/report-contract-core.js
|
|
2
|
-
/**
|
|
3
|
-
* Shared markdown section contract assertions for audit report lenses.
|
|
4
|
-
*
|
|
5
|
-
* Individual lens modules own their report title and required section list;
|
|
6
|
-
* this helper owns the invariant string-analysis mechanics.
|
|
7
|
-
*
|
|
8
|
-
* @module dynamic-workflow/report-contract-core
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Assert that a rendered markdown report has the expected H1 title and every
|
|
13
|
-
* required `##` section heading. Returns a structured result rather than
|
|
14
|
-
* throwing, so callers can report precisely which sections are missing.
|
|
15
|
-
*
|
|
16
|
-
* Pure function — string analysis only.
|
|
17
|
-
*
|
|
18
|
-
* @param {string} markdown - The rendered report body.
|
|
19
|
-
* @param {{ title: string, requiredSections: readonly string[] }} contract
|
|
20
|
-
* - The per-lens report contract constants.
|
|
21
|
-
* @returns {{ conformant: boolean, missingSections: string[], hasTitle: boolean }}
|
|
22
|
-
*/
|
|
23
|
-
export function assertSectionsContract(markdown, { title, requiredSections }) {
|
|
24
|
-
const text = typeof markdown === 'string' ? markdown : '';
|
|
25
|
-
const hasTitle = new RegExp(`^#\\s+${escapeRegExp(title)}\\s*$`, 'm').test(
|
|
26
|
-
text,
|
|
27
|
-
);
|
|
28
|
-
|
|
29
|
-
const missingSections = requiredSections.filter(
|
|
30
|
-
(heading) =>
|
|
31
|
-
!new RegExp(`^##\\s+${escapeRegExp(heading)}\\s*$`, 'm').test(text),
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
return {
|
|
35
|
-
conformant: hasTitle && missingSections.length === 0,
|
|
36
|
-
missingSections,
|
|
37
|
-
hasTitle,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export function escapeRegExp(str) {
|
|
42
|
-
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
43
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
// .agents/scripts/lib/dynamic-workflow/security-report-contract.js
|
|
2
|
-
import { assertSectionsContract } from './report-contract-core.js';
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* The `audit-security` report contract (Epic #3597, Story #3613).
|
|
6
|
-
*
|
|
7
|
-
* This is the **single source of truth** for the report shape that BOTH the
|
|
8
|
-
* sequential lens (`.agents/workflows/audit-security.md` Step 3) and the
|
|
9
|
-
* orchestrated dynamic-workflow path
|
|
10
|
-
* (`.claude/workflows/audit-security.workflow.js`) MUST emit to
|
|
11
|
-
* `{{auditOutputDir}}/audit-security-results.md`. Keeping it here lets the
|
|
12
|
-
* contract-tier test assert report conformance against one definition rather
|
|
13
|
-
* than re-deriving headings from prose in two places.
|
|
14
|
-
*
|
|
15
|
-
* Generalising the orchestrated dual path to the security lens is explicitly
|
|
16
|
-
* **report-contract-preserving** — this module documents the existing shape the
|
|
17
|
-
* sequential lens already emits, it does not introduce a new one.
|
|
18
|
-
*
|
|
19
|
-
* @module dynamic-workflow/security-report-contract
|
|
20
|
-
*/
|
|
21
|
-
|
|
22
|
-
/** The artifact filename the lens writes under `auditOutputDir`. */
|
|
23
|
-
export const REPORT_ARTIFACT_BASENAME = 'audit-security-results.md';
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* The required top-level (`##`) section headings, in document order, that the
|
|
27
|
-
* lens markdown's Step 3 template defines. A conformant report MUST contain
|
|
28
|
-
* each of these headings; the orchestrated path assembles its cross-checked
|
|
29
|
-
* findings into exactly this skeleton.
|
|
30
|
-
*/
|
|
31
|
-
export const REQUIRED_SECTIONS = Object.freeze([
|
|
32
|
-
'Executive Summary',
|
|
33
|
-
'Detailed Findings',
|
|
34
|
-
'Defensive Recommendations',
|
|
35
|
-
]);
|
|
36
|
-
|
|
37
|
-
/** The H1 title the report opens with. */
|
|
38
|
-
export const REPORT_TITLE = 'Security Audit Report';
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* The required field labels inside each `### <finding>` block under
|
|
42
|
-
* `## Detailed Findings`. Mirrors the strict per-finding structure in the
|
|
43
|
-
* lens template.
|
|
44
|
-
*/
|
|
45
|
-
export const FINDING_FIELDS = Object.freeze([
|
|
46
|
-
'Dimension',
|
|
47
|
-
'Severity',
|
|
48
|
-
'CWE ID',
|
|
49
|
-
'Current State',
|
|
50
|
-
'Recommendation & Rationale',
|
|
51
|
-
'Agent Prompt',
|
|
52
|
-
]);
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* The severity buckets the Executive Summary risk profile and per-finding
|
|
56
|
-
* `Severity` field draw from. The lens speaks in High/Medium/Low (with
|
|
57
|
-
* Critical as the top High band); this list is the canonical taxonomy the
|
|
58
|
-
* downstream `audit-to-stories` consumer maps onto Story priority.
|
|
59
|
-
*/
|
|
60
|
-
export const SEVERITY_LEVELS = Object.freeze([
|
|
61
|
-
'Critical',
|
|
62
|
-
'High',
|
|
63
|
-
'Medium',
|
|
64
|
-
'Low',
|
|
65
|
-
]);
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Assert that a rendered markdown report conforms to the contract: it has the
|
|
69
|
-
* H1 title and every required `##` section heading. Returns a structured
|
|
70
|
-
* result rather than throwing, so callers (tests, the orchestrated path's
|
|
71
|
-
* self-check) can report precisely which sections are missing.
|
|
72
|
-
*
|
|
73
|
-
* Pure function — string analysis only.
|
|
74
|
-
*
|
|
75
|
-
* @param {string} markdown - The rendered report body.
|
|
76
|
-
* @returns {{ conformant: boolean, missingSections: string[], hasTitle: boolean }}
|
|
77
|
-
*/
|
|
78
|
-
export function assertReportContract(markdown) {
|
|
79
|
-
return assertSectionsContract(markdown, {
|
|
80
|
-
title: REPORT_TITLE,
|
|
81
|
-
requiredSections: REQUIRED_SECTIONS,
|
|
82
|
-
});
|
|
83
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* fs-walk.js — the one recursive file walker the lint scripts share.
|
|
3
|
-
*
|
|
4
|
-
* `check-lifecycle-lint.js` and `lint-label-vocabulary.js` each carried a
|
|
5
|
-
* private copy of this generator, differing only in the extension they
|
|
6
|
-
* matched — the second one's comment said so outright ("mirrors the walker
|
|
7
|
-
* shape in check-lifecycle-lint.js"). Story #5024 extracted it: shrinking
|
|
8
|
-
* check-lifecycle-lint.js pushed its duplication percentage up on an unchanged
|
|
9
|
-
* clone count, which is the ratchet correctly pointing at boilerplate that
|
|
10
|
-
* should not have been copied twice.
|
|
11
|
-
*
|
|
12
|
-
* A missing directory yields nothing rather than throwing. That is
|
|
13
|
-
* load-bearing, not lenient: the lint surfaces are directories a deletion can
|
|
14
|
-
* legitimately remove (Story #5024 deleted `lifecycle/listeners/`), and a scan
|
|
15
|
-
* of an absent path is vacuously clean, not an error. Every other `readdir`
|
|
16
|
-
* failure — a permission error, a file where a directory was expected —
|
|
17
|
-
* propagates, so a genuinely broken scan cannot read as clean.
|
|
18
|
-
*/
|
|
19
|
-
|
|
20
|
-
import { readdirSync } from 'node:fs';
|
|
21
|
-
import path from 'node:path';
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Walk a directory tree synchronously, yielding absolute paths of every file
|
|
25
|
-
* whose name ends with `extension`.
|
|
26
|
-
*
|
|
27
|
-
* @param {string} dir Absolute directory to walk.
|
|
28
|
-
* @param {string} extension Extension to match, leading dot included (`.js`).
|
|
29
|
-
* @param {{ readDir?: typeof readdirSync }} [ports] Injectable for tests.
|
|
30
|
-
* @returns {Generator<string, void, void>}
|
|
31
|
-
*/
|
|
32
|
-
export function* walkFilesByExtension(
|
|
33
|
-
dir,
|
|
34
|
-
extension,
|
|
35
|
-
{ readDir = readdirSync } = {},
|
|
36
|
-
) {
|
|
37
|
-
let entries;
|
|
38
|
-
try {
|
|
39
|
-
entries = readDir(dir, { withFileTypes: true });
|
|
40
|
-
} catch (err) {
|
|
41
|
-
if (err.code === 'ENOENT') return;
|
|
42
|
-
throw err;
|
|
43
|
-
}
|
|
44
|
-
for (const entry of entries) {
|
|
45
|
-
const p = path.join(dir, entry.name);
|
|
46
|
-
if (entry.isDirectory()) {
|
|
47
|
-
yield* walkFilesByExtension(p, extension, { readDir });
|
|
48
|
-
} else if (entry.isFile() && entry.name.endsWith(extension)) {
|
|
49
|
-
yield p;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* knip-config-resolver.js — resolve a repository's knip configuration the way
|
|
3
|
-
* knip itself would, and hand back its declared entry patterns.
|
|
4
|
-
*
|
|
5
|
-
* Split out of `knip-entry-sync.js` (Story #5039) because these are two
|
|
6
|
-
* concerns that change for different reasons: *what knip's config says* tracks
|
|
7
|
-
* knip's own releases, while *which CLIs something invokes* tracks this
|
|
8
|
-
* repository's callers. Keeping them in one file also pushed that module's
|
|
9
|
-
* maintainability index below its floor.
|
|
10
|
-
*
|
|
11
|
-
* Why not read the file ourselves: #5026 hardcoded
|
|
12
|
-
* `JSON.parse(<root>/knip.json)`, so all seven of knip's other config
|
|
13
|
-
* locations plus `package.json#knip` resolved to ENOENT and failed the gate
|
|
14
|
-
* closed. That made it unusable in exactly the repositories that adopt the
|
|
15
|
-
* shared `knip.base.json` — knip 6 has no root-level `extends`, so inheriting
|
|
16
|
-
* the base means spreading it inside a TypeScript module, which a static
|
|
17
|
-
* `knip.json` structurally cannot express.
|
|
18
|
-
*
|
|
19
|
-
* Going through `createOptions` also drops the assumption that `entry` is
|
|
20
|
-
* *statically declared*. A config may build the array programmatically, so
|
|
21
|
-
* even a purpose-built `knip.config.ts` parser would read the wrong thing;
|
|
22
|
-
* knip evaluates the module and returns the computed value.
|
|
23
|
-
*/
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Load knip's own config resolver.
|
|
27
|
-
*
|
|
28
|
-
* Deliberately a dynamic import behind an injectable seam. `knip` is declared
|
|
29
|
-
* in `runtime-deps.json` as an **optional** dependency, mirroring `typescript`:
|
|
30
|
-
* the `.agents/` payload is materialized into consumers that may not run knip
|
|
31
|
-
* at all, so an unresolvable `knip` must degrade to the skip path rather than
|
|
32
|
-
* crash the gate at module load — and must never be preflight-blocked.
|
|
33
|
-
*
|
|
34
|
-
* @returns {Promise<{ createOptions?: Function }>}
|
|
35
|
-
*/
|
|
36
|
-
function importKnipSession() {
|
|
37
|
-
return import('knip/session');
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Collect every declared entry pattern from a resolved knip configuration.
|
|
42
|
-
*
|
|
43
|
-
* Entries live in two places and #5026 read only the first. A pnpm-workspace
|
|
44
|
-
* config — the shape that made this gate unusable in `Beestera/swarm-os` —
|
|
45
|
-
* declares them per workspace, so a config with no top-level `entry` at all is
|
|
46
|
-
* still fully enumerated. A named workspace's patterns are workspace-relative
|
|
47
|
-
* and are joined to the workspace name; the root workspace (`.`) is already
|
|
48
|
-
* repo-relative. A leading `!` is knip's *negation* marker (as opposed to the
|
|
49
|
-
* trailing production marker) and stays at the front of the pattern rather
|
|
50
|
-
* than getting buried behind the workspace prefix.
|
|
51
|
-
*
|
|
52
|
-
* `sawEntryArray` separates "declared nothing under `.agents/scripts/`" — a
|
|
53
|
-
* legitimate result, reported as `missing` divergences — from "this config
|
|
54
|
-
* enumerates no entry points anywhere", which leaves the gate nothing to
|
|
55
|
-
* compare against.
|
|
56
|
-
*
|
|
57
|
-
* @param {object} parsedConfig knip's schema-parsed configuration
|
|
58
|
-
* @returns {{ patterns: string[], sawEntryArray: boolean }}
|
|
59
|
-
*/
|
|
60
|
-
function collectEntryPatterns(parsedConfig) {
|
|
61
|
-
const patterns = [];
|
|
62
|
-
let sawEntryArray = false;
|
|
63
|
-
|
|
64
|
-
const push = (value, prefix) => {
|
|
65
|
-
if (typeof value !== 'string') return;
|
|
66
|
-
if (!prefix) patterns.push(value);
|
|
67
|
-
else if (value.startsWith('!'))
|
|
68
|
-
patterns.push(`!${prefix}${value.slice(1)}`);
|
|
69
|
-
else patterns.push(`${prefix}${value}`);
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
const addAll = (entry, prefix) => {
|
|
73
|
-
if (!Array.isArray(entry)) return;
|
|
74
|
-
sawEntryArray = true;
|
|
75
|
-
for (const value of entry) push(value, prefix);
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
addAll(parsedConfig?.entry, '');
|
|
79
|
-
|
|
80
|
-
const workspaces = parsedConfig?.workspaces;
|
|
81
|
-
if (workspaces && typeof workspaces === 'object') {
|
|
82
|
-
for (const [name, workspace] of Object.entries(workspaces)) {
|
|
83
|
-
const trimmed = name.replace(/^\.\/+/, '').replace(/\/+$/, '');
|
|
84
|
-
const prefix = trimmed === '' || trimmed === '.' ? '' : `${trimmed}/`;
|
|
85
|
-
addAll(workspace?.entry, prefix);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
return { patterns, sawEntryArray };
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Resolve the entry patterns knip would see for `repoRoot`.
|
|
94
|
-
*
|
|
95
|
-
* Three outcomes, deliberately distinct — collapsing the first two is how a
|
|
96
|
-
* broken configuration would come to look like an absent one:
|
|
97
|
-
*
|
|
98
|
-
* skipped — nothing to check (no config file, no `package.json#knip`, or no
|
|
99
|
-
* resolvable `knip`). The gate exits 0. This is what makes it safe to wire
|
|
100
|
-
* into every consumer, matching `qa.gherkinLint`'s opt-in posture.
|
|
101
|
-
* error — a configuration exists but could not be resolved, or enumerates no
|
|
102
|
-
* entry points at all. The gate exits 2.
|
|
103
|
-
* resolved — `patterns` carries every declared entry, top-level and
|
|
104
|
-
* per-workspace, with knip's trailing `!` production markers intact.
|
|
105
|
-
*
|
|
106
|
-
* @param {{ repoRoot: string, loadKnipSession?: () => Promise<object> }} opts
|
|
107
|
-
* @returns {Promise<{
|
|
108
|
-
* patterns: string[],
|
|
109
|
-
* configFilePath: string | null,
|
|
110
|
-
* skipped: string | null,
|
|
111
|
-
* error: string | null,
|
|
112
|
-
* }>}
|
|
113
|
-
*/
|
|
114
|
-
export async function resolveKnipEntryPatterns({
|
|
115
|
-
repoRoot,
|
|
116
|
-
loadKnipSession = importKnipSession,
|
|
117
|
-
}) {
|
|
118
|
-
const nothing = { patterns: [], configFilePath: null };
|
|
119
|
-
|
|
120
|
-
let createOptions;
|
|
121
|
-
try {
|
|
122
|
-
({ createOptions } = await loadKnipSession());
|
|
123
|
-
} catch (error) {
|
|
124
|
-
return {
|
|
125
|
-
...nothing,
|
|
126
|
-
skipped: `the "knip" package is not resolvable from ${repoRoot} (${error.message})`,
|
|
127
|
-
error: null,
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
if (typeof createOptions !== 'function') {
|
|
131
|
-
return {
|
|
132
|
-
...nothing,
|
|
133
|
-
skipped: null,
|
|
134
|
-
error:
|
|
135
|
-
'the installed "knip" does not export createOptions from "knip/session" — this gate needs knip 6 or newer',
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
let options;
|
|
140
|
-
try {
|
|
141
|
-
options = await createOptions({ cwd: repoRoot, args: {} });
|
|
142
|
-
} catch (error) {
|
|
143
|
-
return {
|
|
144
|
-
...nothing,
|
|
145
|
-
skipped: null,
|
|
146
|
-
error: `cannot resolve the knip configuration: ${error.message}`,
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const configFilePath = options?.configFilePath ?? null;
|
|
151
|
-
if (!configFilePath) {
|
|
152
|
-
return {
|
|
153
|
-
...nothing,
|
|
154
|
-
skipped: `no knip configuration found under ${repoRoot} (no config file, no package.json#knip)`,
|
|
155
|
-
error: null,
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
const { patterns, sawEntryArray } = collectEntryPatterns(
|
|
160
|
-
options?.parsedConfig,
|
|
161
|
-
);
|
|
162
|
-
if (!sawEntryArray) {
|
|
163
|
-
return {
|
|
164
|
-
patterns: [],
|
|
165
|
-
configFilePath,
|
|
166
|
-
skipped: null,
|
|
167
|
-
error: `${configFilePath} declares no "entry" array, at the top level or in any workspace`,
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
return { patterns, configFilePath, skipped: null, error: null };
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Test-only seam. Not API — `collectEntryPatterns` is exercised directly so the
|
|
176
|
-
* workspace-prefix and negation rules can be pinned without a fixture tree.
|
|
177
|
-
*/
|
|
178
|
-
export const __testing = Object.freeze({
|
|
179
|
-
collectEntryPatterns,
|
|
180
|
-
importKnipSession,
|
|
181
|
-
});
|