@shrkcrft/inspector 0.1.0-alpha.30 → 0.1.0-alpha.32
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 +60 -5
- 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/codemod-assist.d.ts.map +1 -1
- package/dist/codemod-assist.js +3 -1
- 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/comment-syntax.d.ts +15 -0
- package/dist/comment-syntax.d.ts.map +1 -0
- package/dist/comment-syntax.js +15 -0
- 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 +122 -0
- package/dist/contribution-load-failures.d.ts.map +1 -0
- package/dist/contribution-load-failures.js +592 -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-applicability.d.ts +46 -0
- package/dist/convention-applicability.d.ts.map +1 -0
- package/dist/convention-applicability.js +247 -0
- package/dist/convention-filter-level.d.ts +13 -0
- package/dist/convention-filter-level.d.ts.map +1 -0
- package/dist/convention-filter-level.js +13 -0
- package/dist/convention-registry.d.ts +51 -4
- package/dist/convention-registry.d.ts.map +1 -1
- package/dist/convention-registry.js +135 -60
- 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 +161 -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 +24 -0
- package/dist/decision-records.d.ts.map +1 -1
- package/dist/decision-records.js +231 -84
- 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 +55 -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 +75 -20
- package/dist/file-languages.d.ts +9 -0
- package/dist/file-languages.d.ts.map +1 -0
- package/dist/file-languages.js +91 -0
- package/dist/fix-preview.d.ts.map +1 -1
- package/dist/fix-preview.js +87 -22
- 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.d.ts.map +1 -1
- package/dist/fuzzy-impact.js +3 -2
- package/dist/git-helpers.d.ts +29 -4
- package/dist/git-helpers.d.ts.map +1 -1
- package/dist/git-helpers.js +69 -10
- 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 +32 -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-convention-applicability-reason.d.ts +29 -0
- package/dist/i-convention-applicability-reason.d.ts.map +1 -0
- package/dist/i-convention-applicability-reason.js +1 -0
- package/dist/i-convention-applicability.d.ts +9 -0
- package/dist/i-convention-applicability.d.ts.map +1 -0
- package/dist/i-convention-applicability.js +1 -0
- package/dist/i-convention-scope.d.ts +19 -0
- package/dist/i-convention-scope.d.ts.map +1 -0
- package/dist/i-convention-scope.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-file-language.d.ts +11 -0
- package/dist/i-file-language.d.ts.map +1 -0
- package/dist/i-file-language.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-not-applicable-convention.d.ts +17 -0
- package/dist/i-not-applicable-convention.d.ts.map +1 -0
- package/dist/i-not-applicable-convention.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-pack-origin.d.ts +13 -0
- package/dist/i-reference-pack-origin.d.ts.map +1 -0
- package/dist/i-reference-pack-origin.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-stale-path-hint-input.d.ts +18 -0
- package/dist/i-stale-path-hint-input.d.ts.map +1 -0
- package/dist/i-stale-path-hint-input.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-unverifiable-remedy-group.d.ts +10 -0
- package/dist/i-unverifiable-remedy-group.d.ts.map +1 -0
- package/dist/i-unverifiable-remedy-group.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 +158 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +197 -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 +25 -2
- package/dist/knowledge-authoring.d.ts.map +1 -1
- package/dist/knowledge-authoring.js +53 -13
- package/dist/knowledge-contribution-slots.d.ts +18 -0
- package/dist/knowledge-contribution-slots.d.ts.map +1 -0
- package/dist/knowledge-contribution-slots.js +25 -0
- package/dist/knowledge-entry-rejections.d.ts +17 -0
- package/dist/knowledge-entry-rejections.d.ts.map +1 -0
- package/dist/knowledge-entry-rejections.js +79 -0
- package/dist/knowledge-entry-verdict-record.d.ts +34 -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-min-referenced-valve.d.ts +12 -0
- package/dist/knowledge-min-referenced-valve.d.ts.map +1 -0
- package/dist/knowledge-min-referenced-valve.js +12 -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-rejected-entry.d.ts +28 -0
- package/dist/knowledge-rejected-entry.d.ts.map +1 -0
- package/dist/knowledge-rejected-entry.js +1 -0
- package/dist/knowledge-rename-command.d.ts +20 -0
- package/dist/knowledge-rename-command.d.ts.map +1 -0
- package/dist/knowledge-rename-command.js +34 -0
- package/dist/knowledge-rename-verb.d.ts +11 -0
- package/dist/knowledge-rename-verb.d.ts.map +1 -0
- package/dist/knowledge-rename-verb.js +11 -0
- package/dist/knowledge-rename.d.ts +1 -1
- package/dist/knowledge-rename.d.ts.map +1 -1
- package/dist/knowledge-rename.js +6 -5
- 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 +85 -0
- package/dist/knowledge-stale-gate.d.ts.map +1 -0
- package/dist/knowledge-stale-gate.js +501 -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 +140 -0
- package/dist/knowledge-stale.d.ts +132 -9
- package/dist/knowledge-stale.d.ts.map +1 -1
- package/dist/knowledge-stale.js +1193 -294
- 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/knowledge-unverifiable-remedy.d.ts +56 -0
- package/dist/knowledge-unverifiable-remedy.d.ts.map +1 -0
- package/dist/knowledge-unverifiable-remedy.js +0 -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 +445 -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/propose-knowledge.js +3 -2
- 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-pack-origin.d.ts +18 -0
- package/dist/reference-pack-origin.d.ts.map +1 -0
- package/dist/reference-pack-origin.js +38 -0
- 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/repository-stats.d.ts.map +1 -1
- package/dist/repository-stats.js +3 -77
- 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 +250 -33
- 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 +1369 -182
- 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 +55 -281
- 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 +314 -27
- 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/stale-path-hint.d.ts +3 -0
- package/dist/stale-path-hint.d.ts.map +1 -0
- package/dist/stale-path-hint.js +47 -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-authoring.d.ts +1 -1
- package/dist/template-authoring.d.ts.map +1 -1
- package/dist/template-authoring.js +2 -1
- 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 +233 -0
- package/dist/why-file.d.ts +3 -0
- package/dist/why-file.d.ts.map +1 -1
- package/dist/why-file.js +12 -7
- package/package.json +17 -17
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { coverageShortfall } from '@shrkcrft/core';
|
|
2
|
+
import { DoctorVerdictKind } from "./doctor-verdict-kind.js";
|
|
3
|
+
/**
|
|
4
|
+
* THE settlement of one doctor run.
|
|
5
|
+
*
|
|
6
|
+
* an error-severity check → `errors`
|
|
7
|
+
* else any coverage shortfall → `not-verified` (never ready)
|
|
8
|
+
* else → `ready`
|
|
9
|
+
*
|
|
10
|
+
* `IDoctorResult.passed` stays errors-only (its long-standing meaning); the
|
|
11
|
+
* coverage the doctor could not verify is read here, through core's
|
|
12
|
+
* `coverageShortfall`, the same records `shrk doctor` settles its exit on.
|
|
13
|
+
* `shrk check`, the dashboard and MCP `inspect_sharkcraft_setup` read this
|
|
14
|
+
* instead of `passed`, so none of them calls a setup ready over a compiled
|
|
15
|
+
* pack build the doctor could not compare with its source.
|
|
16
|
+
*/
|
|
17
|
+
export function doctorVerdict(result) {
|
|
18
|
+
const shortfalls = (result.coverage ?? []).flatMap((c) => {
|
|
19
|
+
const s = coverageShortfall(c);
|
|
20
|
+
return s === undefined ? [] : [s];
|
|
21
|
+
});
|
|
22
|
+
const verdict = !result.passed
|
|
23
|
+
? DoctorVerdictKind.Errors
|
|
24
|
+
: shortfalls.length > 0
|
|
25
|
+
? DoctorVerdictKind.NotVerified
|
|
26
|
+
: DoctorVerdictKind.Ready;
|
|
27
|
+
return { verdict, ready: verdict === DoctorVerdictKind.Ready, shortfalls };
|
|
28
|
+
}
|
package/dist/drift.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type IVerdictCoverage } from '@shrkcrft/core';
|
|
1
2
|
import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
|
|
2
3
|
export type DriftSeverity = 'error' | 'warning' | 'info';
|
|
3
4
|
export type DriftCategory = 'boundary' | 'preset-reference' | 'preset-composition' | 'missing-pack-asset' | 'config-mismatch' | 'template-relationship' | 'pipeline-template-link';
|
|
@@ -19,6 +20,22 @@ export interface IDriftReport {
|
|
|
19
20
|
warning: number;
|
|
20
21
|
info: number;
|
|
21
22
|
};
|
|
23
|
+
/**
|
|
24
|
+
* What the boundary half examined — THE records `check boundaries` settles
|
|
25
|
+
* on (`boundaryCheckCoverage`). Empty when boundaries were skipped or none
|
|
26
|
+
* is configured.
|
|
27
|
+
*/
|
|
28
|
+
coverage: readonly IVerdictCoverage[];
|
|
29
|
+
/** 0 clean · 1 an error finding · 2 part of a boundary rule's scope was never examined. */
|
|
30
|
+
exitCode: number;
|
|
31
|
+
verdict: 'pass' | 'fail' | 'not-verified' | 'usage-error';
|
|
32
|
+
shortfalls: readonly string[];
|
|
33
|
+
/**
|
|
34
|
+
* The settled acceptances (`<rule>: accepted by expectEmpty: …`) — present
|
|
35
|
+
* only at exit 0, like every acceptance (round 13 review: a boundary rule's
|
|
36
|
+
* expectEmpty acceptance reached this settle and was never printed).
|
|
37
|
+
*/
|
|
38
|
+
accepted?: readonly string[];
|
|
22
39
|
}
|
|
23
40
|
export interface IBuildDriftOptions {
|
|
24
41
|
/** When true, run the full boundary scan (slow on large repos). Default: true. */
|
package/dist/drift.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../src/drift.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../src/drift.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,kBAAkB,GAClB,oBAAoB,GACpB,oBAAoB,GACpB,iBAAiB,GACjB,uBAAuB,GACvB,wBAAwB,CAAC;AAE7B,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACjG;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD;;;;OAIG;IACH,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACtC,2FAA2F;IAC3F,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;IAC1D,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,YAAY,CAoId"}
|
package/dist/drift.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { settleVerdict } from '@shrkcrft/core';
|
|
2
2
|
import { resolvePreset, resolvePresetReferences } from '@shrkcrft/presets';
|
|
3
|
+
import { boundaryCheckCoverage, boundaryLoadIssueLabel, runBoundaryCheck } from "./run-boundary-check.js";
|
|
3
4
|
import { inspectionReferenceLookup } from "./reference-lookup.js";
|
|
4
5
|
/**
|
|
5
6
|
* First-cut drift report. Combines:
|
|
@@ -13,14 +14,32 @@ import { inspectionReferenceLookup } from "./reference-lookup.js";
|
|
|
13
14
|
*/
|
|
14
15
|
export function buildDriftReport(inspection, options = {}) {
|
|
15
16
|
const findings = [];
|
|
16
|
-
// 1. Boundary violations
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
// 1. Boundary violations — through THE boundary orchestrator, the call
|
|
18
|
+
// `check boundaries` makes (round 11 review R11-GAP-3). Drift ran its own
|
|
19
|
+
// scan + evaluate: an unreadable governed file read `0` here where the gate
|
|
20
|
+
// read 2, and an errored rule or a stale exception was invisible.
|
|
21
|
+
let coverage = [];
|
|
22
|
+
const loadIssues = inspection.boundaryLoadIssues ?? [];
|
|
23
|
+
if ((options.runBoundaries ?? true) && (inspection.boundaryRegistry.size() > 0 || loadIssues.length > 0)) {
|
|
24
|
+
const r = runBoundaryCheck(inspection);
|
|
25
|
+
coverage = boundaryCheckCoverage(r);
|
|
26
|
+
for (const issue of r.loadIssues) {
|
|
27
|
+
findings.push({
|
|
28
|
+
category: 'boundary',
|
|
29
|
+
severity: 'error',
|
|
30
|
+
message: `Boundary rule ${boundaryLoadIssueLabel(issue)} did not load — NOT evaluated: ${issue.issues.join('; ')}`,
|
|
31
|
+
evidence: { file: issue.file, kind: issue.kind, ...(issue.ruleId ? { ruleId: issue.ruleId } : {}) },
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
for (const s of r.staleExceptions) {
|
|
35
|
+
findings.push({
|
|
36
|
+
category: 'boundary',
|
|
37
|
+
severity: 'error',
|
|
38
|
+
message: s.message,
|
|
39
|
+
evidence: { ruleId: s.ruleId, file: s.file },
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
for (const v of r.violations) {
|
|
24
43
|
findings.push({
|
|
25
44
|
category: 'boundary',
|
|
26
45
|
severity: v.severity,
|
|
@@ -103,5 +122,16 @@ export function buildDriftReport(inspection, options = {}) {
|
|
|
103
122
|
const counts = { error: 0, warning: 0, info: 0 };
|
|
104
123
|
for (const f of findings)
|
|
105
124
|
counts[f.severity] += 1;
|
|
106
|
-
|
|
125
|
+
// Settled with core's one fold: a boundary scope that was not fully examined
|
|
126
|
+
// turns a clean drift report into NOT VERIFIED (2), never "No drift".
|
|
127
|
+
const settled = settleVerdict(counts.error > 0 ? 1 : 0, coverage);
|
|
128
|
+
return {
|
|
129
|
+
findings,
|
|
130
|
+
counts,
|
|
131
|
+
coverage,
|
|
132
|
+
exitCode: settled.exit,
|
|
133
|
+
verdict: settled.verdict,
|
|
134
|
+
shortfalls: settled.shortfalls,
|
|
135
|
+
accepted: settled.accepted,
|
|
136
|
+
};
|
|
107
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entrypoint-matrix.d.ts","sourceRoot":"","sources":["../src/entrypoint-matrix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;AAE1E,oBAAY,eAAe;IACzB,gBAAgB,sBAAsB;IACtC,QAAQ,cAAc;IACtB,WAAW,iBAAiB;IAC5B,mBAAmB,yBAAyB;CAC7C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,GAAG,eAAe,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,wBAAwB,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IACxD;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;QACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;CACJ;
|
|
1
|
+
{"version":3,"file":"entrypoint-matrix.d.ts","sourceRoot":"","sources":["../src/entrypoint-matrix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;AAE1E,oBAAY,eAAe;IACzB,gBAAgB,sBAAsB;IACtC,QAAQ,cAAc;IACtB,WAAW,iBAAiB;IAC5B,mBAAmB,yBAAyB;CAC7C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,GAAG,eAAe,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,wBAAwB,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IACxD;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;QACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;CACJ;AAuJD,wBAAgB,qBAAqB,IAAI,uBAAuB,CAM/D;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,CA2BlF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,GACpE,MAAM,CAeR"}
|
|
@@ -91,7 +91,10 @@ const MATRIX_ENTRIES = [
|
|
|
91
91
|
{
|
|
92
92
|
id: 'why',
|
|
93
93
|
class: EntrypointClass.DebugExplainability,
|
|
94
|
-
|
|
94
|
+
// The `shrk why <id>` / `shrk why-not <id>` ranker CLI was removed; the
|
|
95
|
+
// ranker explainers live behind these MCP tools (`shrk why` is now the
|
|
96
|
+
// per-FILE constraint explainer).
|
|
97
|
+
callShape: 'MCP get_ranker_explanation | get_ranker_why_not',
|
|
95
98
|
whenToUse: 'Debug the ranker — why a registry entry was / was not surfaced for a task.',
|
|
96
99
|
safety: 'read-only',
|
|
97
100
|
docs: 'docs/why.md',
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type IRejectedEntry } from '@shrkcrft/core';
|
|
2
|
+
import type { IContributionFileIssue } from './i-contribution-file-issue.js';
|
|
1
3
|
export declare const FEEDBACK_INGESTION_SCHEMA = "sharkcraft.feedback-ingestion/v1";
|
|
2
4
|
export declare enum FeedbackBucket {
|
|
3
5
|
Good = "good",
|
|
@@ -80,17 +82,41 @@ export declare function ingestFeedbackFile(projectRoot: string, file: string, op
|
|
|
80
82
|
* `sharkcraft/feedback-rules.ts` exporting an `IFeedbackRule[]` default.
|
|
81
83
|
* Packs contribute via `feedbackRuleFiles[]` in their manifest.
|
|
82
84
|
*/
|
|
83
|
-
export declare function loadFeedbackRules(inspection:
|
|
85
|
+
export declare function loadFeedbackRules(inspection: IFeedbackRuleLoadScope): Promise<readonly IFeedbackRule[]>;
|
|
86
|
+
/** What {@link loadFeedbackRules} reads off an inspection (a structural subset, so a caller need not build one). */
|
|
87
|
+
type IFeedbackRuleLoadScope = {
|
|
84
88
|
projectRoot: string;
|
|
85
89
|
sharkcraftDir: string | null;
|
|
86
90
|
packs?: {
|
|
87
91
|
validPacks?: readonly {
|
|
88
92
|
packageRoot: string;
|
|
93
|
+
packageName?: string;
|
|
89
94
|
manifest?: {
|
|
90
95
|
contributions?: unknown;
|
|
91
96
|
} | null;
|
|
92
97
|
}[];
|
|
93
98
|
};
|
|
94
|
-
}
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* THE feedback-rule acceptance predicate (round 12, 12.1): a non-empty string
|
|
102
|
+
* `id` — `[]` means accepted. An id-less rule used to be dropped with no signal.
|
|
103
|
+
*/
|
|
104
|
+
export declare function feedbackRuleRejectionReasons(raw: unknown): readonly string[];
|
|
105
|
+
/**
|
|
106
|
+
* {@link loadFeedbackRules} WITH what did not take effect (round 12, 12.1): a
|
|
107
|
+
* rules file that failed to import (it was swallowed to `[]`), and every
|
|
108
|
+
* declared rule the loader refused — invalid, or a duplicate id.
|
|
109
|
+
*/
|
|
110
|
+
export declare function loadFeedbackRulesWithIssues(inspection: IFeedbackRuleLoadScope): Promise<{
|
|
111
|
+
readonly rules: readonly IFeedbackRule[];
|
|
112
|
+
readonly entries: readonly {
|
|
113
|
+
readonly id: string;
|
|
114
|
+
readonly file: string;
|
|
115
|
+
readonly packageName?: string;
|
|
116
|
+
}[];
|
|
117
|
+
readonly issues: readonly IContributionFileIssue[];
|
|
118
|
+
readonly rejected: readonly IRejectedEntry[];
|
|
119
|
+
}>;
|
|
95
120
|
export declare function renderFeedbackBacklog(report: IFeedbackReport): string;
|
|
121
|
+
export {};
|
|
96
122
|
//# sourceMappingURL=feedback-ingestion.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback-ingestion.d.ts","sourceRoot":"","sources":["../src/feedback-ingestion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"feedback-ingestion.d.ts","sourceRoot":"","sources":["../src/feedback-ingestion.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAyC,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAI7E,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,oBAAY,cAAc;IACxB,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,SAAS,eAAe;IACxB,KAAK,UAAU;CAChB;AAED,oBAAY,gBAAgB;IAC1B,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,oCAAoC;IACpC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,yBAAyB,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACvC,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC1C,kBAAkB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC3C;AAUD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,gCAAgC,CAAC;AAElE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,0BAA0B;IAC1B,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,kDAAkD;IAClD,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC;IAC/D,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,4CAA4C;IAC5C,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,uEAAuE;IACvE,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAEnE;AAyMD,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAClC;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAiDjB;AAED,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAIjB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,sBAAsB,GAAG,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAE7G;AAED,oHAAoH;AACpH,KAAK,sBAAsB,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,SAAS;YACpB,WAAW,EAAE,MAAM,CAAC;YACpB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,QAAQ,CAAC,EAAE;gBAAE,aAAa,CAAC,EAAE,OAAO,CAAA;aAAE,GAAG,IAAI,CAAC;SAC/C,EAAE,CAAC;KACL,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAI5E;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAAC,UAAU,EAAE,sBAAsB,GAAG,OAAO,CAAC;IAC7F,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3G,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAC9C,CAAC,CAwDD;AAaD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAmCrE"}
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { existsSync, readFileSync } from 'node:fs';
|
|
16
16
|
import * as nodePath from 'node:path';
|
|
17
|
-
import { importModuleViaLoader } from '@shrkcrft/core';
|
|
17
|
+
import { importModuleViaLoader, RejectionCause } from '@shrkcrft/core';
|
|
18
|
+
import { knowledgeRenameCommand } from "./knowledge-rename-command.js";
|
|
19
|
+
import { KnowledgeRenameVerb } from "./knowledge-rename-verb.js";
|
|
18
20
|
export const FEEDBACK_INGESTION_SCHEMA = 'sharkcraft.feedback-ingestion/v1';
|
|
19
21
|
export var FeedbackBucket;
|
|
20
22
|
(function (FeedbackBucket) {
|
|
@@ -129,7 +131,11 @@ const KEYWORD_RULES = [
|
|
|
129
131
|
pattern: /\b(rename|move|moved|renamed)\b/i,
|
|
130
132
|
tags: ['rename'],
|
|
131
133
|
targetArea: 'knowledge-rename',
|
|
132
|
-
|
|
134
|
+
// THE rename-command helper: the previews are read-only and take no `--dry-run`.
|
|
135
|
+
suggestedCommands: [
|
|
136
|
+
knowledgeRenameCommand(KnowledgeRenameVerb.RenameFile),
|
|
137
|
+
knowledgeRenameCommand(KnowledgeRenameVerb.RenameSymbol),
|
|
138
|
+
],
|
|
133
139
|
},
|
|
134
140
|
{
|
|
135
141
|
pattern: /\b(trace|impact)\b/i,
|
|
@@ -141,7 +147,7 @@ const KEYWORD_RULES = [
|
|
|
141
147
|
pattern: /\b(mcp|tool[s]?)\b/i,
|
|
142
148
|
tags: ['mcp'],
|
|
143
149
|
targetArea: 'mcp',
|
|
144
|
-
suggestedCommands: ['shrk commands
|
|
150
|
+
suggestedCommands: ['shrk commands search mcp'],
|
|
145
151
|
},
|
|
146
152
|
{
|
|
147
153
|
pattern: /\b(helper[s]?)\b/i,
|
|
@@ -305,41 +311,90 @@ export function ingestFeedbackFile(projectRoot, file, options = {}) {
|
|
|
305
311
|
* Packs contribute via `feedbackRuleFiles[]` in their manifest.
|
|
306
312
|
*/
|
|
307
313
|
export async function loadFeedbackRules(inspection) {
|
|
314
|
+
return (await loadFeedbackRulesWithIssues(inspection)).rules;
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* THE feedback-rule acceptance predicate (round 12, 12.1): a non-empty string
|
|
318
|
+
* `id` — `[]` means accepted. An id-less rule used to be dropped with no signal.
|
|
319
|
+
*/
|
|
320
|
+
export function feedbackRuleRejectionReasons(raw) {
|
|
321
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
322
|
+
return ['(entry): must be an object'];
|
|
323
|
+
const id = raw.id;
|
|
324
|
+
return typeof id === 'string' && id.length > 0 ? [] : ['id: must be a non-empty string'];
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* {@link loadFeedbackRules} WITH what did not take effect (round 12, 12.1): a
|
|
328
|
+
* rules file that failed to import (it was swallowed to `[]`), and every
|
|
329
|
+
* declared rule the loader refused — invalid, or a duplicate id.
|
|
330
|
+
*/
|
|
331
|
+
export async function loadFeedbackRulesWithIssues(inspection) {
|
|
308
332
|
const out = [];
|
|
309
|
-
const
|
|
310
|
-
const
|
|
311
|
-
|
|
333
|
+
const entries = [];
|
|
334
|
+
const issues = [];
|
|
335
|
+
const rejected = [];
|
|
336
|
+
const seen = new Map();
|
|
337
|
+
const readInto = async (file, packageName) => {
|
|
338
|
+
const r = await importDefaultArray(file);
|
|
339
|
+
if (r.error !== undefined) {
|
|
340
|
+
const rel = nodePath.relative(inspection.projectRoot, file) || file;
|
|
341
|
+
issues.push({
|
|
342
|
+
severity: 'warning',
|
|
343
|
+
code: 'load-failed',
|
|
344
|
+
message: `${packageName ? `Pack ${packageName} (${rel})` : `Failed to load ${rel}`}: ${r.error}`,
|
|
345
|
+
source: file,
|
|
346
|
+
...(packageName ? { packageName } : {}),
|
|
347
|
+
});
|
|
312
348
|
return;
|
|
313
|
-
|
|
314
|
-
|
|
349
|
+
}
|
|
350
|
+
r.items.forEach((item, index) => {
|
|
351
|
+
const reasons = feedbackRuleRejectionReasons(item);
|
|
352
|
+
if (reasons.length > 0) {
|
|
353
|
+
rejected.push({ file, index, exportName: 'default', reasons, cause: RejectionCause.Invalid });
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
const rule = item;
|
|
357
|
+
const prev = seen.get(rule.id);
|
|
358
|
+
if (prev !== undefined) {
|
|
359
|
+
rejected.push({
|
|
360
|
+
file,
|
|
361
|
+
index,
|
|
362
|
+
exportName: 'default',
|
|
363
|
+
entryId: rule.id,
|
|
364
|
+
reasons: [`id: "${rule.id}" is already declared in ${prev}`],
|
|
365
|
+
cause: RejectionCause.DuplicateId,
|
|
366
|
+
});
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
seen.set(rule.id, nodePath.relative(inspection.projectRoot, file) || file);
|
|
370
|
+
out.push(rule);
|
|
371
|
+
entries.push({ id: rule.id, file, ...(packageName ? { packageName } : {}) });
|
|
372
|
+
});
|
|
315
373
|
};
|
|
316
374
|
// Local file.
|
|
317
375
|
if (inspection.sharkcraftDir) {
|
|
318
|
-
|
|
319
|
-
for (const r of await importDefaultArray(local))
|
|
320
|
-
add(r);
|
|
376
|
+
await readInto(nodePath.join(inspection.sharkcraftDir, 'feedback-rules.ts'));
|
|
321
377
|
}
|
|
322
378
|
// Pack contributions.
|
|
323
379
|
const packs = inspection.packs?.validPacks ?? [];
|
|
324
380
|
for (const pack of packs) {
|
|
325
381
|
const c = (pack.manifest?.contributions ?? {});
|
|
326
382
|
for (const rel of c.feedbackRuleFiles ?? []) {
|
|
327
|
-
|
|
328
|
-
for (const r of await importDefaultArray(full))
|
|
329
|
-
add(r);
|
|
383
|
+
await readInto(nodePath.resolve(pack.packageRoot, rel), pack.packageName);
|
|
330
384
|
}
|
|
331
385
|
}
|
|
332
|
-
return out;
|
|
386
|
+
return { rules: out, entries, issues, rejected };
|
|
333
387
|
}
|
|
388
|
+
/** A rules file's default array; `error` (first line) when the import threw. A missing file is `[]`. */
|
|
334
389
|
async function importDefaultArray(absPath) {
|
|
390
|
+
if (!existsSync(absPath))
|
|
391
|
+
return { items: [] };
|
|
335
392
|
try {
|
|
336
|
-
if (!existsSync(absPath))
|
|
337
|
-
return [];
|
|
338
393
|
const mod = (await importModuleViaLoader(absPath));
|
|
339
|
-
return Array.isArray(mod.default) ? mod.default : [];
|
|
394
|
+
return { items: Array.isArray(mod.default) ? mod.default : [] };
|
|
340
395
|
}
|
|
341
|
-
catch {
|
|
342
|
-
return [];
|
|
396
|
+
catch (e) {
|
|
397
|
+
return { items: [], error: (e.message ?? String(e)).split('\n')[0].trim() };
|
|
343
398
|
}
|
|
344
399
|
}
|
|
345
400
|
export function renderFeedbackBacklog(report) {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IFileLanguage } from './i-file-language.js';
|
|
2
|
+
export declare const FILE_LANGUAGES: readonly IFileLanguage[];
|
|
3
|
+
/** The language of `path` (absolute or project-relative): a basename override, else its extension; `null` when unknown. */
|
|
4
|
+
export declare function fileLanguageOf(path: string): IFileLanguage | null;
|
|
5
|
+
/** The language whose table row lists `extension` (`.ts` or `ts`), or `null`. */
|
|
6
|
+
export declare function fileLanguageForExtension(extension: string): IFileLanguage | null;
|
|
7
|
+
/** Every language id of the table, in table order — THE vocabulary `appliesTo.languages` may name. */
|
|
8
|
+
export declare function fileLanguageIds(): readonly string[];
|
|
9
|
+
//# sourceMappingURL=file-languages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-languages.d.ts","sourceRoot":"","sources":["../src/file-languages.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,eAAO,MAAM,cAAc,EAAE,SAAS,aAAa,EAsCvB,CAAC;AAiB7B,2HAA2H;AAC3H,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CASjE;AAED,iFAAiF;AACjF,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAGhF;AAED,sGAAsG;AACtG,wBAAgB,eAAe,IAAI,SAAS,MAAM,EAAE,CAEnD"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE per-file extension → language authority (round 15, 15.1).
|
|
3
|
+
*
|
|
4
|
+
* Promoted from `shrk stats` (`repository-stats.ts`, where it was
|
|
5
|
+
* module-private), because a convention's `appliesTo.languages` filter needs a
|
|
6
|
+
* per-file language and the tree had four unrelated maps with four different
|
|
7
|
+
* vocabularies. This is the widest one and the vocabulary `shrk stats` prints
|
|
8
|
+
* (`typescript`, `javascript`, `python`, …), so an author can read the ids
|
|
9
|
+
* they may write off `shrk stats`. `shrk stats`, `conventionApplicability` and
|
|
10
|
+
* the self-config doctor's language-id check read this table and nothing else.
|
|
11
|
+
*
|
|
12
|
+
* (The polyglot `LanguageId` enum, `languages/`, is a different, workspace-level
|
|
13
|
+
* question — which toolchains a repo runs — and keeps its own seven ids.)
|
|
14
|
+
*/
|
|
15
|
+
import * as nodePath from 'node:path';
|
|
16
|
+
import { CommentSyntax } from "./comment-syntax.js";
|
|
17
|
+
export const FILE_LANGUAGES = Object.freeze([
|
|
18
|
+
{ id: 'typescript', extensions: ['.ts', '.tsx', '.mts', '.cts'], comment: CommentSyntax.CFamily },
|
|
19
|
+
{ id: 'javascript', extensions: ['.js', '.jsx', '.mjs', '.cjs'], comment: CommentSyntax.CFamily },
|
|
20
|
+
{ id: 'java', extensions: ['.java'], comment: CommentSyntax.CFamily },
|
|
21
|
+
{ id: 'kotlin', extensions: ['.kt', '.kts'], comment: CommentSyntax.CFamily },
|
|
22
|
+
{ id: 'scala', extensions: ['.scala'], comment: CommentSyntax.CFamily },
|
|
23
|
+
{ id: 'groovy', extensions: ['.groovy'], comment: CommentSyntax.CFamily },
|
|
24
|
+
{ id: 'csharp', extensions: ['.cs'], comment: CommentSyntax.CFamily },
|
|
25
|
+
{ id: 'cpp', extensions: ['.cpp', '.cc', '.cxx', '.hpp', '.hh', '.hxx'], comment: CommentSyntax.CFamily },
|
|
26
|
+
{ id: 'c', extensions: ['.c', '.h'], comment: CommentSyntax.CFamily },
|
|
27
|
+
{ id: 'go', extensions: ['.go'], comment: CommentSyntax.CFamily },
|
|
28
|
+
{ id: 'rust', extensions: ['.rs'], comment: CommentSyntax.CFamily },
|
|
29
|
+
{ id: 'swift', extensions: ['.swift'], comment: CommentSyntax.CFamily },
|
|
30
|
+
{ id: 'php', extensions: ['.php'], comment: CommentSyntax.CFamily },
|
|
31
|
+
{ id: 'dart', extensions: ['.dart'], comment: CommentSyntax.CFamily },
|
|
32
|
+
{ id: 'python', extensions: ['.py', '.pyi'], comment: CommentSyntax.Hash },
|
|
33
|
+
{ id: 'ruby', extensions: ['.rb'], comment: CommentSyntax.Hash },
|
|
34
|
+
{ id: 'shell', extensions: ['.sh', '.bash', '.zsh', '.fish'], comment: CommentSyntax.Hash },
|
|
35
|
+
{ id: 'perl', extensions: ['.pl', '.pm'], comment: CommentSyntax.Hash },
|
|
36
|
+
{ id: 'r', extensions: ['.r', '.R'], comment: CommentSyntax.Hash },
|
|
37
|
+
{ id: 'yaml', extensions: ['.yaml', '.yml'], comment: CommentSyntax.Hash },
|
|
38
|
+
{ id: 'toml', extensions: ['.toml'], comment: CommentSyntax.Hash },
|
|
39
|
+
{ id: 'ini', extensions: ['.ini', '.cfg', '.conf'], comment: CommentSyntax.Hash },
|
|
40
|
+
{ id: 'dockerfile', extensions: ['.dockerfile'], comment: CommentSyntax.Hash },
|
|
41
|
+
{ id: 'makefile', extensions: ['.mk'], comment: CommentSyntax.Hash },
|
|
42
|
+
{ id: 'html', extensions: ['.html', '.htm'], comment: CommentSyntax.Html },
|
|
43
|
+
{ id: 'xml', extensions: ['.xml', '.xsd', '.xsl'], comment: CommentSyntax.Html },
|
|
44
|
+
{ id: 'vue', extensions: ['.vue'], comment: CommentSyntax.Html },
|
|
45
|
+
{ id: 'svelte', extensions: ['.svelte'], comment: CommentSyntax.Html },
|
|
46
|
+
{ id: 'sql', extensions: ['.sql'], comment: CommentSyntax.Sql },
|
|
47
|
+
{ id: 'css', extensions: ['.css', '.scss', '.sass', '.less'], comment: CommentSyntax.CFamily },
|
|
48
|
+
{ id: 'lua', extensions: ['.lua'], comment: CommentSyntax.Lua },
|
|
49
|
+
{ id: 'elixir', extensions: ['.ex', '.exs'], comment: CommentSyntax.Hash },
|
|
50
|
+
{ id: 'clojure', extensions: ['.clj', '.cljs'], comment: CommentSyntax.Lisp },
|
|
51
|
+
{ id: 'lisp', extensions: ['.lisp', '.lsp', '.el'], comment: CommentSyntax.Lisp },
|
|
52
|
+
{ id: 'json', extensions: ['.json', '.jsonc'], comment: CommentSyntax.None },
|
|
53
|
+
{ id: 'markdown', extensions: ['.md', '.mdx'], comment: CommentSyntax.None },
|
|
54
|
+
{ id: 'text', extensions: ['.txt'], comment: CommentSyntax.None },
|
|
55
|
+
]);
|
|
56
|
+
const EXTENSION_INDEX = (() => {
|
|
57
|
+
const m = new Map();
|
|
58
|
+
for (const def of FILE_LANGUAGES) {
|
|
59
|
+
for (const ext of def.extensions)
|
|
60
|
+
m.set(ext.toLowerCase(), def);
|
|
61
|
+
}
|
|
62
|
+
return m;
|
|
63
|
+
})();
|
|
64
|
+
/** Extension-less files named for their language (case-insensitive basename). */
|
|
65
|
+
const BASENAME_OVERRIDES = new Map([
|
|
66
|
+
['dockerfile', 'dockerfile'],
|
|
67
|
+
['makefile', 'makefile'],
|
|
68
|
+
['gnumakefile', 'makefile'],
|
|
69
|
+
]);
|
|
70
|
+
/** The language of `path` (absolute or project-relative): a basename override, else its extension; `null` when unknown. */
|
|
71
|
+
export function fileLanguageOf(path) {
|
|
72
|
+
const override = BASENAME_OVERRIDES.get(nodePath.basename(path).toLowerCase());
|
|
73
|
+
if (override) {
|
|
74
|
+
const def = FILE_LANGUAGES.find((d) => d.id === override);
|
|
75
|
+
if (def)
|
|
76
|
+
return def;
|
|
77
|
+
}
|
|
78
|
+
const ext = nodePath.extname(path).toLowerCase();
|
|
79
|
+
if (!ext)
|
|
80
|
+
return null;
|
|
81
|
+
return EXTENSION_INDEX.get(ext) ?? null;
|
|
82
|
+
}
|
|
83
|
+
/** The language whose table row lists `extension` (`.ts` or `ts`), or `null`. */
|
|
84
|
+
export function fileLanguageForExtension(extension) {
|
|
85
|
+
const ext = (extension.startsWith('.') ? extension : `.${extension}`).toLowerCase();
|
|
86
|
+
return EXTENSION_INDEX.get(ext) ?? null;
|
|
87
|
+
}
|
|
88
|
+
/** Every language id of the table, in table order — THE vocabulary `appliesTo.languages` may name. */
|
|
89
|
+
export function fileLanguageIds() {
|
|
90
|
+
return FILE_LANGUAGES.map((d) => d.id);
|
|
91
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix-preview.d.ts","sourceRoot":"","sources":["../src/fix-preview.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fix-preview.d.ts","sourceRoot":"","sources":["../src/fix-preview.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AAE9D,oBAAY,OAAO;IACjB,WAAW,iBAAiB;IAC5B,cAAc,oBAAoB;IAClC,aAAa,mBAAmB;IAChC,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,UAAU,gBAAgB;IAC1B,YAAY,kBAAkB;IAC9B,kBAAkB,yBAAyB;IAC3C,kBAAkB,yBAAyB;IAC3C,0BAA0B,iCAAiC;IAC3D,wBAAwB,+BAA+B;IACvD,uBAAuB,8BAA8B;IACrD,wBAAwB,gCAAgC;IACxD,0BAA0B,kCAAkC;IAC5D,qBAAqB,4BAA4B;CAClD;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,8DAA8D;IAC9D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,kBAAkB,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,SAAS;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClF,OAAO,EAAE,SAAS;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC9D;AAED,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,sBAAsB,CAAC,CAuCjC;AA+GD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAyEnB;AA4CD;;4CAE4C;AAC5C,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAsF5B;AAED,wBAAgB,YAAY,IAAI,SAAS;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,CAkBhF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CA+B1E"}
|
package/dist/fix-preview.js
CHANGED
|
@@ -15,7 +15,11 @@
|
|
|
15
15
|
* Read-only at the inspector level. Schema: sharkcraft.fix-preview/v1
|
|
16
16
|
*/
|
|
17
17
|
import { diagnoseActionHints, } from "./action-hint-diagnostics.js";
|
|
18
|
+
import { KnowledgeSourceFormat } from '@shrkcrft/knowledge';
|
|
18
19
|
import { buildKnowledgeStaleReport, ReferenceCheckOutcome, } from "./knowledge-stale.js";
|
|
20
|
+
import { knowledgeRenameCommand } from "./knowledge-rename-command.js";
|
|
21
|
+
import { KnowledgeRenameVerb } from "./knowledge-rename-verb.js";
|
|
22
|
+
import { ReferenceFailure } from "./reference-failure.js";
|
|
19
23
|
import { buildTemplateDriftReport } from "./template-drift.js";
|
|
20
24
|
export const FIX_PREVIEW_SCHEMA = 'sharkcraft.fix-preview/v1';
|
|
21
25
|
export var FixKind;
|
|
@@ -107,6 +111,73 @@ function buildActionHintFix(issue) {
|
|
|
107
111
|
function slug(s) {
|
|
108
112
|
return s.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)/g, '');
|
|
109
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* One non-ok stale-check row as a fix suggestion (round 15 follow-up, F4).
|
|
116
|
+
*
|
|
117
|
+
* Every command it suggests is one the dispatcher RUNS: `knowledge
|
|
118
|
+
* rename-file` / `rename-symbol` are read-only previews already (they take no
|
|
119
|
+
* `--dry-run` — the suggestion used to name it, and the dispatcher refused it),
|
|
120
|
+
* and `fix preview` takes the entry as `--target <id>` (it takes no positional:
|
|
121
|
+
* `--knowledge-stale <id>` read the id as the flag's value and previewed every
|
|
122
|
+
* kind). An entry `shrk fix --knowledge-stale --apply` cannot edit — declared
|
|
123
|
+
* in Markdown (a `references:` frontmatter list), or contributed by a pack —
|
|
124
|
+
* says so in its description and gets no `--apply` command.
|
|
125
|
+
*/
|
|
126
|
+
function buildKnowledgeStaleFix(c, declaredBy) {
|
|
127
|
+
const ref = c.reference;
|
|
128
|
+
// A `command:` reference names its target in `command` (it read `→ <unknown>`).
|
|
129
|
+
const target = ref.id ?? ref.path ?? ref.symbol ?? ref.command ?? '<unknown>';
|
|
130
|
+
const failing = c.outcome === ReferenceCheckOutcome.Stale || c.outcome === ReferenceCheckOutcome.Missing;
|
|
131
|
+
const notAutoFixable = declaredBy?.pack !== undefined
|
|
132
|
+
? `not auto-fixable here: pack ${declaredBy.pack} contributes ${c.entryId} (${declaredBy.source}) — fix it upstream in the pack`
|
|
133
|
+
: declaredBy?.sourceFormat === KnowledgeSourceFormat.Markdown
|
|
134
|
+
? `not auto-fixable: ${c.entryId} is declared in Markdown (${declaredBy.source}) — \`shrk fix --knowledge-stale --apply\` edits TypeScript entries only; edit its references: frontmatter list by hand`
|
|
135
|
+
: undefined;
|
|
136
|
+
const replaceWith = c.replaceWith;
|
|
137
|
+
const hasRenameTarget = replaceWith !== undefined &&
|
|
138
|
+
(replaceWith.path !== undefined || replaceWith.id !== undefined || replaceWith.symbol !== undefined);
|
|
139
|
+
// A rename answers a MOVED target only — a path that is gone (`rename-file`
|
|
140
|
+
// matches any reference by its `path`) or a symbol no longer declared in its
|
|
141
|
+
// file (`rename-symbol`), never a content / count mismatch on a file that is
|
|
142
|
+
// still there. And only for an entry `--apply` can edit: a rename plan lands
|
|
143
|
+
// through `shrk fix --knowledge-stale --apply`, which refuses a Markdown or a
|
|
144
|
+
// pack entry — a pack's reference is fixed in the pack, never renamed onto
|
|
145
|
+
// this tree (the stale engine offers it no rename candidate either).
|
|
146
|
+
const renameCommand = !failing || notAutoFixable !== undefined
|
|
147
|
+
? undefined
|
|
148
|
+
: c.failure === ReferenceFailure.PathMissing && typeof ref.path === 'string'
|
|
149
|
+
? knowledgeRenameCommand(KnowledgeRenameVerb.RenameFile, ref.path, replaceWith?.path)
|
|
150
|
+
: c.failure === ReferenceFailure.AnchorMissing && ref.kind === 'symbol' && typeof ref.symbol === 'string'
|
|
151
|
+
? knowledgeRenameCommand(KnowledgeRenameVerb.RenameSymbol, ref.symbol, replaceWith?.symbol)
|
|
152
|
+
: undefined;
|
|
153
|
+
const applyCommand = failing && notAutoFixable === undefined
|
|
154
|
+
? hasRenameTarget
|
|
155
|
+
? 'shrk fix --knowledge-stale --apply'
|
|
156
|
+
: `shrk fix --knowledge-stale --apply ${c.outcome === ReferenceCheckOutcome.Missing ? '--drop-missing' : '--drop-stale'}`
|
|
157
|
+
: undefined;
|
|
158
|
+
const what = failing
|
|
159
|
+
? 'Stale reference'
|
|
160
|
+
: c.outcome === ReferenceCheckOutcome.Invalid
|
|
161
|
+
? 'Malformed reference'
|
|
162
|
+
: 'Unverifiable reference';
|
|
163
|
+
return {
|
|
164
|
+
kind: FixKind.KnowledgeStale,
|
|
165
|
+
targetId: c.entryId,
|
|
166
|
+
severity: c.outcome === ReferenceCheckOutcome.Missing ? 'error' : 'warning',
|
|
167
|
+
title: `${what} ${c.entryId} → ${target}`,
|
|
168
|
+
description: notAutoFixable !== undefined ? `${c.message} — ${notAutoFixable}.` : c.message,
|
|
169
|
+
nextCommands: [
|
|
170
|
+
`shrk knowledge references ${c.entryId}`,
|
|
171
|
+
...(renameCommand !== undefined ? [renameCommand] : []),
|
|
172
|
+
`shrk fix preview --knowledge-stale --target ${c.entryId}`,
|
|
173
|
+
...(applyCommand !== undefined ? [applyCommand] : []),
|
|
174
|
+
],
|
|
175
|
+
...(c.suggestion ? { draftBody: `// suggestion: ${c.suggestion}` } : {}),
|
|
176
|
+
...(notAutoFixable !== undefined ? { humanReviewRequired: true, reason: notAutoFixable } : {}),
|
|
177
|
+
previewFileName: `knowledge-stale-${slug(c.entryId)}.preview.md`,
|
|
178
|
+
stubbed: true,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
110
181
|
export function buildFixPreview(inspection, options = {}) {
|
|
111
182
|
const defaultKinds = [
|
|
112
183
|
FixKind.ActionHints,
|
|
@@ -126,25 +197,13 @@ export function buildFixPreview(inspection, options = {}) {
|
|
|
126
197
|
}
|
|
127
198
|
if (kinds.has(FixKind.KnowledgeStale)) {
|
|
128
199
|
const stale = buildKnowledgeStaleReport(inspection);
|
|
200
|
+
// The entry's declaring file, format and pack — what decides whether
|
|
201
|
+
// `--apply` can edit it (round 15 follow-up, F4).
|
|
202
|
+
const declared = new Map(stale.entryVerdicts.map((v) => [v.entryId, v]));
|
|
129
203
|
for (const c of stale.referenceChecks) {
|
|
130
204
|
if (c.outcome === ReferenceCheckOutcome.Ok)
|
|
131
205
|
continue;
|
|
132
|
-
|
|
133
|
-
suggestions.push({
|
|
134
|
-
kind: FixKind.KnowledgeStale,
|
|
135
|
-
targetId: c.entryId,
|
|
136
|
-
severity: c.outcome === ReferenceCheckOutcome.Missing ? 'error' : 'warning',
|
|
137
|
-
title: `Stale reference ${c.entryId} → ${target}`,
|
|
138
|
-
description: c.message,
|
|
139
|
-
nextCommands: [
|
|
140
|
-
`shrk knowledge references ${c.entryId}`,
|
|
141
|
-
`shrk knowledge rename-symbol <old> <new> --dry-run`,
|
|
142
|
-
`shrk fix preview --knowledge-stale ${c.entryId}`,
|
|
143
|
-
],
|
|
144
|
-
...(c.suggestion ? { draftBody: `// suggestion: ${c.suggestion}` } : {}),
|
|
145
|
-
previewFileName: `knowledge-stale-${slug(c.entryId)}.preview.md`,
|
|
146
|
-
stubbed: true,
|
|
147
|
-
});
|
|
206
|
+
suggestions.push(buildKnowledgeStaleFix(c, declared.get(c.entryId)));
|
|
148
207
|
}
|
|
149
208
|
}
|
|
150
209
|
if (kinds.has(FixKind.TemplateDrift)) {
|
|
@@ -162,7 +221,9 @@ export function buildFixPreview(inspection, options = {}) {
|
|
|
162
221
|
nextCommands: [
|
|
163
222
|
`shrk templates get ${e.templateId}`,
|
|
164
223
|
`shrk paths list`,
|
|
165
|
-
`
|
|
224
|
+
// `--target <id>`: `fix` takes no positional, so `--template-drift <id>`
|
|
225
|
+
// read the id as the flag's value and previewed every kind (F4).
|
|
226
|
+
`shrk fix preview --template-drift --target ${e.templateId} --write-preview`,
|
|
166
227
|
],
|
|
167
228
|
...(i.suggestedFix ? { draftBody: `// suggestion: ${i.suggestedFix}` } : {}),
|
|
168
229
|
previewFileName: `template-drift-${slug(e.templateId)}-${i.code}.preview.md`,
|
|
@@ -237,13 +298,14 @@ export async function buildFixPreviewExtended(inspection, options = {}) {
|
|
|
237
298
|
const kinds = new Set(options.kinds ?? sync.kinds);
|
|
238
299
|
const suggestions = [...sync.suggestions];
|
|
239
300
|
if (kinds.has(FixKind.SelfConfig)) {
|
|
240
|
-
|
|
241
|
-
const
|
|
301
|
+
// THE doctor (v2) — the same checks `shrk self-config doctor` runs.
|
|
302
|
+
const { buildSelfConfigDoctorReportV2 } = await import("./self-config-doctor-v2.js");
|
|
303
|
+
const report = await buildSelfConfigDoctorReportV2(inspection);
|
|
242
304
|
for (const f of report.findings) {
|
|
243
305
|
const severity = f.severity === 'error' ? 'error' : f.severity === 'warning' ? 'warning' : 'info';
|
|
244
306
|
suggestions.push({
|
|
245
307
|
kind: FixKind.SelfConfig,
|
|
246
|
-
targetId: f.
|
|
308
|
+
targetId: f.sourceId || f.targetId || f.code,
|
|
247
309
|
severity,
|
|
248
310
|
title: `Self-config: ${f.code}`,
|
|
249
311
|
description: f.message,
|
|
@@ -253,8 +315,11 @@ export async function buildFixPreviewExtended(inspection, options = {}) {
|
|
|
253
315
|
}
|
|
254
316
|
}
|
|
255
317
|
if (kinds.has(FixKind.PackConflict) || kinds.has(FixKind.StalePackSignature)) {
|
|
256
|
-
|
|
257
|
-
|
|
318
|
+
// The async inventory: loader-backed extraction, so a conflict preview is
|
|
319
|
+
// built from the ids the registries really load (the sync regex scrape
|
|
320
|
+
// marks them unverified).
|
|
321
|
+
const { buildPackContributionsInventoryAsync } = await import("./pack-contributions-inventory.js");
|
|
322
|
+
const inv = await buildPackContributionsInventoryAsync(inspection);
|
|
258
323
|
for (const c of inv.conflicts) {
|
|
259
324
|
if (c.kind === 'stale-signature' && kinds.has(FixKind.StalePackSignature)) {
|
|
260
325
|
suggestions.push({
|