@shrkcrft/cli 0.1.0-alpha.29 → 0.1.0-alpha.31
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/dist/asset-preview/apply-asset-preview.js +1 -1
- package/dist/authoring/authoring-kit.d.ts +9 -1
- package/dist/authoring/authoring-kit.d.ts.map +1 -1
- package/dist/authoring/authoring-kit.js +26 -13
- package/dist/bootstrap/unlinked-workspace-dependency.d.ts +11 -0
- package/dist/bootstrap/unlinked-workspace-dependency.d.ts.map +1 -0
- package/dist/bootstrap/unlinked-workspace-dependency.js +99 -0
- package/dist/command-registry.d.ts +100 -1
- package/dist/command-registry.d.ts.map +1 -1
- package/dist/command-registry.js +130 -3
- package/dist/commands/api-diff.command.d.ts.map +1 -1
- package/dist/commands/api-diff.command.js +12 -0
- package/dist/commands/apply.command.d.ts.map +1 -1
- package/dist/commands/apply.command.js +3 -0
- package/dist/commands/arch.command.d.ts.map +1 -1
- package/dist/commands/arch.command.js +26 -7
- package/dist/commands/architecture.command.d.ts.map +1 -1
- package/dist/commands/architecture.command.js +8 -2
- package/dist/commands/baseline.command.d.ts +76 -0
- package/dist/commands/baseline.command.d.ts.map +1 -1
- package/dist/commands/baseline.command.js +599 -75
- package/dist/commands/biome.command.d.ts.map +1 -1
- package/dist/commands/biome.command.js +20 -0
- package/dist/commands/boundaries.command.d.ts +9 -1
- package/dist/commands/boundaries.command.d.ts.map +1 -1
- package/dist/commands/boundaries.command.js +88 -20
- package/dist/commands/bundle.command.d.ts.map +1 -1
- package/dist/commands/bundle.command.js +57 -11
- package/dist/commands/cache-align.command.d.ts.map +1 -1
- package/dist/commands/cache-align.command.js +3 -1
- package/dist/commands/changelog-data.d.ts.map +1 -1
- package/dist/commands/changelog-data.js +164 -0
- package/dist/commands/changes.command.d.ts.map +1 -1
- package/dist/commands/changes.command.js +15 -0
- package/dist/commands/check.command.d.ts.map +1 -1
- package/dist/commands/check.command.js +1260 -324
- package/dist/commands/checks.command.d.ts.map +1 -1
- package/dist/commands/checks.command.js +188 -40
- package/dist/commands/ci.command.d.ts.map +1 -1
- package/dist/commands/ci.command.js +35 -2
- package/dist/commands/code-intel.command.d.ts.map +1 -1
- package/dist/commands/code-intel.command.js +8 -1
- package/dist/commands/command-catalog.d.ts +23 -1
- package/dist/commands/command-catalog.d.ts.map +1 -1
- package/dist/commands/command-catalog.js +152 -35
- package/dist/commands/commands.command.d.ts +21 -3
- package/dist/commands/commands.command.d.ts.map +1 -1
- package/dist/commands/commands.command.js +172 -27
- package/dist/commands/compress.command.d.ts.map +1 -1
- package/dist/commands/compress.command.js +4 -0
- package/dist/commands/constructs.command.d.ts.map +1 -1
- package/dist/commands/constructs.command.js +50 -12
- package/dist/commands/context.command.d.ts.map +1 -1
- package/dist/commands/context.command.js +40 -5
- package/dist/commands/contract-templates.command.d.ts.map +1 -1
- package/dist/commands/contract-templates.command.js +9 -1
- package/dist/commands/contract.command.d.ts.map +1 -1
- package/dist/commands/contract.command.js +35 -0
- package/dist/commands/conventions.command.d.ts.map +1 -1
- package/dist/commands/conventions.command.js +189 -29
- package/dist/commands/coverage.command.d.ts.map +1 -1
- package/dist/commands/coverage.command.js +9 -0
- package/dist/commands/daily.commands.d.ts +0 -1
- package/dist/commands/daily.commands.d.ts.map +1 -1
- package/dist/commands/daily.commands.js +12 -76
- package/dist/commands/dashboard.command.d.ts.map +1 -1
- package/dist/commands/dashboard.command.js +10 -0
- package/dist/commands/dev.command.d.ts.map +1 -1
- package/dist/commands/dev.command.js +45 -2
- package/dist/commands/diagnostics.command.d.ts +0 -2
- package/dist/commands/diagnostics.command.d.ts.map +1 -1
- package/dist/commands/diagnostics.command.js +5 -78
- package/dist/commands/diff-check.command.d.ts +6 -4
- package/dist/commands/diff-check.command.d.ts.map +1 -1
- package/dist/commands/diff-check.command.js +190 -103
- package/dist/commands/docs-references.command.d.ts +20 -0
- package/dist/commands/docs-references.command.d.ts.map +1 -0
- package/dist/commands/docs-references.command.js +520 -0
- package/dist/commands/doctor.command.d.ts.map +1 -1
- package/dist/commands/doctor.command.js +60 -5
- package/dist/commands/drift.command.d.ts.map +1 -1
- package/dist/commands/drift.command.js +17 -4
- package/dist/commands/eslint.command.d.ts.map +1 -1
- package/dist/commands/eslint.command.js +20 -0
- package/dist/commands/export.command.d.ts.map +1 -1
- package/dist/commands/export.command.js +23 -1
- package/dist/commands/feedback-dispatch.command.d.ts.map +1 -1
- package/dist/commands/feedback-dispatch.command.js +29 -0
- package/dist/commands/feedback.command.d.ts.map +1 -1
- package/dist/commands/feedback.command.js +6 -1
- package/dist/commands/finish.command.d.ts.map +1 -1
- package/dist/commands/finish.command.js +32 -8
- package/dist/commands/fix.command.d.ts.map +1 -1
- package/dist/commands/fix.command.js +19 -0
- package/dist/commands/gate.command.d.ts +6 -1
- package/dist/commands/gate.command.d.ts.map +1 -1
- package/dist/commands/gate.command.js +50 -124
- package/dist/commands/gates.command.d.ts +54 -0
- package/dist/commands/gates.command.d.ts.map +1 -1
- package/dist/commands/gates.command.js +1314 -64
- package/dist/commands/gen.command.d.ts.map +1 -1
- package/dist/commands/gen.command.js +4 -0
- package/dist/commands/generated.command.d.ts +62 -0
- package/dist/commands/generated.command.d.ts.map +1 -1
- package/dist/commands/generated.command.js +639 -156
- package/dist/commands/graph-code-subverbs.d.ts +15 -0
- package/dist/commands/graph-code-subverbs.d.ts.map +1 -1
- package/dist/commands/graph-code-subverbs.js +203 -25
- package/dist/commands/graph.command.d.ts.map +1 -1
- package/dist/commands/graph.command.js +79 -37
- package/dist/commands/help.command.d.ts +30 -6
- package/dist/commands/help.command.d.ts.map +1 -1
- package/dist/commands/help.command.js +323 -199
- package/dist/commands/helper.command.d.ts +1 -0
- package/dist/commands/helper.command.d.ts.map +1 -1
- package/dist/commands/helper.command.js +195 -56
- package/dist/commands/impact.command.d.ts.map +1 -1
- package/dist/commands/impact.command.js +115 -12
- package/dist/commands/infer.command.d.ts.map +1 -1
- package/dist/commands/infer.command.js +20 -45
- package/dist/commands/ingest.command.d.ts +0 -1
- package/dist/commands/ingest.command.d.ts.map +1 -1
- package/dist/commands/ingest.command.js +25 -41
- package/dist/commands/knowledge-author.command.d.ts +0 -3
- package/dist/commands/knowledge-author.command.d.ts.map +1 -1
- package/dist/commands/knowledge-author.command.js +10 -23
- package/dist/commands/knowledge.command.d.ts.map +1 -1
- package/dist/commands/knowledge.command.js +469 -129
- package/dist/commands/languages.command.d.ts.map +1 -1
- package/dist/commands/languages.command.js +27 -0
- package/dist/commands/lint.command.d.ts.map +1 -1
- package/dist/commands/lint.command.js +3 -0
- package/dist/commands/mcp.command.d.ts +18 -0
- package/dist/commands/mcp.command.d.ts.map +1 -1
- package/dist/commands/mcp.command.js +33 -8
- package/dist/commands/onboard.command.d.ts.map +1 -1
- package/dist/commands/onboard.command.js +20 -0
- package/dist/commands/owners.command.d.ts.map +1 -1
- package/dist/commands/owners.command.js +14 -2
- package/dist/commands/packs-new.d.ts +13 -1
- package/dist/commands/packs-new.d.ts.map +1 -1
- package/dist/commands/packs-new.js +500 -335
- package/dist/commands/packs.command.d.ts.map +1 -1
- package/dist/commands/packs.command.js +378 -36
- package/dist/commands/paths.command.d.ts.map +1 -1
- package/dist/commands/paths.command.js +9 -1
- package/dist/commands/pipelines.command.d.ts.map +1 -1
- package/dist/commands/pipelines.command.js +7 -1
- package/dist/commands/plan-check.command.d.ts.map +1 -1
- package/dist/commands/plan-check.command.js +3 -0
- package/dist/commands/plan.command.d.ts.map +1 -1
- package/dist/commands/plan.command.js +3 -0
- package/dist/commands/playbooks.command.d.ts.map +1 -1
- package/dist/commands/playbooks.command.js +7 -2
- package/dist/commands/policy-lint.command.d.ts +19 -2
- package/dist/commands/policy-lint.command.d.ts.map +1 -1
- package/dist/commands/policy-lint.command.js +224 -65
- package/dist/commands/policy.command.d.ts.map +1 -1
- package/dist/commands/policy.command.js +6 -1
- package/dist/commands/pr.command.d.ts.map +1 -1
- package/dist/commands/pr.command.js +14 -0
- package/dist/commands/presets.command.d.ts.map +1 -1
- package/dist/commands/presets.command.js +12 -27
- package/dist/commands/profiles.command.d.ts.map +1 -1
- package/dist/commands/profiles.command.js +94 -26
- package/dist/commands/provenance.command.js +1 -1
- package/dist/commands/quality.command.d.ts.map +1 -1
- package/dist/commands/quality.command.js +129 -33
- package/dist/commands/recommend.command.d.ts +20 -4
- package/dist/commands/recommend.command.d.ts.map +1 -1
- package/dist/commands/recommend.command.js +172 -278
- package/dist/commands/registrations.command.d.ts.map +1 -1
- package/dist/commands/registrations.command.js +138 -13
- package/dist/commands/registry-lifecycle-run.d.ts +14 -0
- package/dist/commands/registry-lifecycle-run.d.ts.map +1 -0
- package/dist/commands/registry-lifecycle-run.js +336 -0
- package/dist/commands/registry.command.d.ts.map +1 -1
- package/dist/commands/registry.command.js +235 -62
- package/dist/commands/release.command.d.ts.map +1 -1
- package/dist/commands/release.command.js +99 -20
- package/dist/commands/report.command.d.ts.map +1 -1
- package/dist/commands/report.command.js +38 -2
- package/dist/commands/reuse-coverage.command.d.ts +23 -0
- package/dist/commands/reuse-coverage.command.d.ts.map +1 -0
- package/dist/commands/reuse-coverage.command.js +536 -0
- package/dist/commands/reuse.command.d.ts +3 -18
- package/dist/commands/reuse.command.d.ts.map +1 -1
- package/dist/commands/reuse.command.js +395 -244
- package/dist/commands/review.command.d.ts.map +1 -1
- package/dist/commands/review.command.js +33 -1
- package/dist/commands/rounds.command.d.ts.map +1 -1
- package/dist/commands/rounds.command.js +5 -0
- package/dist/commands/safety.command.d.ts.map +1 -1
- package/dist/commands/safety.command.js +9 -0
- package/dist/commands/scaffolds.command.d.ts.map +1 -1
- package/dist/commands/scaffolds.command.js +97 -25
- package/dist/commands/search.command.d.ts +0 -8
- package/dist/commands/search.command.d.ts.map +1 -1
- package/dist/commands/search.command.js +136 -28
- package/dist/commands/self-config-xrefs.command.d.ts +24 -0
- package/dist/commands/self-config-xrefs.command.d.ts.map +1 -0
- package/dist/commands/self-config-xrefs.command.js +170 -0
- package/dist/commands/self-config.command.d.ts.map +1 -1
- package/dist/commands/self-config.command.js +261 -65
- package/dist/commands/smart-context.command.d.ts.map +1 -1
- package/dist/commands/smart-context.command.js +39 -3
- package/dist/commands/spec.command.d.ts.map +1 -1
- package/dist/commands/spec.command.js +3 -0
- package/dist/commands/stats.command.d.ts.map +1 -1
- package/dist/commands/stats.command.js +3 -0
- package/dist/commands/surface.command.d.ts +6 -1
- package/dist/commands/surface.command.d.ts.map +1 -1
- package/dist/commands/surface.command.js +256 -54
- package/dist/commands/task-context.command.js +1 -1
- package/dist/commands/task.command.d.ts.map +1 -1
- package/dist/commands/task.command.js +22 -1
- package/dist/commands/templates.command.d.ts +4 -0
- package/dist/commands/templates.command.d.ts.map +1 -1
- package/dist/commands/templates.command.js +109 -22
- package/dist/commands/test.command.d.ts.map +1 -1
- package/dist/commands/test.command.js +161 -33
- package/dist/commands/tests.command.d.ts.map +1 -1
- package/dist/commands/tests.command.js +29 -3
- package/dist/commands/trace.command.d.ts.map +1 -1
- package/dist/commands/trace.command.js +29 -4
- package/dist/commands/watch.command.d.ts.map +1 -1
- package/dist/commands/watch.command.js +3 -0
- package/dist/commands/why.command.d.ts.map +1 -1
- package/dist/commands/why.command.js +3 -0
- package/dist/commands/wiring.command.d.ts +18 -4
- package/dist/commands/wiring.command.d.ts.map +1 -1
- package/dist/commands/wiring.command.js +362 -74
- package/dist/dashboard/code-intelligence-data.js +4 -4
- package/dist/diff/deleted-orphan-coverage.d.ts +32 -0
- package/dist/diff/deleted-orphan-coverage.d.ts.map +1 -0
- package/dist/diff/deleted-orphan-coverage.js +107 -0
- package/dist/diff/deleted-orphan-scope-notes.d.ts +23 -0
- package/dist/diff/deleted-orphan-scope-notes.d.ts.map +1 -0
- package/dist/diff/deleted-orphan-scope-notes.js +49 -0
- package/dist/diff/deleted-orphans.d.ts +32 -0
- package/dist/diff/deleted-orphans.d.ts.map +1 -1
- package/dist/diff/deleted-orphans.js +42 -2
- package/dist/dispatch/closest-match.d.ts +15 -0
- package/dist/dispatch/closest-match.d.ts.map +1 -0
- package/dist/dispatch/closest-match.js +47 -0
- package/dist/dispatch/global-flags.d.ts +94 -0
- package/dist/dispatch/global-flags.d.ts.map +1 -0
- package/dist/dispatch/global-flags.js +123 -0
- package/dist/dispatch/guard-invocation-input.d.ts +24 -0
- package/dist/dispatch/guard-invocation-input.d.ts.map +1 -0
- package/dist/dispatch/guard-invocation-input.js +1 -0
- package/dist/dispatch/guard-invocation.d.ts +33 -0
- package/dist/dispatch/guard-invocation.d.ts.map +1 -0
- package/dist/dispatch/guard-invocation.js +183 -0
- package/dist/dispatch/help-intercept.d.ts +22 -0
- package/dist/dispatch/help-intercept.d.ts.map +1 -0
- package/dist/dispatch/help-intercept.js +42 -0
- package/dist/dispatch/i-declared-invocation.d.ts +17 -0
- package/dist/dispatch/i-declared-invocation.d.ts.map +1 -0
- package/dist/dispatch/i-declared-invocation.js +1 -0
- package/dist/dispatch/i-unknown-flag-refusal-input.d.ts +28 -0
- package/dist/dispatch/i-unknown-flag-refusal-input.d.ts.map +1 -0
- package/dist/dispatch/i-unknown-flag-refusal-input.js +1 -0
- package/dist/dispatch/invocation-rejection-kind.d.ts +15 -0
- package/dist/dispatch/invocation-rejection-kind.d.ts.map +1 -0
- package/dist/dispatch/invocation-rejection-kind.js +15 -0
- package/dist/dispatch/invocation-rejection.d.ts +18 -0
- package/dist/dispatch/invocation-rejection.d.ts.map +1 -0
- package/dist/dispatch/invocation-rejection.js +1 -0
- package/dist/dispatch/judge-invocation.d.ts +24 -0
- package/dist/dispatch/judge-invocation.d.ts.map +1 -0
- package/dist/dispatch/judge-invocation.js +50 -0
- package/dist/dispatch/positional-mode.d.ts +18 -0
- package/dist/dispatch/positional-mode.d.ts.map +1 -0
- package/dist/dispatch/positional-mode.js +18 -0
- package/dist/dispatch/read-tracking-map.d.ts +28 -0
- package/dist/dispatch/read-tracking-map.d.ts.map +1 -0
- package/dist/dispatch/read-tracking-map.js +58 -0
- package/dist/dispatch/refuse-sibling-valve-flags.d.ts +30 -0
- package/dist/dispatch/refuse-sibling-valve-flags.d.ts.map +1 -0
- package/dist/dispatch/refuse-sibling-valve-flags.js +65 -0
- package/dist/dispatch/subverb-spec.d.ts +26 -0
- package/dist/dispatch/subverb-spec.d.ts.map +1 -0
- package/dist/dispatch/subverb-spec.js +1 -0
- package/dist/dispatch/undocumented-flag-reads.d.ts +22 -0
- package/dist/dispatch/undocumented-flag-reads.d.ts.map +1 -0
- package/dist/dispatch/undocumented-flag-reads.js +283 -0
- package/dist/dispatch/unknown-flag-refusal-mode.d.ts +13 -0
- package/dist/dispatch/unknown-flag-refusal-mode.d.ts.map +1 -0
- package/dist/dispatch/unknown-flag-refusal-mode.js +13 -0
- package/dist/dispatch/unknown-flag-refusal.d.ts +22 -0
- package/dist/dispatch/unknown-flag-refusal.d.ts.map +1 -0
- package/dist/dispatch/unknown-flag-refusal.js +57 -0
- package/dist/dispatch/unread-flags.d.ts +152 -0
- package/dist/dispatch/unread-flags.d.ts.map +1 -0
- package/dist/dispatch/unread-flags.js +295 -0
- package/dist/dispatch/verdict-valve-flag.d.ts +21 -0
- package/dist/dispatch/verdict-valve-flag.d.ts.map +1 -0
- package/dist/dispatch/verdict-valve-flag.js +21 -0
- package/dist/dispatch/walk-declared-subverbs.d.ts +14 -0
- package/dist/dispatch/walk-declared-subverbs.d.ts.map +1 -0
- package/dist/dispatch/walk-declared-subverbs.js +28 -0
- package/dist/exit-codes.d.ts +41 -3
- package/dist/exit-codes.d.ts.map +1 -1
- package/dist/exit-codes.js +153 -14
- package/dist/finish/run-finish.d.ts +72 -5
- package/dist/finish/run-finish.d.ts.map +1 -1
- package/dist/finish/run-finish.js +453 -104
- package/dist/gates/accepted-empty-note.d.ts +10 -0
- package/dist/gates/accepted-empty-note.d.ts.map +1 -0
- package/dist/gates/accepted-empty-note.js +11 -0
- package/dist/gates/allow-empty.d.ts +25 -0
- package/dist/gates/allow-empty.d.ts.map +1 -0
- package/dist/gates/allow-empty.js +27 -0
- package/dist/gates/asset-doctor-failing-units.d.ts +16 -0
- package/dist/gates/asset-doctor-failing-units.d.ts.map +1 -0
- package/dist/gates/asset-doctor-failing-units.js +14 -0
- package/dist/gates/asset-doctor-failure-line.d.ts +16 -0
- package/dist/gates/asset-doctor-failure-line.d.ts.map +1 -0
- package/dist/gates/asset-doctor-failure-line.js +28 -0
- package/dist/gates/empty-rule-advice-lines.d.ts +15 -0
- package/dist/gates/empty-rule-advice-lines.d.ts.map +1 -0
- package/dist/gates/empty-rule-advice-lines.js +20 -0
- package/dist/gates/gate-envelope.d.ts +85 -8
- package/dist/gates/gate-envelope.d.ts.map +1 -1
- package/dist/gates/gate-envelope.js +56 -7
- package/dist/gates/gate-rule-globs.d.ts +67 -0
- package/dist/gates/gate-rule-globs.d.ts.map +1 -0
- package/dist/gates/gate-rule-globs.js +139 -0
- package/dist/gates/gate-rule-view.d.ts +25 -6
- package/dist/gates/gate-rule-view.d.ts.map +1 -1
- package/dist/gates/gate-rule-view.js +105 -77
- package/dist/gates/i-coverage-dead-glob.d.ts +19 -0
- package/dist/gates/i-coverage-dead-glob.d.ts.map +1 -0
- package/dist/gates/i-coverage-dead-glob.js +1 -0
- package/dist/gates/i-coverage-negation.d.ts +13 -0
- package/dist/gates/i-coverage-negation.d.ts.map +1 -0
- package/dist/gates/i-coverage-negation.js +1 -0
- package/dist/gates/i-registration-query-settle-input.d.ts +18 -0
- package/dist/gates/i-registration-query-settle-input.d.ts.map +1 -0
- package/dist/gates/i-registration-query-settle-input.js +1 -0
- package/dist/gates/i-unit-state-note-row.d.ts +16 -0
- package/dist/gates/i-unit-state-note-row.d.ts.map +1 -0
- package/dist/gates/i-unit-state-note-row.js +1 -0
- package/dist/gates/i-unit-state-notes.d.ts +32 -0
- package/dist/gates/i-unit-state-notes.d.ts.map +1 -0
- package/dist/gates/i-unit-state-notes.js +1 -0
- package/dist/gates/incomplete-registry-inventory.d.ts +19 -0
- package/dist/gates/incomplete-registry-inventory.d.ts.map +1 -0
- package/dist/gates/incomplete-registry-inventory.js +63 -0
- package/dist/gates/measure-registration-roles.d.ts +10 -0
- package/dist/gates/measure-registration-roles.d.ts.map +1 -0
- package/dist/gates/measure-registration-roles.js +9 -0
- package/dist/gates/plane-verdict.d.ts +14 -0
- package/dist/gates/plane-verdict.d.ts.map +1 -0
- package/dist/gates/plane-verdict.js +22 -0
- package/dist/gates/qualify-clean-for-units.d.ts +12 -0
- package/dist/gates/qualify-clean-for-units.d.ts.map +1 -0
- package/dist/gates/qualify-clean-for-units.js +18 -0
- package/dist/gates/registration-graph-verdict.d.ts +34 -0
- package/dist/gates/registration-graph-verdict.d.ts.map +1 -0
- package/dist/gates/registration-graph-verdict.js +70 -0
- package/dist/gates/registration-roles.d.ts +9 -0
- package/dist/gates/registration-roles.d.ts.map +1 -0
- package/dist/gates/registration-roles.js +1 -0
- package/dist/gates/registry-liveness.d.ts +11 -0
- package/dist/gates/registry-liveness.d.ts.map +1 -0
- package/dist/gates/registry-liveness.js +13 -0
- package/dist/gates/rule-coverage.d.ts +225 -4
- package/dist/gates/rule-coverage.d.ts.map +1 -1
- package/dist/gates/rule-coverage.js +610 -43
- package/dist/gates/run-gate-planes.d.ts +58 -0
- package/dist/gates/run-gate-planes.d.ts.map +1 -0
- package/dist/gates/run-gate-planes.js +403 -0
- package/dist/gates/scaffold-selftest.d.ts +56 -0
- package/dist/gates/scaffold-selftest.d.ts.map +1 -0
- package/dist/gates/scaffold-selftest.js +119 -0
- package/dist/gates/seam-rejected-rules.d.ts +28 -0
- package/dist/gates/seam-rejected-rules.d.ts.map +1 -0
- package/dist/gates/seam-rejected-rules.js +95 -0
- package/dist/gates/self-test-check.d.ts +29 -0
- package/dist/gates/self-test-check.d.ts.map +1 -0
- package/dist/gates/self-test-check.js +1 -0
- package/dist/gates/self-test-subject.d.ts +28 -0
- package/dist/gates/self-test-subject.d.ts.map +1 -0
- package/dist/gates/self-test-subject.js +1 -0
- package/dist/gates/self-test.d.ts +20 -0
- package/dist/gates/self-test.d.ts.map +1 -0
- package/dist/gates/self-test.js +82 -0
- package/dist/gates/settle-verdict.d.ts +14 -0
- package/dist/gates/settle-verdict.d.ts.map +1 -0
- package/dist/gates/settle-verdict.js +13 -0
- package/dist/gates/settled-verdict.d.ts +8 -0
- package/dist/gates/settled-verdict.d.ts.map +1 -0
- package/dist/gates/settled-verdict.js +1 -0
- package/dist/gates/template-registry-coverage.d.ts +18 -0
- package/dist/gates/template-registry-coverage.d.ts.map +1 -0
- package/dist/gates/template-registry-coverage.js +24 -0
- package/dist/gates/unit-state-notes.d.ts +40 -0
- package/dist/gates/unit-state-notes.d.ts.map +1 -0
- package/dist/gates/unit-state-notes.js +71 -0
- package/dist/gates/verdict-line.d.ts +18 -0
- package/dist/gates/verdict-line.d.ts.map +1 -0
- package/dist/gates/verdict-line.js +40 -0
- package/dist/graph/graph-reuse-lookup.d.ts +10 -0
- package/dist/graph/graph-reuse-lookup.d.ts.map +1 -0
- package/dist/graph/graph-reuse-lookup.js +41 -0
- package/dist/graph/index-behind-hint.d.ts +11 -0
- package/dist/graph/index-behind-hint.d.ts.map +1 -0
- package/dist/graph/index-behind-hint.js +27 -0
- package/dist/knowledge/knowledge-stale-gate-flags.d.ts +3 -0
- package/dist/knowledge/knowledge-stale-gate-flags.d.ts.map +1 -0
- package/dist/knowledge/knowledge-stale-gate-flags.js +1 -0
- package/dist/knowledge/knowledge-stale-gate-input.d.ts +3 -0
- package/dist/knowledge/knowledge-stale-gate-input.d.ts.map +1 -0
- package/dist/knowledge/knowledge-stale-gate-input.js +1 -0
- package/dist/knowledge/knowledge-stale-gate-result.d.ts +3 -0
- package/dist/knowledge/knowledge-stale-gate-result.d.ts.map +1 -0
- package/dist/knowledge/knowledge-stale-gate-result.js +1 -0
- package/dist/knowledge/knowledge-stale-gate.d.ts +10 -0
- package/dist/knowledge/knowledge-stale-gate.d.ts.map +1 -0
- package/dist/knowledge/knowledge-stale-gate.js +9 -0
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +204 -83
- package/dist/output/failure-hints.d.ts.map +1 -1
- package/dist/output/failure-hints.js +11 -9
- package/dist/output/rejected-entries-note.d.ts +57 -0
- package/dist/output/rejected-entries-note.d.ts.map +1 -0
- package/dist/output/rejected-entries-note.js +103 -0
- package/dist/output/stdout-is-pipe.d.ts +13 -0
- package/dist/output/stdout-is-pipe.d.ts.map +1 -0
- package/dist/output/stdout-is-pipe.js +21 -0
- package/dist/packs/stale-build-warning.d.ts +11 -0
- package/dist/packs/stale-build-warning.d.ts.map +1 -0
- package/dist/packs/stale-build-warning.js +23 -0
- package/dist/quality/run-quality.d.ts +123 -0
- package/dist/quality/run-quality.d.ts.map +1 -0
- package/dist/quality/run-quality.js +442 -0
- package/dist/schemas/json-schemas.d.ts +184 -3
- package/dist/schemas/json-schemas.d.ts.map +1 -1
- package/dist/schemas/json-schemas.js +113 -2
- package/dist/shrk.d.ts +3 -0
- package/dist/shrk.d.ts.map +1 -0
- package/dist/shrk.js +30 -0
- package/dist/surface/audience-applicability.d.ts +26 -0
- package/dist/surface/audience-applicability.d.ts.map +1 -0
- package/dist/surface/audience-applicability.js +60 -0
- package/dist/surface/catalog-command-safety.d.ts +18 -0
- package/dist/surface/catalog-command-safety.d.ts.map +1 -0
- package/dist/surface/catalog-command-safety.js +62 -0
- package/dist/surface/cli-command-resolver.d.ts +21 -0
- package/dist/surface/cli-command-resolver.d.ts.map +1 -0
- package/dist/surface/cli-command-resolver.js +87 -0
- package/dist/surface/command-dispatch-kind.d.ts +20 -0
- package/dist/surface/command-dispatch-kind.d.ts.map +1 -0
- package/dist/surface/command-dispatch-kind.js +20 -0
- package/dist/surface/command-index-entry.d.ts +40 -0
- package/dist/surface/command-index-entry.d.ts.map +1 -0
- package/dist/surface/command-index-entry.js +1 -0
- package/dist/surface/command-index.d.ts +77 -0
- package/dist/surface/command-index.d.ts.map +1 -0
- package/dist/surface/command-index.js +323 -0
- package/dist/surface/i-command-index.d.ts +22 -0
- package/dist/surface/i-command-index.d.ts.map +1 -0
- package/dist/surface/i-command-index.js +1 -0
- package/dist/surface/i-command-string-context.d.ts +20 -0
- package/dist/surface/i-command-string-context.d.ts.map +1 -0
- package/dist/surface/i-command-string-context.js +1 -0
- package/dist/surface/i-surface-denial.d.ts +13 -0
- package/dist/surface/i-surface-denial.d.ts.map +1 -0
- package/dist/surface/i-surface-denial.js +1 -0
- package/dist/surface/load-surface-context.d.ts +17 -1
- package/dist/surface/load-surface-context.d.ts.map +1 -1
- package/dist/surface/load-surface-context.js +48 -10
- package/dist/surface/not-enabled-error.d.ts +38 -4
- package/dist/surface/not-enabled-error.d.ts.map +1 -1
- package/dist/surface/not-enabled-error.js +96 -6
- package/dist/surface/profiles.d.ts +7 -0
- package/dist/surface/profiles.d.ts.map +1 -1
- package/dist/surface/resolve-command-string.d.ts +10 -0
- package/dist/surface/resolve-command-string.d.ts.map +1 -0
- package/dist/surface/resolve-command-string.js +572 -0
- package/dist/surface/surface-config-writer.d.ts +7 -2
- package/dist/surface/surface-config-writer.d.ts.map +1 -1
- package/dist/surface/surface-config-writer.js +25 -6
- package/dist/surface/surface-layer.d.ts +11 -0
- package/dist/surface/surface-layer.d.ts.map +1 -0
- package/dist/surface/surface-layer.js +11 -0
- package/dist/surface/surface-refusal-reason.d.ts +16 -0
- package/dist/surface/surface-refusal-reason.d.ts.map +1 -0
- package/dist/surface/surface-refusal-reason.js +16 -0
- package/dist/surface/surface-selector.d.ts +26 -0
- package/dist/surface/surface-selector.d.ts.map +1 -0
- package/dist/surface/surface-selector.js +42 -0
- package/dist/surface/surface-summary.d.ts +61 -18
- package/dist/surface/surface-summary.d.ts.map +1 -1
- package/dist/surface/surface-summary.js +147 -60
- package/dist/surface/tier.d.ts +85 -22
- package/dist/surface/tier.d.ts.map +1 -1
- package/dist/surface/tier.js +132 -30
- package/dist/usage/usage-log.d.ts +6 -1
- package/dist/usage/usage-log.d.ts.map +1 -1
- package/dist/usage/usage-log.js +7 -2
- package/dist/validation/run-validation-loop.d.ts +9 -0
- package/dist/validation/run-validation-loop.d.ts.map +1 -1
- package/dist/validation/run-validation-loop.js +14 -11
- package/dist/validation/typecheck-emitted.d.ts +8 -9
- package/dist/validation/typecheck-emitted.d.ts.map +1 -1
- package/dist/validation/typecheck-emitted.js +17 -97
- package/package.json +34 -34
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checks.command.d.ts","sourceRoot":"","sources":["../../src/commands/checks.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checks.command.d.ts","sourceRoot":"","sources":["../../src/commands/checks.command.ts"],"names":[],"mappings":"AA2CA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AA2EhC,eAAO,MAAM,iBAAiB,EAAE,eAoF/B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAyEjC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,eAiE9B,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAoCtC,CAAC;AAwCF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAgEjC,CAAC;AAUF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,eA0CpC,CAAC;AAyBF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAsCjC,CAAC;AA0EF;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,eA6ClC,CAAC"}
|
|
@@ -13,33 +13,123 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from 'node:fs';
|
|
15
15
|
import * as nodePath from 'node:path';
|
|
16
|
-
import { buildCheckAggregate, buildCheckResult, buildCustomChecksRegistry, CHECK_AGGREGATE_SCHEMA, CHECK_RESULT_SCHEMA, CheckResultStatus, convertBiomeToCheckResult, convertEslintToCheckResult, CustomCheckScope, doctorCustomChecks, inspectSharkcraft, parseCheckResult, parseCustomCheckReportFromFile, runCustomCheck, } from '@shrkcrft/inspector';
|
|
16
|
+
import { buildCheckAggregate, buildCheckResult, buildCustomChecksRegistry, CHECK_AGGREGATE_SCHEMA, CHECK_RESULT_SCHEMA, CheckResultStatus, convertBiomeToCheckResult, convertEslintToCheckResult, CustomCheckKind, CustomCheckScope, customCheckScanSurface, doctorCustomChecks, inspectSharkcraft, nearestIds, parseCheckResult, parseCustomCheckReportFromFile, referenceIdExists, referenceIdPool, referenceKindsOf, runCustomCheck, } from '@shrkcrft/inspector';
|
|
17
17
|
import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
|
|
18
|
+
import { PositionalMode } from "../dispatch/positional-mode.js";
|
|
19
|
+
import { ExitCode } from "../exit-codes.js";
|
|
20
|
+
import { ALLOW_EMPTY_FLAG, allowEmptyValve } from "../gates/allow-empty.js";
|
|
21
|
+
import { settleVerdict } from "../gates/settle-verdict.js";
|
|
22
|
+
import { verdictLine } from "../gates/verdict-line.js";
|
|
18
23
|
import { asJson, header } from "../output/format-output.js";
|
|
19
24
|
const CHECKS_DIR_REL = '.sharkcraft/checks';
|
|
25
|
+
/** THE registry build for every `checks` verb — sources project-relative. */
|
|
26
|
+
function loadCustomChecks(inspection) {
|
|
27
|
+
return buildCustomChecksRegistry(inspection.knowledgeEntries, { projectRoot: inspection.projectRoot });
|
|
28
|
+
}
|
|
29
|
+
/** Every declaration that can never run, one line each, with its file and why. */
|
|
30
|
+
function droppedDeclarationLines(registry) {
|
|
31
|
+
const lines = [];
|
|
32
|
+
for (const i of registry.invalid) {
|
|
33
|
+
const check = i.checkId ? ` [${i.checkId}]` : '';
|
|
34
|
+
lines.push(` ✗ ${i.ruleId}${check}${i.source ? ` (${i.source})` : ''} — ${i.reason}`);
|
|
35
|
+
}
|
|
36
|
+
for (const i of registry.ignored) {
|
|
37
|
+
const checks = i.checkIds.length > 0 ? ` checks: ${i.checkIds.join(', ')}` : '';
|
|
38
|
+
lines.push(` ✗ ${i.entryId} [type:${i.entryType}]${checks}${i.source ? ` (${i.source})` : ''} — ${i.reason}`);
|
|
39
|
+
}
|
|
40
|
+
return lines;
|
|
41
|
+
}
|
|
42
|
+
/** The concrete surface the registry scans — what an empty state names. */
|
|
43
|
+
function scanSurfaceLines(surface, scannedRules) {
|
|
44
|
+
const lines = [
|
|
45
|
+
" Custom checks are read from metadata.checks[] on type:'rule' entries in TypeScript rule / knowledge files:",
|
|
46
|
+
];
|
|
47
|
+
if (surface.files.length === 0) {
|
|
48
|
+
lines.push(' (none — no TypeScript ruleFiles / knowledgeFiles in sharkcraft.config.ts, and no pack contributes one)');
|
|
49
|
+
}
|
|
50
|
+
for (const f of surface.files)
|
|
51
|
+
lines.push(` ${f.via.padEnd(16)} ${f.file}`);
|
|
52
|
+
const md = surface.markdownRules > 0
|
|
53
|
+
? ` — ${surface.markdownRules} of the rules scanned are Markdown`
|
|
54
|
+
: surface.markdownFiles.length > 0
|
|
55
|
+
? ` (Markdown sources: ${surface.markdownFiles.join(', ')})`
|
|
56
|
+
: '';
|
|
57
|
+
lines.push(` Scanned ${scannedRules} type:'rule' ${scannedRules === 1 ? 'entry' : 'entries'}. Markdown rules cannot carry metadata${md}.`);
|
|
58
|
+
return lines;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* `--rule` must name a RULE — resolved through the one reference registry, so
|
|
62
|
+
* a typo is a usage error with a did-you-mean, never an empty listing that
|
|
63
|
+
* reads as "nothing declared".
|
|
64
|
+
*/
|
|
65
|
+
function unknownRuleFilter(inspection, id, usage, wantJson) {
|
|
66
|
+
const kinds = referenceKindsOf(inspection, id).filter((k) => k !== 'rule');
|
|
67
|
+
const near = nearestIds(id, referenceIdPool(inspection, ['rule'])).map((n) => n.id);
|
|
68
|
+
const why = kinds.length > 0
|
|
69
|
+
? `"${id}" is a ${kinds.join(' | ')} id, not a type:'rule' entry — custom checks are declared on rules only.`
|
|
70
|
+
: `no type:'rule' entry has the id "${id}".`;
|
|
71
|
+
process.stderr.write(`--rule ${id}: ${why}${near.length > 0 ? ` Did you mean: ${near.join(', ')}?` : ''}\nUsage: ${usage}\n`);
|
|
72
|
+
if (wantJson) {
|
|
73
|
+
process.stdout.write(asJson({ error: 'unknown-rule', rule: id, resolvedAs: kinds, didYouMean: near, exitCode: ExitCode.UsageError }) + '\n');
|
|
74
|
+
}
|
|
75
|
+
return ExitCode.UsageError;
|
|
76
|
+
}
|
|
77
|
+
const CHECKS_LIST_USAGE = 'shrk checks list [--rule <ruleId>] [--kind <k>] [--json]';
|
|
20
78
|
export const checksListCommand = {
|
|
21
79
|
name: 'list',
|
|
22
|
-
description:
|
|
23
|
-
usage:
|
|
80
|
+
description: "List custom checks declared on type:'rule' entries (metadata.checks[] in TypeScript rule / knowledge files, local or pack). Every declaration that can never run (on a non-rule entry, in a Markdown rule, a non-array value) is named with its file and reason. Exit 0 · 1 a dropped declaration · 3 --rule names no rule. Read-only.",
|
|
81
|
+
usage: CHECKS_LIST_USAGE,
|
|
82
|
+
booleanFlags: new Set(['json']),
|
|
24
83
|
async run(args) {
|
|
25
84
|
const cwd = resolveCwd(args);
|
|
26
85
|
const inspection = await inspectSharkcraft({ cwd });
|
|
27
|
-
const registry =
|
|
86
|
+
const registry = loadCustomChecks(inspection);
|
|
28
87
|
const ruleFilter = flagString(args, 'rule');
|
|
29
88
|
const kindFilter = flagString(args, 'kind');
|
|
89
|
+
const wantJson = flagBool(args, 'json');
|
|
90
|
+
if (ruleFilter && !referenceIdExists(inspection, 'rule', ruleFilter)) {
|
|
91
|
+
return unknownRuleFilter(inspection, ruleFilter, CHECKS_LIST_USAGE, wantJson);
|
|
92
|
+
}
|
|
30
93
|
let entries = registry.entries;
|
|
31
94
|
if (ruleFilter)
|
|
32
95
|
entries = entries.filter((e) => e.ruleId === ruleFilter);
|
|
33
96
|
if (kindFilter)
|
|
34
97
|
entries = entries.filter((e) => e.descriptor.kind === kindFilter);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
98
|
+
const filterLabel = [ruleFilter ? `--rule ${ruleFilter}` : '', kindFilter ? `--kind ${kindFilter}` : '']
|
|
99
|
+
.filter(Boolean)
|
|
100
|
+
.join(' ');
|
|
101
|
+
const dropped = registry.invalid.length + registry.ignored.length;
|
|
102
|
+
// One data path: the exit, the JSON and the text all read these numbers.
|
|
103
|
+
const exit = dropped > 0 ? ExitCode.Failure : ExitCode.VerifiedPass;
|
|
104
|
+
const surface = customCheckScanSurface(inspection);
|
|
105
|
+
if (wantJson) {
|
|
106
|
+
process.stdout.write(asJson({
|
|
107
|
+
...registry,
|
|
108
|
+
entries,
|
|
109
|
+
declared: registry.entries.length,
|
|
110
|
+
...(filterLabel ? { filters: { rule: ruleFilter ?? null, kind: kindFilter ?? null } } : {}),
|
|
111
|
+
surface,
|
|
112
|
+
exitCode: exit,
|
|
113
|
+
}) + '\n');
|
|
114
|
+
return exit;
|
|
115
|
+
}
|
|
116
|
+
process.stdout.write(header(`Custom checks (${entries.length}${filterLabel ? ` of ${registry.entries.length}` : ''})`));
|
|
117
|
+
if (entries.length === 0 && registry.entries.length > 0) {
|
|
118
|
+
// Filters excluded everything — which is not "nothing declared".
|
|
119
|
+
const n = registry.entries.length;
|
|
120
|
+
process.stdout.write(` ${n} ${n === 1 ? 'check' : 'checks'} declared, 0 match ${filterLabel}\n`);
|
|
121
|
+
const knownKinds = Object.values(CustomCheckKind);
|
|
122
|
+
if (kindFilter && !knownKinds.includes(kindFilter)) {
|
|
123
|
+
process.stdout.write(` (known kinds: ${knownKinds.join(', ')})\n`);
|
|
124
|
+
}
|
|
38
125
|
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
126
|
+
else if (entries.length === 0 && dropped === 0) {
|
|
127
|
+
process.stdout.write(' No checks declared.\n');
|
|
128
|
+
for (const line of scanSurfaceLines(surface, registry.scannedRules))
|
|
129
|
+
process.stdout.write(`${line}\n`);
|
|
130
|
+
}
|
|
131
|
+
else if (entries.length === 0) {
|
|
132
|
+
process.stdout.write(` 0 checks registered — every declaration below was dropped.\n`);
|
|
43
133
|
}
|
|
44
134
|
for (const e of entries) {
|
|
45
135
|
const d = e.descriptor;
|
|
@@ -65,60 +155,114 @@ export const checksListCommand = {
|
|
|
65
155
|
process.stdout.write(` ${d.id}: ${d.ruleIds.join(', ')}\n`);
|
|
66
156
|
}
|
|
67
157
|
}
|
|
68
|
-
|
|
158
|
+
if (dropped > 0) {
|
|
159
|
+
process.stdout.write(`\n Dropped declarations (${dropped}) — declared, but can never run:\n`);
|
|
160
|
+
for (const line of droppedDeclarationLines(registry))
|
|
161
|
+
process.stdout.write(`${line}\n`);
|
|
162
|
+
process.stdout.write('\n Fix each declaration above (`shrk checks doctor` validates the rest).\n');
|
|
163
|
+
}
|
|
164
|
+
return exit;
|
|
69
165
|
},
|
|
70
166
|
};
|
|
71
167
|
export const checksDoctorCommand = {
|
|
72
168
|
name: 'doctor',
|
|
73
|
-
description: 'Validate custom-check descriptors
|
|
74
|
-
usage: 'shrk checks doctor [--
|
|
169
|
+
description: 'Validate custom-check descriptors — missing fields, duplicate ids, and every declaration that can never run (on a non-rule entry, in a Markdown rule, a non-array value). Exit 0 validated · 1 errors (or warnings under --strict) · 2 nothing declared (--allow-empty accepts that explicitly). Read-only.',
|
|
170
|
+
usage: 'shrk checks doctor [--strict] [--allow-empty] [--json]',
|
|
171
|
+
booleanFlags: new Set(['json', 'strict', ALLOW_EMPTY_FLAG]),
|
|
75
172
|
async run(args) {
|
|
76
173
|
const cwd = resolveCwd(args);
|
|
77
174
|
const inspection = await inspectSharkcraft({ cwd });
|
|
78
|
-
const registry =
|
|
175
|
+
const registry = loadCustomChecks(inspection);
|
|
79
176
|
const report = doctorCustomChecks(registry);
|
|
177
|
+
const surface = customCheckScanSurface(inspection);
|
|
178
|
+
const expected = report.declaredChecks;
|
|
179
|
+
const ignoredLabels = registry.ignored.map((i) => `${i.entryId}${i.source ? ` (${i.source})` : ''}`);
|
|
180
|
+
// Declared checks are the unit: registered and invalid ones were validated
|
|
181
|
+
// (an invalid one failed); an ignored one was never read. Nothing declared
|
|
182
|
+
// is expected 0 — "validated nothing" is never a ✓.
|
|
183
|
+
const coverage = {
|
|
184
|
+
unit: 'declared checks',
|
|
185
|
+
expected,
|
|
186
|
+
examined: registry.entries.length + registry.invalid.length,
|
|
187
|
+
root: inspection.projectRoot,
|
|
188
|
+
reason: expected === 0
|
|
189
|
+
? `no type:'rule' entry declares metadata.checks[] (${registry.scannedRules} rule${registry.scannedRules === 1 ? '' : 's'} scanned)`
|
|
190
|
+
: 'declared where the registry does not read them, so never validated',
|
|
191
|
+
...(ignoredLabels.length > 0 ? { unexamined: ignoredLabels.slice(0, 20), unexaminedTotal: ignoredLabels.length } : {}),
|
|
192
|
+
...allowEmptyValve(args, expected),
|
|
193
|
+
};
|
|
194
|
+
const strict = flagBool(args, 'strict');
|
|
195
|
+
const settled = settleVerdict(report.errors > 0 || (strict && report.warnings > 0) ? 1 : 0, [coverage]);
|
|
80
196
|
if (flagBool(args, 'json')) {
|
|
81
|
-
process.stdout.write(asJson(
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
197
|
+
process.stdout.write(asJson({
|
|
198
|
+
...report,
|
|
199
|
+
coverage,
|
|
200
|
+
surface,
|
|
201
|
+
exitCode: settled.exit,
|
|
202
|
+
verdict: settled.verdict,
|
|
203
|
+
shortfalls: settled.shortfalls,
|
|
204
|
+
accepted: settled.accepted,
|
|
205
|
+
}) + '\n');
|
|
206
|
+
return settled.exit;
|
|
207
|
+
}
|
|
208
|
+
process.stdout.write(header('Custom checks doctor'));
|
|
209
|
+
process.stdout.write(` declared ${report.declaredChecks}\n`);
|
|
210
|
+
process.stdout.write(` registered ${report.totalChecks}\n`);
|
|
211
|
+
process.stdout.write(` errors ${report.errors}\n`);
|
|
212
|
+
process.stdout.write(` warnings ${report.warnings}\n`);
|
|
213
|
+
process.stdout.write(` scanned ${report.scannedRules} type:'rule' ${report.scannedRules === 1 ? 'entry' : 'entries'}\n`);
|
|
214
|
+
if (report.details.length > 0) {
|
|
215
|
+
process.stdout.write('\nDetails:\n');
|
|
216
|
+
for (const d of report.details) {
|
|
217
|
+
process.stdout.write(` ${d.severity.padEnd(7)} [${d.checkId}] (${d.ruleId})${d.source ? ` ${d.source}` : ''} — ${d.message}\n`);
|
|
96
218
|
}
|
|
97
219
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
220
|
+
const clean = expected === 0
|
|
221
|
+
? 'No checks declared — accepted.'
|
|
222
|
+
: report.warnings > 0
|
|
223
|
+
? `No blocking descriptor issues — ${report.warnings} warning(s) reported above.`
|
|
224
|
+
: `${report.totalChecks} check descriptor(s) validated — no issues. ✓`;
|
|
225
|
+
const line = verdictLine(settled, clean, expected === 0 ? 'No checks declared — nothing validated.' : undefined);
|
|
226
|
+
if (line)
|
|
227
|
+
process.stdout.write(`\n${line}\n`);
|
|
228
|
+
if (settled.exit === ExitCode.NotVerified && expected === 0) {
|
|
229
|
+
for (const l of scanSurfaceLines(surface, registry.scannedRules))
|
|
230
|
+
process.stdout.write(`${l}\n`);
|
|
231
|
+
process.stdout.write('Pass --allow-empty to accept a project with no custom checks explicitly.\n');
|
|
232
|
+
}
|
|
233
|
+
return settled.exit;
|
|
103
234
|
},
|
|
104
235
|
};
|
|
105
236
|
export const checksRunCommand = {
|
|
106
237
|
name: 'run',
|
|
107
|
-
description: 'Run a custom check. Read-only by default — pass --execute to actually invoke the command.',
|
|
238
|
+
description: 'Run a custom check. Read-only by default — pass --execute to actually invoke the command. A check declared where the registry does not read it (a non-rule entry, a Markdown rule) is named, with why.',
|
|
108
239
|
usage: 'shrk checks run <checkId> [--execute] [--report-path <path>] [--changed-only|--staged|--all] [--json]',
|
|
109
240
|
async run(args) {
|
|
110
241
|
const checkId = args.positional[0];
|
|
111
242
|
if (!checkId) {
|
|
112
243
|
process.stderr.write('Usage: shrk checks run <checkId> [--execute]\n');
|
|
113
|
-
return
|
|
244
|
+
return ExitCode.UsageError;
|
|
114
245
|
}
|
|
115
246
|
const cwd = resolveCwd(args);
|
|
116
247
|
const inspection = await inspectSharkcraft({ cwd });
|
|
117
|
-
const registry =
|
|
248
|
+
const registry = loadCustomChecks(inspection);
|
|
118
249
|
const entry = registry.entries.find((e) => e.descriptor.id === checkId);
|
|
119
250
|
if (!entry) {
|
|
120
|
-
|
|
121
|
-
|
|
251
|
+
// Declared but not registered: say where it is and why, instead of
|
|
252
|
+
// "no such check" next to a declaration the author can see.
|
|
253
|
+
const ignored = registry.ignored.find((i) => i.checkIds.includes(checkId));
|
|
254
|
+
const invalid = registry.invalid.find((i) => i.checkId === checkId);
|
|
255
|
+
if (ignored) {
|
|
256
|
+
process.stderr.write(`Custom check "${checkId}" is declared on ${ignored.entryId} (type:'${ignored.entryType}'${ignored.source ? `, ${ignored.source}` : ''}) but is not registered: ${ignored.reason}.\n`);
|
|
257
|
+
}
|
|
258
|
+
else if (invalid) {
|
|
259
|
+
process.stderr.write(`Custom check "${checkId}" is declared on rule ${invalid.ruleId}${invalid.source ? ` (${invalid.source})` : ''} but is invalid: ${invalid.reason}.\n`);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
const near = nearestIds(checkId, registry.entries.map((e) => e.descriptor.id)).map((n) => n.id);
|
|
263
|
+
process.stderr.write(`No custom check with id "${checkId}".${near.length > 0 ? ` Did you mean: ${near.join(', ')}?` : ''} (\`shrk checks list\` shows every declared check.)\n`);
|
|
264
|
+
}
|
|
265
|
+
return ExitCode.Failure;
|
|
122
266
|
}
|
|
123
267
|
const result = runCustomCheck(entry.descriptor, {
|
|
124
268
|
cwd,
|
|
@@ -155,6 +299,8 @@ export const checksRunCommand = {
|
|
|
155
299
|
};
|
|
156
300
|
export const checksParseReportCommand = {
|
|
157
301
|
name: 'parse-report',
|
|
302
|
+
// positional[0] is the report FILE; a verb-shaped non-file is refused.
|
|
303
|
+
positionals: PositionalMode.Path,
|
|
158
304
|
description: 'Parse a sharkcraft.custom-check/v1 JSON report file (or text fallback) and validate its shape.',
|
|
159
305
|
usage: 'shrk checks parse-report <path> [--check-id <id>] [--json]',
|
|
160
306
|
async run(args) {
|
|
@@ -230,6 +376,8 @@ function listImportedResults(cwd) {
|
|
|
230
376
|
*/
|
|
231
377
|
export const checksImportCommand = {
|
|
232
378
|
name: 'import',
|
|
379
|
+
// positional[0] is the result FILE; a verb-shaped non-file is refused.
|
|
380
|
+
positionals: PositionalMode.Path,
|
|
233
381
|
description: 'Import a sharkcraft.check-result/v1 JSON file (or auto-convert from ESLint JSON) and store it under .sharkcraft/checks/.',
|
|
234
382
|
usage: 'shrk checks import <file> [--tool <name>] [--as eslint|biome|v1] [--json] [--dry-run]',
|
|
235
383
|
async run(args) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ci.command.d.ts","sourceRoot":"","sources":["../../src/commands/ci.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ci.command.d.ts","sourceRoot":"","sources":["../../src/commands/ci.command.ts"],"names":[],"mappings":"AAgBA,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAyehC,eAAO,MAAM,SAAS,EAAE,eAuMvB,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
|
|
2
2
|
import * as nodePath from 'node:path';
|
|
3
|
-
import { auditCiWorkflow, buildCiIntegrityReport, GateStatus, renderAzureCiWorkflow, renderBitbucketCiWorkflow, renderCiIntegrityHtml, renderCiIntegrityMarkdown, renderGitlabCiWorkflow, renderJenkinsCiWorkflow, } from '@shrkcrft/inspector';
|
|
3
|
+
import { auditCiWorkflow, buildCiIntegrityReport, detectSharkcraftRepo, GateStatus, renderAzureCiWorkflow, renderBitbucketCiWorkflow, renderCiIntegrityHtml, renderCiIntegrityMarkdown, renderGitlabCiWorkflow, renderJenkinsCiWorkflow, } from '@shrkcrft/inspector';
|
|
4
4
|
import { flagBool, flagString, flagList, resolveCwd, } from "../command-registry.js";
|
|
5
|
+
import { PositionalMode } from "../dispatch/positional-mode.js";
|
|
5
6
|
import { asJson, header, kv } from "../output/format-output.js";
|
|
6
7
|
function detectRepoAssetState(cwd) {
|
|
7
8
|
const dir = nodePath.join(cwd, 'sharkcraft');
|
|
@@ -46,7 +47,9 @@ function buildSteps(inputs) {
|
|
|
46
47
|
steps.push({ name: 'Drift report', command: 'bun run shrk drift --json > drift.json', artifact: 'drift.json' });
|
|
47
48
|
}
|
|
48
49
|
if (inputs.withBaseline) {
|
|
49
|
-
|
|
50
|
+
// `quality baseline …` was removed; the committed-ledger drift gate is
|
|
51
|
+
// `baseline check` (two-way: a lost entry fails like a gained one).
|
|
52
|
+
steps.push({ name: 'Baseline check', command: 'bun run shrk baseline check --json > baseline-check.json', artifact: 'baseline-check.json' });
|
|
50
53
|
}
|
|
51
54
|
if (inputs.withPolicy) {
|
|
52
55
|
steps.push({ name: 'Policy check', command: 'bun run shrk policy check --json > policy.json', artifact: 'policy.json' });
|
|
@@ -404,6 +407,26 @@ function buildGateExplanations(inputs, state) {
|
|
|
404
407
|
}
|
|
405
408
|
export const ciCommand = {
|
|
406
409
|
name: 'ci',
|
|
410
|
+
positionals: PositionalMode.None,
|
|
411
|
+
subverbs: [
|
|
412
|
+
{
|
|
413
|
+
name: 'scaffold',
|
|
414
|
+
description: 'Scaffold a CI workflow for a provider (dry-run unless --write).',
|
|
415
|
+
usage: 'shrk ci scaffold <provider> [--with-quality] [--with-review] [--with-boundaries] [--with-coverage] [--with-drift-gate] [--with-drift] [--with-baseline] [--with-policy] [--with-owners] [--with-test-impact] [--with-dashboard-e2e] [--with-node-compat] [--with-safety-audit] [--with-command-doctor] [--with-pack-tests --pack-paths <p1,p2>] [--with-knowledge-check] [--with-template-drift] [--with-integrity] [--output <path>] [--write] [--force] [--json]',
|
|
416
|
+
positionals: PositionalMode.Free,
|
|
417
|
+
},
|
|
418
|
+
{
|
|
419
|
+
name: 'permissions',
|
|
420
|
+
description: 'Audit a CI workflow file’s permissions.',
|
|
421
|
+
usage: 'shrk ci permissions <workflow-file> [--provider github-actions|gitlab|bitbucket|azure|jenkins] [--json]',
|
|
422
|
+
positionals: PositionalMode.Path,
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
name: 'report',
|
|
426
|
+
description: 'Aggregate CI reports into one verdict.',
|
|
427
|
+
usage: 'shrk ci report [--reports-dir <dir>] [--format text|markdown|html|json] [--fail-on error|warning|none]',
|
|
428
|
+
},
|
|
429
|
+
],
|
|
407
430
|
description: 'Scaffold CI configurations for SharkCraft (github-actions, gitlab, circleci, bitbucket, azure-pipelines, jenkins, azure). `shrk ci permissions` audits a workflow file. Supports --with-knowledge-check / --with-template-drift / --with-integrity.',
|
|
408
431
|
usage: 'shrk ci scaffold <provider> [--with-quality] [--with-review] [--with-boundaries] [--with-coverage] [--with-drift-gate] [--with-drift] [--with-baseline] [--with-policy] [--with-owners] [--with-test-impact] [--with-dashboard-e2e] [--with-node-compat] [--with-safety-audit] [--with-command-doctor] [--with-pack-tests --pack-paths <p1,p2>] [--with-knowledge-check] [--with-template-drift] [--with-integrity] [--output <path>] [--write] [--force] [--json]\n shrk ci permissions <workflow-file> [--provider github-actions|gitlab|bitbucket|azure|jenkins] [--json]',
|
|
409
432
|
async run(args) {
|
|
@@ -425,6 +448,16 @@ export const ciCommand = {
|
|
|
425
448
|
return 2;
|
|
426
449
|
}
|
|
427
450
|
const cwd = resolveCwd(args);
|
|
451
|
+
// `--with-command-doctor` emits `shrk commands doctor`, which maintains
|
|
452
|
+
// SharkCraft itself: outside SharkCraft's own repository it exits 78 through
|
|
453
|
+
// the surface gate, so the generated step would fail every CI run. THE host
|
|
454
|
+
// authority (`detectSharkcraftRepo`, the one the surface gate reads) decides.
|
|
455
|
+
if (flagBool(args, 'with-command-doctor') && !detectSharkcraftRepo(cwd)) {
|
|
456
|
+
process.stderr.write('--with-command-doctor adds `shrk commands doctor`, which maintains SharkCraft itself and does not apply to ' +
|
|
457
|
+
'this repository — it exits 78 here, so the generated step would fail every CI run. Drop the flag ' +
|
|
458
|
+
'(it is for the SharkCraft repository only).\n');
|
|
459
|
+
return 2;
|
|
460
|
+
}
|
|
428
461
|
const packPathsList = flagList(args, 'pack-paths');
|
|
429
462
|
const withIntegrity = flagBool(args, 'with-integrity');
|
|
430
463
|
// Quickstart / preset auto / pr-checks all expand into the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-intel.command.d.ts","sourceRoot":"","sources":["../../src/commands/code-intel.command.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"code-intel.command.d.ts","sourceRoot":"","sources":["../../src/commands/code-intel.command.ts"],"names":[],"mappings":"AAKA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAKhC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,gBAAgB,EAAE,eA+E9B,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { buildCodeIntelligenceChecks, DoctorSeverity, } from '@shrkcrft/inspector';
|
|
2
2
|
import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
|
|
3
|
+
import { PositionalMode } from "../dispatch/positional-mode.js";
|
|
4
|
+
import { detectGraphFreshness } from '@shrkcrft/graph';
|
|
3
5
|
import { asJson, header, kv } from "../output/format-output.js";
|
|
4
6
|
/**
|
|
5
7
|
* `shrk code-intel` — one-shot view of the 14 code-intelligence
|
|
@@ -18,6 +20,8 @@ import { asJson, header, kv } from "../output/format-output.js";
|
|
|
18
20
|
*/
|
|
19
21
|
export const codeIntelCommand = {
|
|
20
22
|
name: 'code-intel',
|
|
23
|
+
// Flag-driven: a bare token used to be ignored at exit 0.
|
|
24
|
+
positionals: PositionalMode.None,
|
|
21
25
|
description: 'One-shot view of code-intelligence doctor checks (graph, rule-graph, api-surface, quality-gate, migrations, architecture, impact, framework, structural-search, context-planner). Read-only.',
|
|
22
26
|
usage: 'shrk [--cwd <dir>] code-intel [--json] [--markdown] [--only ok,warning,error,info] [--check <id>] [--stale-days N]',
|
|
23
27
|
async run(args) {
|
|
@@ -28,7 +32,10 @@ export const codeIntelCommand = {
|
|
|
28
32
|
const checkId = flagString(args, 'check');
|
|
29
33
|
const staleDaysRaw = flagString(args, 'stale-days');
|
|
30
34
|
const staleDays = staleDaysRaw ? Number.parseInt(staleDaysRaw, 10) : undefined;
|
|
31
|
-
|
|
35
|
+
// Divergence against the working tree — the SAME check `shrk graph status`
|
|
36
|
+
// reports, so the two surfaces cannot contradict each other. Injected
|
|
37
|
+
// because `@shrkcrft/graph` sits above inspector in the layer order.
|
|
38
|
+
const options = { graphDivergence: detectGraphFreshness(cwd) };
|
|
32
39
|
if (typeof staleDays === 'number' && Number.isFinite(staleDays) && staleDays > 0) {
|
|
33
40
|
options.staleThresholdDays = staleDays;
|
|
34
41
|
}
|
|
@@ -27,7 +27,17 @@ export declare enum CommandAudience {
|
|
|
27
27
|
Agent = "agent",
|
|
28
28
|
Ci = "ci",
|
|
29
29
|
PackAuthor = "pack-author",
|
|
30
|
-
Maintainer = "maintainer"
|
|
30
|
+
Maintainer = "maintainer",
|
|
31
|
+
/**
|
|
32
|
+
* The command's OBJECT is SharkCraft itself — its own docs set, examples
|
|
33
|
+
* tree, release artifacts, command catalog, round snapshots (round 11
|
|
34
|
+
* §5.1). Outside SharkCraft's own repository (`detectSharkcraftRepo`, the
|
|
35
|
+
* one host authority) such a command is gated: tier source
|
|
36
|
+
* `tool-maintenance`, hidden from `--help`, and invoking it exits 78 through
|
|
37
|
+
* the surface gate — never a check failure. `surface.enabled` is the escape
|
|
38
|
+
* hatch.
|
|
39
|
+
*/
|
|
40
|
+
ToolMaintenance = "tool-maintenance"
|
|
31
41
|
}
|
|
32
42
|
/**
|
|
33
43
|
* User-journey role. Distinct from {@link SafetyLevel} and from the
|
|
@@ -220,6 +230,11 @@ export declare function r46Overlay(command: string): IR46OverlayEntry | undefine
|
|
|
220
230
|
export declare function commandSurface(e: ICommandCatalogEntry): CommandSurface;
|
|
221
231
|
/** Default audience: humans, plus agents if `mcpAvailable`. */
|
|
222
232
|
export declare function commandAudience(e: ICommandCatalogEntry): readonly CommandAudience[];
|
|
233
|
+
/**
|
|
234
|
+
* True when the row maintains SharkCraft itself ({@link CommandAudience.ToolMaintenance}).
|
|
235
|
+
* The tier resolver gates such a row outside the tool's own repository.
|
|
236
|
+
*/
|
|
237
|
+
export declare function isToolMaintenance(e: ICommandCatalogEntry): boolean;
|
|
223
238
|
/** Task role (or `undefined` when not classified). */
|
|
224
239
|
export declare function commandTaskRole(e: ICommandCatalogEntry): CommandTaskRole | undefined;
|
|
225
240
|
/**
|
|
@@ -256,6 +271,13 @@ export declare function defaultShowInHelp(e: ICommandCatalogEntry): boolean;
|
|
|
256
271
|
* R46-pruned are excluded), sorted by command.
|
|
257
272
|
*/
|
|
258
273
|
export declare function listExplainFamily(): readonly ICommandCatalogEntry[];
|
|
274
|
+
/**
|
|
275
|
+
* Membership in the explain / dry-run family ({@link listExplainFamily}).
|
|
276
|
+
* `--full-help` lists the family in its own section, so the surface summary's
|
|
277
|
+
* `visibleInHelp` counts it too: the one visibility authority and the help
|
|
278
|
+
* renderer must answer "is X in --help" identically.
|
|
279
|
+
*/
|
|
280
|
+
export declare function isExplainFamily(e: ICommandCatalogEntry): boolean;
|
|
259
281
|
/**
|
|
260
282
|
* Short "Use this when…" line derived from `surface`, `taskRole`,
|
|
261
283
|
* `preferredCommand`, `replacedBy`, and `machineOnly`. Empty string when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-catalog.d.ts","sourceRoot":"","sources":["../../src/commands/command-catalog.ts"],"names":[],"mappings":"AAAA,oBAAY,WAAW;IACrB,QAAQ,cAAc;IACtB,iBAAiB,mBAAmB;IACpC,gBAAgB,kBAAkB;IAClC,YAAY,kBAAkB;IAC9B,SAAS,eAAe;IACxB,cAAc,oBAAoB;CACnC;AAED;;;;;;GAMG;AACH,oBAAY,cAAc;IACxB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;IACnB,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAED,8BAA8B;AAC9B,oBAAY,eAAe;IACzB,KAAK,UAAU;IACf,KAAK,UAAU;IACf,EAAE,OAAO;IACT,UAAU,gBAAgB;IAC1B,UAAU,eAAe;
|
|
1
|
+
{"version":3,"file":"command-catalog.d.ts","sourceRoot":"","sources":["../../src/commands/command-catalog.ts"],"names":[],"mappings":"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"}
|