@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,8 +1,15 @@
|
|
|
1
1
|
import { flagBool, resolveCwd, } from "../command-registry.js";
|
|
2
|
+
import { PositionalMode } from "../dispatch/positional-mode.js";
|
|
2
3
|
import { asJson, header, kv, table } from "../output/format-output.js";
|
|
3
4
|
import { loadSurfaceContext } from "../surface/load-surface-context.js";
|
|
4
5
|
import { buildSurfaceSummary, findCommandInSummary, } from "../surface/surface-summary.js";
|
|
5
|
-
import { CommandTier } from "./command-catalog.js";
|
|
6
|
+
import { CommandAudience, CommandTier } from "./command-catalog.js";
|
|
7
|
+
import { CommandDispatchKind } from "../surface/command-dispatch-kind.js";
|
|
8
|
+
import { isBootstrapFamily, TierSource } from "../surface/tier.js";
|
|
9
|
+
import { firstMatchingSelector, matchesSurfaceSelector } from "../surface/surface-selector.js";
|
|
10
|
+
import { surfaceRefusalFor } from "../surface/not-enabled-error.js";
|
|
11
|
+
import { SurfaceLayer } from "../surface/surface-layer.js";
|
|
12
|
+
import { SurfaceRefusalReason } from "../surface/surface-refusal-reason.js";
|
|
6
13
|
import { applySurfaceEdit, defaultConfigFile, planSurfaceEdit, } from "../surface/surface-config-writer.js";
|
|
7
14
|
/**
|
|
8
15
|
* `shrk surface`. Top-level introspection + opt-in management
|
|
@@ -13,33 +20,64 @@ import { applySurfaceEdit, defaultConfigFile, planSurfaceEdit, } from "../surfac
|
|
|
13
20
|
* - disable <command> undo a prior enable
|
|
14
21
|
* - hide <command> hide an extended command from --help
|
|
15
22
|
* - unhide <command> reverse hide
|
|
16
|
-
* -
|
|
23
|
+
* - deny <selector> disable a command or a group (`<group> *`)
|
|
24
|
+
* - allow <selector> reverse a deny
|
|
25
|
+
* - reset clear surface.enabled + hidden + disabled
|
|
17
26
|
* - explain <command> why this command has its current tier
|
|
18
27
|
* - profiles [get <id>] list surface profiles (or show one)
|
|
28
|
+
*
|
|
29
|
+
* Every mutation edits the project config's OWN `surface{}` block (never the
|
|
30
|
+
* profile-merged view) and preserves its `profile`.
|
|
19
31
|
*/
|
|
20
32
|
export const surfaceCommand = {
|
|
21
33
|
name: 'surface',
|
|
34
|
+
positionals: PositionalMode.None,
|
|
35
|
+
subverbs: [
|
|
36
|
+
{ name: 'list', description: 'Every command grouped by tier (the default).', usage: 'shrk surface list [--json]' },
|
|
37
|
+
{ name: 'explain', description: 'Why a command has its current tier.', usage: 'shrk surface explain <command> [--json]', positionals: PositionalMode.Free },
|
|
38
|
+
{ name: 'enable', description: 'Promote an experimental (or gated tool-maintenance) command to callable.', usage: 'shrk surface enable <command> [--write] [--json]', positionals: PositionalMode.Free },
|
|
39
|
+
{ name: 'disable', description: 'Undo a prior enable.', usage: 'shrk surface disable <command> [--write] [--json]', positionals: PositionalMode.Free },
|
|
40
|
+
{ name: 'hide', description: 'Hide an extended command from --help.', usage: 'shrk surface hide <command> [--write] [--json]', positionals: PositionalMode.Free },
|
|
41
|
+
{ name: 'unhide', description: 'Reverse a hide.', usage: 'shrk surface unhide <command> [--write] [--json]', positionals: PositionalMode.Free },
|
|
42
|
+
{
|
|
43
|
+
name: 'deny',
|
|
44
|
+
description: 'Disable a command or a group (`<group> *`) here: not callable (exit 78), absent from --help.',
|
|
45
|
+
usage: "shrk surface deny <command|'<group> *'> [--write] [--json]",
|
|
46
|
+
positionals: PositionalMode.Free,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'allow',
|
|
50
|
+
description: 'Reverse a deny: remove the selector from surface.disabled.',
|
|
51
|
+
usage: "shrk surface allow <command|'<group> *'> [--write] [--json]",
|
|
52
|
+
positionals: PositionalMode.Free,
|
|
53
|
+
},
|
|
54
|
+
{ name: 'reset', description: 'Clear surface.enabled + surface.hidden + surface.disabled.', usage: 'shrk surface reset [--write] [--json]' },
|
|
55
|
+
{ name: 'profiles', description: 'List the surface profiles, or show one.', usage: 'shrk surface profiles [get <id>] [--json]', positionals: PositionalMode.Free },
|
|
56
|
+
],
|
|
22
57
|
description: 'Inspect or change the adaptive command surface (core / extended / experimental tiers).',
|
|
23
|
-
usage: 'shrk surface <list|enable|disable|hide|unhide|reset|explain|profiles> [name] [--write] [--json]',
|
|
58
|
+
usage: 'shrk surface <list|enable|disable|hide|unhide|deny|allow|reset|explain|profiles> [name] [--write] [--json]',
|
|
24
59
|
async run(args) {
|
|
25
60
|
const [verb, ...rest] = args.positional;
|
|
26
61
|
const json = flagBool(args, 'json');
|
|
27
62
|
const write = flagBool(args, 'write');
|
|
28
63
|
const cwd = resolveCwd(args);
|
|
64
|
+
// A multi-word path (`surface enable docs check`) names ONE command.
|
|
65
|
+
const target = rest.length > 0 ? rest.join(' ') : undefined;
|
|
29
66
|
switch (verb) {
|
|
30
67
|
case undefined:
|
|
31
68
|
case 'list':
|
|
32
69
|
return await runList({ cwd, json });
|
|
33
70
|
case 'explain':
|
|
34
|
-
return await runExplain({ cwd, json, target
|
|
71
|
+
return await runExplain({ cwd, json, target });
|
|
35
72
|
case 'enable':
|
|
36
|
-
return await runMutate({ cwd, json, write, target: rest[0], op: 'enable' });
|
|
37
73
|
case 'disable':
|
|
38
|
-
return await runMutate({ cwd, json, write, target: rest[0], op: 'disable' });
|
|
39
74
|
case 'hide':
|
|
40
|
-
return await runMutate({ cwd, json, write, target: rest[0], op: 'hide' });
|
|
41
75
|
case 'unhide':
|
|
42
|
-
return await runMutate({ cwd, json, write, target
|
|
76
|
+
return await runMutate({ cwd, json, write, target, op: verb });
|
|
77
|
+
case 'deny':
|
|
78
|
+
return await runDeny({ cwd, json, write, target });
|
|
79
|
+
case 'allow':
|
|
80
|
+
return await runAllow({ cwd, json, write, target });
|
|
43
81
|
case 'reset':
|
|
44
82
|
return await runReset({ cwd, json, write });
|
|
45
83
|
case 'profiles':
|
|
@@ -50,10 +88,19 @@ export const surfaceCommand = {
|
|
|
50
88
|
}
|
|
51
89
|
},
|
|
52
90
|
};
|
|
91
|
+
/** The project config's OWN `surface{}` block — what every mutation edits. */
|
|
92
|
+
function rawSurface(loaded) {
|
|
93
|
+
return loaded.inspection.config?.surface ?? undefined;
|
|
94
|
+
}
|
|
95
|
+
function configFileOf(loaded, cwd) {
|
|
96
|
+
return (loaded.inspection.configFile ??
|
|
97
|
+
defaultConfigFile(loaded.inspection.sharkcraftDir ?? `${cwd}/sharkcraft`));
|
|
98
|
+
}
|
|
99
|
+
function allViews(summary) {
|
|
100
|
+
return [...summary.tiers.core, ...summary.tiers.extended, ...summary.tiers.experimental];
|
|
101
|
+
}
|
|
53
102
|
async function runProfiles(opts) {
|
|
54
|
-
const {
|
|
55
|
-
void inspection;
|
|
56
|
-
void context;
|
|
103
|
+
const { availableProfiles, activeProfile } = await loadSurfaceContext({ cwd: opts.cwd });
|
|
57
104
|
if (!opts.sub || opts.sub === 'list') {
|
|
58
105
|
if (opts.json) {
|
|
59
106
|
process.stdout.write(asJson({
|
|
@@ -72,7 +119,8 @@ async function runProfiles(opts) {
|
|
|
72
119
|
const src = p.source === 'pack' ? ` (pack: ${p.pack})` : ` (builtin)`;
|
|
73
120
|
const hiddenCount = p.hidden?.length ?? 0;
|
|
74
121
|
const enabledCount = p.enabled?.length ?? 0;
|
|
75
|
-
|
|
122
|
+
const disabledCount = p.disabled?.length ?? 0;
|
|
123
|
+
process.stdout.write(` ${tag} ${p.id.padEnd(14)} ${src.padEnd(20)} hides=${hiddenCount}, enables=${enabledCount}, disables=${disabledCount}\n`);
|
|
76
124
|
process.stdout.write(` ${p.description}\n`);
|
|
77
125
|
}
|
|
78
126
|
return 0;
|
|
@@ -96,6 +144,7 @@ async function runProfiles(opts) {
|
|
|
96
144
|
process.stdout.write(kv('source', found.source + (found.pack ? ` (${found.pack})` : '')) + '\n');
|
|
97
145
|
process.stdout.write(kv('hidden', String(found.hidden?.length ?? 0)) + '\n');
|
|
98
146
|
process.stdout.write(kv('enabled', String(found.enabled?.length ?? 0)) + '\n');
|
|
147
|
+
process.stdout.write(kv('disabled', String(found.disabled?.length ?? 0)) + '\n');
|
|
99
148
|
if (found.hidden && found.hidden.length > 0) {
|
|
100
149
|
process.stdout.write('\nHidden:\n');
|
|
101
150
|
for (const h of found.hidden)
|
|
@@ -106,6 +155,11 @@ async function runProfiles(opts) {
|
|
|
106
155
|
for (const e of found.enabled)
|
|
107
156
|
process.stdout.write(` + ${e}\n`);
|
|
108
157
|
}
|
|
158
|
+
if (found.disabled && found.disabled.length > 0) {
|
|
159
|
+
process.stdout.write('\nDisabled:\n');
|
|
160
|
+
for (const d of found.disabled)
|
|
161
|
+
process.stdout.write(` x ${d}\n`);
|
|
162
|
+
}
|
|
109
163
|
return 0;
|
|
110
164
|
}
|
|
111
165
|
process.stderr.write(`Unknown subcommand: surface profiles ${opts.sub}\nUse: list, get <id>\n`);
|
|
@@ -115,22 +169,31 @@ async function runList({ cwd, json }) {
|
|
|
115
169
|
const { context, activeProfile } = await loadSurfaceContext({ cwd });
|
|
116
170
|
const summary = buildSurfaceSummary(context);
|
|
117
171
|
if (json) {
|
|
118
|
-
process.stdout.write(asJson({ ...summary, activeProfile: activeProfile?.id ?? null }) + '\n');
|
|
172
|
+
process.stdout.write(asJson({ ...summary, activeProfile: activeProfile?.id ?? null, isToolRepo: context.isToolRepo }) + '\n');
|
|
119
173
|
return 0;
|
|
120
174
|
}
|
|
121
|
-
renderSurfaceText(summary, activeProfile?.id);
|
|
175
|
+
renderSurfaceText(summary, activeProfile?.id, context.isToolRepo);
|
|
122
176
|
return 0;
|
|
123
177
|
}
|
|
124
|
-
function renderSurfaceText(summary, activeProfileId) {
|
|
178
|
+
function renderSurfaceText(summary, activeProfileId, isToolRepo) {
|
|
125
179
|
process.stdout.write(header('Command surface'));
|
|
126
180
|
process.stdout.write(kv('schema', summary.schema) + '\n');
|
|
127
181
|
process.stdout.write(kv('hash', summary.hash) + '\n');
|
|
128
182
|
process.stdout.write(kv('profile', activeProfileId ?? '(none — sharkcraft.config.ts surface.profile not set)') + '\n');
|
|
183
|
+
process.stdout.write(kv('host', isToolRepo
|
|
184
|
+
? "SharkCraft's own repository (tool-maintenance commands callable)"
|
|
185
|
+
: 'not the SharkCraft repository (tool-maintenance commands gated)') + '\n');
|
|
129
186
|
process.stdout.write(kv('core', String(summary.totals.core)) + '\n');
|
|
130
187
|
process.stdout.write(kv('extended', String(summary.totals.extended)) + '\n');
|
|
131
188
|
process.stdout.write(kv('experimental', String(summary.totals.experimental)) + '\n');
|
|
132
189
|
process.stdout.write(kv('visible in --help', String(summary.totals.visible)) + '\n');
|
|
133
190
|
process.stdout.write(kv('callable', String(summary.totals.callable)) + '\n');
|
|
191
|
+
process.stdout.write(kv('uncatalogued', String(summary.totals.uncatalogued)) + '\n');
|
|
192
|
+
if (!summary.registryBacked) {
|
|
193
|
+
// Only reachable from a direct engine call: never pass a partial listing
|
|
194
|
+
// off as the dispatch table.
|
|
195
|
+
process.stdout.write(kv('inventory', 'PARTIAL — catalog rows only (no command registry); run `shrk surface list`') + '\n');
|
|
196
|
+
}
|
|
134
197
|
process.stdout.write('\n');
|
|
135
198
|
printBucket('core', summary.tiers.core);
|
|
136
199
|
printBucket('extended', summary.tiers.extended);
|
|
@@ -148,25 +211,46 @@ function printBucket(label, items) {
|
|
|
148
211
|
process.stdout.write(' (empty)\n');
|
|
149
212
|
return;
|
|
150
213
|
}
|
|
214
|
+
// command | what it does | who it is for | flags. The tier `detail` stays in
|
|
215
|
+
// `surface explain` and `--json`: it used to be the only text column, and
|
|
216
|
+
// for every extended row it was the same placeholder sentence. The audience
|
|
217
|
+
// column answers "is this for me?" next to "does this exist?".
|
|
151
218
|
const rows = items.map((c) => {
|
|
152
219
|
const flags = [];
|
|
153
220
|
if (c.hidden)
|
|
154
221
|
flags.push('hidden');
|
|
155
222
|
if (c.enabled)
|
|
156
223
|
flags.push('enabled');
|
|
224
|
+
if (c.disabled)
|
|
225
|
+
flags.push('disabled');
|
|
157
226
|
if (!c.callable)
|
|
158
227
|
flags.push('gated');
|
|
228
|
+
if (!c.catalogued && c.dispatch !== CommandDispatchKind.Meta)
|
|
229
|
+
flags.push('uncatalogued');
|
|
230
|
+
if (c.audience.includes(CommandAudience.ToolMaintenance))
|
|
231
|
+
flags.push('tool-maintenance');
|
|
159
232
|
if (c.pack)
|
|
160
233
|
flags.push(`pack:${c.pack}`);
|
|
161
|
-
return [
|
|
162
|
-
' ' + c.command,
|
|
163
|
-
c.source,
|
|
164
|
-
flags.join(','),
|
|
165
|
-
c.detail ?? '',
|
|
166
|
-
];
|
|
234
|
+
return [' ' + c.command, oneLineDescription(c.description), c.audience.join(','), flags.join(',')];
|
|
167
235
|
});
|
|
168
236
|
process.stdout.write(table(rows) + '\n');
|
|
169
237
|
}
|
|
238
|
+
/** First sentence of a description, at most 72 characters. */
|
|
239
|
+
function oneLineDescription(description) {
|
|
240
|
+
const flat = description.replace(/\s+/g, ' ').trim();
|
|
241
|
+
const dot = flat.search(/[.!?](\s|$)/);
|
|
242
|
+
const sentence = dot > 0 ? flat.slice(0, dot + 1) : flat;
|
|
243
|
+
return sentence.length > 72 ? sentence.slice(0, 71).trimEnd() + '…' : sentence;
|
|
244
|
+
}
|
|
245
|
+
/** Why a view has its tier, when the resolver attached no detail. */
|
|
246
|
+
function tierExplanation(view) {
|
|
247
|
+
if (view.detail)
|
|
248
|
+
return view.detail;
|
|
249
|
+
if (view.source === TierSource.Default) {
|
|
250
|
+
return `${view.tier} — default tier (not in a spine pipeline, not pack-contributed)`;
|
|
251
|
+
}
|
|
252
|
+
return undefined;
|
|
253
|
+
}
|
|
170
254
|
async function runExplain({ cwd, json, target }) {
|
|
171
255
|
if (!target) {
|
|
172
256
|
process.stderr.write('Usage: shrk surface explain <command>\n');
|
|
@@ -185,27 +269,45 @@ async function runExplain({ cwd, json, target }) {
|
|
|
185
269
|
process.stderr.write(`Unknown command: ${target}\n`);
|
|
186
270
|
return 2;
|
|
187
271
|
}
|
|
188
|
-
// Attribute the hide/enable to a profile when one is active
|
|
189
|
-
|
|
190
|
-
const
|
|
272
|
+
// Attribute the hide/enable to a profile when one is active (the same
|
|
273
|
+
// selector matcher the resolver uses — `bundle *` names `bundle list`).
|
|
274
|
+
const hiddenByProfile = firstMatchingSelector(activeProfile?.hidden, [view.command]) !== undefined;
|
|
275
|
+
const enabledByProfile = firstMatchingSelector(activeProfile?.enabled, [view.command]) !== undefined;
|
|
276
|
+
const disabledByProfile = view.deniedBy?.origin === SurfaceLayer.Profile;
|
|
191
277
|
if (json) {
|
|
192
278
|
process.stdout.write(asJson({
|
|
193
279
|
...view,
|
|
194
280
|
activeProfile: activeProfile?.id ?? null,
|
|
281
|
+
isToolRepo: context.isToolRepo,
|
|
195
282
|
hiddenByProfile,
|
|
196
283
|
enabledByProfile,
|
|
284
|
+
disabledByProfile,
|
|
197
285
|
}) + '\n');
|
|
198
286
|
return 0;
|
|
199
287
|
}
|
|
200
|
-
process.stdout.write(header(`Surface — ${
|
|
288
|
+
process.stdout.write(header(`Surface — ${view.command}`));
|
|
289
|
+
process.stdout.write(kv('description', view.description) + '\n');
|
|
290
|
+
if (view.usage)
|
|
291
|
+
process.stdout.write(kv('usage', view.usage) + '\n');
|
|
292
|
+
process.stdout.write(kv('dispatch', view.dispatch) + '\n');
|
|
293
|
+
process.stdout.write(kv('catalogued', view.catalogued
|
|
294
|
+
? 'yes'
|
|
295
|
+
: context.isToolRepo
|
|
296
|
+
? 'no — run `shrk commands doctor`'
|
|
297
|
+
: "no — missing from SharkCraft's command catalog (a SharkCraft catalog gap)") + '\n');
|
|
298
|
+
process.stdout.write(kv('audience', view.audience.join(', ')) + '\n');
|
|
299
|
+
if (view.variants.length > 0)
|
|
300
|
+
process.stdout.write(kv('variants', view.variants.join(' · ')) + '\n');
|
|
201
301
|
process.stdout.write(kv('tier', view.tier) + '\n');
|
|
202
302
|
process.stdout.write(kv('source', view.source) + '\n');
|
|
203
|
-
|
|
204
|
-
|
|
303
|
+
const explanation = tierExplanation(view);
|
|
304
|
+
if (explanation)
|
|
305
|
+
process.stdout.write(kv('detail', explanation) + '\n');
|
|
205
306
|
process.stdout.write(kv('callable', String(view.callable)) + '\n');
|
|
206
307
|
process.stdout.write(kv('visible-in-help', String(view.visibleInHelp)) + '\n');
|
|
207
308
|
process.stdout.write(kv('hidden-by-config', String(view.hidden)) + '\n');
|
|
208
309
|
process.stdout.write(kv('enabled-by-config', String(view.enabled)) + '\n');
|
|
310
|
+
process.stdout.write(kv('disabled', String(view.disabled)) + '\n');
|
|
209
311
|
if (view.pack)
|
|
210
312
|
process.stdout.write(kv('pack', view.pack) + '\n');
|
|
211
313
|
if (activeProfile) {
|
|
@@ -214,12 +316,22 @@ async function runExplain({ cwd, json, target }) {
|
|
|
214
316
|
process.stdout.write(kv('hidden-by-profile', 'yes — profile hides this from --help') + '\n');
|
|
215
317
|
if (enabledByProfile)
|
|
216
318
|
process.stdout.write(kv('enabled-by-profile', 'yes — profile turns this on') + '\n');
|
|
319
|
+
if (disabledByProfile)
|
|
320
|
+
process.stdout.write(kv('disabled-by-profile', 'yes — profile disables this') + '\n');
|
|
217
321
|
}
|
|
218
322
|
if (view.tier === CommandTier.Experimental && !view.callable) {
|
|
323
|
+
const refusal = surfaceRefusalFor(view);
|
|
219
324
|
process.stdout.write('\nWhy gated: ' + (view.detail ?? 'experimental — opt-in required.') + '\n');
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
325
|
+
if (refusal.reasonCode === SurfaceRefusalReason.ToolMaintenance) {
|
|
326
|
+
process.stdout.write("It maintains SharkCraft itself (its docs set, examples, release artifacts or command catalog), so it does not apply to this repository. Invoking it exits 78 — this is not a check failure.\n");
|
|
327
|
+
}
|
|
328
|
+
const remedy = refusal.enableCommand.endsWith('--write') ? refusal.enableCommand : `${refusal.enableCommand} --write`;
|
|
329
|
+
const allowAgain = refusal.reasonCode === SurfaceRefusalReason.Disabled && view.deniedBy?.origin === SurfaceLayer.Config;
|
|
330
|
+
process.stdout.write(allowAgain ? '\nTo allow it again:\n' : '\nTo enable:\n');
|
|
331
|
+
process.stdout.write(` $ ${remedy}\n`);
|
|
332
|
+
// Another profile only helps when the profile is what gates it.
|
|
333
|
+
const profileGated = refusal.reasonCode === SurfaceRefusalReason.Experimental || view.deniedBy?.origin === SurfaceLayer.Profile;
|
|
334
|
+
if (activeProfile && profileGated) {
|
|
223
335
|
process.stdout.write(`\nOr switch profile (current: ${activeProfile.id}):\n`);
|
|
224
336
|
process.stdout.write(' $ shrk surface profiles list\n');
|
|
225
337
|
}
|
|
@@ -238,8 +350,8 @@ async function runMutate({ cwd, json, write, target, op }) {
|
|
|
238
350
|
process.stderr.write(`Usage: shrk surface ${op} <command> [--write]\n`);
|
|
239
351
|
return 2;
|
|
240
352
|
}
|
|
241
|
-
const
|
|
242
|
-
const summary = buildSurfaceSummary(context);
|
|
353
|
+
const loaded = await loadSurfaceContext({ cwd });
|
|
354
|
+
const summary = buildSurfaceSummary(loaded.context);
|
|
243
355
|
const view = findCommandInSummary(summary, target);
|
|
244
356
|
if (!view) {
|
|
245
357
|
process.stderr.write(`Unknown command: ${target}\n`);
|
|
@@ -250,22 +362,10 @@ async function runMutate({ cwd, json, write, target, op }) {
|
|
|
250
362
|
process.stderr.write(refusal + '\n');
|
|
251
363
|
return 2;
|
|
252
364
|
}
|
|
253
|
-
|
|
254
|
-
const
|
|
255
|
-
const diff = planSurfaceEdit(
|
|
256
|
-
|
|
257
|
-
process.stdout.write(asJson({ diff, willWrite: write }) + '\n');
|
|
258
|
-
}
|
|
259
|
-
else {
|
|
260
|
-
renderDiffText(diff, write);
|
|
261
|
-
}
|
|
262
|
-
if (!write)
|
|
263
|
-
return 0;
|
|
264
|
-
const result = applySurfaceEdit(diff);
|
|
265
|
-
if (!json) {
|
|
266
|
-
process.stdout.write(`\nWrote ${result.configFile} (${result.edits.length} edit${result.edits.length === 1 ? '' : 's'}).\n`);
|
|
267
|
-
}
|
|
268
|
-
return 0;
|
|
365
|
+
// The canonical path (never a flag variant, which no selector would match).
|
|
366
|
+
const edit = toEdit(op, view.command);
|
|
367
|
+
const diff = planSurfaceEdit(configFileOf(loaded, cwd), rawSurface(loaded), [edit]);
|
|
368
|
+
return await emitDiff(diff, { json, write });
|
|
269
369
|
}
|
|
270
370
|
function refuseIfInvalid(op, view) {
|
|
271
371
|
if (view.tier === CommandTier.Core && (op === 'disable' || op === 'hide')) {
|
|
@@ -274,6 +374,10 @@ function refuseIfInvalid(op, view) {
|
|
|
274
374
|
if (op === 'hide' && view.tier === CommandTier.Experimental) {
|
|
275
375
|
return `Cannot hide an experimental command (${view.command}); use disable instead.`;
|
|
276
376
|
}
|
|
377
|
+
if (op === 'enable' && view.deniedBy?.origin === SurfaceLayer.Config) {
|
|
378
|
+
return (`${view.command} is disabled by surface.disabled ('${view.deniedBy.selector}'), which wins over surface.enabled. ` +
|
|
379
|
+
`Run: shrk surface allow '${view.deniedBy.selector}' --write`);
|
|
380
|
+
}
|
|
277
381
|
if (op === 'enable' && view.tier !== CommandTier.Experimental && !view.enabled) {
|
|
278
382
|
return `Refusing no-op: ${view.command} is not experimental (tier=${view.tier}).`;
|
|
279
383
|
}
|
|
@@ -297,17 +401,92 @@ function toEdit(op, command) {
|
|
|
297
401
|
return { field: 'hidden', command, operation: 'remove' };
|
|
298
402
|
}
|
|
299
403
|
}
|
|
404
|
+
/** A command a deny can never reach: Core (bootstrap / spine / meta) or a bootstrap subverb. */
|
|
405
|
+
function isDenyProtected(view) {
|
|
406
|
+
return view.tier === CommandTier.Core || isBootstrapFamily(view.command);
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* `surface deny <selector>` — add an exact path or `<group> *` to
|
|
410
|
+
* `surface.disabled`. Refused (2) when the selector names no command, only
|
|
411
|
+
* core commands, or is already denied.
|
|
412
|
+
*/
|
|
413
|
+
async function runDeny({ cwd, json, write, target }) {
|
|
414
|
+
if (!target) {
|
|
415
|
+
process.stderr.write("Usage: shrk surface deny <command|'<group> *'> [--write]\n");
|
|
416
|
+
return 2;
|
|
417
|
+
}
|
|
418
|
+
const loaded = await loadSurfaceContext({ cwd });
|
|
419
|
+
const summary = buildSurfaceSummary(loaded.context);
|
|
420
|
+
const matched = allViews(summary).filter((v) => matchesSurfaceSelector(target, v.command));
|
|
421
|
+
if (matched.length === 0) {
|
|
422
|
+
process.stderr.write(`'${target}' names no command. A group selector is '<group> *' (e.g. 'bundle *'); ` +
|
|
423
|
+
'run `shrk surface list` for the paths.\n');
|
|
424
|
+
return 2;
|
|
425
|
+
}
|
|
426
|
+
const protectedViews = matched.filter(isDenyProtected);
|
|
427
|
+
const deniable = matched.filter((v) => !isDenyProtected(v));
|
|
428
|
+
if (deniable.length === 0) {
|
|
429
|
+
process.stderr.write(`Cannot disable a core command (${matched.map((v) => v.command).join(', ')}).\n`);
|
|
430
|
+
return 2;
|
|
431
|
+
}
|
|
432
|
+
const raw = rawSurface(loaded);
|
|
433
|
+
if ((raw?.disabled ?? []).includes(target)) {
|
|
434
|
+
process.stderr.write(`Refusing no-op: '${target}' is already in surface.disabled.\n`);
|
|
435
|
+
return 2;
|
|
436
|
+
}
|
|
437
|
+
const diff = planSurfaceEdit(configFileOf(loaded, cwd), raw, [
|
|
438
|
+
{ field: 'disabled', command: target, operation: 'add' },
|
|
439
|
+
]);
|
|
440
|
+
const notes = [`Denies ${deniable.length} command(s): ${previewList(deniable.map((v) => v.command))}`];
|
|
441
|
+
if (protectedViews.length > 0) {
|
|
442
|
+
notes.push(`Stays callable (core / bootstrap): ${previewList(protectedViews.map((v) => v.command))}`);
|
|
443
|
+
}
|
|
444
|
+
return await emitDiff(diff, {
|
|
445
|
+
json,
|
|
446
|
+
write,
|
|
447
|
+
notes,
|
|
448
|
+
extra: { denies: deniable.map((v) => v.command), protected: protectedViews.map((v) => v.command) },
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
/** `surface allow <selector>` — remove a selector from the config's `surface.disabled`. */
|
|
452
|
+
async function runAllow({ cwd, json, write, target }) {
|
|
453
|
+
if (!target) {
|
|
454
|
+
process.stderr.write("Usage: shrk surface allow <command|'<group> *'> [--write]\n");
|
|
455
|
+
return 2;
|
|
456
|
+
}
|
|
457
|
+
const loaded = await loadSurfaceContext({ cwd });
|
|
458
|
+
const raw = rawSurface(loaded);
|
|
459
|
+
const configDisabled = raw?.disabled ?? [];
|
|
460
|
+
if (!configDisabled.includes(target)) {
|
|
461
|
+
const profile = loaded.activeProfile;
|
|
462
|
+
if (profile?.disabled?.includes(target)) {
|
|
463
|
+
process.stderr.write(`'${target}' is disabled by the '${profile.id}' surface profile, not by surface.disabled. ` +
|
|
464
|
+
'Override it for one command with `shrk surface enable "<command>" --write`, or choose another profile.\n');
|
|
465
|
+
return 2;
|
|
466
|
+
}
|
|
467
|
+
process.stderr.write(`Refusing no-op: '${target}' is not in surface.disabled` +
|
|
468
|
+
(configDisabled.length > 0 ? ` (entries: ${configDisabled.join(', ')}).\n` : '.\n'));
|
|
469
|
+
return 2;
|
|
470
|
+
}
|
|
471
|
+
const diff = planSurfaceEdit(configFileOf(loaded, cwd), raw, [
|
|
472
|
+
{ field: 'disabled', command: target, operation: 'remove' },
|
|
473
|
+
]);
|
|
474
|
+
return await emitDiff(diff, { json, write });
|
|
475
|
+
}
|
|
300
476
|
async function runReset({ cwd, json, write }) {
|
|
301
|
-
const
|
|
477
|
+
const loaded = await loadSurfaceContext({ cwd });
|
|
478
|
+
const raw = rawSurface(loaded);
|
|
302
479
|
const edits = [];
|
|
303
|
-
for (const name of
|
|
480
|
+
for (const name of raw?.enabled ?? []) {
|
|
304
481
|
edits.push({ field: 'enabled', command: name, operation: 'remove' });
|
|
305
482
|
}
|
|
306
|
-
for (const name of
|
|
483
|
+
for (const name of raw?.hidden ?? []) {
|
|
307
484
|
edits.push({ field: 'hidden', command: name, operation: 'remove' });
|
|
308
485
|
}
|
|
309
|
-
const
|
|
310
|
-
|
|
486
|
+
for (const name of raw?.disabled ?? []) {
|
|
487
|
+
edits.push({ field: 'disabled', command: name, operation: 'remove' });
|
|
488
|
+
}
|
|
489
|
+
const diff = planSurfaceEdit(configFileOf(loaded, cwd), raw, edits);
|
|
311
490
|
if (json) {
|
|
312
491
|
process.stdout.write(asJson({ diff, willWrite: write }) + '\n');
|
|
313
492
|
}
|
|
@@ -321,7 +500,23 @@ async function runReset({ cwd, json, write }) {
|
|
|
321
500
|
process.stdout.write(`\nWrote ${diff.configFile} (reset).\n`);
|
|
322
501
|
return 0;
|
|
323
502
|
}
|
|
324
|
-
|
|
503
|
+
/** Print (text or JSON) a planned edit, and apply it under `--write`. */
|
|
504
|
+
async function emitDiff(diff, opts) {
|
|
505
|
+
if (opts.json) {
|
|
506
|
+
process.stdout.write(asJson({ diff, willWrite: opts.write, ...(opts.extra ?? {}) }) + '\n');
|
|
507
|
+
}
|
|
508
|
+
else {
|
|
509
|
+
renderDiffText(diff, opts.write, opts.notes ?? []);
|
|
510
|
+
}
|
|
511
|
+
if (!opts.write)
|
|
512
|
+
return 0;
|
|
513
|
+
const result = applySurfaceEdit(diff);
|
|
514
|
+
if (!opts.json) {
|
|
515
|
+
process.stdout.write(`\nWrote ${result.configFile} (${result.edits.length} edit${result.edits.length === 1 ? '' : 's'}).\n`);
|
|
516
|
+
}
|
|
517
|
+
return 0;
|
|
518
|
+
}
|
|
519
|
+
function renderDiffText(diff, willWrite, notes = []) {
|
|
325
520
|
process.stdout.write(header('Surface config edit'));
|
|
326
521
|
process.stdout.write(kv('configFile', diff.configFile) + '\n');
|
|
327
522
|
process.stdout.write(kv('edits', String(diff.edits.length)) + '\n');
|
|
@@ -329,7 +524,14 @@ function renderDiffText(diff, willWrite) {
|
|
|
329
524
|
const sign = edit.operation === 'add' ? '+' : '-';
|
|
330
525
|
process.stdout.write(` ${sign} surface.${edit.field}: ${edit.command}\n`);
|
|
331
526
|
}
|
|
527
|
+
for (const note of notes)
|
|
528
|
+
process.stdout.write(`${note}\n`);
|
|
332
529
|
if (!willWrite) {
|
|
333
530
|
process.stdout.write('\nDry run. Pass --write to apply.\n');
|
|
334
531
|
}
|
|
335
532
|
}
|
|
533
|
+
/** At most eight paths, then `(+N more)`. */
|
|
534
|
+
function previewList(paths) {
|
|
535
|
+
const head = paths.slice(0, 8).join(', ');
|
|
536
|
+
return paths.length > 8 ? `${head} (+${paths.length - 8} more)` : head;
|
|
537
|
+
}
|
|
@@ -455,7 +455,7 @@ async function collectLikelyFilesV2(input) {
|
|
|
455
455
|
if (generatedFiles.length > 0)
|
|
456
456
|
suggestedFirstCommands.push('shrk generated report');
|
|
457
457
|
if (stabilityWarnings.length > 0)
|
|
458
|
-
suggestedFirstCommands.push('shrk
|
|
458
|
+
suggestedFirstCommands.push('shrk ingest report');
|
|
459
459
|
if (suggestedFirstCommands.length === 0)
|
|
460
460
|
suggestedFirstCommands.push('shrk task "' + task + '"');
|
|
461
461
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task.command.d.ts","sourceRoot":"","sources":["../../src/commands/task.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"task.command.d.ts","sourceRoot":"","sources":["../../src/commands/task.command.ts"],"names":[],"mappings":"AAkBA,OAAO,EAKL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAqEhC,eAAO,MAAM,WAAW,EAAE,eA+RzB,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { buildKnowledgeStaleReport, buildScaffoldCoverageReport, buildSpecList, buildTaskPacket, buildTemplateDriftReport, buildUncertaintySummary, decomposeTask, entrypointBanner, inspectSharkcraft, lintKnowledge, renderScaffoldCoverageMarkdown, renderUncertaintyText, runDoctor, } from '@shrkcrft/inspector';
|
|
2
2
|
import { SpecStatus } from '@shrkcrft/generator';
|
|
3
|
+
import { templateRemainderSummary } from '@shrkcrft/templates';
|
|
3
4
|
import { flagBool, flagNumber, flagList, resolveCwd, } from "../command-registry.js";
|
|
5
|
+
import { PositionalMode } from "../dispatch/positional-mode.js";
|
|
4
6
|
import { asJson, header, kv } from "../output/format-output.js";
|
|
5
7
|
import { buildTaskNextReport } from "../task-next/task-next-ranker.js";
|
|
6
8
|
/**
|
|
@@ -21,7 +23,8 @@ function compactTaskPacket(p) {
|
|
|
21
23
|
})),
|
|
22
24
|
relevantRules: p.relevantRules.map((r) => ({ id: r.id, title: r.title })),
|
|
23
25
|
relevantPaths: p.relevantPaths.map((r) => ({ id: r.id, title: r.title })),
|
|
24
|
-
|
|
26
|
+
// A template's declared remainder rides on its row (R11-GAP-7).
|
|
27
|
+
relevantTemplates: p.relevantTemplates.map((t) => ({ id: t.id, name: t.name, ...templateRemainderSummary(t) })),
|
|
25
28
|
recommendedMcpTools: p.recommendedMcpTools,
|
|
26
29
|
recommendedCliCommands: p.recommendedCliCommands,
|
|
27
30
|
forbiddenActions: p.forbiddenActions,
|
|
@@ -56,6 +59,7 @@ function minimalTaskPacket(p) {
|
|
|
56
59
|
id: t.id,
|
|
57
60
|
name: t.name,
|
|
58
61
|
...(t.appliesWhen.length > 0 ? { appliesWhen: t.appliesWhen } : {}),
|
|
62
|
+
...templateRemainderSummary(t),
|
|
59
63
|
})),
|
|
60
64
|
verificationCommands: p.verificationCommands,
|
|
61
65
|
recommendedMcpTools: p.recommendedMcpTools,
|
|
@@ -64,6 +68,16 @@ function minimalTaskPacket(p) {
|
|
|
64
68
|
}
|
|
65
69
|
export const taskCommand = {
|
|
66
70
|
name: 'task',
|
|
71
|
+
// The positionals are the free-form task (`task "add a thing"`).
|
|
72
|
+
positionals: PositionalMode.Free,
|
|
73
|
+
subverbs: [
|
|
74
|
+
{
|
|
75
|
+
name: 'decompose',
|
|
76
|
+
description: 'Decompose a task into ranked subtasks.',
|
|
77
|
+
usage: 'shrk task decompose "<task>" [--json]',
|
|
78
|
+
positionals: PositionalMode.Free,
|
|
79
|
+
},
|
|
80
|
+
],
|
|
67
81
|
description: 'Build an AI-ready task packet: relevant context, action hints, recommended pipeline, templates, paths, verification commands. Defaults to a compact packet (top-5 rules / top-3 templates / 5 hints per field) to keep agent token cost low. Pass `--full` to get the unrestricted packet, or `--next` to skip the packet and survey the workspace for the highest-leverage next action.',
|
|
68
82
|
usage: 'shrk [--cwd <dir>] task "<task>" [--max-tokens 4000] [--scope x,y] [--explain-ranking] [--full] [--json] OR shrk task --next [--json]',
|
|
69
83
|
async run(args) {
|
|
@@ -73,6 +87,8 @@ export const taskCommand = {
|
|
|
73
87
|
// command. Pure ranker over existing JSON outputs.
|
|
74
88
|
if (flagBool(args, 'next')) {
|
|
75
89
|
const inspection = await inspectSharkcraft({ cwd: resolveCwd(args) });
|
|
90
|
+
// Warm before the stale report resolves any id (CLAUDE.md "Warm before you resolve").
|
|
91
|
+
await (await import("../surface/cli-command-resolver.js")).warmCliReferenceRegistries(inspection);
|
|
76
92
|
const [doctorRes, staleRes, driftRes] = await Promise.all([
|
|
77
93
|
runDoctor(inspection),
|
|
78
94
|
Promise.resolve(buildKnowledgeStaleReport(inspection)),
|
|
@@ -259,6 +275,11 @@ export const taskCommand = {
|
|
|
259
275
|
process.stdout.write('\nRelevant templates:\n');
|
|
260
276
|
for (const t of packet.relevantTemplates.slice(0, 6)) {
|
|
261
277
|
process.stdout.write(` • ${t.id} ${t.name}\n`);
|
|
278
|
+
const remainder = templateRemainderSummary(t);
|
|
279
|
+
if (remainder.notScaffolded)
|
|
280
|
+
process.stdout.write(` not scaffolded: ${remainder.notScaffolded.join(', ')}\n`);
|
|
281
|
+
if (remainder.manualSteps)
|
|
282
|
+
process.stdout.write(` manual steps: ${remainder.manualSteps.length}\n`);
|
|
262
283
|
}
|
|
263
284
|
}
|
|
264
285
|
if (packet.suggestedGen) {
|
|
@@ -19,6 +19,10 @@ export declare const templatesAddCommand: ICommandHandler;
|
|
|
19
19
|
* Distinct from `templates lint` (which surfaces test-style findings)
|
|
20
20
|
* and `templates drift` (which compares declared vs. rendered output)
|
|
21
21
|
* by combining them with a clean/dirty verdict + per-template summary.
|
|
22
|
+
* Lint is READ, never re-derived: a template `templates lint` fails can
|
|
23
|
+
* never read "Clean" here. Settled against coverage — 0 templates, or a
|
|
24
|
+
* template whose `changes()` threw with sample variables (its operations
|
|
25
|
+
* were never checked), is NOT VERIFIED (2), never a pass.
|
|
22
26
|
*/
|
|
23
27
|
export declare const templatesDoctorCommand: ICommandHandler;
|
|
24
28
|
export declare const templatesUpdateCommand: ICommandHandler;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.command.d.ts","sourceRoot":"","sources":["../../src/commands/templates.command.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"templates.command.d.ts","sourceRoot":"","sources":["../../src/commands/templates.command.ts"],"names":[],"mappings":"AAiCA,OAAO,EAOL,KAAK,eAAe,EAErB,MAAM,wBAAwB,CAAC;AAUhC,eAAO,MAAM,oBAAoB,EAAE,eA6DlC,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,eA0BlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,eAoDjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,eAmBpC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,eAmDrC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,eAWnC,CAAC;AAmNF,eAAO,MAAM,2BAA2B,EAAE,eAgCzC,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,eAOnC,CAAC;AA2GF,eAAO,MAAM,wBAAwB,EAAE,eA+FtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,eAKjC,CAAC;AAiBF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,sBAAsB,EAAE,eAoFpC,CAAC;AAwHF,eAAO,MAAM,sBAAsB,EAAE,eAiKpC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,eAkEpC,CAAC"}
|