@shrkcrft/cli 0.1.0-alpha.30 → 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 +54 -3
- package/dist/commands/baseline.command.d.ts.map +1 -1
- package/dist/commands/baseline.command.js +582 -74
- 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 +138 -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 +1241 -322
- 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 +3 -0
- 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 +13 -0
- package/dist/commands/docs-references.command.d.ts.map +1 -1
- package/dist/commands/docs-references.command.js +269 -72
- package/dist/commands/doctor.command.d.ts.map +1 -1
- package/dist/commands/doctor.command.js +58 -4
- 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 +52 -0
- package/dist/commands/gates.command.d.ts.map +1 -1
- package/dist/commands/gates.command.js +811 -185
- 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 +33 -3
- package/dist/commands/generated.command.d.ts.map +1 -1
- package/dist/commands/generated.command.js +499 -147
- 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 +198 -24
- 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 +360 -73
- 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 +37 -3
- package/dist/gates/gate-rule-globs.d.ts.map +1 -1
- package/dist/gates/gate-rule-globs.js +78 -40
- package/dist/gates/gate-rule-view.d.ts +17 -4
- package/dist/gates/gate-rule-view.d.ts.map +1 -1
- package/dist/gates/gate-rule-view.js +105 -90
- 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 +187 -4
- package/dist/gates/rule-coverage.d.ts.map +1 -1
- package/dist/gates/rule-coverage.js +501 -49
- package/dist/gates/run-gate-planes.d.ts +14 -0
- package/dist/gates/run-gate-planes.d.ts.map +1 -1
- package/dist/gates/run-gate-planes.js +172 -30
- 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 +200 -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
package/dist/main.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAEA,OAAO,EACL,eAAe,
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";AAEA,OAAO,EACL,eAAe,EAKhB,MAAM,uBAAuB,CAAC;AAsb/B,wBAAgB,aAAa,IAAI,eAAe,CA4Z/C;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA8DrE;AA+OD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAoDxE"}
|
package/dist/main.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { loadDotenv } from "./env/load-dotenv.js";
|
|
3
|
-
import { CommandRegistry,
|
|
4
|
-
import { argvHasExitTrailer, argvHasNoHints, argvHasStrict, emitPipeExitSignal, promoteForStrict, } from "./exit-codes.js";
|
|
3
|
+
import { CommandRegistry, extractGlobalCwd, parseArgs, } from "./command-registry.js";
|
|
4
|
+
import { argvHasExitTrailer, argvHasNoHints, argvHasStrict, emitPipeExitSignal, promoteForStrict, VERDICT_PATH_TOKENS, } from "./exit-codes.js";
|
|
5
5
|
import { runCommandWithCompression } from "./output/output-compression.js";
|
|
6
6
|
import { initCommand } from "./commands/init.command.js";
|
|
7
7
|
import { inspectCommand } from "./commands/inspect.command.js";
|
|
@@ -37,9 +37,10 @@ import { gateCommand } from "./commands/gate.command.js";
|
|
|
37
37
|
import { policyLintCommand, policyLintExplainCommand } from "./commands/policy-lint.command.js";
|
|
38
38
|
import { baselineCheckCommand, baselineCommand, baselineDiffCommand, baselineExplainCommand, baselineListCommand, baselineUpdateCommand, } from "./commands/baseline.command.js";
|
|
39
39
|
import { generatedCheckCommand, generatedExplainCommand, generatedListCommand, generatedUpdateCommand, } from "./commands/generated.command.js";
|
|
40
|
-
import { gatesCheckCommand, gatesCommand, gatesCoverageCommand, gatesExplainCommand, gatesListCommand, gatesTryCommand, } from "./commands/gates.command.js";
|
|
40
|
+
import { gatesCheckCommand, gatesCommand, gatesCoverageCommand, gatesExplainCommand, gatesListCommand, gatesScaffoldSelfTestCommand, gatesTryCommand, } from "./commands/gates.command.js";
|
|
41
41
|
import { wiringCommand } from "./commands/wiring.command.js";
|
|
42
42
|
import { reuseCommand } from "./commands/reuse.command.js";
|
|
43
|
+
import { reuseCoverageCommand } from "./commands/reuse-coverage.command.js";
|
|
43
44
|
import { migrateCommand } from "./commands/migrate.command.js";
|
|
44
45
|
import { coverageCommand } from "./commands/coverage.command.js";
|
|
45
46
|
import { statsCommand } from "./commands/stats.command.js";
|
|
@@ -148,8 +149,17 @@ import { errorFooterFor, renderErrorFooter } from "./output/failure-hints.js";
|
|
|
148
149
|
import { renderAbout } from "./surface/about.js";
|
|
149
150
|
import { renderNoArgsLanding } from "./surface/no-args-landing.js";
|
|
150
151
|
import { loadSurfaceContext } from "./surface/load-surface-context.js";
|
|
152
|
+
import { warnStaleCompiledPacks } from "./packs/stale-build-warning.js";
|
|
151
153
|
import { buildSurfaceSummary, findCommandInSummary } from "./surface/surface-summary.js";
|
|
152
|
-
import {
|
|
154
|
+
import { commandIndexFor, setActiveCommandRegistry } from "./surface/command-index.js";
|
|
155
|
+
import { editDistance, typoTolerance } from "./dispatch/closest-match.js";
|
|
156
|
+
import { isPathTransparentGlobal, PATH_TRANSPARENCY, stripPreDispatchGlobals, withoutPathGlobals, } from "./dispatch/global-flags.js";
|
|
157
|
+
import { judgeInvocation } from "./dispatch/judge-invocation.js";
|
|
158
|
+
import { helpTopicFor, wantsHelp } from "./dispatch/help-intercept.js";
|
|
159
|
+
import { beginFlagReadTracking, flagDocumentation, invocationFlagDocumentation, settleUnreadFlags, siblingsDocumenting, tracksFlagReads, } from "./dispatch/unread-flags.js";
|
|
160
|
+
import { isStdoutPipe } from "./output/stdout-is-pipe.js";
|
|
161
|
+
import { walkDeclaredSubverbs } from "./dispatch/walk-declared-subverbs.js";
|
|
162
|
+
import { SURFACE_NOT_ENABLED_EXIT_CODE, surfaceRefusalFor, surfaceRefusalOutput, } from "./surface/not-enabled-error.js";
|
|
153
163
|
import { extractCommandPath, recordUsage, sanitizeFlagNames, } from "./usage/usage-log.js";
|
|
154
164
|
import { loadProjectConfig } from '@shrkcrft/config';
|
|
155
165
|
export function buildRegistry() {
|
|
@@ -232,8 +242,12 @@ export function buildRegistry() {
|
|
|
232
242
|
registry.registerSubcommand('gates', gatesCoverageCommand);
|
|
233
243
|
registry.registerSubcommand('gates', gatesExplainCommand);
|
|
234
244
|
registry.registerSubcommand('gates', gatesTryCommand);
|
|
245
|
+
registry.registerSubcommand('gates', gatesScaffoldSelfTestCommand);
|
|
235
246
|
registry.register(wiringCommand);
|
|
236
247
|
registry.register(reuseCommand);
|
|
248
|
+
// `shrk reuse coverage` — the trie's greedy descent routes the literal
|
|
249
|
+
// `coverage` here; any other intent still reaches `reuse` itself.
|
|
250
|
+
registry.registerSubcommand('reuse', reuseCoverageCommand);
|
|
237
251
|
registry.register(migrateCommand);
|
|
238
252
|
registry.register(coverageCommand);
|
|
239
253
|
registry.register(statsCommand);
|
|
@@ -543,21 +557,35 @@ export async function runCli(argv) {
|
|
|
543
557
|
// and each command's own `--strict` semantics (e.g. `check --strict`) still
|
|
544
558
|
// apply beneath this (a25 §1.1).
|
|
545
559
|
const strict = argvHasStrict(argv);
|
|
546
|
-
//
|
|
547
|
-
//
|
|
548
|
-
|
|
549
|
-
|
|
560
|
+
// THE registry this run dispatches from — the verdict path below and the
|
|
561
|
+
// dispatcher read the same one.
|
|
562
|
+
const registry = buildRegistry();
|
|
563
|
+
// Derive the command path from the argv the dispatcher reads: THE pre-dispatch
|
|
564
|
+
// strip (`--cwd`, `--exit-trailer`, `--compress*` — the one runCliInner uses),
|
|
565
|
+
// then the global `--no-hints` / `--strict` stepped over by the SAME descent.
|
|
566
|
+
// Otherwise a LEADING stripped global (`--exit-trailer`, `--compress`) makes
|
|
567
|
+
// extractCommandPath break on the '-' and return "" — zeroing out the pipe
|
|
568
|
+
// note, `--exit-trailer` and the usage record — while `doctor --strict
|
|
569
|
+
// warnings` must stay `doctor`.
|
|
570
|
+
const commandArgv = withoutPathGlobals(stripPreDispatchGlobals(argv).rest, registry);
|
|
571
|
+
const command = extractCommandPath(commandArgv);
|
|
572
|
+
// The verdict-verb check reads one token deeper than the usage record, so a
|
|
573
|
+
// three-token verdict verb (`docs references check`) is told apart from its
|
|
574
|
+
// informational siblings (`docs references list` / `explain`).
|
|
575
|
+
const verdictPath = extractCommandPath(commandArgv, VERDICT_PATH_TOKENS);
|
|
550
576
|
let exitCode = 0;
|
|
551
577
|
try {
|
|
552
|
-
exitCode = promoteForStrict(await runCliInner(argv), strict);
|
|
578
|
+
exitCode = promoteForStrict(await runCliInner(argv, registry), strict);
|
|
553
579
|
// Keep the honest 0/1/2 verdict readable through a trailing pipe (the shape
|
|
554
580
|
// an agent reaches for first). A no-op for non-gate verbs. Skipped inside the
|
|
555
581
|
// smart-context worker child and the --compress re-run child, whose stdout is
|
|
556
582
|
// a pipe by construction — a spurious "stdout is piped" note there (the user
|
|
557
583
|
// never piped) would be noise, not signal.
|
|
558
584
|
if (!process.env.SHRK_WORKER_EXITCODE_FILE && !process.env.SHRK_COMPRESS_CHILD) {
|
|
559
|
-
emitPipeExitSignal(
|
|
560
|
-
|
|
585
|
+
emitPipeExitSignal(verdictPath, exitCode, {
|
|
586
|
+
// A PIPE (or socket) to another process — never a plain file redirect,
|
|
587
|
+
// which is not a TTY either but has no downstream `$?` (round 13).
|
|
588
|
+
piped: isStdoutPipe(),
|
|
561
589
|
trailer: argvHasExitTrailer(argv),
|
|
562
590
|
noHints: argvHasNoHints(argv),
|
|
563
591
|
});
|
|
@@ -604,16 +632,21 @@ async function isUsageEnabled(cwd) {
|
|
|
604
632
|
return true;
|
|
605
633
|
}
|
|
606
634
|
}
|
|
607
|
-
async function runCliInner(argv) {
|
|
608
|
-
|
|
609
|
-
//
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
//
|
|
613
|
-
|
|
614
|
-
//
|
|
615
|
-
|
|
616
|
-
|
|
635
|
+
async function runCliInner(argv, registry) {
|
|
636
|
+
// The ONE command index (surface list, help, the surface gate, the command
|
|
637
|
+
// resolver injected into the inspector) reads the registry this run
|
|
638
|
+
// dispatches from — commands never import main.ts to get it.
|
|
639
|
+
setActiveCommandRegistry(registry);
|
|
640
|
+
// THE pre-dispatch strip — the one runCli derives the verdict path from: the
|
|
641
|
+
// global --cwd (anywhere, incl. before the command), --exit-trailer (runCli
|
|
642
|
+
// reads it off the raw argv to decide whether to print the trailer) and the
|
|
643
|
+
// --compress / --ccr output-compression flags, so no per-command flag guard
|
|
644
|
+
// ever sees them.
|
|
645
|
+
const { cwd: globalCwd, compress: compressDirective, rest: cleanArgv } = stripPreDispatchGlobals(argv);
|
|
646
|
+
// The global `--strict` / `--no-hints` may LEAD the command
|
|
647
|
+
// (`shrk --no-hints scaffolds list`): the meta checks below read the first
|
|
648
|
+
// token that is not one of them, and the trie descent steps over them.
|
|
649
|
+
const first = cleanArgv.find((t) => !isPathTransparentGlobal(t));
|
|
617
650
|
// `--compress` / `--ccr` on a real command: re-run it and compress its stdout.
|
|
618
651
|
// (Meta verbs like --help/--version and bare invocations are left untouched.)
|
|
619
652
|
if (compressDirective &&
|
|
@@ -655,11 +688,16 @@ async function runCliInner(argv) {
|
|
|
655
688
|
process.stdout.write(renderAbout());
|
|
656
689
|
return 0;
|
|
657
690
|
}
|
|
658
|
-
//
|
|
691
|
+
// Greedy trie descent. Handles 1-, 2-, and 3-level commands uniformly
|
|
659
692
|
// (`shrk doctor`, `shrk packs list`, `shrk pack author status`). The
|
|
660
693
|
// resolver stops when it hits a flag or a token that isn't a child of the
|
|
661
|
-
// current node, returning the deepest handler + the leftover tokens.
|
|
662
|
-
|
|
694
|
+
// current node, returning the deepest handler + the leftover tokens. The
|
|
695
|
+
// global `--strict` / `--no-hints` are transparent to it while they sit
|
|
696
|
+
// inside the path — hoisted into the leftover instead of ending the descent
|
|
697
|
+
// at the first token — and past the path a bare `--strict` keeps the value
|
|
698
|
+
// after it (`doctor --strict warnings`). THE options: PATH_TRANSPARENCY.
|
|
699
|
+
const descend = (tokens) => registry.resolve(tokens, PATH_TRANSPARENCY);
|
|
700
|
+
let { handler, matchedPath, rest: leftover, node } = descend(cleanArgv);
|
|
663
701
|
// A multi-word command passed as a SINGLE quoted token (`shrk "graph status"`)
|
|
664
702
|
// arrives as one argv element with internal whitespace. The trie has no atomic
|
|
665
703
|
// `graph status` node, so the first descent misses (handler undefined) — yet
|
|
@@ -668,32 +706,82 @@ async function runCliInner(argv) {
|
|
|
668
706
|
// quoted form behaves identically to the unquoted `shrk graph status`.
|
|
669
707
|
// Genuinely unknown tokens leave `handler` undefined and fall through to the
|
|
670
708
|
// existing unknown-command path unchanged.
|
|
671
|
-
|
|
672
|
-
|
|
709
|
+
const bareArgv = cleanArgv.filter((t) => !isPathTransparentGlobal(t));
|
|
710
|
+
if (!handler && bareArgv.length === 1 && /\s/.test(bareArgv[0])) {
|
|
711
|
+
const retry = descend([
|
|
712
|
+
...bareArgv[0].trim().split(/\s+/),
|
|
713
|
+
...cleanArgv.filter(isPathTransparentGlobal),
|
|
714
|
+
]);
|
|
673
715
|
if (retry.handler) {
|
|
674
716
|
({ handler, matchedPath, rest: leftover, node } = retry);
|
|
675
717
|
}
|
|
676
718
|
}
|
|
677
|
-
// `--help` / `-h`
|
|
678
|
-
//
|
|
679
|
-
|
|
680
|
-
|
|
719
|
+
// `--help` / `-h` ANYWHERE before `--` — after a subverb, a positional or
|
|
720
|
+
// another flag, at any depth — prints help for the deepest path the command
|
|
721
|
+
// index knows, and NOTHING else runs: no guard, no surface gate, no
|
|
722
|
+
// inspection, no command body. (Only a leading `--help` used to be caught:
|
|
723
|
+
// `report site --help` wrote twelve HTML files, `graph index --help` built
|
|
724
|
+
// the store.) Tokens after `--` pass through untouched.
|
|
725
|
+
if (matchedPath.length > 0 && wantsHelp(leftover)) {
|
|
726
|
+
const topic = helpTopicFor(commandIndexFor(registry), matchedPath, leftover);
|
|
727
|
+
return registry.get('help').run(parseArgs([topic.join(' ')], { globalCwd }));
|
|
681
728
|
}
|
|
729
|
+
const trieChildren = [...node.children.keys()];
|
|
682
730
|
if (handler) {
|
|
683
|
-
|
|
684
|
-
//
|
|
685
|
-
//
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
731
|
+
const parsed = parseArgs(leftover, { globalCwd, booleanFlags: handler.booleanFlags });
|
|
732
|
+
// THE pre-run judgement (round 11 §5.2, `judgeInvocation` — the function the
|
|
733
|
+
// command-string resolver calls too): an unknown subcommand, a verb-shaped
|
|
734
|
+
// token that is neither a subverb nor a file, a flag outside a declared set,
|
|
735
|
+
// or a flag no documentation of the command names is refused BEFORE
|
|
736
|
+
// anything runs — cheap, no inspection — instead of a default action that
|
|
737
|
+
// exits 0 (or a write that happens before the refusal).
|
|
738
|
+
const rejection = judgeInvocation({
|
|
739
|
+
registry,
|
|
740
|
+
handler,
|
|
741
|
+
matchedPath,
|
|
742
|
+
trieChildren,
|
|
743
|
+
parsed,
|
|
744
|
+
cwd: globalCwd ?? process.cwd(),
|
|
745
|
+
});
|
|
746
|
+
if (rejection) {
|
|
747
|
+
process.stderr.write(rejection.message);
|
|
748
|
+
return rejection.exitCode;
|
|
749
|
+
}
|
|
750
|
+
// The surface gate. Bootstrap commands and core/extended tiers pass
|
|
751
|
+
// through; an experimental command not in `surface.enabled[]`, a
|
|
752
|
+
// tool-maintenance command outside SharkCraft's own repository, or a
|
|
753
|
+
// command `surface.disabled[]` denies returns the structured refusal
|
|
754
|
+
// (exit 78 — never a check verdict).
|
|
755
|
+
const refusal = await checkSurfaceGate(handler, matchedPath, parsed.positional, globalCwd ?? process.cwd());
|
|
756
|
+
if (refusal) {
|
|
757
|
+
// `--json` / `--format json` get the documented machine form on stdout
|
|
758
|
+
// (`sharkcraft.surface.not-enabled.v1` + `reasonCode`); otherwise the text
|
|
759
|
+
// on stderr — `surfaceRefusalOutput`, the one writer.
|
|
760
|
+
const output = surfaceRefusalOutput(refusal, parsed);
|
|
761
|
+
if (output.stdout)
|
|
762
|
+
process.stdout.write(output.stdout);
|
|
763
|
+
if (output.stderr)
|
|
764
|
+
process.stderr.write(output.stderr);
|
|
690
765
|
return SURFACE_NOT_ENABLED_EXIT_CODE;
|
|
691
766
|
}
|
|
692
|
-
return await
|
|
767
|
+
return await runWithFlagReadTracking(registry, handler, matchedPath, parsed);
|
|
693
768
|
}
|
|
694
|
-
// No handler at the deepest match
|
|
695
|
-
//
|
|
769
|
+
// No handler at the deepest match: a command group. A bare token under it
|
|
770
|
+
// is an unknown subcommand (`templates lst` → did you mean `templates
|
|
771
|
+
// list`?), never the group's help at exit 0; a bare group lists its verbs.
|
|
696
772
|
if (matchedPath.length > 0 && node.children.size > 0) {
|
|
773
|
+
const rejection = judgeInvocation({
|
|
774
|
+
registry,
|
|
775
|
+
handler: undefined,
|
|
776
|
+
matchedPath,
|
|
777
|
+
trieChildren,
|
|
778
|
+
parsed: parseArgs(leftover, { globalCwd }),
|
|
779
|
+
cwd: globalCwd ?? process.cwd(),
|
|
780
|
+
});
|
|
781
|
+
if (rejection) {
|
|
782
|
+
process.stderr.write(rejection.message);
|
|
783
|
+
return rejection.exitCode;
|
|
784
|
+
}
|
|
697
785
|
return registry.get('help').run(parseArgs([matchedPath.join(' ')], { globalCwd }));
|
|
698
786
|
}
|
|
699
787
|
// Genuinely unknown — fall back to free-form / did-you-mean.
|
|
@@ -707,6 +795,43 @@ async function runCliInner(argv) {
|
|
|
707
795
|
printDidYouMean(attempted);
|
|
708
796
|
return 2;
|
|
709
797
|
}
|
|
798
|
+
/**
|
|
799
|
+
* Run `handler`, then judge the flags it never READ — the universal post-run
|
|
800
|
+
* detector (`dispatch/unread-flags.ts`). An undocumented non-presentation flag
|
|
801
|
+
* was already refused before the run (`judgeInvocation`), so this backstop
|
|
802
|
+
* warns about an undocumented presentation flag and catches a flag name
|
|
803
|
+
* computed at runtime: a `0` over a dropped input becomes `usageExitFor(path)`. Skipped for a
|
|
804
|
+
* handler that declares `flags` (the pre-run guard already judged them) or
|
|
805
|
+
* `forwardsArgv` (a child process re-parses the argv). The declared-subverb
|
|
806
|
+
* walk is taken BEFORE the run — some handlers consume `args.positional`.
|
|
807
|
+
*/
|
|
808
|
+
async function runWithFlagReadTracking(registry, handler, matchedPath, parsed) {
|
|
809
|
+
const walk = walkDeclaredSubverbs(handler, matchedPath, parsed.positional);
|
|
810
|
+
if (!tracksFlagReads(handler, walk))
|
|
811
|
+
return await handler.run(parsed);
|
|
812
|
+
// Captured BEFORE the run — some handlers consume `args.positional`.
|
|
813
|
+
const positional = [...parsed.positional];
|
|
814
|
+
const unread = beginFlagReadTracking(parsed);
|
|
815
|
+
const exit = await handler.run(parsed);
|
|
816
|
+
// The flag documentation (which builds the command index) is needed only to
|
|
817
|
+
// judge an unread flag — the common run reads every flag it was given, so it
|
|
818
|
+
// pays nothing. settleUnreadFlags returns `exit` untouched for no unread flag.
|
|
819
|
+
// The INVOCATION's documentation, as the pre-run refusal read it (round 13:
|
|
820
|
+
// per subverb, never a sibling's).
|
|
821
|
+
const unreadKeys = unread();
|
|
822
|
+
if (unreadKeys.length === 0)
|
|
823
|
+
return exit;
|
|
824
|
+
const index = commandIndexFor(registry);
|
|
825
|
+
return settleUnreadFlags({
|
|
826
|
+
unread: unreadKeys,
|
|
827
|
+
path: walk.path.join(' '),
|
|
828
|
+
documentation: invocationFlagDocumentation({ handler, matchedPath, positional, index }),
|
|
829
|
+
groupDocumentation: flagDocumentation(handler, matchedPath, index),
|
|
830
|
+
documentedOn: (key) => siblingsDocumenting(key, matchedPath, walk.path, index),
|
|
831
|
+
exit,
|
|
832
|
+
argv: parsed.argv,
|
|
833
|
+
});
|
|
834
|
+
}
|
|
710
835
|
/**
|
|
711
836
|
* Heuristic for "this looks like a task, not a command".
|
|
712
837
|
*
|
|
@@ -788,32 +913,44 @@ function printFreeFormTaskHint(task) {
|
|
|
788
913
|
` $ shrk commands\n`);
|
|
789
914
|
}
|
|
790
915
|
/**
|
|
791
|
-
* Check whether the
|
|
792
|
-
*
|
|
793
|
-
*
|
|
794
|
-
*
|
|
916
|
+
* Check whether the invoked command is gated by the surface tier model.
|
|
917
|
+
* Returns `null` if the command is callable (core/extended), or the
|
|
918
|
+
* structured refusal (`surfaceRefusalFor`) — an experimental command not
|
|
919
|
+
* enabled, a tool-maintenance command outside SharkCraft's own repository, or
|
|
920
|
+
* a command a `surface.disabled` selector denies.
|
|
921
|
+
*
|
|
922
|
+
* The view is looked up at the deepest DECLARED path first
|
|
923
|
+
* (`walkDeclaredSubverbs`: `release readiness` and `commands doctor` are
|
|
924
|
+
* subverbs one handler dispatches, so the trie path alone — `release` — could
|
|
925
|
+
* never gate them), then at each shorter prefix down to the top-level token.
|
|
795
926
|
*
|
|
796
927
|
* Failure-soft: any error loading the inspection (fresh repo, no
|
|
797
928
|
* config, etc.) lets the command through. The gate must NEVER false-
|
|
798
929
|
* positive a bootstrap call — the bootstrap set in `tier.ts` plus
|
|
799
930
|
* spine-derived core commands always pass through cleanly.
|
|
800
931
|
*/
|
|
801
|
-
async function checkSurfaceGate(matchedPath, cwd) {
|
|
802
|
-
|
|
803
|
-
if (candidate.length === 0)
|
|
932
|
+
async function checkSurfaceGate(handler, matchedPath, positional, cwd) {
|
|
933
|
+
if (matchedPath.length === 0)
|
|
804
934
|
return null;
|
|
935
|
+
const walk = walkDeclaredSubverbs(handler, matchedPath, positional);
|
|
936
|
+
const candidates = [];
|
|
937
|
+
for (let n = walk.path.length; n >= 1; n -= 1)
|
|
938
|
+
candidates.push(walk.path.slice(0, n).join(' '));
|
|
805
939
|
try {
|
|
806
|
-
const { context } = await loadSurfaceContext({ cwd });
|
|
940
|
+
const { context, inspection } = await loadSurfaceContext({ cwd });
|
|
941
|
+
// Startup warning: a pack serving compiled contributions built from an
|
|
942
|
+
// older source (the one pack-asset freshness authority; content, not age).
|
|
943
|
+
warnStaleCompiledPacks(inspection);
|
|
807
944
|
const summary = buildSurfaceSummary(context);
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
if (view.callable)
|
|
945
|
+
let view;
|
|
946
|
+
for (const candidate of candidates) {
|
|
947
|
+
view = findCommandInSummary(summary, candidate);
|
|
948
|
+
if (view)
|
|
949
|
+
break;
|
|
950
|
+
}
|
|
951
|
+
if (!view || view.callable)
|
|
815
952
|
return null;
|
|
816
|
-
return
|
|
953
|
+
return surfaceRefusalFor(view);
|
|
817
954
|
}
|
|
818
955
|
catch {
|
|
819
956
|
return null;
|
|
@@ -842,29 +979,6 @@ function reorderCandidates(attempted, candidates) {
|
|
|
842
979
|
});
|
|
843
980
|
return ranked;
|
|
844
981
|
}
|
|
845
|
-
/** Edit distance (Levenshtein). Used to gate did-you-mean confidence. */
|
|
846
|
-
function editDistance(a, b) {
|
|
847
|
-
const m = a.length;
|
|
848
|
-
const n = b.length;
|
|
849
|
-
if (m === 0)
|
|
850
|
-
return n;
|
|
851
|
-
if (n === 0)
|
|
852
|
-
return m;
|
|
853
|
-
const dp = new Array(n + 1);
|
|
854
|
-
for (let j = 0; j <= n; j += 1)
|
|
855
|
-
dp[j] = j;
|
|
856
|
-
for (let i = 1; i <= m; i += 1) {
|
|
857
|
-
let prev = dp[0];
|
|
858
|
-
dp[0] = i;
|
|
859
|
-
for (let j = 1; j <= n; j += 1) {
|
|
860
|
-
const tmp = dp[j];
|
|
861
|
-
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
862
|
-
dp[j] = Math.min(dp[j] + 1, dp[j - 1] + 1, prev + cost);
|
|
863
|
-
prev = tmp;
|
|
864
|
-
}
|
|
865
|
-
}
|
|
866
|
-
return dp[n];
|
|
867
|
-
}
|
|
868
982
|
/**
|
|
869
983
|
* Suggestion is "confident" when the candidate's top token is close
|
|
870
984
|
* to the attempt in edit-distance terms — `doctorz`→`doctor` (1 edit)
|
|
@@ -881,9 +995,9 @@ function isConfidentMatch(attempted, suggestion) {
|
|
|
881
995
|
return false;
|
|
882
996
|
const lower = attempted.toLowerCase();
|
|
883
997
|
const head = (suggestion.command.split(/\s+/)[0] ?? suggestion.command).toLowerCase();
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
return
|
|
998
|
+
// The ONE typo tolerance (dispatch/closest-match.ts) — shared with help's
|
|
999
|
+
// topic suggestion and the dispatcher guard's closest subcommand / flag.
|
|
1000
|
+
return editDistance(lower, head) <= typoTolerance(lower);
|
|
887
1001
|
}
|
|
888
1002
|
function printDidYouMean(attempted) {
|
|
889
1003
|
const rawCandidates = suggestDidYouMean(COMMAND_CATALOG, [attempted], 5);
|
|
@@ -962,13 +1076,16 @@ async function redirectStderrToTeardownLog() {
|
|
|
962
1076
|
// Bun exposes `import.meta.main`; Node does not. When Node runs the
|
|
963
1077
|
// compiled `dist/main.js` directly the path-suffix check (`main.js`)
|
|
964
1078
|
// catches it. The npm bin shim points at `shrk` so that suffix also
|
|
965
|
-
// triggers it. Source dev under Bun still runs via `main.ts`.
|
|
1079
|
+
// triggers it. Source dev under Bun still runs via `main.ts`. The bin target
|
|
1080
|
+
// is the round-13 bootstrap `dist/shrk.js` (source `src/shrk.ts`), which
|
|
1081
|
+
// imports this module — its suffixes are recognised the same way.
|
|
966
1082
|
const isMain = typeof import.meta !== 'undefined' && import.meta.main === true;
|
|
967
1083
|
const entryPath = process.argv[1] ?? '';
|
|
968
1084
|
if (isMain ||
|
|
969
1085
|
entryPath.endsWith('main.ts') ||
|
|
970
1086
|
entryPath.endsWith('main.js') ||
|
|
971
1087
|
entryPath.endsWith('shrk') ||
|
|
1088
|
+
entryPath.endsWith('shrk.ts') ||
|
|
972
1089
|
entryPath.endsWith('shrk.js') ||
|
|
973
1090
|
entryPath.endsWith('shrk.cmd')) {
|
|
974
1091
|
// Marks a real CLI invocation (vs. a command handler imported directly by a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"failure-hints.d.ts","sourceRoot":"","sources":["../../src/output/failure-hints.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAUzE;AAID,wBAAgB,WAAW,IAAI,YAAY,EAAE,CAM5C;AAED,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CAMpD;AAED,wBAAgB,kBAAkB,IAAI,YAAY,EAAE,CAMnD;AAED,wBAAgB,yBAAyB,IAAI,YAAY,EAAE,CAK1D;AAED,wBAAgB,6BAA6B,IAAI,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"failure-hints.d.ts","sourceRoot":"","sources":["../../src/output/failure-hints.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAUzE;AAID,wBAAgB,WAAW,IAAI,YAAY,EAAE,CAM5C;AAED,wBAAgB,mBAAmB,IAAI,YAAY,EAAE,CAMpD;AAED,wBAAgB,kBAAkB,IAAI,YAAY,EAAE,CAMnD;AAED,wBAAgB,yBAAyB,IAAI,YAAY,EAAE,CAK1D;AAED,wBAAgB,6BAA6B,IAAI,YAAY,EAAE,CAO9D;AAED,wBAAgB,kBAAkB,IAAI,YAAY,EAAE,CAKnD;AAED,wBAAgB,wBAAwB,IAAI,YAAY,EAAE,CAKzD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAiB9D;AAED,MAAM,MAAM,eAAe,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,gBAAgB,GAChB,oBAAoB,GACpB,uBAAuB,GACvB,kBAAkB,GAClB,eAAe,GACf,2BAA2B,GAC3B,sBAAsB,GACtB,+BAA+B,GAC/B,wBAAwB,GACxB,8BAA8B,CAAC;AAEnC;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,GAAG,SAAS,CA4E3G"}
|
|
@@ -41,8 +41,10 @@ export function fuzzyImpactAmbiguousHints() {
|
|
|
41
41
|
}
|
|
42
42
|
export function agentTestMissingExpectedHints() {
|
|
43
43
|
return [
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
// `why <id> --for-task` / `why-not` are gone (`why` explains a FILE now);
|
|
45
|
+
// the ranking trace for a task lives on `task` and `search`.
|
|
46
|
+
{ label: 'see how each id ranked for the task (or why it was left out)', command: 'shrk task "<task>" --explain-ranking' },
|
|
47
|
+
{ label: 'see what the ranker matched for the query', command: 'shrk search "<task>" --explain' },
|
|
46
48
|
];
|
|
47
49
|
}
|
|
48
50
|
export function ciReportEmptyHints() {
|
|
@@ -87,25 +89,25 @@ export function errorFooterFor(kind, context) {
|
|
|
87
89
|
return {
|
|
88
90
|
next: `shrk recommend "${task}"`,
|
|
89
91
|
why: 'Free-form input routes to the canonical human entrypoint — `shrk recommend` ranks commands for a query without writes.',
|
|
90
|
-
more: ['shrk commands', 'shrk commands
|
|
92
|
+
more: ['shrk commands', 'shrk commands search "<partial>"', 'shrk start-here'],
|
|
91
93
|
};
|
|
92
94
|
case 'ambiguous-command':
|
|
93
95
|
return {
|
|
94
|
-
next: 'shrk commands
|
|
96
|
+
next: 'shrk commands search "<partial>"',
|
|
95
97
|
why: 'Multiple commands matched the input — narrow it down or pick the canonical entrypoint.',
|
|
96
|
-
more: ['shrk
|
|
98
|
+
more: ['shrk help <cmd>', 'shrk commands overlaps'],
|
|
97
99
|
};
|
|
98
100
|
case 'apply-rejected':
|
|
99
101
|
return {
|
|
100
102
|
next: 'shrk plan review <plan.json>',
|
|
101
103
|
why: 'The apply gate refused the plan — review the safety report before retrying.',
|
|
102
|
-
more: ['shrk plan
|
|
104
|
+
more: ['shrk plan simulate <plan.json>', 'shrk safety audit --deep'],
|
|
103
105
|
};
|
|
104
106
|
case 'signature-mismatch':
|
|
105
107
|
return {
|
|
106
|
-
next: 'shrk plan
|
|
107
|
-
why: 'The plan signature does not match the source content — re-
|
|
108
|
-
more: ['shrk
|
|
108
|
+
next: 'shrk plan review <plan.json>',
|
|
109
|
+
why: 'The plan signature does not match the source content — regenerate the plan (which re-signs it) before retrying.',
|
|
110
|
+
more: ['shrk gen <template> --save-plan <plan.json>'],
|
|
109
111
|
};
|
|
110
112
|
case 'contract-gate-blocked':
|
|
111
113
|
return {
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE list-verb note (round 12, 12.1 — and, since the round-12 review (A-4),
|
|
3
|
+
* the files that failed to load).
|
|
4
|
+
*
|
|
5
|
+
* A contributed entry its loader refused used to vanish: the `list` verb
|
|
6
|
+
* printed the survivors and exited 0, and nothing said an entry was dropped.
|
|
7
|
+
* A contribution FILE that failed to import dropped every entry it declares
|
|
8
|
+
* just as silently — `conventions list` even pointed at that very file as the
|
|
9
|
+
* place to contribute. Every list verb now prints, after its list, one line
|
|
10
|
+
* per file:
|
|
11
|
+
*
|
|
12
|
+
* ⚠ sharkcraft/conventions.ts failed to load (boom) — nothing in it is listed → shrk conventions doctor
|
|
13
|
+
* ⚠ 2 entries rejected from node_modules/@r12/pack/conventions.ts: 'conv.b' (default[8]) — severity: …; 'conv.j' (default[9]) — … → shrk conventions doctor
|
|
14
|
+
*
|
|
15
|
+
* with the wording of THE formatter (`formatEntryRejection`), from THE channel
|
|
16
|
+
* (`collectKindOutcomes`). A list verb is not a verdict: its exit stays 0.
|
|
17
|
+
* Under `--json` the stdout array is untouched (a parser never breaks) and the
|
|
18
|
+
* note goes to stderr, one line per failed file plus one for the rejections.
|
|
19
|
+
*/
|
|
20
|
+
import { type ContributionKind, type IContributionEntryRejection, type IContributionLoadFailure, type IKindOutcomes, type inspectSharkcraft } from '@shrkcrft/inspector';
|
|
21
|
+
type IInspection = Awaited<ReturnType<typeof inspectSharkcraft>>;
|
|
22
|
+
/** The note lines (text, stdout) — `''` when nothing was rejected. */
|
|
23
|
+
export declare function rejectedEntriesNote(rejections: readonly IContributionEntryRejection[], projectRoot: string, next?: string): string;
|
|
24
|
+
/** The one-line `--json` stderr form — `''` when nothing was rejected. */
|
|
25
|
+
export declare function rejectedEntriesStderrNote(rejections: readonly IContributionEntryRejection[], projectRoot: string, next?: string): string;
|
|
26
|
+
/** One line per contribution file that failed to load (text, stdout) — `''` when every file loaded. */
|
|
27
|
+
export declare function loadFailuresNote(failures: readonly IContributionLoadFailure[], projectRoot: string, next?: string): string;
|
|
28
|
+
/** The `--json` stderr form, one line per failed file — `''` when every file loaded. */
|
|
29
|
+
export declare function loadFailuresStderrNote(failures: readonly IContributionLoadFailure[], projectRoot: string, next?: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* What `kinds`' loaders reported — refused entries and files that never
|
|
32
|
+
* loaded — narrowed to `--source`. `loadFailures: false` for a verb that
|
|
33
|
+
* already reports its own load failures (knowledge list's partial-list WARN,
|
|
34
|
+
* helper list's broken-file line), so no failure is said twice.
|
|
35
|
+
*/
|
|
36
|
+
export declare function collectListVerbNote(inspection: IInspection, kinds: readonly ContributionKind[], options?: {
|
|
37
|
+
readonly source?: string;
|
|
38
|
+
readonly loadFailures?: boolean;
|
|
39
|
+
}): Promise<IKindOutcomes>;
|
|
40
|
+
/** Write a collected note: text after the list on stdout, or stderr lines under `--json`. */
|
|
41
|
+
export declare function writeListVerbNote(outcomes: IKindOutcomes, projectRoot: string, options?: {
|
|
42
|
+
readonly json?: boolean;
|
|
43
|
+
readonly next?: string;
|
|
44
|
+
}): void;
|
|
45
|
+
/**
|
|
46
|
+
* Collect `kinds`' outcomes (THE channel, running only the loaders those
|
|
47
|
+
* kinds need) and write the note: text after the list on stdout, or stderr
|
|
48
|
+
* lines under `--json`. Returns the rejections it reported.
|
|
49
|
+
*/
|
|
50
|
+
export declare function writeRejectedEntriesNote(inspection: IInspection, kinds: readonly ContributionKind[], options?: {
|
|
51
|
+
readonly json?: boolean;
|
|
52
|
+
readonly source?: string;
|
|
53
|
+
readonly next?: string;
|
|
54
|
+
readonly loadFailures?: boolean;
|
|
55
|
+
}): Promise<readonly IContributionEntryRejection[]>;
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=rejected-entries-note.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rejected-entries-note.d.ts","sourceRoot":"","sources":["../../src/output/rejected-entries-note.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAE7B,KAAK,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC;AAUjE,sEAAsE;AACtE,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,SAAS,2BAA2B,EAAE,EAClD,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAaR;AAED,0EAA0E;AAC1E,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,SAAS,2BAA2B,EAAE,EAClD,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAIR;AAED,uGAAuG;AACvG,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,SAAS,wBAAwB,EAAE,EAC7C,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAUR;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,wBAAwB,EAAE,EAC7C,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE,MAAM,GACZ,MAAM,CAUR;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,WAAW,EACvB,KAAK,EAAE,SAAS,gBAAgB,EAAE,EAClC,OAAO,GAAE;IAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1E,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED,6FAA6F;AAC7F,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,aAAa,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE;IAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAChE,IAAI,CAaN;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,WAAW,EACvB,KAAK,EAAE,SAAS,gBAAgB,EAAE,EAClC,OAAO,GAAE;IACP,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;CAC5B,GACL,OAAO,CAAC,SAAS,2BAA2B,EAAE,CAAC,CAIjD"}
|