@shrkcrft/inspector 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/acceptance-replay.js +1 -1
- package/dist/agent-contract-templates.js +6 -6
- package/dist/agent-contract.d.ts.map +1 -1
- package/dist/agent-contract.js +13 -8
- package/dist/agent-orchestration.js +2 -2
- package/dist/agent-task-prep.d.ts +16 -0
- package/dist/agent-task-prep.d.ts.map +1 -1
- package/dist/agent-task-prep.js +51 -4
- package/dist/ai-readiness.d.ts.map +1 -1
- package/dist/ai-readiness.js +21 -3
- package/dist/architecture-map.d.ts +16 -0
- package/dist/architecture-map.d.ts.map +1 -1
- package/dist/architecture-map.js +42 -26
- package/dist/area-explore.d.ts +2 -2
- package/dist/area-explore.d.ts.map +1 -1
- package/dist/area-explore.js +36 -16
- package/dist/area-map.d.ts +56 -11
- package/dist/area-map.d.ts.map +1 -1
- package/dist/area-map.js +106 -25
- package/dist/asset-doctor-proposed-exit.d.ts +21 -0
- package/dist/asset-doctor-proposed-exit.d.ts.map +1 -0
- package/dist/asset-doctor-proposed-exit.js +22 -0
- package/dist/asset-provenance.js +1 -1
- package/dist/boundaries-changed-only.d.ts +24 -1
- package/dist/boundaries-changed-only.d.ts.map +1 -1
- package/dist/boundaries-changed-only.js +12 -2
- package/dist/boundary-check-options.model.d.ts +40 -0
- package/dist/boundary-check-options.model.d.ts.map +1 -0
- package/dist/boundary-check-options.model.js +1 -0
- package/dist/boundary-check-result.model.d.ts +89 -0
- package/dist/boundary-check-result.model.d.ts.map +1 -0
- package/dist/boundary-check-result.model.js +1 -0
- package/dist/boundary-configuration-status.d.ts +38 -0
- package/dist/boundary-configuration-status.d.ts.map +1 -0
- package/dist/boundary-configuration-status.js +118 -0
- package/dist/boundary-configuration-status.model.d.ts +37 -0
- package/dist/boundary-configuration-status.model.d.ts.map +1 -0
- package/dist/boundary-configuration-status.model.js +1 -0
- package/dist/boundary-load-issue.model.d.ts +30 -0
- package/dist/boundary-load-issue.model.d.ts.map +1 -0
- package/dist/boundary-load-issue.model.js +1 -0
- package/dist/boundary-rule-check.model.d.ts +44 -0
- package/dist/boundary-rule-check.model.d.ts.map +1 -0
- package/dist/boundary-rule-check.model.js +1 -0
- package/dist/boundary-rule-invalidation.model.d.ts +31 -0
- package/dist/boundary-rule-invalidation.model.d.ts.map +1 -0
- package/dist/boundary-rule-invalidation.model.js +1 -0
- package/dist/boundary-rule-set-diff.model.d.ts +75 -0
- package/dist/boundary-rule-set-diff.model.d.ts.map +1 -0
- package/dist/boundary-rule-set-diff.model.js +1 -0
- package/dist/boundary-rule-sources.d.ts +28 -0
- package/dist/boundary-rule-sources.d.ts.map +1 -0
- package/dist/boundary-rule-sources.js +110 -0
- package/dist/boundary-stale-exception-finding.model.d.ts +12 -0
- package/dist/boundary-stale-exception-finding.model.d.ts.map +1 -0
- package/dist/boundary-stale-exception-finding.model.js +1 -0
- package/dist/boundary-unit-liveness.d.ts +35 -0
- package/dist/boundary-unit-liveness.d.ts.map +1 -0
- package/dist/boundary-unit-liveness.js +71 -0
- package/dist/change-intent.d.ts +3 -0
- package/dist/change-intent.d.ts.map +1 -1
- package/dist/change-intent.js +61 -27
- package/dist/changes-summary.d.ts.map +1 -1
- package/dist/changes-summary.js +19 -9
- package/dist/ci-integrity-report.js +1 -1
- package/dist/ci-predict.d.ts.map +1 -1
- package/dist/ci-predict.js +38 -5
- package/dist/code-intelligence-doctor.d.ts +6 -0
- package/dist/code-intelligence-doctor.d.ts.map +1 -1
- package/dist/code-intelligence-doctor.js +22 -7
- package/dist/command-recommender.d.ts +45 -2
- package/dist/command-recommender.d.ts.map +1 -1
- package/dist/command-recommender.js +41 -263
- package/dist/command-resolution-status.d.ts +44 -0
- package/dist/command-resolution-status.d.ts.map +1 -0
- package/dist/command-resolution-status.js +44 -0
- package/dist/command-safety-level.d.ts +15 -0
- package/dist/command-safety-level.d.ts.map +1 -0
- package/dist/command-safety-level.js +43 -0
- package/dist/command-taxonomy.js +1 -1
- package/dist/compliance-evidence.js +1 -1
- package/dist/compliance-profiles.js +1 -1
- package/dist/construct-registry.d.ts +40 -0
- package/dist/construct-registry.d.ts.map +1 -1
- package/dist/construct-registry.js +186 -82
- package/dist/context-tuning.d.ts +4 -0
- package/dist/context-tuning.d.ts.map +1 -1
- package/dist/context-tuning.js +10 -7
- package/dist/contract-template-registry.d.ts +10 -0
- package/dist/contract-template-registry.d.ts.map +1 -1
- package/dist/contract-template-registry.js +59 -33
- package/dist/contribution-kind.d.ts +52 -0
- package/dist/contribution-kind.d.ts.map +1 -0
- package/dist/contribution-kind.js +52 -0
- package/dist/contribution-load-failures.d.ts +106 -0
- package/dist/contribution-load-failures.d.ts.map +1 -0
- package/dist/contribution-load-failures.js +575 -0
- package/dist/contributions-report.d.ts +28 -0
- package/dist/contributions-report.d.ts.map +1 -0
- package/dist/contributions-report.js +242 -0
- package/dist/convention-registry.d.ts +22 -0
- package/dist/convention-registry.d.ts.map +1 -1
- package/dist/convention-registry.js +79 -39
- package/dist/coverage-report.d.ts.map +1 -1
- package/dist/coverage-report.js +6 -6
- package/dist/custom-checks.d.ts +60 -1
- package/dist/custom-checks.d.ts.map +1 -1
- package/dist/custom-checks.js +159 -6
- package/dist/dashboard/dashboard-data.d.ts +6 -0
- package/dist/dashboard/dashboard-data.d.ts.map +1 -1
- package/dist/dashboard/dashboard-data.js +99 -8
- package/dist/dashboard/dashboard-knowledge.d.ts.map +1 -1
- package/dist/dashboard/dashboard-knowledge.js +14 -2
- package/dist/decision-records.d.ts +20 -0
- package/dist/decision-records.d.ts.map +1 -1
- package/dist/decision-records.js +68 -20
- package/dist/declared-cross-references.d.ts +61 -0
- package/dist/declared-cross-references.d.ts.map +1 -0
- package/dist/declared-cross-references.js +550 -0
- package/dist/declared-gate-plane-rules.d.ts +24 -0
- package/dist/declared-gate-plane-rules.d.ts.map +1 -0
- package/dist/declared-gate-plane-rules.js +39 -0
- package/dist/declared-reference-coverage.d.ts +27 -0
- package/dist/declared-reference-coverage.d.ts.map +1 -0
- package/dist/declared-reference-coverage.js +50 -0
- package/dist/declared-xref-status.d.ts +19 -0
- package/dist/declared-xref-status.d.ts.map +1 -0
- package/dist/declared-xref-status.js +19 -0
- package/dist/delegate-pack-recipes.d.ts +13 -2
- package/dist/delegate-pack-recipes.d.ts.map +1 -1
- package/dist/delegate-pack-recipes.js +45 -14
- package/dist/demo-package.js +2 -2
- package/dist/demo-script.js +2 -2
- package/dist/demo-workflow.js +3 -3
- package/dist/dev-cycle.js +1 -1
- package/dist/dev-session.js +1 -1
- package/dist/doc-references.d.ts +23 -2
- package/dist/doc-references.d.ts.map +1 -1
- package/dist/doc-references.js +96 -17
- package/dist/doctor-result.d.ts +8 -0
- package/dist/doctor-result.d.ts.map +1 -1
- package/dist/doctor-verdict-kind.d.ts +19 -0
- package/dist/doctor-verdict-kind.d.ts.map +1 -0
- package/dist/doctor-verdict-kind.js +19 -0
- package/dist/doctor-verdict.d.ts +18 -0
- package/dist/doctor-verdict.d.ts.map +1 -0
- package/dist/doctor-verdict.js +28 -0
- package/dist/drift.d.ts +17 -0
- package/dist/drift.d.ts.map +1 -1
- package/dist/drift.js +40 -10
- package/dist/entrypoint-matrix.d.ts.map +1 -1
- package/dist/entrypoint-matrix.js +4 -1
- package/dist/feedback-ingestion.d.ts +28 -2
- package/dist/feedback-ingestion.d.ts.map +1 -1
- package/dist/feedback-ingestion.js +68 -19
- package/dist/fix-preview.d.ts.map +1 -1
- package/dist/fix-preview.js +9 -5
- package/dist/framework-extractor-outcomes.d.ts +27 -0
- package/dist/framework-extractor-outcomes.d.ts.map +1 -0
- package/dist/framework-extractor-outcomes.js +83 -0
- package/dist/fuzzy-impact.js +1 -1
- package/dist/healing-plan.d.ts.map +1 -1
- package/dist/healing-plan.js +3 -4
- package/dist/helper-catalog.d.ts +25 -0
- package/dist/helper-catalog.d.ts.map +1 -0
- package/dist/helper-catalog.js +91 -0
- package/dist/helper-registry.d.ts.map +1 -1
- package/dist/helper-registry.js +17 -1
- package/dist/helper-view.d.ts +33 -0
- package/dist/helper-view.d.ts.map +1 -0
- package/dist/helper-view.js +1 -0
- package/dist/i-asset-doctor-flags.d.ts +16 -0
- package/dist/i-asset-doctor-flags.d.ts.map +1 -0
- package/dist/i-asset-doctor-flags.js +1 -0
- package/dist/i-command-resolution.d.ts +22 -0
- package/dist/i-command-resolution.d.ts.map +1 -0
- package/dist/i-command-resolution.js +1 -0
- package/dist/i-command-resolve-options.d.ts +24 -0
- package/dist/i-command-resolve-options.d.ts.map +1 -0
- package/dist/i-command-resolve-options.js +1 -0
- package/dist/i-command-safety.d.ts +13 -0
- package/dist/i-command-safety.d.ts.map +1 -0
- package/dist/i-command-safety.js +1 -0
- package/dist/i-contribution-accepted-entry.d.ts +18 -0
- package/dist/i-contribution-accepted-entry.d.ts.map +1 -0
- package/dist/i-contribution-accepted-entry.js +1 -0
- package/dist/i-contribution-entry-rejection.d.ts +21 -0
- package/dist/i-contribution-entry-rejection.d.ts.map +1 -0
- package/dist/i-contribution-entry-rejection.js +1 -0
- package/dist/i-contribution-file-issue.d.ts +18 -0
- package/dist/i-contribution-file-issue.d.ts.map +1 -0
- package/dist/i-contribution-file-issue.js +1 -0
- package/dist/i-contribution-file-report.d.ts +40 -0
- package/dist/i-contribution-file-report.d.ts.map +1 -0
- package/dist/i-contribution-file-report.js +1 -0
- package/dist/i-contribution-file-validation.d.ts +24 -0
- package/dist/i-contribution-file-validation.d.ts.map +1 -0
- package/dist/i-contribution-file-validation.js +1 -0
- package/dist/i-contributions-report.d.ts +31 -0
- package/dist/i-contributions-report.d.ts.map +1 -0
- package/dist/i-contributions-report.js +1 -0
- package/dist/i-declared-xref-field.d.ts +25 -0
- package/dist/i-declared-xref-field.d.ts.map +1 -0
- package/dist/i-declared-xref-field.js +1 -0
- package/dist/i-declared-xref-issue.d.ts +25 -0
- package/dist/i-declared-xref-issue.d.ts.map +1 -0
- package/dist/i-declared-xref-issue.js +1 -0
- package/dist/i-declared-xref-report.d.ts +48 -0
- package/dist/i-declared-xref-report.d.ts.map +1 -0
- package/dist/i-declared-xref-report.js +1 -0
- package/dist/i-declared-xref-row.d.ts +29 -0
- package/dist/i-declared-xref-row.d.ts.map +1 -0
- package/dist/i-declared-xref-row.js +1 -0
- package/dist/i-doctor-verdict.d.ts +10 -0
- package/dist/i-doctor-verdict.d.ts.map +1 -0
- package/dist/i-doctor-verdict.js +1 -0
- package/dist/i-kind-outcomes.d.ts +13 -0
- package/dist/i-kind-outcomes.d.ts.map +1 -0
- package/dist/i-kind-outcomes.js +1 -0
- package/dist/i-pack-doctor-verdict.d.ts +15 -0
- package/dist/i-pack-doctor-verdict.d.ts.map +1 -0
- package/dist/i-pack-doctor-verdict.js +1 -0
- package/dist/i-probed-id-field.d.ts +17 -0
- package/dist/i-probed-id-field.d.ts.map +1 -0
- package/dist/i-probed-id-field.js +1 -0
- package/dist/i-reference-kind-declaration.d.ts +38 -0
- package/dist/i-reference-kind-declaration.d.ts.map +1 -0
- package/dist/i-reference-kind-declaration.js +1 -0
- package/dist/i-reference-warm-options.d.ts +21 -0
- package/dist/i-reference-warm-options.d.ts.map +1 -0
- package/dist/i-reference-warm-options.js +1 -0
- package/dist/i-registry-outcomes.d.ts +16 -0
- package/dist/i-registry-outcomes.d.ts.map +1 -0
- package/dist/i-registry-outcomes.js +1 -0
- package/dist/i-scaffold-pattern-doctor-report.d.ts +35 -0
- package/dist/i-scaffold-pattern-doctor-report.d.ts.map +1 -0
- package/dist/i-scaffold-pattern-doctor-report.js +1 -0
- package/dist/i-search-tuning-key-probe.d.ts +30 -0
- package/dist/i-search-tuning-key-probe.d.ts.map +1 -0
- package/dist/i-search-tuning-key-probe.js +1 -0
- package/dist/i-search-tuning-lint-issue.d.ts +61 -0
- package/dist/i-search-tuning-lint-issue.d.ts.map +1 -0
- package/dist/i-search-tuning-lint-issue.js +1 -0
- package/dist/i-search-tuning-lint-report.d.ts +38 -0
- package/dist/i-search-tuning-lint-report.d.ts.map +1 -0
- package/dist/i-search-tuning-lint-report.js +1 -0
- package/dist/i-unresolvable-reference-scan.d.ts +14 -0
- package/dist/i-unresolvable-reference-scan.d.ts.map +1 -0
- package/dist/i-unresolvable-reference-scan.js +1 -0
- package/dist/i-unresolvable-reference.d.ts +29 -0
- package/dist/i-unresolvable-reference.d.ts.map +1 -0
- package/dist/i-unresolvable-reference.js +1 -0
- package/dist/i-workspace-profile-payload.d.ts +12 -0
- package/dist/i-workspace-profile-payload.d.ts.map +1 -0
- package/dist/i-workspace-profile-payload.js +1 -0
- package/dist/impact-analysis.d.ts +15 -0
- package/dist/impact-analysis.d.ts.map +1 -1
- package/dist/impact-analysis.js +58 -13
- package/dist/impact-render.d.ts.map +1 -1
- package/dist/impact-render.js +22 -0
- package/dist/import-hygiene.d.ts +35 -1
- package/dist/import-hygiene.d.ts.map +1 -1
- package/dist/import-hygiene.js +107 -13
- package/dist/index.d.ts +141 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +172 -0
- package/dist/inspection-discovery.d.ts +45 -0
- package/dist/inspection-discovery.d.ts.map +1 -0
- package/dist/inspection-discovery.js +70 -0
- package/dist/knowledge-advisory-code.d.ts +17 -0
- package/dist/knowledge-advisory-code.d.ts.map +1 -0
- package/dist/knowledge-advisory-code.js +17 -0
- package/dist/knowledge-aged-entry.d.ts +10 -0
- package/dist/knowledge-aged-entry.d.ts.map +1 -0
- package/dist/knowledge-aged-entry.js +1 -0
- package/dist/knowledge-authoring.d.ts +24 -1
- package/dist/knowledge-authoring.d.ts.map +1 -1
- package/dist/knowledge-authoring.js +46 -7
- package/dist/knowledge-entry-verdict-record.d.ts +22 -0
- package/dist/knowledge-entry-verdict-record.d.ts.map +1 -0
- package/dist/knowledge-entry-verdict-record.js +1 -0
- package/dist/knowledge-entry-verdict.d.ts +17 -0
- package/dist/knowledge-entry-verdict.d.ts.map +1 -0
- package/dist/knowledge-entry-verdict.js +17 -0
- package/dist/knowledge-graph.d.ts +6 -0
- package/dist/knowledge-graph.d.ts.map +1 -1
- package/dist/knowledge-graph.js +18 -7
- package/dist/knowledge-kind-bucket.d.ts +19 -0
- package/dist/knowledge-kind-bucket.d.ts.map +1 -0
- package/dist/knowledge-kind-bucket.js +1 -0
- package/dist/knowledge-load-failure.d.ts +23 -0
- package/dist/knowledge-load-failure.d.ts.map +1 -0
- package/dist/knowledge-load-failure.js +1 -0
- package/dist/knowledge-reference-kind-bucket.d.ts +11 -0
- package/dist/knowledge-reference-kind-bucket.d.ts.map +1 -0
- package/dist/knowledge-reference-kind-bucket.js +1 -0
- package/dist/knowledge-stale-advisory.d.ts +14 -0
- package/dist/knowledge-stale-advisory.d.ts.map +1 -0
- package/dist/knowledge-stale-advisory.js +1 -0
- package/dist/knowledge-stale-coverage.d.ts +19 -0
- package/dist/knowledge-stale-coverage.d.ts.map +1 -0
- package/dist/knowledge-stale-coverage.js +1 -0
- package/dist/knowledge-stale-gate-flags.d.ts +33 -0
- package/dist/knowledge-stale-gate-flags.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-flags.js +1 -0
- package/dist/knowledge-stale-gate-input.d.ts +46 -0
- package/dist/knowledge-stale-gate-input.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-input.js +1 -0
- package/dist/knowledge-stale-gate-result.d.ts +33 -0
- package/dist/knowledge-stale-gate-result.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-result.js +1 -0
- package/dist/knowledge-stale-gate-rule.d.ts +33 -0
- package/dist/knowledge-stale-gate-rule.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-rule.js +1 -0
- package/dist/knowledge-stale-gate-violation.d.ts +13 -0
- package/dist/knowledge-stale-gate-violation.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-violation.js +1 -0
- package/dist/knowledge-stale-gate.d.ts +83 -0
- package/dist/knowledge-stale-gate.d.ts.map +1 -0
- package/dist/knowledge-stale-gate.js +429 -0
- package/dist/knowledge-stale-quality-gate.d.ts +26 -0
- package/dist/knowledge-stale-quality-gate.d.ts.map +1 -0
- package/dist/knowledge-stale-quality-gate.js +110 -0
- package/dist/knowledge-stale.d.ts +122 -9
- package/dist/knowledge-stale.d.ts.map +1 -1
- package/dist/knowledge-stale.js +996 -291
- package/dist/knowledge-unverifiable-reason.d.ts +12 -0
- package/dist/knowledge-unverifiable-reason.d.ts.map +1 -0
- package/dist/knowledge-unverifiable-reason.js +12 -0
- package/dist/loader-diagnostics.d.ts +14 -2
- package/dist/loader-diagnostics.d.ts.map +1 -1
- package/dist/match-terms.d.ts +48 -0
- package/dist/match-terms.d.ts.map +1 -0
- package/dist/match-terms.js +155 -0
- package/dist/migration-profile-registry.d.ts +10 -0
- package/dist/migration-profile-registry.d.ts.map +1 -1
- package/dist/migration-profile-registry.js +57 -34
- package/dist/migration-readiness.d.ts.map +1 -1
- package/dist/migration-readiness.js +1 -3
- package/dist/nearest-id.d.ts +10 -26
- package/dist/nearest-id.d.ts.map +1 -1
- package/dist/nearest-id.js +9 -59
- package/dist/pack-asset-freshness.d.ts +65 -0
- package/dist/pack-asset-freshness.d.ts.map +1 -0
- package/dist/pack-asset-freshness.js +340 -0
- package/dist/pack-author-ux.d.ts +24 -3
- package/dist/pack-author-ux.d.ts.map +1 -1
- package/dist/pack-author-ux.js +87 -93
- package/dist/pack-contributions-inventory.d.ts +79 -39
- package/dist/pack-contributions-inventory.d.ts.map +1 -1
- package/dist/pack-contributions-inventory.js +443 -286
- package/dist/pack-doctor-verdict.d.ts +29 -0
- package/dist/pack-doctor-verdict.d.ts.map +1 -0
- package/dist/pack-doctor-verdict.js +45 -0
- package/dist/pack-doctor.d.ts +74 -1
- package/dist/pack-doctor.d.ts.map +1 -1
- package/dist/pack-doctor.js +281 -1
- package/dist/pack-helper-plan.d.ts +24 -0
- package/dist/pack-helper-plan.d.ts.map +1 -0
- package/dist/pack-helper-plan.js +77 -0
- package/dist/pack-helper-registry.d.ts +14 -0
- package/dist/pack-helper-registry.d.ts.map +1 -1
- package/dist/pack-helper-registry.js +76 -37
- package/dist/pack-manifest-reader.d.ts +8 -0
- package/dist/pack-manifest-reader.d.ts.map +1 -0
- package/dist/pack-manifest-reader.js +79 -0
- package/dist/pack-release-check.d.ts +14 -1
- package/dist/pack-release-check.d.ts.map +1 -1
- package/dist/pack-release-check.js +23 -1
- package/dist/pack-signature-status.d.ts +18 -6
- package/dist/pack-signature-status.d.ts.map +1 -1
- package/dist/pack-signature-status.js +59 -105
- package/dist/pack-test-runner.d.ts +27 -5
- package/dist/pack-test-runner.d.ts.map +1 -1
- package/dist/pack-test-runner.js +91 -35
- package/dist/pack-typecheck.d.ts +8 -0
- package/dist/pack-typecheck.d.ts.map +1 -0
- package/dist/pack-typecheck.js +76 -0
- package/dist/plan-review.d.ts +2 -0
- package/dist/plan-review.d.ts.map +1 -1
- package/dist/plan-review.js +17 -5
- package/dist/plan-simulation.d.ts.map +1 -1
- package/dist/plan-simulation.js +16 -5
- package/dist/playbook-load-issue.d.ts +16 -0
- package/dist/playbook-load-issue.d.ts.map +1 -0
- package/dist/playbook-load-issue.js +1 -0
- package/dist/playbook-registry.d.ts +32 -1
- package/dist/playbook-registry.d.ts.map +1 -1
- package/dist/playbook-registry.js +144 -55
- package/dist/policy-declaration.d.ts +18 -0
- package/dist/policy-declaration.d.ts.map +1 -0
- package/dist/policy-declaration.js +1 -0
- package/dist/policy-engine.d.ts +8 -0
- package/dist/policy-engine.d.ts.map +1 -1
- package/dist/policy-engine.js +26 -9
- package/dist/policy-overrides.d.ts.map +1 -1
- package/dist/policy-overrides.js +4 -4
- package/dist/policy-registry.d.ts +27 -0
- package/dist/policy-registry.d.ts.map +1 -1
- package/dist/policy-registry.js +87 -20
- package/dist/probed-id-fields.d.ts +21 -0
- package/dist/probed-id-fields.d.ts.map +1 -0
- package/dist/probed-id-fields.js +25 -0
- package/dist/probed-id-source.d.ts +11 -0
- package/dist/probed-id-source.d.ts.map +1 -0
- package/dist/probed-id-source.js +11 -0
- package/dist/profile-registry.d.ts +25 -2
- package/dist/profile-registry.d.ts.map +1 -1
- package/dist/profile-registry.js +59 -6
- package/dist/quality-gate-examination.d.ts +15 -0
- package/dist/quality-gate-examination.d.ts.map +1 -0
- package/dist/quality-gate-examination.js +15 -0
- package/dist/quality-gate-row-status.d.ts +19 -0
- package/dist/quality-gate-row-status.d.ts.map +1 -0
- package/dist/quality-gate-row-status.js +28 -0
- package/dist/quality-gate-status.d.ts +16 -0
- package/dist/quality-gate-status.d.ts.map +1 -0
- package/dist/quality-gate-status.js +16 -0
- package/dist/quality-html.d.ts.map +1 -1
- package/dist/quality-html.js +14 -3
- package/dist/quality-report-coverage.d.ts +26 -0
- package/dist/quality-report-coverage.d.ts.map +1 -0
- package/dist/quality-report-coverage.js +48 -0
- package/dist/quality-report.d.ts +28 -1
- package/dist/quality-report.d.ts.map +1 -1
- package/dist/quality-report.js +263 -35
- package/dist/query-intent-kind.d.ts +18 -0
- package/dist/query-intent-kind.d.ts.map +1 -0
- package/dist/query-intent-kind.js +18 -0
- package/dist/query-intent-result.d.ts +23 -0
- package/dist/query-intent-result.d.ts.map +1 -0
- package/dist/query-intent-result.js +1 -0
- package/dist/query-intent.d.ts +18 -0
- package/dist/query-intent.d.ts.map +1 -0
- package/dist/query-intent.js +336 -0
- package/dist/query-resolver.d.ts +18 -0
- package/dist/query-resolver.d.ts.map +1 -1
- package/dist/query-resolver.js +7 -4
- package/dist/ranked-recommendations.d.ts +36 -0
- package/dist/ranked-recommendations.d.ts.map +1 -0
- package/dist/ranked-recommendations.js +1 -0
- package/dist/ranker-explainability.d.ts.map +1 -1
- package/dist/ranker-explainability.js +38 -10
- package/dist/recommend-recipe.d.ts +17 -0
- package/dist/recommend-recipe.d.ts.map +1 -0
- package/dist/recommend-recipe.js +1 -0
- package/dist/recommend-recipes.d.ts +9 -0
- package/dist/recommend-recipes.d.ts.map +1 -0
- package/dist/recommend-recipes.js +106 -0
- package/dist/recommendation-candidate.d.ts +30 -0
- package/dist/recommendation-candidate.d.ts.map +1 -0
- package/dist/recommendation-candidate.js +1 -0
- package/dist/recommendation-confidence.d.ts +27 -0
- package/dist/recommendation-confidence.d.ts.map +1 -0
- package/dist/recommendation-confidence.js +1 -0
- package/dist/recommendation-ranking-options.d.ts +24 -0
- package/dist/recommendation-ranking-options.d.ts.map +1 -0
- package/dist/recommendation-ranking-options.js +1 -0
- package/dist/recommendation-ranking.d.ts +50 -0
- package/dist/recommendation-ranking.d.ts.map +1 -0
- package/dist/recommendation-ranking.js +527 -0
- package/dist/recommendation-source.d.ts +23 -0
- package/dist/recommendation-source.d.ts.map +1 -0
- package/dist/recommendation-source.js +23 -0
- package/dist/recommendation-suppression.d.ts +14 -0
- package/dist/recommendation-suppression.d.ts.map +1 -0
- package/dist/recommendation-suppression.js +14 -0
- package/dist/reference-asset-kind.d.ts +14 -0
- package/dist/reference-asset-kind.d.ts.map +1 -0
- package/dist/reference-asset-kind.js +14 -0
- package/dist/reference-content-check.d.ts +32 -0
- package/dist/reference-content-check.d.ts.map +1 -0
- package/dist/reference-content-check.js +143 -0
- package/dist/reference-failure.d.ts +31 -0
- package/dist/reference-failure.d.ts.map +1 -0
- package/dist/reference-failure.js +31 -0
- package/dist/reference-id-status.d.ts +15 -0
- package/dist/reference-id-status.d.ts.map +1 -0
- package/dist/reference-id-status.js +15 -0
- package/dist/reference-kind-declarations.d.ts +42 -0
- package/dist/reference-kind-declarations.d.ts.map +1 -0
- package/dist/reference-kind-declarations.js +142 -0
- package/dist/reference-lookup.d.ts +6 -0
- package/dist/reference-lookup.d.ts.map +1 -1
- package/dist/reference-lookup.js +13 -5
- package/dist/reference-registry.d.ts +109 -11
- package/dist/reference-registry.d.ts.map +1 -1
- package/dist/reference-registry.js +186 -30
- package/dist/reference-subject.d.ts +20 -0
- package/dist/reference-subject.d.ts.map +1 -0
- package/dist/reference-subject.js +1 -0
- package/dist/registration-hint-discovery-status.d.ts +25 -0
- package/dist/registration-hint-discovery-status.d.ts.map +1 -0
- package/dist/registration-hint-discovery-status.js +25 -0
- package/dist/registration-hint-registry.d.ts +80 -0
- package/dist/registration-hint-registry.d.ts.map +1 -1
- package/dist/registration-hint-registry.js +356 -138
- package/dist/registry-lifecycle.d.ts +200 -19
- package/dist/registry-lifecycle.d.ts.map +1 -1
- package/dist/registry-lifecycle.js +526 -136
- package/dist/release-readiness.d.ts.map +1 -1
- package/dist/release-readiness.js +10 -7
- package/dist/release-smoke.d.ts.map +1 -1
- package/dist/release-smoke.js +11 -7
- package/dist/report-site.d.ts.map +1 -1
- package/dist/report-site.js +25 -7
- package/dist/repository-intelligence.d.ts.map +1 -1
- package/dist/repository-intelligence.js +3 -2
- package/dist/repository-knowledge-model.d.ts.map +1 -1
- package/dist/repository-knowledge-model.js +18 -5
- package/dist/resolve-project-config.d.ts +64 -0
- package/dist/resolve-project-config.d.ts.map +1 -1
- package/dist/resolve-project-config.js +240 -32
- package/dist/reuse/compute-reuse-coverage.d.ts +29 -0
- package/dist/reuse/compute-reuse-coverage.d.ts.map +1 -0
- package/dist/reuse/compute-reuse-coverage.js +198 -0
- package/dist/reuse/rank-reuse-candidates.d.ts +38 -0
- package/dist/reuse/rank-reuse-candidates.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-candidates.js +212 -0
- package/dist/reuse/rank-reuse-options.d.ts +20 -0
- package/dist/reuse/rank-reuse-options.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-options.js +1 -0
- package/dist/reuse/rank-reuse-suggestions.d.ts +15 -0
- package/dist/reuse/rank-reuse-suggestions.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-suggestions.js +31 -0
- package/dist/reuse/resolve-curated-reuse.d.ts +43 -0
- package/dist/reuse/resolve-curated-reuse.d.ts.map +1 -0
- package/dist/reuse/resolve-curated-reuse.js +115 -0
- package/dist/reuse/reuse-candidate.d.ts +29 -0
- package/dist/reuse/reuse-candidate.d.ts.map +1 -0
- package/dist/reuse/reuse-candidate.js +1 -0
- package/dist/reuse/reuse-coverage-report.d.ts +74 -0
- package/dist/reuse/reuse-coverage-report.d.ts.map +1 -0
- package/dist/reuse/reuse-coverage-report.js +1 -0
- package/dist/reuse/reuse-curated-coverage.d.ts +36 -0
- package/dist/reuse/reuse-curated-coverage.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-coverage.js +1 -0
- package/dist/reuse/reuse-curated-resolution.d.ts +36 -0
- package/dist/reuse/reuse-curated-resolution.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-resolution.js +1 -0
- package/dist/reuse/reuse-curated-status.d.ts +21 -0
- package/dist/reuse/reuse-curated-status.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-status.js +21 -0
- package/dist/reuse/reuse-match-detail.d.ts +15 -0
- package/dist/reuse/reuse-match-detail.d.ts.map +1 -0
- package/dist/reuse/reuse-match-detail.js +1 -0
- package/dist/reuse/reuse-ranking.d.ts +37 -0
- package/dist/reuse/reuse-ranking.d.ts.map +1 -0
- package/dist/reuse/reuse-ranking.js +1 -0
- package/dist/reuse/reuse-suggestion.d.ts +19 -0
- package/dist/reuse/reuse-suggestion.d.ts.map +1 -0
- package/dist/reuse/reuse-suggestion.js +1 -0
- package/dist/reuse/reuse-symbol-lookup.d.ts +28 -0
- package/dist/reuse/reuse-symbol-lookup.d.ts.map +1 -0
- package/dist/reuse/reuse-symbol-lookup.js +1 -0
- package/dist/reuse/reuse-tokenize.d.ts +11 -0
- package/dist/reuse/reuse-tokenize.d.ts.map +1 -0
- package/dist/reuse/reuse-tokenize.js +26 -0
- package/dist/reuse/score-reuse-name.d.ts +16 -0
- package/dist/reuse/score-reuse-name.d.ts.map +1 -0
- package/dist/reuse/score-reuse-name.js +35 -0
- package/dist/reuse/score-reuse-primitive.d.ts +33 -0
- package/dist/reuse/score-reuse-primitive.d.ts.map +1 -0
- package/dist/reuse/score-reuse-primitive.js +92 -0
- package/dist/review-packet.d.ts +2 -0
- package/dist/review-packet.d.ts.map +1 -1
- package/dist/review-packet.js +13 -6
- package/dist/role-views.d.ts.map +1 -1
- package/dist/role-views.js +16 -16
- package/dist/routing-recommends-channels.d.ts +24 -0
- package/dist/routing-recommends-channels.d.ts.map +1 -0
- package/dist/routing-recommends-channels.js +19 -0
- package/dist/run-boundary-check.d.ts +118 -0
- package/dist/run-boundary-check.d.ts.map +1 -0
- package/dist/run-boundary-check.js +592 -0
- package/dist/safety-audit.js +1 -1
- package/dist/scaffold-coverage.js +1 -1
- package/dist/scaffold-pattern-doctor-report.d.ts +19 -0
- package/dist/scaffold-pattern-doctor-report.d.ts.map +1 -0
- package/dist/scaffold-pattern-doctor-report.js +54 -0
- package/dist/scaffold-patterns.d.ts +75 -1
- package/dist/scaffold-patterns.d.ts.map +1 -1
- package/dist/scaffold-patterns.js +375 -84
- package/dist/schema-inventory.d.ts.map +1 -1
- package/dist/schema-inventory.js +4 -3
- package/dist/search-document-id.d.ts +52 -0
- package/dist/search-document-id.d.ts.map +1 -0
- package/dist/search-document-id.js +72 -0
- package/dist/search-document-prefix.d.ts +7 -0
- package/dist/search-document-prefix.d.ts.map +1 -0
- package/dist/search-document-prefix.js +1 -0
- package/dist/search-index.d.ts.map +1 -1
- package/dist/search-index.js +20 -23
- package/dist/search-tuning-explain.d.ts +6 -0
- package/dist/search-tuning-explain.d.ts.map +1 -1
- package/dist/search-tuning-explain.js +19 -17
- package/dist/search-tuning-key-probes.d.ts +16 -0
- package/dist/search-tuning-key-probes.d.ts.map +1 -0
- package/dist/search-tuning-key-probes.js +65 -0
- package/dist/search-tuning-key-resolution.d.ts +25 -0
- package/dist/search-tuning-key-resolution.d.ts.map +1 -0
- package/dist/search-tuning-key-resolution.js +1 -0
- package/dist/search-tuning-key-resolver.d.ts +4 -0
- package/dist/search-tuning-key-resolver.d.ts.map +1 -0
- package/dist/search-tuning-key-resolver.js +107 -0
- package/dist/search-tuning-key-status.d.ts +24 -0
- package/dist/search-tuning-key-status.d.ts.map +1 -0
- package/dist/search-tuning-key-status.js +24 -0
- package/dist/search-tuning-lint.d.ts +9 -0
- package/dist/search-tuning-lint.d.ts.map +1 -0
- package/dist/search-tuning-lint.js +468 -0
- package/dist/search-tuning-registry.d.ts +43 -0
- package/dist/search-tuning-registry.d.ts.map +1 -1
- package/dist/search-tuning-registry.js +214 -49
- package/dist/self-audit.d.ts +12 -0
- package/dist/self-audit.d.ts.map +1 -1
- package/dist/self-audit.js +36 -10
- package/dist/self-config-doctor-v2.d.ts +145 -3
- package/dist/self-config-doctor-v2.d.ts.map +1 -1
- package/dist/self-config-doctor-v2.js +1304 -181
- package/dist/self-config-doctor.d.ts +20 -1
- package/dist/self-config-doctor.d.ts.map +1 -1
- package/dist/self-config-doctor.js +53 -280
- package/dist/settled-unit-states.d.ts +9 -0
- package/dist/settled-unit-states.d.ts.map +1 -0
- package/dist/settled-unit-states.js +14 -0
- package/dist/sharkcraft-inspector.d.ts +34 -0
- package/dist/sharkcraft-inspector.d.ts.map +1 -1
- package/dist/sharkcraft-inspector.js +273 -26
- package/dist/spec/spec-evidence.d.ts.map +1 -1
- package/dist/spec/spec-evidence.js +14 -20
- package/dist/split-identifier.d.ts +21 -0
- package/dist/split-identifier.d.ts.map +1 -0
- package/dist/split-identifier.js +27 -0
- package/dist/start-here.d.ts.map +1 -1
- package/dist/start-here.js +1 -2
- package/dist/substitute-placeholders.d.ts +8 -0
- package/dist/substitute-placeholders.d.ts.map +1 -0
- package/dist/substitute-placeholders.js +9 -0
- package/dist/symbol-index.d.ts +33 -0
- package/dist/symbol-index.d.ts.map +1 -1
- package/dist/symbol-index.js +241 -3
- package/dist/symbol-member-entry.d.ts +26 -0
- package/dist/symbol-member-entry.d.ts.map +1 -0
- package/dist/symbol-member-entry.js +1 -0
- package/dist/symbol-member-kind.d.ts +14 -0
- package/dist/symbol-member-kind.d.ts.map +1 -0
- package/dist/symbol-member-kind.js +14 -0
- package/dist/task-packet.d.ts.map +1 -1
- package/dist/task-packet.js +52 -9
- package/dist/task-ranker.d.ts +8 -0
- package/dist/task-ranker.d.ts.map +1 -1
- package/dist/task-ranker.js +25 -13
- package/dist/task-risk.js +1 -1
- package/dist/task-routing-hint-registry.d.ts +20 -1
- package/dist/task-routing-hint-registry.d.ts.map +1 -1
- package/dist/task-routing-hint-registry.js +186 -42
- package/dist/template-drift.d.ts.map +1 -1
- package/dist/template-drift.js +30 -9
- package/dist/template-lint.d.ts.map +1 -1
- package/dist/template-lint.js +160 -2
- package/dist/term-query.d.ts +10 -0
- package/dist/term-query.d.ts.map +1 -0
- package/dist/term-query.js +1 -0
- package/dist/test-definitions.d.ts +6 -3
- package/dist/test-definitions.d.ts.map +1 -1
- package/dist/test-runner.d.ts +95 -10
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +309 -308
- package/dist/tuning-query-tokens.d.ts +29 -0
- package/dist/tuning-query-tokens.d.ts.map +1 -0
- package/dist/tuning-query-tokens.js +51 -0
- package/dist/typecheck-files.d.ts +36 -0
- package/dist/typecheck-files.d.ts.map +1 -0
- package/dist/typecheck-files.js +158 -0
- package/dist/uncertainty.js +1 -1
- package/dist/universal-search.d.ts.map +1 -1
- package/dist/universal-search.js +5 -3
- package/dist/unregistered-exports.d.ts +19 -0
- package/dist/unregistered-exports.d.ts.map +1 -0
- package/dist/unregistered-exports.js +141 -0
- package/dist/unresolvable-reason.d.ts +11 -0
- package/dist/unresolvable-reason.d.ts.map +1 -0
- package/dist/unresolvable-reason.js +11 -0
- package/dist/upgrade-advisor.d.ts.map +1 -1
- package/dist/upgrade-advisor.js +16 -9
- package/dist/validate-contribution-file.d.ts +4 -0
- package/dist/validate-contribution-file.d.ts.map +1 -0
- package/dist/validate-contribution-file.js +228 -0
- package/dist/why-file.d.ts +3 -0
- package/dist/why-file.d.ts.map +1 -1
- package/dist/why-file.js +7 -3
- package/package.json +17 -17
package/dist/area-map.d.ts
CHANGED
|
@@ -1,16 +1,10 @@
|
|
|
1
|
+
import { AreaKind } from '@shrkcrft/core';
|
|
2
|
+
import type { ISharkCraftConfig } from '@shrkcrft/config';
|
|
1
3
|
import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
|
|
4
|
+
export { AreaKind };
|
|
2
5
|
export declare const AREA_MAP_SCHEMA = "sharkcraft.area-map/v1";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Ui = "ui",
|
|
6
|
-
App = "app",
|
|
7
|
-
Api = "api",
|
|
8
|
-
Tests = "tests",
|
|
9
|
-
Docs = "docs",
|
|
10
|
-
Infra = "infra",
|
|
11
|
-
Generated = "generated",
|
|
12
|
-
Unknown = "unknown"
|
|
13
|
-
}
|
|
6
|
+
/** Below this share of classified files the map reports itself `degraded` (config: `areaMap.minClassificationRate`). */
|
|
7
|
+
export declare const DEFAULT_MIN_CLASSIFICATION_RATE = 0.5;
|
|
14
8
|
export interface IAreaMapEntry {
|
|
15
9
|
id: string;
|
|
16
10
|
kind: AreaKind;
|
|
@@ -31,8 +25,59 @@ export interface IAreaMap {
|
|
|
31
25
|
projectRoot: string;
|
|
32
26
|
areas: readonly IAreaMapEntry[];
|
|
33
27
|
unclassifiedFiles: number;
|
|
28
|
+
/** Files the map walked. `classifiedFiles + unclassifiedFiles === totalFiles`. */
|
|
29
|
+
totalFiles: number;
|
|
30
|
+
classifiedFiles: number;
|
|
31
|
+
/** `classifiedFiles / totalFiles` (0..1; 0 when nothing was walked). */
|
|
32
|
+
classificationRate: number;
|
|
33
|
+
/** The rate `degraded` is judged against. */
|
|
34
|
+
minClassificationRate: number;
|
|
35
|
+
/**
|
|
36
|
+
* True when fewer files classified than `minClassificationRate`. Every view
|
|
37
|
+
* derived from the map (impact, review packets, the report site) inherits
|
|
38
|
+
* the blind spot, so it reports this instead of silently understating.
|
|
39
|
+
*/
|
|
40
|
+
degraded: boolean;
|
|
41
|
+
/** The first unclassified paths, sorted — what `areaMap.patterns` should cover. */
|
|
42
|
+
unclassifiedSample: readonly string[];
|
|
43
|
+
/** Which pattern tables classified: the built-in layout table, project config, or both. */
|
|
44
|
+
patternSource: 'built-in' | 'config' | 'config+built-in';
|
|
45
|
+
}
|
|
46
|
+
/** How one file classified, and which table decided. */
|
|
47
|
+
export interface IAreaClassification {
|
|
48
|
+
readonly kind: AreaKind;
|
|
49
|
+
/** The project pattern's `id`, when a config pattern with one matched. */
|
|
50
|
+
readonly id?: string;
|
|
51
|
+
readonly source: 'config' | 'built-in' | 'none';
|
|
34
52
|
}
|
|
53
|
+
type AreaMapConfig = NonNullable<ISharkCraftConfig['areaMap']>;
|
|
54
|
+
/**
|
|
55
|
+
* THE file → area classifier. The area map, impact's target attribution and
|
|
56
|
+
* the changes summary's project-declared areas all go through it, so a
|
|
57
|
+
* project pattern means the same thing everywhere.
|
|
58
|
+
*
|
|
59
|
+
* Project patterns (`areaMap.patterns`) run FIRST, in declared order; then the
|
|
60
|
+
* built-in layout table, unless `replaceDefaults` (or `builtIns: false`, for a
|
|
61
|
+
* caller that only wants the project's own taxonomy).
|
|
62
|
+
*/
|
|
63
|
+
export declare function createAreaClassifier(config?: AreaMapConfig | null, options?: {
|
|
64
|
+
readonly builtIns?: boolean;
|
|
65
|
+
}): (file: string) => IAreaClassification;
|
|
66
|
+
/**
|
|
67
|
+
* THE area id of a classified file: `<kind>:<pattern id | package or top segment>`.
|
|
68
|
+
*
|
|
69
|
+
* `buildAreaMap` keys its entries with it, and every view asking "which area
|
|
70
|
+
* is this file in" (impact's affected areas, `core-area`, boundary risks)
|
|
71
|
+
* classifies the file and looks this id up. A prefix match on an entry's
|
|
72
|
+
* `paths` cannot answer it: `paths` holds only the top segment, so a config
|
|
73
|
+
* pattern for `libs/<group>/core/**` made EVERY `libs/…` file look core.
|
|
74
|
+
*/
|
|
75
|
+
export declare function areaIdOf(classification: IAreaClassification, file: string): string;
|
|
35
76
|
export declare function buildAreaMap(inspection: ISharkcraftInspection): IAreaMap;
|
|
77
|
+
/** `12.5%` — one formatting of a classification rate for every renderer. */
|
|
78
|
+
export declare function formatClassificationRate(rate: number): string;
|
|
79
|
+
/** The loud line a degraded map earns — one wording across text, markdown and HTML. */
|
|
80
|
+
export declare function areaMapDegradedLine(map: IAreaMap): string | undefined;
|
|
36
81
|
export declare function renderAreaMapText(map: IAreaMap): string;
|
|
37
82
|
export declare function renderAreaMapMarkdown(map: IAreaMap): string;
|
|
38
83
|
//# sourceMappingURL=area-map.d.ts.map
|
package/dist/area-map.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"area-map.d.ts","sourceRoot":"","sources":["../src/area-map.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"area-map.d.ts","sourceRoot":"","sources":["../src/area-map.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAIvE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAExD,wHAAwH;AACxH,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAKnD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6CAA6C;IAC7C,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,mFAAmF;IACnF,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,2FAA2F;IAC3F,aAAa,EAAE,UAAU,GAAG,QAAQ,GAAG,iBAAiB,CAAC;CAC1D;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;CACjD;AAED,KAAK,aAAa,GAAG,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;AAsD/D;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,EAC7B,OAAO,GAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5C,CAAC,IAAI,EAAE,MAAM,KAAK,mBAAmB,CAoBvC;AASD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,cAAc,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAElF;AAOD,wBAAgB,YAAY,CAAC,UAAU,EAAE,qBAAqB,GAAG,QAAQ,CA0FxE;AA0BD,4EAA4E;AAC5E,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAMrE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAmBvD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CA0B3D"}
|
package/dist/area-map.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
import { existsSync, readdirSync, statSync } from 'node:fs';
|
|
2
2
|
import * as nodePath from 'node:path';
|
|
3
|
+
import { AreaKind } from '@shrkcrft/core';
|
|
4
|
+
import { globToRegex } from '@shrkcrft/boundaries';
|
|
5
|
+
// The enum moved to core (so the config schema can validate a pattern's kind
|
|
6
|
+
// against it); re-exported here so every existing import keeps working.
|
|
7
|
+
export { AreaKind };
|
|
3
8
|
export const AREA_MAP_SCHEMA = 'sharkcraft.area-map/v1';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
AreaKind["App"] = "app";
|
|
9
|
-
AreaKind["Api"] = "api";
|
|
10
|
-
AreaKind["Tests"] = "tests";
|
|
11
|
-
AreaKind["Docs"] = "docs";
|
|
12
|
-
AreaKind["Infra"] = "infra";
|
|
13
|
-
AreaKind["Generated"] = "generated";
|
|
14
|
-
AreaKind["Unknown"] = "unknown";
|
|
15
|
-
})(AreaKind || (AreaKind = {}));
|
|
9
|
+
/** Below this share of classified files the map reports itself `degraded` (config: `areaMap.minClassificationRate`). */
|
|
10
|
+
export const DEFAULT_MIN_CLASSIFICATION_RATE = 0.5;
|
|
11
|
+
/** Unclassified paths named in the map — actionable, not a count alone. */
|
|
12
|
+
const UNCLASSIFIED_SAMPLE = 20;
|
|
16
13
|
const AREA_PATTERNS = [
|
|
17
14
|
{ kind: AreaKind.Core, match: [/^packages\/core(\/|$)/, /^src\/core(\/|$)/], idHint: 'core' },
|
|
18
15
|
{ kind: AreaKind.Ui, match: [/^packages\/(ui|dashboard|web)(\/|$)/, /^(src|app)\/(ui|components|pages|views)(\/|$)/], idHint: 'ui' },
|
|
@@ -67,12 +64,36 @@ function walk(root, base = '') {
|
|
|
67
64
|
}
|
|
68
65
|
return out;
|
|
69
66
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
67
|
+
/**
|
|
68
|
+
* THE file → area classifier. The area map, impact's target attribution and
|
|
69
|
+
* the changes summary's project-declared areas all go through it, so a
|
|
70
|
+
* project pattern means the same thing everywhere.
|
|
71
|
+
*
|
|
72
|
+
* Project patterns (`areaMap.patterns`) run FIRST, in declared order; then the
|
|
73
|
+
* built-in layout table, unless `replaceDefaults` (or `builtIns: false`, for a
|
|
74
|
+
* caller that only wants the project's own taxonomy).
|
|
75
|
+
*/
|
|
76
|
+
export function createAreaClassifier(config, options = {}) {
|
|
77
|
+
const project = (config?.patterns ?? []).map((p) => ({
|
|
78
|
+
kind: p.kind,
|
|
79
|
+
...(p.id ? { id: p.id } : {}),
|
|
80
|
+
matchers: p.match.map((g) => globToRegex(g)),
|
|
81
|
+
}));
|
|
82
|
+
const useBuiltIns = options.builtIns !== false && config?.replaceDefaults !== true;
|
|
83
|
+
return (file) => {
|
|
84
|
+
for (const p of project) {
|
|
85
|
+
if (p.matchers.some((re) => re.test(file))) {
|
|
86
|
+
return { kind: p.kind, ...(p.id ? { id: p.id } : {}), source: 'config' };
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (useBuiltIns) {
|
|
90
|
+
for (const p of AREA_PATTERNS) {
|
|
91
|
+
if (p.match.some((re) => re.test(file)))
|
|
92
|
+
return { kind: p.kind, source: 'built-in' };
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return { kind: AreaKind.Unknown, source: 'none' };
|
|
96
|
+
};
|
|
76
97
|
}
|
|
77
98
|
function packageOrTopSegment(file) {
|
|
78
99
|
const segs = file.split('/');
|
|
@@ -82,20 +103,39 @@ function packageOrTopSegment(file) {
|
|
|
82
103
|
return `apps/${segs[1]}`;
|
|
83
104
|
return segs[0] ?? '';
|
|
84
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* THE area id of a classified file: `<kind>:<pattern id | package or top segment>`.
|
|
108
|
+
*
|
|
109
|
+
* `buildAreaMap` keys its entries with it, and every view asking "which area
|
|
110
|
+
* is this file in" (impact's affected areas, `core-area`, boundary risks)
|
|
111
|
+
* classifies the file and looks this id up. A prefix match on an entry's
|
|
112
|
+
* `paths` cannot answer it: `paths` holds only the top segment, so a config
|
|
113
|
+
* pattern for `libs/<group>/core/**` made EVERY `libs/…` file look core.
|
|
114
|
+
*/
|
|
115
|
+
export function areaIdOf(classification, file) {
|
|
116
|
+
return `${classification.kind}:${classification.id ?? packageOrTopSegment(file)}`;
|
|
117
|
+
}
|
|
118
|
+
function patternSourceOf(config) {
|
|
119
|
+
if ((config?.patterns?.length ?? 0) === 0)
|
|
120
|
+
return config?.replaceDefaults === true ? 'config' : 'built-in';
|
|
121
|
+
return config?.replaceDefaults === true ? 'config' : 'config+built-in';
|
|
122
|
+
}
|
|
85
123
|
export function buildAreaMap(inspection) {
|
|
86
124
|
const root = inspection.projectRoot;
|
|
125
|
+
const config = inspection.config?.areaMap;
|
|
126
|
+
const classify = createAreaClassifier(config);
|
|
87
127
|
const allFiles = existsSync(root) ? walk(root) : [];
|
|
88
128
|
const byKey = new Map();
|
|
89
|
-
|
|
129
|
+
const unclassifiedPaths = [];
|
|
90
130
|
for (const f of allFiles) {
|
|
91
|
-
const
|
|
92
|
-
if (kind === AreaKind.Unknown)
|
|
93
|
-
|
|
131
|
+
const c = classify(f);
|
|
132
|
+
if (c.kind === AreaKind.Unknown)
|
|
133
|
+
unclassifiedPaths.push(f);
|
|
94
134
|
const seg = packageOrTopSegment(f);
|
|
95
|
-
const key =
|
|
135
|
+
const key = areaIdOf(c, f);
|
|
96
136
|
let entry = byKey.get(key);
|
|
97
137
|
if (!entry) {
|
|
98
|
-
entry = { kind, paths: new Set(), fileCount: 0 };
|
|
138
|
+
entry = { kind: c.kind, paths: new Set(), fileCount: 0 };
|
|
99
139
|
byKey.set(key, entry);
|
|
100
140
|
}
|
|
101
141
|
entry.paths.add(seg);
|
|
@@ -134,11 +174,23 @@ export function buildAreaMap(inspection) {
|
|
|
134
174
|
});
|
|
135
175
|
}
|
|
136
176
|
areas.sort((a, b) => b.fileCount - a.fileCount);
|
|
177
|
+
const totalFiles = allFiles.length;
|
|
178
|
+
const unclassifiedFiles = unclassifiedPaths.length;
|
|
179
|
+
const classifiedFiles = totalFiles - unclassifiedFiles;
|
|
180
|
+
const classificationRate = totalFiles === 0 ? 0 : Math.round((classifiedFiles / totalFiles) * 10_000) / 10_000;
|
|
181
|
+
const minClassificationRate = config?.minClassificationRate ?? DEFAULT_MIN_CLASSIFICATION_RATE;
|
|
137
182
|
return {
|
|
138
183
|
schema: AREA_MAP_SCHEMA,
|
|
139
184
|
projectRoot: root,
|
|
140
185
|
areas,
|
|
141
|
-
unclassifiedFiles
|
|
186
|
+
unclassifiedFiles,
|
|
187
|
+
totalFiles,
|
|
188
|
+
classifiedFiles,
|
|
189
|
+
classificationRate,
|
|
190
|
+
minClassificationRate,
|
|
191
|
+
degraded: totalFiles > 0 && classificationRate < minClassificationRate,
|
|
192
|
+
unclassifiedSample: [...unclassifiedPaths].sort().slice(0, UNCLASSIFIED_SAMPLE),
|
|
193
|
+
patternSource: patternSourceOf(config),
|
|
142
194
|
};
|
|
143
195
|
}
|
|
144
196
|
function stripGlob(s) {
|
|
@@ -164,9 +216,28 @@ function computeRiskScore(input) {
|
|
|
164
216
|
score -= 10;
|
|
165
217
|
return Math.max(0, Math.min(100, 30 + score));
|
|
166
218
|
}
|
|
219
|
+
/** `12.5%` — one formatting of a classification rate for every renderer. */
|
|
220
|
+
export function formatClassificationRate(rate) {
|
|
221
|
+
return `${(rate * 100).toFixed(1)}%`;
|
|
222
|
+
}
|
|
223
|
+
/** The loud line a degraded map earns — one wording across text, markdown and HTML. */
|
|
224
|
+
export function areaMapDegradedLine(map) {
|
|
225
|
+
if (!map.degraded)
|
|
226
|
+
return undefined;
|
|
227
|
+
return (`area attribution degraded — ${formatClassificationRate(map.classificationRate)} of files classified ` +
|
|
228
|
+
`(below ${formatClassificationRate(map.minClassificationRate)}); add areaMap.patterns to sharkcraft.config.ts`);
|
|
229
|
+
}
|
|
167
230
|
export function renderAreaMapText(map) {
|
|
168
231
|
const lines = [];
|
|
169
232
|
lines.push(`Area map (${map.areas.length} areas, ${map.unclassifiedFiles} unclassified files)`);
|
|
233
|
+
lines.push(` classified ${map.classifiedFiles}/${map.totalFiles} (${formatClassificationRate(map.classificationRate)}) · patterns: ${map.patternSource}`);
|
|
234
|
+
const degraded = areaMapDegradedLine(map);
|
|
235
|
+
if (degraded) {
|
|
236
|
+
lines.push(` ! ${degraded}`);
|
|
237
|
+
if (map.unclassifiedSample.length > 0) {
|
|
238
|
+
lines.push(` unclassified (first ${map.unclassifiedSample.length}): ${map.unclassifiedSample.join(', ')}`);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
170
241
|
for (const a of map.areas.slice(0, 50)) {
|
|
171
242
|
lines.push(` ${a.kind.padEnd(10)} ${String(a.fileCount).padStart(5)} files paths=${a.paths.join(', ')} risk=${a.riskScore}`);
|
|
172
243
|
}
|
|
@@ -178,6 +249,16 @@ export function renderAreaMapMarkdown(map) {
|
|
|
178
249
|
lines.push('');
|
|
179
250
|
lines.push(`Total areas: **${map.areas.length}** — unclassified files: ${map.unclassifiedFiles}.`);
|
|
180
251
|
lines.push('');
|
|
252
|
+
lines.push(`Classified: **${map.classifiedFiles}/${map.totalFiles}** (${formatClassificationRate(map.classificationRate)}) · patterns: ${map.patternSource}.`);
|
|
253
|
+
const degraded = areaMapDegradedLine(map);
|
|
254
|
+
if (degraded) {
|
|
255
|
+
lines.push('');
|
|
256
|
+
lines.push(`> **Warning:** ${degraded}.`);
|
|
257
|
+
if (map.unclassifiedSample.length > 0) {
|
|
258
|
+
lines.push(`> Unclassified (first ${map.unclassifiedSample.length}): ${map.unclassifiedSample.map((p) => `\`${p}\``).join(', ')}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
lines.push('');
|
|
181
262
|
lines.push('| Kind | Files | Paths | Boundary rules | Risk |');
|
|
182
263
|
lines.push('| --- | ---: | --- | ---: | ---: |');
|
|
183
264
|
for (const a of map.areas) {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type IUnitLiveness } from '@shrkcrft/core';
|
|
2
|
+
import type { IAssetDoctorFlags } from './i-asset-doctor-flags.js';
|
|
3
|
+
/**
|
|
4
|
+
* THE proposal of every asset doctor (round 13): `registrations doctor`,
|
|
5
|
+
* `scaffolds doctor`, `search tuning doctor`, `self-config doctor|report`, and
|
|
6
|
+
* MCP `get_scaffold_pattern_doctor` / `get_self_config_doctor` — so a CLI verb
|
|
7
|
+
* and its MCP twin cannot propose different exits over the same report.
|
|
8
|
+
*
|
|
9
|
+
* 1 on an error, on a warning under `--strict`, or on a selector unit THE
|
|
10
|
+
* `--fail-on-dead-units` predicate (`selectorUnitFails`) fails — an unmarked
|
|
11
|
+
* dead unit, or a stale LOCAL `expectEmpty` marker; a pack's stale marker is
|
|
12
|
+
* INFO and never fails the consumer, and an intended-empty unit never fails.
|
|
13
|
+
* Else 0. Settle the proposal against the doctor's coverage (`settleVerdict`):
|
|
14
|
+
* a Coverage-weight dead or unproven unit turns 0 into 2 whatever the flags.
|
|
15
|
+
*/
|
|
16
|
+
export declare function assetDoctorProposedExit(found: {
|
|
17
|
+
readonly errors: number;
|
|
18
|
+
readonly warnings: number;
|
|
19
|
+
readonly units: readonly Pick<IUnitLiveness, 'state' | 'mark'>[];
|
|
20
|
+
}, flags: IAssetDoctorFlags): 0 | 1;
|
|
21
|
+
//# sourceMappingURL=asset-doctor-proposed-exit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset-doctor-proposed-exit.d.ts","sourceRoot":"","sources":["../src/asset-doctor-proposed-exit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE;IACL,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;CAClE,EACD,KAAK,EAAE,iBAAiB,GACvB,CAAC,GAAG,CAAC,CAKP"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { selectorUnitFails } from '@shrkcrft/core';
|
|
2
|
+
/**
|
|
3
|
+
* THE proposal of every asset doctor (round 13): `registrations doctor`,
|
|
4
|
+
* `scaffolds doctor`, `search tuning doctor`, `self-config doctor|report`, and
|
|
5
|
+
* MCP `get_scaffold_pattern_doctor` / `get_self_config_doctor` — so a CLI verb
|
|
6
|
+
* and its MCP twin cannot propose different exits over the same report.
|
|
7
|
+
*
|
|
8
|
+
* 1 on an error, on a warning under `--strict`, or on a selector unit THE
|
|
9
|
+
* `--fail-on-dead-units` predicate (`selectorUnitFails`) fails — an unmarked
|
|
10
|
+
* dead unit, or a stale LOCAL `expectEmpty` marker; a pack's stale marker is
|
|
11
|
+
* INFO and never fails the consumer, and an intended-empty unit never fails.
|
|
12
|
+
* Else 0. Settle the proposal against the doctor's coverage (`settleVerdict`):
|
|
13
|
+
* a Coverage-weight dead or unproven unit turns 0 into 2 whatever the flags.
|
|
14
|
+
*/
|
|
15
|
+
export function assetDoctorProposedExit(found, flags) {
|
|
16
|
+
if (found.errors > 0)
|
|
17
|
+
return 1;
|
|
18
|
+
if (flags.strict && found.warnings > 0)
|
|
19
|
+
return 1;
|
|
20
|
+
const unitFlags = { failOnDeadUnits: flags.failOnDeadUnits, strict: flags.strict, strictPromotesWarnings: false };
|
|
21
|
+
return found.units.some((u) => selectorUnitFails(u, unitFlags)) ? 1 : 0;
|
|
22
|
+
}
|
package/dist/asset-provenance.js
CHANGED
|
@@ -187,7 +187,7 @@ export function renderProvenanceMarkdown(report) {
|
|
|
187
187
|
lines.push(`Total entries: ${report.total}`);
|
|
188
188
|
lines.push('');
|
|
189
189
|
if (!report.ledgerExists) {
|
|
190
|
-
lines.push('> No provenance ledger yet. Run any `shrk knowledge
|
|
190
|
+
lines.push('> No provenance ledger yet. Run any `shrk knowledge add --write-preview` (or update / remove) or `shrk pack author preview --write-preview` to start one.');
|
|
191
191
|
lines.push('');
|
|
192
192
|
return lines.join('\n');
|
|
193
193
|
}
|
|
@@ -43,12 +43,35 @@ export interface IChangedScopeFilterResult<TViolation extends IBoundaryLikeViola
|
|
|
43
43
|
includedViolations: ReadonlyArray<TViolation>;
|
|
44
44
|
ignoredLegacyCount: number;
|
|
45
45
|
ignoredLegacyByRule: Readonly<Record<string, number>>;
|
|
46
|
+
/**
|
|
47
|
+
* Violations included because their RULE was escalated — its definition (or
|
|
48
|
+
* the config / alias map it is evaluated under) changed, so every violation
|
|
49
|
+
* it produces is new to this changeset, whatever file it sits in.
|
|
50
|
+
*/
|
|
51
|
+
escalatedCount?: number;
|
|
52
|
+
}
|
|
53
|
+
/** Extra inputs to {@link filterViolationsToChangedScope}. */
|
|
54
|
+
export interface IChangedScopeFilterOptions {
|
|
55
|
+
/**
|
|
56
|
+
* Rules whose violations are included regardless of their file (round 11,
|
|
57
|
+
* 6.3 / closing#d). A rule edit can create violations only in UNCHANGED
|
|
58
|
+
* files — the filter used to file every one of them as "legacy", so
|
|
59
|
+
* `--changed-only` and `finish` read green over the violation the edit just
|
|
60
|
+
* introduced. The caller computes the set with
|
|
61
|
+
* `resolveBoundaryRuleInvalidation`.
|
|
62
|
+
*/
|
|
63
|
+
readonly escalatedRuleIds?: ReadonlySet<string> | readonly string[];
|
|
64
|
+
/** A changed-file set the caller already resolved — skips a second git call. */
|
|
65
|
+
readonly resolved?: {
|
|
66
|
+
readonly mode: ChangedScopeMode;
|
|
67
|
+
readonly files: readonly string[];
|
|
68
|
+
};
|
|
46
69
|
}
|
|
47
70
|
export declare function resolveChangedFiles(opts: IChangedScopeOptions): {
|
|
48
71
|
mode: ChangedScopeMode;
|
|
49
72
|
files: string[];
|
|
50
73
|
};
|
|
51
|
-
export declare function filterViolationsToChangedScope<TViolation extends IBoundaryLikeViolation>(violations: ReadonlyArray<TViolation>, opts: IChangedScopeOptions): IChangedScopeFilterResult<TViolation>;
|
|
74
|
+
export declare function filterViolationsToChangedScope<TViolation extends IBoundaryLikeViolation>(violations: ReadonlyArray<TViolation>, opts: IChangedScopeOptions, filterOptions?: IChangedScopeFilterOptions): IChangedScopeFilterResult<TViolation>;
|
|
52
75
|
export interface IChangedBoundaryReport {
|
|
53
76
|
schema: 'sharkcraft.changed-boundary-report/v1';
|
|
54
77
|
mode: ChangedScopeMode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"boundaries-changed-only.d.ts","sourceRoot":"","sources":["../src/boundaries-changed-only.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,oBAAY,gBAAgB;IAC1B,WAAW,iBAAiB;IAC5B,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B,gEAAgE;IAChE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB,CAAC,UAAU,SAAS,sBAAsB;IAClF,IAAI,EAAE,gBAAgB,CAAC;IACvB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,kBAAkB,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"boundaries-changed-only.d.ts","sourceRoot":"","sources":["../src/boundaries-changed-only.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,oBAAY,gBAAgB;IAC1B,WAAW,iBAAiB;IAC5B,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B,gEAAgE;IAChE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB,CAAC,UAAU,SAAS,sBAAsB;IAClF,IAAI,EAAE,gBAAgB,CAAC;IACvB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,kBAAkB,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,8DAA8D;AAC9D,MAAM,WAAW,0BAA0B;IACzC;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,CAAC;IACpE,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;CAC5F;AAWD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG;IAC/D,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAkBA;AAED,wBAAgB,8BAA8B,CAAC,UAAU,SAAS,sBAAsB,EACtF,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,EACrC,IAAI,EAAE,oBAAoB,EAC1B,aAAa,GAAE,0BAA+B,GAC7C,yBAAyB,CAAC,UAAU,CAAC,CA2CvC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,uCAAuC,CAAC;IAChD,IAAI,EAAE,gBAAgB,CAAC;IACvB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAC1D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvD;AAED,wBAAgB,0BAA0B,CAAC,UAAU,SAAS,sBAAsB,EAClF,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,EACrC,IAAI,EAAE,oBAAoB,GACzB,sBAAsB,CAWxB"}
|
|
@@ -50,12 +50,21 @@ export function resolveChangedFiles(opts) {
|
|
|
50
50
|
const out = getChangedFiles(opts.projectRoot, { includeWorktree: true });
|
|
51
51
|
return { mode: ChangedScopeMode.ChangedOnly, files: out };
|
|
52
52
|
}
|
|
53
|
-
export function filterViolationsToChangedScope(violations, opts) {
|
|
54
|
-
const { mode, files } = resolveChangedFiles(opts);
|
|
53
|
+
export function filterViolationsToChangedScope(violations, opts, filterOptions = {}) {
|
|
54
|
+
const { mode, files } = filterOptions.resolved ?? resolveChangedFiles(opts);
|
|
55
55
|
const changedSet = new Set(files.map((f) => f.split(/[\\/]/).join('/')));
|
|
56
|
+
const escalated = new Set(filterOptions.escalatedRuleIds ?? []);
|
|
56
57
|
const included = [];
|
|
57
58
|
const ignoredByRule = {};
|
|
59
|
+
let escalatedCount = 0;
|
|
58
60
|
for (const v of violations) {
|
|
61
|
+
// A rule whose definition changed produced this violation in THIS
|
|
62
|
+
// changeset, whatever file it sits in — never "legacy".
|
|
63
|
+
if (escalated.has(v.ruleId)) {
|
|
64
|
+
included.push(v);
|
|
65
|
+
escalatedCount += 1;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
59
68
|
const candidate = v.file ?? v.fromFile ?? '';
|
|
60
69
|
const norm = normalisePath(candidate, opts.projectRoot);
|
|
61
70
|
if (changedSet.has(norm)) {
|
|
@@ -81,6 +90,7 @@ export function filterViolationsToChangedScope(violations, opts) {
|
|
|
81
90
|
includedViolations: included,
|
|
82
91
|
ignoredLegacyCount,
|
|
83
92
|
ignoredLegacyByRule: ignoredByRule,
|
|
93
|
+
...(escalated.size > 0 ? { escalatedCount } : {}),
|
|
84
94
|
};
|
|
85
95
|
}
|
|
86
96
|
export function buildChangedBoundaryReport(violations, opts) {
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { IBoundaryRule, IImportScanResult } from '@shrkcrft/boundaries';
|
|
2
|
+
import type { ChangedScopeMode, IChangedScopeOptions } from './boundaries-changed-only.js';
|
|
3
|
+
import type { IBoundaryLoadIssue } from './boundary-load-issue.model.js';
|
|
4
|
+
/** Inputs to `runBoundaryCheck` — every boundary surface passes the same ones. */
|
|
5
|
+
export interface IRunBoundaryCheckOptions {
|
|
6
|
+
/** `--rule <id>`: evaluate only this rule. An unknown id is a usage error (exit 3). */
|
|
7
|
+
readonly onlyRuleId?: string;
|
|
8
|
+
/**
|
|
9
|
+
* `--rule-file <path>`: evaluate ONLY these rules (loaded by the CLI through
|
|
10
|
+
* the same loader `boundaryFiles` use). Never reachable from MCP — loading a
|
|
11
|
+
* rule file executes it.
|
|
12
|
+
*/
|
|
13
|
+
readonly ruleFile?: {
|
|
14
|
+
readonly path: string;
|
|
15
|
+
readonly rules: readonly IBoundaryRule[];
|
|
16
|
+
readonly loadIssues?: readonly IBoundaryLoadIssue[];
|
|
17
|
+
};
|
|
18
|
+
/** Changed-scope mode: report violations the changeset introduced (plus escalated rules). */
|
|
19
|
+
readonly changedScope?: IChangedScopeOptions;
|
|
20
|
+
/** A changed-file set the caller already resolved (finish). Takes precedence over `changedScope` resolution. */
|
|
21
|
+
readonly changed?: {
|
|
22
|
+
readonly mode: ChangedScopeMode;
|
|
23
|
+
readonly files: readonly string[];
|
|
24
|
+
};
|
|
25
|
+
/** Read imports from raw text, comments included (`--include-comments`). */
|
|
26
|
+
readonly includeComments?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Escalate rules whose definition the changeset touched (default `true`).
|
|
29
|
+
* `false` (`--no-rule-escalation`) keeps them out — and the run then reports
|
|
30
|
+
* those rules UNEXAMINED, so it can never read as a pass.
|
|
31
|
+
*/
|
|
32
|
+
readonly escalate?: boolean;
|
|
33
|
+
/** `--fail-on-dead-units`: a dead selector unit fails the run (1). */
|
|
34
|
+
readonly failOnDeadUnits?: boolean;
|
|
35
|
+
/** `--strict`: warning-severity violations fail too. */
|
|
36
|
+
readonly strict?: boolean;
|
|
37
|
+
/** Reuse an existing scan (the rule-set diff scans once for both sides). */
|
|
38
|
+
readonly scan?: IImportScanResult;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=boundary-check-options.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boundary-check-options.model.d.ts","sourceRoot":"","sources":["../src/boundary-check-options.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAC3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,kFAAkF;AAClF,MAAM,WAAW,wBAAwB;IACvC,uFAAuF;IACvF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;QACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;KACrD,CAAC;IACF,6FAA6F;IAC7F,QAAQ,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC;IAC7C,gHAAgH;IAChH,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;IAC1F,4EAA4E;IAC5E,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;CACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import type { IVerdictCoverage } from '@shrkcrft/core';
|
|
2
|
+
import type { IBoundaryDeadUnit, IBoundaryUnitFinding, IBoundarySuppressedViolation, IBoundaryViolation, IEvaluateResult, IImportScanResult } from '@shrkcrft/boundaries';
|
|
3
|
+
import type { ChangedScopeMode } from './boundaries-changed-only.js';
|
|
4
|
+
import type { IBoundaryConfigurationStatus } from './boundary-configuration-status.model.js';
|
|
5
|
+
import type { IBoundaryLoadIssue } from './boundary-load-issue.model.js';
|
|
6
|
+
import type { IBoundaryRuleCheck } from './boundary-rule-check.model.js';
|
|
7
|
+
import type { IBoundaryRuleInvalidation } from './boundary-rule-invalidation.model.js';
|
|
8
|
+
import type { IBoundaryStaleExceptionFinding } from './boundary-stale-exception-finding.model.js';
|
|
9
|
+
/**
|
|
10
|
+
* The ONE boundary-check answer (round 11, C#one-boundary-check-authority):
|
|
11
|
+
* `check boundaries`, finish's boundaries gate, `diff-check` and both MCP
|
|
12
|
+
* boundary tools read this, so the alias map, the escalation, the exemptions
|
|
13
|
+
* and the verdict cannot differ between them.
|
|
14
|
+
*/
|
|
15
|
+
export interface IBoundaryCheckResult {
|
|
16
|
+
readonly schema: 'sharkcraft.boundary-check/v1';
|
|
17
|
+
readonly projectRoot: string;
|
|
18
|
+
readonly ruleSource: {
|
|
19
|
+
readonly kind: 'registry';
|
|
20
|
+
} | {
|
|
21
|
+
readonly kind: 'rule-file';
|
|
22
|
+
readonly path: string;
|
|
23
|
+
};
|
|
24
|
+
/** Rules in the source (registry or rule file), before `--rule`. */
|
|
25
|
+
readonly rulesConfigured: number;
|
|
26
|
+
/** Rules this run is accountable for: after `--rule`, and in changed mode the governing + escalated ones. */
|
|
27
|
+
readonly selectedRuleIds: readonly string[];
|
|
28
|
+
readonly scan: IImportScanResult;
|
|
29
|
+
/** The full evaluation over the whole scan (always — escalation and stale exceptions need it). */
|
|
30
|
+
readonly evaluation: IEvaluateResult;
|
|
31
|
+
readonly rules: readonly IBoundaryRuleCheck[];
|
|
32
|
+
/** Reported violations (in changed mode: introduced by the changeset or by an escalated rule). */
|
|
33
|
+
readonly violations: readonly IBoundaryViolation[];
|
|
34
|
+
readonly counts: {
|
|
35
|
+
readonly error: number;
|
|
36
|
+
readonly warning: number;
|
|
37
|
+
readonly info: number;
|
|
38
|
+
};
|
|
39
|
+
readonly suppressed: readonly IBoundarySuppressedViolation[];
|
|
40
|
+
readonly staleExceptions: readonly IBoundaryStaleExceptionFinding[];
|
|
41
|
+
/** The selected rules' UNMARKED dead selector units — each rule's settled `.dead`. */
|
|
42
|
+
readonly deadUnits: readonly IBoundaryDeadUnit[];
|
|
43
|
+
/**
|
|
44
|
+
* Units marked `{ pattern, expectEmpty: true }` whose target does not exist
|
|
45
|
+
* (round 13): accepted — printed `accepted by expectEmpty: …` at exit 0 —
|
|
46
|
+
* and never a failure, under any flag.
|
|
47
|
+
*/
|
|
48
|
+
readonly intendedEmpty: readonly IBoundaryUnitFinding[];
|
|
49
|
+
/**
|
|
50
|
+
* Units marked `expectEmpty` whose target now exists (round 13): the fence
|
|
51
|
+
* went live and the marker is stale. ✓ withheld; fails only under
|
|
52
|
+
* `--fail-on-dead-units` / `--strict`, and never for a pack marker (INFO).
|
|
53
|
+
*/
|
|
54
|
+
readonly wentLive: readonly IBoundaryUnitFinding[];
|
|
55
|
+
/** The units that fail THIS run — core's `selectorUnitFails` under the run's flags. */
|
|
56
|
+
readonly failingUnits: readonly IBoundaryUnitFinding[];
|
|
57
|
+
readonly loadIssues: readonly IBoundaryLoadIssue[];
|
|
58
|
+
readonly configuration?: IBoundaryConfigurationStatus;
|
|
59
|
+
readonly changed?: {
|
|
60
|
+
readonly mode: ChangedScopeMode;
|
|
61
|
+
readonly changedFiles: readonly string[];
|
|
62
|
+
/** Changed SOURCE files (present in the scan) that at least one rule governs. */
|
|
63
|
+
readonly governedFiles: readonly string[];
|
|
64
|
+
readonly ignoredLegacyCount: number;
|
|
65
|
+
readonly ignoredLegacyByRule: Readonly<Record<string, number>>;
|
|
66
|
+
readonly escalation: IBoundaryRuleInvalidation;
|
|
67
|
+
/** Rules escalated in this run (empty under `--no-rule-escalation`). */
|
|
68
|
+
readonly escalatedRuleIds: readonly string[];
|
|
69
|
+
/** Rules that needed escalation but `--no-rule-escalation` kept out — reported unexamined. */
|
|
70
|
+
readonly escalationSuppressed: readonly string[];
|
|
71
|
+
};
|
|
72
|
+
/** Run coverage: rules examined of rules selected. */
|
|
73
|
+
readonly runCoverage: IVerdictCoverage;
|
|
74
|
+
/** The exit this run proposes before settling on coverage (the CLI envelope takes this). */
|
|
75
|
+
readonly proposedExit: number;
|
|
76
|
+
/** Settled with core's shortfall rule — never 0 over an unexamined scope. */
|
|
77
|
+
readonly exitCode: number;
|
|
78
|
+
readonly verdict: 'pass' | 'fail' | 'not-verified' | 'usage-error';
|
|
79
|
+
readonly shortfalls: readonly string[];
|
|
80
|
+
/**
|
|
81
|
+
* The settled acceptances (`<rule>: accepted by expectEmpty: …`) — present
|
|
82
|
+
* only at exit 0, like every acceptance (core `settleVerdict`). Round 13.
|
|
83
|
+
*/
|
|
84
|
+
readonly accepted: readonly string[];
|
|
85
|
+
/** Set when `--rule` named no rule (exit 3). */
|
|
86
|
+
readonly unknownRuleId?: string;
|
|
87
|
+
readonly availableRuleIds?: readonly string[];
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=boundary-check-result.model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boundary-check-result.model.d.ts","sourceRoot":"","sources":["../src/boundary-check-result.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAC5B,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AAC7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAElG;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3G,oEAAoE;IACpE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,6GAA6G;IAC7G,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,kGAAkG;IAClG,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC9C,kGAAkG;IAClG,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7F,QAAQ,CAAC,UAAU,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAC7D,QAAQ,CAAC,eAAe,EAAE,SAAS,8BAA8B,EAAE,CAAC;IACpE,sFAAsF;IACtF,QAAQ,CAAC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACjD;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACnD,uFAAuF;IACvF,QAAQ,CAAC,YAAY,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACvD,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,4BAA4B,CAAC;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAChC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;QACzC,iFAAiF;QACjF,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;QAC1C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACpC,QAAQ,CAAC,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;QAC/C,wEAAwE;QACxE,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;QAC7C,8FAA8F;QAC9F,QAAQ,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;KAClD,CAAC;IACF,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,4FAA4F;IAC5F,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;IACnE,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,gDAAgD;IAChD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { ILoadedBoundaryRulesFile } from '@shrkcrft/boundaries';
|
|
2
|
+
import type { IBoundaryConfigurationStatus } from './boundary-configuration-status.model.js';
|
|
3
|
+
import type { IBoundaryLoadIssue } from './boundary-load-issue.model.js';
|
|
4
|
+
import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
|
|
5
|
+
/** The conventional local rule file — loaded ONLY when listed in `boundaryFiles`. */
|
|
6
|
+
export declare const DEFAULT_LOCAL_BOUNDARY_FILE = "boundaries.ts";
|
|
7
|
+
/**
|
|
8
|
+
* Classify the local `boundaryFiles` entries — THE code path both the
|
|
9
|
+
* inspector's load loop and {@link describeBoundaryConfiguration} use, so the
|
|
10
|
+
* loader and the diagnostics cannot disagree about which files exist.
|
|
11
|
+
*
|
|
12
|
+
* `unlistedDefault` is set when `sharkcraft/boundaries.ts` exists but no entry
|
|
13
|
+
* points at it: the file an author naturally creates loads nothing until it is
|
|
14
|
+
* listed. It is reported, never auto-loaded — auto-loading would start
|
|
15
|
+
* enforcing rules silently (new exit 1s).
|
|
16
|
+
*/
|
|
17
|
+
export declare function classifyLocalBoundaryFiles(sharkcraftDir: string, boundaryFiles: readonly string[]): {
|
|
18
|
+
readonly listed: readonly {
|
|
19
|
+
readonly rel: string;
|
|
20
|
+
readonly abs: string;
|
|
21
|
+
readonly exists: boolean;
|
|
22
|
+
}[];
|
|
23
|
+
readonly unlistedDefault?: string;
|
|
24
|
+
};
|
|
25
|
+
/** A path relative to the project root (`/`-separated), or the absolute path when outside it. */
|
|
26
|
+
export declare function boundaryFileLabel(projectRoot: string, abs: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* The structured load issues one loaded rule file carries — used by the
|
|
29
|
+
* inspector (local + pack files) and `check boundaries --rule-file`, so every
|
|
30
|
+
* origin reports a dropped rule the same way.
|
|
31
|
+
*/
|
|
32
|
+
export declare function boundaryLoadIssuesFromFile(loaded: ILoadedBoundaryRulesFile, projectRoot: string, origin: IBoundaryLoadIssue['origin'], packageName?: string): IBoundaryLoadIssue[];
|
|
33
|
+
/**
|
|
34
|
+
* Are boundary rules configured, and if not, why? The one answer every
|
|
35
|
+
* boundary surface renders (round 11, L-1).
|
|
36
|
+
*/
|
|
37
|
+
export declare function describeBoundaryConfiguration(inspection: ISharkcraftInspection): IBoundaryConfigurationStatus;
|
|
38
|
+
//# sourceMappingURL=boundary-configuration-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boundary-configuration-status.d.ts","sourceRoot":"","sources":["../src/boundary-configuration-status.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AAC7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAE3D;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B;IACD,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IACrG,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC,CAQA;AAED,iGAAiG;AACjG,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,wBAAwB,EAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB,EAAE,CAoBtB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,qBAAqB,GAAG,4BAA4B,CA8D7G"}
|