@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
|
@@ -10,63 +10,42 @@
|
|
|
10
10
|
* shrk registry <name> where <id> [--json] # declaration (+ consumer) sites
|
|
11
11
|
* shrk registry <name> duplicates [--json] # ids declared in more than one place
|
|
12
12
|
*
|
|
13
|
+
* An inventory that matched 0 ids answers NO query: `list` / `exists` / `where`
|
|
14
|
+
* / `duplicates` all exit 2 (not verified) — 1 when the registry sets
|
|
15
|
+
* `failOnEmpty` — whatever guard flag was passed.
|
|
16
|
+
*
|
|
13
17
|
* `<name>` resolves a `registries[]` declaration in sharkcraft.config.ts — one
|
|
14
18
|
* deterministic multi-root scan that answers "is this id taken / where is it"
|
|
15
19
|
* without an agent re-running a fragile grep.
|
|
16
20
|
*/
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
21
|
+
import { resolveProjectConfig } from '@shrkcrft/inspector';
|
|
22
|
+
import { REGISTRY_LIFECYCLE_FLAGS_USAGE, runRegistryLifecycle } from "./registry-lifecycle-run.js";
|
|
23
|
+
import { ALLOW_EMPTY_FLAG } from "../gates/allow-empty.js";
|
|
24
|
+
import { planeScanExcludeDirs, scanRegistry, registryDuplicates, registryExists, registryWhere, } from '@shrkcrft/boundaries';
|
|
25
|
+
import { failsWhenEmpty, RuleEmptiness, settleRuleEmptiness, } from '@shrkcrft/core';
|
|
26
|
+
import { registryLiveness } from "../gates/registry-liveness.js";
|
|
27
|
+
import { flagBool, resolveCwd, } from "../command-registry.js";
|
|
28
|
+
import { PositionalMode } from "../dispatch/positional-mode.js";
|
|
20
29
|
import { ExitCode } from "../exit-codes.js";
|
|
21
30
|
import { asJson } from "../output/format-output.js";
|
|
31
|
+
import { settleVerdict } from "../gates/settle-verdict.js";
|
|
32
|
+
import { verdictLine } from "../gates/verdict-line.js";
|
|
33
|
+
import { qualifyCleanForUnits } from "../gates/qualify-clean-for-units.js";
|
|
34
|
+
import { unitStateNotes } from "../gates/unit-state-notes.js";
|
|
35
|
+
import { answerIncompleteInventory } from "../gates/incomplete-registry-inventory.js";
|
|
36
|
+
import { seamRejectedRules } from "../gates/seam-rejected-rules.js";
|
|
22
37
|
import { resolveRegistryNoun } from "./registry-resolve.js";
|
|
23
38
|
/** The inventory verbs, used to detect (and forgive) a verb-first invocation. */
|
|
24
39
|
const INVENTORY_VERBS = new Set(['list', 'exists', 'where', 'duplicates']);
|
|
25
40
|
export const registryLifecycleCommand = {
|
|
26
41
|
name: 'lifecycle',
|
|
27
42
|
description: 'Scan the workspace for register/remove symmetry. Read-only.',
|
|
28
|
-
usage:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
let files;
|
|
35
|
-
if (changedOnly || since) {
|
|
36
|
-
const changed = resolveChangedFiles({
|
|
37
|
-
projectRoot: cwd,
|
|
38
|
-
...(since ? { since } : {}),
|
|
39
|
-
...(changedOnly && !since ? { includeWorktree: true } : {}),
|
|
40
|
-
});
|
|
41
|
-
files = changed.files;
|
|
42
|
-
}
|
|
43
|
-
// Full-tree walk honors the project's skipDirs override.
|
|
44
|
-
let skipDirs;
|
|
45
|
-
if (files === undefined) {
|
|
46
|
-
const loaded = await resolveProjectConfig(cwd);
|
|
47
|
-
if (loaded.ok)
|
|
48
|
-
skipDirs = loaded.value.config.registryLifecycle?.skipDirs;
|
|
49
|
-
}
|
|
50
|
-
const report = buildRegistryLifecycleReport({
|
|
51
|
-
projectRoot: cwd,
|
|
52
|
-
...(files !== undefined ? { files } : {}),
|
|
53
|
-
...(scope ? { scope } : {}),
|
|
54
|
-
...(skipDirs ? { skipDirs } : {}),
|
|
55
|
-
});
|
|
56
|
-
// Honest exit-code contract (a25 §1 / §2.5): a wedged/timed-out scan OR a
|
|
57
|
-
// scope with zero registrations to check is NOT verified (`2`), never a
|
|
58
|
-
// green `0` an agent's `&& next` would march past.
|
|
59
|
-
const exit = report.timedOut || report.registersFound === 0
|
|
60
|
-
? ExitCode.NotVerified
|
|
61
|
-
: report.missingRemovers.length === 0
|
|
62
|
-
? ExitCode.VerifiedPass
|
|
63
|
-
: ExitCode.Failure;
|
|
64
|
-
if (flagBool(args, 'json')) {
|
|
65
|
-
process.stdout.write(asJson(report) + '\n');
|
|
66
|
-
return exit;
|
|
67
|
-
}
|
|
68
|
-
process.stdout.write(renderRegistryLifecycleReportText(report));
|
|
69
|
-
return exit;
|
|
43
|
+
usage: `shrk registry lifecycle ${REGISTRY_LIFECYCLE_FLAGS_USAGE}`,
|
|
44
|
+
booleanFlags: new Set(['json', 'changed-only', ALLOW_EMPTY_FLAG]),
|
|
45
|
+
// The same body as `check registry-lifecycle` (registry-lifecycle-run.ts):
|
|
46
|
+
// one settled verdict, not a second copy of the exit derivation.
|
|
47
|
+
run(args) {
|
|
48
|
+
return runRegistryLifecycle(args, 'registry lifecycle');
|
|
70
49
|
},
|
|
71
50
|
};
|
|
72
51
|
async function loadRegistries(cwd) {
|
|
@@ -77,11 +56,100 @@ async function loadRegistries(cwd) {
|
|
|
77
56
|
ok: true,
|
|
78
57
|
registries: loaded.value.config.registries ?? [],
|
|
79
58
|
planeDiagnostics: loaded.value.planeDiagnostics,
|
|
59
|
+
excludeDirs: planeScanExcludeDirs(cwd, loaded.value.sharkcraftDir),
|
|
60
|
+
rejected: seamRejectedRules(loaded.value, ['registry']),
|
|
80
61
|
};
|
|
81
62
|
}
|
|
82
63
|
function findRegistry(registries, name) {
|
|
83
64
|
return registries.find((r) => r.name === name);
|
|
84
65
|
}
|
|
66
|
+
/** Why an empty inventory proves nothing, in the words every inventory verb prints. */
|
|
67
|
+
const EMPTY_INVENTORY_REASON = 'the source selector matched nothing — it is probably stale (see `shrk gates coverage`)';
|
|
68
|
+
/**
|
|
69
|
+
* THE rule-emptiness settle of an inventory that matched 0 ids (round 13,
|
|
70
|
+
* `settleRuleEmptiness`), over the registry's glob liveness
|
|
71
|
+
* (`registryLiveness`, the one `gates check` reads) and THE failOnEmpty
|
|
72
|
+
* authority (`failsWhenEmpty`; a registry is warning-severity, so an explicit
|
|
73
|
+
* `failOnEmpty: true` is what makes it block). Every source inclusion glob
|
|
74
|
+
* marked `expectEmpty` and no source file matched → an inventory over a
|
|
75
|
+
* planned directory: INTENDED-empty, so a membership question has a real
|
|
76
|
+
* answer (nothing is registered yet) and the acceptance is printed.
|
|
77
|
+
*/
|
|
78
|
+
function settleInventoryEmptiness(decl, inventory, liveness) {
|
|
79
|
+
return settleRuleEmptiness({
|
|
80
|
+
subject: decl.name,
|
|
81
|
+
unitLabel: 'ids',
|
|
82
|
+
filesMatched: inventory.readScope.read,
|
|
83
|
+
unitsMatched: inventory.entries.length,
|
|
84
|
+
unread: false,
|
|
85
|
+
liveness,
|
|
86
|
+
primaryLists: ['source.files'],
|
|
87
|
+
failOnEmpty: failsWhenEmpty({
|
|
88
|
+
...(decl.failOnEmpty !== undefined ? { failOnEmpty: decl.failOnEmpty } : {}),
|
|
89
|
+
severity: 'warning',
|
|
90
|
+
}),
|
|
91
|
+
noFilesReason: EMPTY_INVENTORY_REASON,
|
|
92
|
+
noUnitsReason: EMPTY_INVENTORY_REASON,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* The printed `expectEmpty` acceptance of the registry's glob units — settle
|
|
97
|
+
* record B of THE settle `gates check` reads (`registryLiveness`), from the
|
|
98
|
+
* settled verdict, never hand-built. It rides on every exit-0 answer (round 13
|
|
99
|
+
* review): an inventory over a planned directory (where it IS the inventory's
|
|
100
|
+
* emptiness record), AND a live inventory with a planned sibling glob — which
|
|
101
|
+
* `gates check` accepted in print while every registry verb was silent.
|
|
102
|
+
*/
|
|
103
|
+
function acceptedUnitLines(liveness) {
|
|
104
|
+
if (liveness?.acceptance === undefined)
|
|
105
|
+
return [];
|
|
106
|
+
return settleVerdict(ExitCode.VerifiedPass, [liveness.acceptance]).accepted;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Answer a query over an inventory that matched NOTHING.
|
|
110
|
+
*
|
|
111
|
+
* An empty inventory cannot answer a membership question: `exists X` would say
|
|
112
|
+
* "no" (1) for an id that IS declared — only the glob went stale — and `exists
|
|
113
|
+
* X --fail-if-taken` would say "free" (0), so the documented duplicate guard
|
|
114
|
+
* `exists X --fail-if-taken && <author>` marched on over a scan that saw
|
|
115
|
+
* nothing. Every inventory verb therefore answers the empty inventory itself,
|
|
116
|
+
* whatever guard flag was passed: not verified (2), or a failure (1) when the
|
|
117
|
+
* registry sets `failOnEmpty`. Settled through the one coverage guard, so the
|
|
118
|
+
* exit and the printed verdict cannot disagree.
|
|
119
|
+
*/
|
|
120
|
+
function answerEmptyInventory(inventory, emptiness, json, payload, diagnostics = []) {
|
|
121
|
+
const failOnEmpty = emptiness.fails;
|
|
122
|
+
const settled = settleVerdict(failOnEmpty ? ExitCode.Failure : ExitCode.VerifiedPass, [
|
|
123
|
+
{
|
|
124
|
+
unit: 'ids',
|
|
125
|
+
expected: 0,
|
|
126
|
+
examined: 0,
|
|
127
|
+
subject: `registry "${inventory.name}"`,
|
|
128
|
+
reason: emptiness.skipReason ?? EMPTY_INVENTORY_REASON,
|
|
129
|
+
},
|
|
130
|
+
]);
|
|
131
|
+
if (json) {
|
|
132
|
+
process.stdout.write(asJson({
|
|
133
|
+
...payload,
|
|
134
|
+
verified: false,
|
|
135
|
+
exitCode: settled.exit,
|
|
136
|
+
verdict: settled.verdict,
|
|
137
|
+
shortfalls: settled.shortfalls,
|
|
138
|
+
}) + '\n');
|
|
139
|
+
return settled.exit;
|
|
140
|
+
}
|
|
141
|
+
process.stdout.write(`Registry "${inventory.name}" matched 0 ids — nothing was checked. This is NOT a pass;\n` +
|
|
142
|
+
' the source selector is probably stale (see `shrk gates coverage`).\n');
|
|
143
|
+
for (const d of diagnostics)
|
|
144
|
+
process.stdout.write(` ! ${d}\n`);
|
|
145
|
+
if (failOnEmpty) {
|
|
146
|
+
process.stdout.write(' The registry sets `failOnEmpty: true`, so an empty inventory is a failure.\n');
|
|
147
|
+
}
|
|
148
|
+
const line = verdictLine(settled, '');
|
|
149
|
+
if (line)
|
|
150
|
+
process.stdout.write(`${line}\n`);
|
|
151
|
+
return settled.exit;
|
|
152
|
+
}
|
|
85
153
|
/** Run a `list | exists | where` query against a declared registry. */
|
|
86
154
|
async function runRegistryInventory(args, name) {
|
|
87
155
|
const cwd = resolveCwd(args);
|
|
@@ -90,13 +158,32 @@ async function runRegistryInventory(args, name) {
|
|
|
90
158
|
const id = args.positional[2];
|
|
91
159
|
const loaded = await loadRegistries(cwd);
|
|
92
160
|
if (!loaded.ok) {
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
161
|
+
// The registry is declared in the config that did not load: the query never
|
|
162
|
+
// STARTED — a usage error (3), never the `1` that reads "missing" / "taken".
|
|
163
|
+
if (json) {
|
|
164
|
+
process.stdout.write(asJson({ error: loaded.message, exitCode: ExitCode.UsageError, verdict: 'usage-error' }) + '\n');
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
96
167
|
process.stderr.write(`Could not load config: ${loaded.message}\n Run \`shrk doctor\` for details.\n`);
|
|
97
|
-
|
|
168
|
+
}
|
|
169
|
+
return ExitCode.UsageError;
|
|
98
170
|
}
|
|
99
171
|
const decl = findRegistry(loaded.registries, name);
|
|
172
|
+
const rejectedDecl = decl ? undefined : loaded.rejected.find((r) => r.id === name);
|
|
173
|
+
if (rejectedDecl) {
|
|
174
|
+
// Declared by a pack, refused by the merge seam: the inventory was never
|
|
175
|
+
// scanned, so no query over it can be answered — a failure (1), never the
|
|
176
|
+
// "unknown registry" usage error (round 12 review, R12-X1).
|
|
177
|
+
const message = rejectedDecl.error ?? 'failed validation';
|
|
178
|
+
if (json) {
|
|
179
|
+
process.stdout.write(asJson({ name, rejected: true, error: message, exitCode: ExitCode.Failure, verdict: 'fail' }) + '\n');
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
process.stdout.write(`Registry "${name}" was contributed by a pack and REJECTED — nothing was scanned, and that is a failure:\n` +
|
|
183
|
+
` ${message}\n \`shrk packs contributions\` names every rejected entry.\n`);
|
|
184
|
+
}
|
|
185
|
+
return ExitCode.Failure;
|
|
186
|
+
}
|
|
100
187
|
if (!decl) {
|
|
101
188
|
const names = loaded.registries.map((r) => r.name);
|
|
102
189
|
const avail = names.length > 0 ? `Declared registries: ${names.join(', ')}.` : 'No registries declared in sharkcraft.config.ts `registries[]`.';
|
|
@@ -115,13 +202,49 @@ async function runRegistryInventory(args, name) {
|
|
|
115
202
|
}
|
|
116
203
|
return ExitCode.UsageError;
|
|
117
204
|
}
|
|
118
|
-
const inventory = scanRegistry(cwd, decl);
|
|
205
|
+
const inventory = scanRegistry(cwd, decl, { excludeDirs: loaded.excludeDirs });
|
|
206
|
+
// A source file the reader could not read (over the read cap): only a
|
|
207
|
+
// positive finding is verified; any other answer settles NOT VERIFIED (2).
|
|
208
|
+
const incomplete = answerIncompleteInventory(inventory, decl, action, id, json);
|
|
209
|
+
if (incomplete !== undefined)
|
|
210
|
+
return incomplete;
|
|
211
|
+
// An inventory that matched 0 ids is decided by THE rule-emptiness settle
|
|
212
|
+
// (round 13). STALE (a dead or unmarked selector): no query over it can be
|
|
213
|
+
// answered — 2, or 1 under failOnEmpty. INTENDED-empty (every source glob
|
|
214
|
+
// marked `expectEmpty`, no source file matched): nothing is registered yet,
|
|
215
|
+
// so every verb answers as over any inventory, and prints the acceptance.
|
|
216
|
+
//
|
|
217
|
+
// The registry's glob units are settled with their `expectEmpty` markers —
|
|
218
|
+
// THE settle `gates check` reads (`registryLiveness`) — when a unit is marked
|
|
219
|
+
// (its acceptance rides on every exit-0 answer, round 13 review) or the
|
|
220
|
+
// inventory is empty (what the empty inventory is decided from).
|
|
221
|
+
const marked = [decl.source, decl.consumer].some((s) => (s?.expectEmptyUnits?.length ?? 0) > 0);
|
|
222
|
+
const liveness = marked || inventory.entries.length === 0 ? registryLiveness(cwd, decl, loaded.excludeDirs) : undefined;
|
|
223
|
+
const emptiness = inventory.entries.length === 0 && liveness !== undefined
|
|
224
|
+
? settleInventoryEmptiness(decl, inventory, liveness)
|
|
225
|
+
: undefined;
|
|
226
|
+
const stale = emptiness !== undefined && emptiness.state !== RuleEmptiness.IntendedEmpty ? emptiness : undefined;
|
|
227
|
+
const accepted = acceptedUnitLines(liveness);
|
|
228
|
+
const acceptedField = accepted.length > 0 ? { accepted } : {};
|
|
229
|
+
const writeAccepted = () => {
|
|
230
|
+
for (const a of accepted)
|
|
231
|
+
process.stdout.write(` ${a}\n`);
|
|
232
|
+
};
|
|
119
233
|
if (action === 'list' || action === undefined) {
|
|
120
234
|
// Fold pack-plane merge notes (missing/invalid pack registry files, dropped
|
|
121
235
|
// collisions) into the inventory's own scan diagnostics.
|
|
122
236
|
const diagnostics = [...inventory.diagnostics, ...loaded.planeDiagnostics];
|
|
237
|
+
if (stale !== undefined) {
|
|
238
|
+
return answerEmptyInventory(inventory, stale, json, { name: inventory.name, count: 0, ids: [], diagnostics }, diagnostics);
|
|
239
|
+
}
|
|
123
240
|
if (json) {
|
|
124
|
-
process.stdout.write(asJson({
|
|
241
|
+
process.stdout.write(asJson({
|
|
242
|
+
name: inventory.name,
|
|
243
|
+
count: inventory.entries.length,
|
|
244
|
+
ids: inventory.entries.map((e) => e.id),
|
|
245
|
+
diagnostics,
|
|
246
|
+
...acceptedField,
|
|
247
|
+
}) + '\n');
|
|
125
248
|
return 0;
|
|
126
249
|
}
|
|
127
250
|
process.stdout.write(`Registry "${inventory.name}"${inventory.description ? ' — ' + inventory.description : ''}\n`);
|
|
@@ -131,6 +254,12 @@ async function runRegistryInventory(args, name) {
|
|
|
131
254
|
}
|
|
132
255
|
for (const d of diagnostics)
|
|
133
256
|
process.stdout.write(` ! ${d}\n`);
|
|
257
|
+
// THE shared unit-state block (round 13, K2): a LOCAL expectEmpty marker
|
|
258
|
+
// whose target appeared, or a dead source / consumer glob, is listed; a
|
|
259
|
+
// pack marker is INFO. (`registry` settles the globs the way `gates check`
|
|
260
|
+
// does — `registryLiveness`.)
|
|
261
|
+
process.stdout.write(unitStateNotes([{ id: inventory.name, unitLiveness: (liveness ?? registryLiveness(cwd, decl, loaded.excludeDirs)).units }]).text);
|
|
262
|
+
writeAccepted();
|
|
134
263
|
return 0;
|
|
135
264
|
}
|
|
136
265
|
if (action === 'exists') {
|
|
@@ -144,6 +273,11 @@ async function runRegistryInventory(args, name) {
|
|
|
144
273
|
process.stderr.write('Pass at most one of --fail-if-taken / --fail-if-missing.\n');
|
|
145
274
|
return ExitCode.UsageError;
|
|
146
275
|
}
|
|
276
|
+
// Neither "taken" nor "free" can be read off an inventory that saw nothing
|
|
277
|
+
// — unless it is intended-empty (round 13): then nothing is taken yet.
|
|
278
|
+
if (stale !== undefined) {
|
|
279
|
+
return answerEmptyInventory(inventory, stale, json, { name: inventory.name, id, exists: null });
|
|
280
|
+
}
|
|
147
281
|
// `--resolve` maps a human noun to the canonical registered id before the
|
|
148
282
|
// existence test — via the registry's declared `aliases` map AND generic
|
|
149
283
|
// normalization (case-fold, singular/plural, suffix strip/append) — so a
|
|
@@ -162,6 +296,7 @@ async function runRegistryInventory(args, name) {
|
|
|
162
296
|
// --fail-if-missing → non-zero when the id is NOT registered (the consume-side check).
|
|
163
297
|
// neither → the historical query convention (taken → 0, free → 1).
|
|
164
298
|
const code = failIfTaken ? (exists ? 1 : 0) : exists ? 0 : 1;
|
|
299
|
+
// The acceptance rides on a PASSING answer only (settleVerdict's rule).
|
|
165
300
|
if (json) {
|
|
166
301
|
process.stdout.write(asJson({
|
|
167
302
|
name: inventory.name,
|
|
@@ -169,6 +304,7 @@ async function runRegistryInventory(args, name) {
|
|
|
169
304
|
...(resolved ? { resolvedId: canonical, resolvedVia: resolution?.via } : {}),
|
|
170
305
|
exists,
|
|
171
306
|
exitCode: code,
|
|
307
|
+
...(code === 0 ? acceptedField : {}),
|
|
172
308
|
}) + '\n');
|
|
173
309
|
return code;
|
|
174
310
|
}
|
|
@@ -176,6 +312,8 @@ async function runRegistryInventory(args, name) {
|
|
|
176
312
|
process.stdout.write(`resolved "${id}" → "${canonical}" (${resolution?.via})\n`);
|
|
177
313
|
}
|
|
178
314
|
process.stdout.write(`${exists ? 'yes' : 'no'} — "${canonical}" is ${exists ? 'declared' : 'NOT declared'} in registry "${inventory.name}".\n`);
|
|
315
|
+
if (code === 0)
|
|
316
|
+
writeAccepted();
|
|
179
317
|
return code;
|
|
180
318
|
}
|
|
181
319
|
if (action === 'duplicates') {
|
|
@@ -183,22 +321,30 @@ async function runRegistryInventory(args, name) {
|
|
|
183
321
|
// at runtime is an accident of load order. Every site is printed so the
|
|
184
322
|
// duplicate can be resolved, not merely detected.
|
|
185
323
|
const dupes = registryDuplicates(inventory);
|
|
324
|
+
const diagnostics = [...inventory.diagnostics, ...loaded.planeDiagnostics];
|
|
325
|
+
if (stale !== undefined) {
|
|
326
|
+
return answerEmptyInventory(inventory, stale, json, { name: inventory.name, scanned: 0, duplicates: [], diagnostics }, diagnostics);
|
|
327
|
+
}
|
|
186
328
|
if (json) {
|
|
187
329
|
process.stdout.write(asJson({
|
|
188
330
|
name: inventory.name,
|
|
189
331
|
scanned: inventory.entries.length,
|
|
190
332
|
duplicates: dupes,
|
|
191
|
-
diagnostics
|
|
333
|
+
diagnostics,
|
|
334
|
+
...acceptedField,
|
|
192
335
|
}) + '\n');
|
|
193
|
-
return
|
|
194
|
-
}
|
|
195
|
-
if (inventory.entries.length === 0) {
|
|
196
|
-
process.stdout.write(`Registry "${inventory.name}" matched 0 ids — nothing was checked. This is NOT a pass;\n` +
|
|
197
|
-
' the source selector is probably stale (see `shrk gates coverage`).\n');
|
|
198
|
-
return 2;
|
|
336
|
+
return dupes.length > 0 ? 1 : 0;
|
|
199
337
|
}
|
|
200
338
|
if (dupes.length === 0) {
|
|
201
|
-
|
|
339
|
+
// THE shared unit-state block (round 13, K2): a LOCAL expectEmpty marker
|
|
340
|
+
// whose target appeared (or a dead glob) is listed and withholds the ✓;
|
|
341
|
+
// a pack marker is INFO.
|
|
342
|
+
const unitNotes = unitStateNotes([
|
|
343
|
+
{ id: inventory.name, unitLiveness: (liveness ?? registryLiveness(cwd, decl, loaded.excludeDirs)).units },
|
|
344
|
+
]);
|
|
345
|
+
process.stdout.write(unitNotes.text);
|
|
346
|
+
process.stdout.write(`${qualifyCleanForUnits(`No duplicate ids in registry "${inventory.name}" (${inventory.entries.length} scanned). ✓`, unitNotes)}\n`);
|
|
347
|
+
writeAccepted();
|
|
202
348
|
return 0;
|
|
203
349
|
}
|
|
204
350
|
process.stdout.write(`Duplicate ids in registry "${inventory.name}" (${dupes.length}):\n`);
|
|
@@ -214,9 +360,18 @@ async function runRegistryInventory(args, name) {
|
|
|
214
360
|
process.stderr.write(`Usage: shrk registry ${name} where <id>\n`);
|
|
215
361
|
return ExitCode.UsageError;
|
|
216
362
|
}
|
|
363
|
+
if (stale !== undefined) {
|
|
364
|
+
return answerEmptyInventory(inventory, stale, json, { name: inventory.name, id, found: null, entry: null });
|
|
365
|
+
}
|
|
217
366
|
const entry = registryWhere(inventory, id);
|
|
218
367
|
if (json) {
|
|
219
|
-
process.stdout.write(asJson({
|
|
368
|
+
process.stdout.write(asJson({
|
|
369
|
+
name: inventory.name,
|
|
370
|
+
id,
|
|
371
|
+
found: entry !== undefined,
|
|
372
|
+
entry: entry ?? null,
|
|
373
|
+
...(entry !== undefined ? acceptedField : {}),
|
|
374
|
+
}) + '\n');
|
|
220
375
|
return entry ? 0 : 1;
|
|
221
376
|
}
|
|
222
377
|
if (!entry) {
|
|
@@ -228,6 +383,7 @@ async function runRegistryInventory(args, name) {
|
|
|
228
383
|
process.stdout.write(` declared ${s.file}:${s.line}\n`);
|
|
229
384
|
for (const s of entry.consumerSites ?? [])
|
|
230
385
|
process.stdout.write(` consumed ${s.file}:${s.line}\n`);
|
|
386
|
+
writeAccepted();
|
|
231
387
|
return 0;
|
|
232
388
|
}
|
|
233
389
|
process.stderr.write(`Unknown action "${action}". Usage: shrk registry ${name} list | exists <id> | where <id> | duplicates\n`);
|
|
@@ -235,12 +391,28 @@ async function runRegistryInventory(args, name) {
|
|
|
235
391
|
}
|
|
236
392
|
export const registryCommand = {
|
|
237
393
|
name: 'registry',
|
|
394
|
+
// Free: positional[0] is a declared registry NAME (`registry <name> list`).
|
|
395
|
+
// The inventory verbs are also accepted verb-first (`registry list <name>`).
|
|
396
|
+
positionals: PositionalMode.Free,
|
|
397
|
+
subverbs: [
|
|
398
|
+
{
|
|
399
|
+
name: 'lifecycle',
|
|
400
|
+
description: 'Registry lifecycle symmetry (register ↔ unregister) across the tree.',
|
|
401
|
+
usage: 'shrk registry lifecycle [--scope <glob>] [--changed-only | --since <ref>] [--limit N] [--offset N] [--budget-ms N] [--allow-empty] [--json]',
|
|
402
|
+
},
|
|
403
|
+
...[...INVENTORY_VERBS].map((verb) => ({
|
|
404
|
+
name: verb,
|
|
405
|
+
description: `The verb-first spelling of \`registry <name> ${verb}\`.`,
|
|
406
|
+
usage: `shrk registry ${verb} <name>${verb === 'exists' || verb === 'where' ? ' <id>' : ''} [--json]`,
|
|
407
|
+
positionals: PositionalMode.Free,
|
|
408
|
+
})),
|
|
409
|
+
],
|
|
238
410
|
description: 'Registry inspections: lifecycle symmetry + declared-registry inventory. Read-only.',
|
|
239
411
|
usage: 'shrk registry lifecycle | <name> list | <name> exists <id> [--resolve] [--fail-if-taken|--fail-if-missing] | <name> where <id> | <name> duplicates',
|
|
240
412
|
// Guard-mode + query flags take no value — declare them so `exists <id>
|
|
241
413
|
// --fail-if-taken` (flag last) and `exists --resolve <id>` (flag first) both
|
|
242
414
|
// keep the id as a positional instead of swallowing it.
|
|
243
|
-
booleanFlags: new Set(['json', 'resolve', 'fail-if-taken', 'fail-if-missing']),
|
|
415
|
+
booleanFlags: new Set(['json', 'resolve', 'fail-if-taken', 'fail-if-missing', 'changed-only', ALLOW_EMPTY_FLAG]),
|
|
244
416
|
async run(args) {
|
|
245
417
|
const sub = args.positional[0];
|
|
246
418
|
if (sub === 'lifecycle') {
|
|
@@ -255,7 +427,8 @@ export const registryCommand = {
|
|
|
255
427
|
const second = args.positional[1];
|
|
256
428
|
if (INVENTORY_VERBS.has(sub) && second !== undefined && second.length > 0) {
|
|
257
429
|
const loaded = await loadRegistries(resolveCwd(args));
|
|
258
|
-
const known = loaded.ok &&
|
|
430
|
+
const known = loaded.ok &&
|
|
431
|
+
(findRegistry(loaded.registries, second) !== undefined || loaded.rejected.some((r) => r.id === second));
|
|
259
432
|
if (known) {
|
|
260
433
|
// [verb, name, ...rest] → [name, verb, ...rest]
|
|
261
434
|
args.positional = [second, sub, ...args.positional.slice(2)];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"release.command.d.ts","sourceRoot":"","sources":["../../src/commands/release.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"release.command.d.ts","sourceRoot":"","sources":["../../src/commands/release.command.ts"],"names":[],"mappings":"AA6BA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAotBhC,eAAO,MAAM,cAAc,EAAE,eAkC5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAKjC,CAAC"}
|
|
@@ -2,8 +2,9 @@ import { spawnSync } from 'node:child_process';
|
|
|
2
2
|
import { copyFileSync, existsSync, mkdirSync, readdirSync, statSync, writeFileSync, rmSync, readFileSync } from 'node:fs';
|
|
3
3
|
import { tmpdir } from 'node:os';
|
|
4
4
|
import * as nodePath from 'node:path';
|
|
5
|
-
import { buildReleaseReadiness, inspectSharkcraft, ReleaseReadinessSeverity, renderReleaseReadinessHtml, pickScenarios, createFixtureRoot, collectFixtureFiles, assertSafeWrites, renderSmokeReport, evaluateSmokeAssertion, getInstallSmokePlan, } from '@shrkcrft/inspector';
|
|
5
|
+
import { buildReleaseReadiness, detectSharkcraftRepo, inspectSharkcraft, ReleaseReadinessSeverity, renderReleaseReadinessHtml, pickScenarios, createFixtureRoot, collectFixtureFiles, assertSafeWrites, renderSmokeReport, evaluateSmokeAssertion, getInstallSmokePlan, } from '@shrkcrft/inspector';
|
|
6
6
|
import { flagBool, flagString, resolveCwd, } from "../command-registry.js";
|
|
7
|
+
import { PositionalMode } from "../dispatch/positional-mode.js";
|
|
7
8
|
import { asJson, header, kv } from "../output/format-output.js";
|
|
8
9
|
const SMOKE_SCENARIO_IDS = [
|
|
9
10
|
'unconfigured-repo',
|
|
@@ -446,8 +447,10 @@ async function runInstallSmoke(args) {
|
|
|
446
447
|
return runInstallSmokeTarball(args);
|
|
447
448
|
}
|
|
448
449
|
const cwd = resolveCwd(args);
|
|
450
|
+
// `cliEntry` is only WHERE the in-repo CLI lives; whether this IS the tool
|
|
451
|
+
// repo is decided by the one host authority (round 11 §5.1).
|
|
449
452
|
const cliEntry = nodePath.join(cwd, 'packages', 'cli', 'src', 'main.ts');
|
|
450
|
-
const isRepo =
|
|
453
|
+
const isRepo = detectSharkcraftRepo(cwd);
|
|
451
454
|
const stepResults = [];
|
|
452
455
|
for (const step of getInstallSmokePlan()) {
|
|
453
456
|
const start = Date.now();
|
|
@@ -544,31 +547,88 @@ async function runReadiness(args) {
|
|
|
544
547
|
}
|
|
545
548
|
}
|
|
546
549
|
// Knowledge stale-check.
|
|
547
|
-
const cfgKnowledge = inspection.config
|
|
548
|
-
?.knowledgeCheck;
|
|
550
|
+
const cfgKnowledge = inspection.config?.knowledgeCheck;
|
|
549
551
|
if (includeKnowledgeCheck || cfgKnowledge?.enabled) {
|
|
550
|
-
const { buildKnowledgeStaleReport,
|
|
552
|
+
const { buildKnowledgeStaleReport, describeInspectionDiscovery } = await import('@shrkcrft/inspector');
|
|
553
|
+
const { evaluateKnowledgeStaleGate, knowledgeStaleGateInput, settleKnowledgeStaleGate } = await import("../knowledge/knowledge-stale-gate.js");
|
|
554
|
+
// Warm (with the CLI command index) before resolving — the same warm the
|
|
555
|
+
// stale-check verb does, so readiness cannot read a correct playbook /
|
|
556
|
+
// policy / helper id as broken.
|
|
557
|
+
await (await import("../surface/cli-command-resolver.js")).warmCliReferenceRegistries(inspection);
|
|
551
558
|
const staleReport = buildKnowledgeStaleReport(inspection);
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
559
|
+
// THE stale-check verdict — the verb's own input builder, gate and settle.
|
|
560
|
+
// `knowledgeCheck.ready` is exactly `shrk knowledge stale-check` exiting 0:
|
|
561
|
+
// an unexamined corpus (unverifiable entries, a file that never loaded) is
|
|
562
|
+
// never ready, and a stale reference fails it as the verb does.
|
|
563
|
+
const gateInput = knowledgeStaleGateInput({
|
|
564
|
+
flags: {},
|
|
565
|
+
knowledgeCheck: cfgKnowledge,
|
|
566
|
+
discovery: describeInspectionDiscovery(inspection, cwd),
|
|
567
|
+
scoped: false,
|
|
568
|
+
});
|
|
569
|
+
const cov = staleReport.coverage;
|
|
570
|
+
const common = {
|
|
564
571
|
enabled: true,
|
|
565
|
-
strict:
|
|
572
|
+
strict: cfgKnowledge?.strict === true,
|
|
573
|
+
failOn: [...gateInput.failOn],
|
|
566
574
|
counts: staleReport.counts,
|
|
567
|
-
|
|
568
|
-
|
|
575
|
+
coverage: cov,
|
|
576
|
+
unverifiableIds: staleReport.unverifiableIds,
|
|
577
|
+
...(gateInput.minReferenced ? { minReferenced: gateInput.minReferenced.ratio } : {}),
|
|
578
|
+
requireReferences: gateInput.requireReferences,
|
|
579
|
+
repro: 'shrk knowledge stale-check',
|
|
569
580
|
};
|
|
581
|
+
let knowledgeReady;
|
|
582
|
+
let knowledgeMessage;
|
|
583
|
+
if (gateInput.usageProblem) {
|
|
584
|
+
knowledgeReady = false;
|
|
585
|
+
knowledgeMessage = gateInput.usageProblem;
|
|
586
|
+
report.knowledgeCheck = {
|
|
587
|
+
...common,
|
|
588
|
+
exit: 3,
|
|
589
|
+
verdict: 'usage-error',
|
|
590
|
+
reasons: [gateInput.usageProblem],
|
|
591
|
+
shortfalls: [],
|
|
592
|
+
accepted: [],
|
|
593
|
+
ready: false,
|
|
594
|
+
};
|
|
595
|
+
}
|
|
596
|
+
else {
|
|
597
|
+
const gate = evaluateKnowledgeStaleGate(staleReport, gateInput);
|
|
598
|
+
const settled = settleKnowledgeStaleGate(gate);
|
|
599
|
+
knowledgeReady = settled.exit === 0;
|
|
600
|
+
knowledgeMessage =
|
|
601
|
+
gate.reasons.length > 0
|
|
602
|
+
? gate.reasons.join('; ')
|
|
603
|
+
: settled.shortfalls.length > 0
|
|
604
|
+
? `NOT VERIFIED — ${settled.shortfalls.slice(0, 3).join('; ')}`
|
|
605
|
+
: `${cov.verified} of ${cov.entriesInScope} knowledge entries verified`;
|
|
606
|
+
report.knowledgeCheck = {
|
|
607
|
+
...common,
|
|
608
|
+
requiredFailing: gate.requiredStale + gate.requiredMissing,
|
|
609
|
+
reasons: gate.reasons,
|
|
610
|
+
exit: settled.exit,
|
|
611
|
+
verdict: settled.verdict,
|
|
612
|
+
shortfalls: settled.shortfalls,
|
|
613
|
+
accepted: settled.accepted,
|
|
614
|
+
ready: knowledgeReady,
|
|
615
|
+
};
|
|
616
|
+
}
|
|
570
617
|
if (!knowledgeReady) {
|
|
571
618
|
report.ready = false;
|
|
619
|
+
// Name the blocker: a NOT READY with no blocker listed sends the reader
|
|
620
|
+
// hunting for the cause.
|
|
621
|
+
report.blockers = [
|
|
622
|
+
...report.blockers,
|
|
623
|
+
{
|
|
624
|
+
id: 'knowledge-check',
|
|
625
|
+
title: 'Knowledge stale-check',
|
|
626
|
+
status: 'fail',
|
|
627
|
+
severity: ReleaseReadinessSeverity.Error,
|
|
628
|
+
message: knowledgeMessage,
|
|
629
|
+
suggestion: 'shrk knowledge stale-check',
|
|
630
|
+
},
|
|
631
|
+
];
|
|
572
632
|
}
|
|
573
633
|
}
|
|
574
634
|
const wantHtml = flagBool(args, 'html');
|
|
@@ -619,6 +679,19 @@ async function runReadiness(args) {
|
|
|
619
679
|
}
|
|
620
680
|
export const releaseCommand = {
|
|
621
681
|
name: 'release',
|
|
682
|
+
positionals: PositionalMode.None,
|
|
683
|
+
subverbs: [
|
|
684
|
+
{
|
|
685
|
+
name: 'readiness',
|
|
686
|
+
description: 'Release readiness aggregator — docs, changelog, examples, preflight.',
|
|
687
|
+
usage: 'shrk release readiness [--strict] [--preflight <file|dir|auto>] [--html] [--report] [--json] [--with-docs-check] [--with-examples-check]',
|
|
688
|
+
},
|
|
689
|
+
{
|
|
690
|
+
name: 'smoke',
|
|
691
|
+
description: 'Release smoke harness (writes only into temp fixtures).',
|
|
692
|
+
usage: 'shrk release smoke [--scenario all|<id>] [--temp-dir <path>] [--keep-temp] [--json] [--report] [--html]',
|
|
693
|
+
},
|
|
694
|
+
],
|
|
622
695
|
description: 'Release readiness aggregator + smoke harness. Read-only verdicts; smoke writes only into temp fixtures.',
|
|
623
696
|
usage: 'shrk release readiness [--strict] [--preflight <file|dir|auto>] [--html] [--report] [--json] [--with-docs-check] [--with-examples-check]\n shrk release smoke [--scenario all|<id>] [--temp-dir <path>] [--keep-temp] [--json] [--report] [--html]',
|
|
624
697
|
async run(args) {
|
|
@@ -628,6 +701,12 @@ export const releaseCommand = {
|
|
|
628
701
|
if (sub === 'readiness')
|
|
629
702
|
return runReadiness({ ...args, positional: args.positional.slice(1) });
|
|
630
703
|
process.stderr.write('Usage: shrk release readiness | smoke\n');
|
|
704
|
+
// Both subverbs maintain SharkCraft itself (the surface gate refuses them
|
|
705
|
+
// with 78 elsewhere) — outside its repository say so, and name the gate that
|
|
706
|
+
// does apply, instead of a usage line listing only refused verbs.
|
|
707
|
+
if (!detectSharkcraftRepo(resolveCwd(args))) {
|
|
708
|
+
process.stderr.write(" Both maintain SharkCraft itself and do not apply to this repository (they exit 78 here). This repository's own gate: `shrk quality`.\n");
|
|
709
|
+
}
|
|
631
710
|
return 2;
|
|
632
711
|
},
|
|
633
712
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"report.command.d.ts","sourceRoot":"","sources":["../../src/commands/report.command.ts"],"names":[],"mappings":"AAgCA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"report.command.d.ts","sourceRoot":"","sources":["../../src/commands/report.command.ts"],"names":[],"mappings":"AAgCA,OAAO,EAIL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAehC,eAAO,MAAM,aAAa,EAAE,eA2E3B,CAAC"}
|