@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
package/dist/custom-checks.js
CHANGED
|
@@ -10,6 +10,15 @@
|
|
|
10
10
|
* `metadata.checks: ICustomCheckDescriptor[]`. The engine never invents
|
|
11
11
|
* a check; we only inventory what authors declare.
|
|
12
12
|
*
|
|
13
|
+
* WHAT IS SCANNED: `type: 'rule'` entries ({@link isRuleEntry} — the same set
|
|
14
|
+
* `shrk rules list` shows) loaded from TypeScript knowledge / rule files, local
|
|
15
|
+
* or pack. A declaration anywhere else is REPORTED, never silently skipped:
|
|
16
|
+
* - `metadata.checks` on a non-rule entry → `ignored`;
|
|
17
|
+
* - a Markdown rule whose frontmatter held `metadata` (the Markdown loader
|
|
18
|
+
* does not read it) → `ignored`;
|
|
19
|
+
* - a non-array `metadata.checks` on a rule → `invalid`.
|
|
20
|
+
* Each is a declared check that can never run — a doctor error.
|
|
21
|
+
*
|
|
13
22
|
* Hard rules:
|
|
14
23
|
* - No spawning a process by default.
|
|
15
24
|
* - Read-only inventory unless `--execute` is set explicitly.
|
|
@@ -19,7 +28,8 @@
|
|
|
19
28
|
import { spawnSync } from 'node:child_process';
|
|
20
29
|
import { existsSync, readFileSync } from 'node:fs';
|
|
21
30
|
import * as nodePath from 'node:path';
|
|
22
|
-
import {
|
|
31
|
+
import { KnowledgeSourceFormat, knowledgeSourceFormat, unsupportedFrontmatterKeys, } from '@shrkcrft/knowledge';
|
|
32
|
+
import { isRuleEntry } from '@shrkcrft/rules';
|
|
23
33
|
export const CUSTOM_CHECK_REPORT_SCHEMA = 'sharkcraft.custom-check/v1';
|
|
24
34
|
export const CUSTOM_CHECKS_REGISTRY_SCHEMA = 'sharkcraft.custom-checks-registry/v1';
|
|
25
35
|
export var CustomCheckScope;
|
|
@@ -56,6 +66,7 @@ export var CustomCheckStatus;
|
|
|
56
66
|
CustomCheckStatus["Skipped"] = "skipped";
|
|
57
67
|
})(CustomCheckStatus || (CustomCheckStatus = {}));
|
|
58
68
|
const ID_RE = /^[a-z][a-z0-9.-]+$/;
|
|
69
|
+
const TS_SOURCE_RE = /\.(?:ts|tsx|js|mjs|cjs)$/;
|
|
59
70
|
/** Read the descriptors a rule declares under `metadata.checks`. */
|
|
60
71
|
export function readDescriptorsFromRule(rule) {
|
|
61
72
|
const md = rule.metadata;
|
|
@@ -64,25 +75,101 @@ export function readDescriptorsFromRule(rule) {
|
|
|
64
75
|
return [];
|
|
65
76
|
return raw.map((r) => ({ ...r, ownerRuleId: rule.id }));
|
|
66
77
|
}
|
|
67
|
-
|
|
78
|
+
function describeType(value) {
|
|
79
|
+
if (value === null)
|
|
80
|
+
return 'null';
|
|
81
|
+
if (Array.isArray(value))
|
|
82
|
+
return 'array';
|
|
83
|
+
return typeof value;
|
|
84
|
+
}
|
|
85
|
+
/** The string ids of a declared `metadata.checks` value (whatever its shape). */
|
|
86
|
+
function declaredCheckIds(raw) {
|
|
87
|
+
if (!Array.isArray(raw)) {
|
|
88
|
+
const id = raw && typeof raw === 'object' ? raw.id : undefined;
|
|
89
|
+
return typeof id === 'string' ? [id] : [];
|
|
90
|
+
}
|
|
91
|
+
return raw
|
|
92
|
+
.map((d) => (d && typeof d === 'object' ? d.id : undefined))
|
|
93
|
+
.filter((id) => typeof id === 'string');
|
|
94
|
+
}
|
|
95
|
+
function relativeSource(origin, projectRoot) {
|
|
96
|
+
if (!origin)
|
|
97
|
+
return undefined;
|
|
98
|
+
if (!projectRoot || !nodePath.isAbsolute(origin))
|
|
99
|
+
return origin;
|
|
100
|
+
return nodePath.relative(projectRoot, origin).split(nodePath.sep).join('/');
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Did this Markdown file's frontmatter declare `metadata` holding `checks`?
|
|
104
|
+
* Read through the Markdown loader's own "what did I drop" authority.
|
|
105
|
+
*/
|
|
106
|
+
function markdownDroppedChecks(origin) {
|
|
107
|
+
if (!origin || !existsSync(origin))
|
|
108
|
+
return false;
|
|
109
|
+
let text;
|
|
110
|
+
try {
|
|
111
|
+
text = readFileSync(origin, 'utf8');
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
return unsupportedFrontmatterKeys(text).some((k) => k.key === 'metadata' && /\bchecks\b/.test(k.block));
|
|
117
|
+
}
|
|
118
|
+
export function buildCustomChecksRegistry(entries, options = {}) {
|
|
68
119
|
const out = [];
|
|
69
120
|
const idIndex = new Map();
|
|
70
121
|
const invalid = [];
|
|
122
|
+
const ignored = [];
|
|
123
|
+
let scannedRules = 0;
|
|
71
124
|
for (const e of entries) {
|
|
72
|
-
|
|
125
|
+
const source = relativeSource(e.source?.origin, options.projectRoot);
|
|
126
|
+
const at = source ? { source } : {};
|
|
127
|
+
const raw = e.metadata?.['checks'];
|
|
128
|
+
if (!isRuleEntry(e)) {
|
|
129
|
+
if (raw !== undefined) {
|
|
130
|
+
ignored.push({
|
|
131
|
+
entryId: e.id,
|
|
132
|
+
entryType: String(e.type),
|
|
133
|
+
...at,
|
|
134
|
+
reason: `metadata.checks on a type:'${String(e.type)}' entry is not scanned — only type:'rule' entries carry checks (set type: 'rule', or move the checks onto a rule)`,
|
|
135
|
+
checkIds: declaredCheckIds(raw),
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
scannedRules += 1;
|
|
141
|
+
// THE source-format authority (round 15) — the one the stale-check remedy
|
|
142
|
+
// and the validator read, so "is this a Markdown entry?" has one answer.
|
|
143
|
+
if (knowledgeSourceFormat(e) === KnowledgeSourceFormat.Markdown) {
|
|
144
|
+
if (markdownDroppedChecks(e.source?.origin)) {
|
|
145
|
+
ignored.push({
|
|
146
|
+
entryId: e.id,
|
|
147
|
+
entryType: String(e.type),
|
|
148
|
+
...at,
|
|
149
|
+
reason: 'Markdown rule — the Markdown loader does not support metadata, so its metadata.checks were dropped; declare the rule (with its checks) in a TypeScript rule file',
|
|
150
|
+
checkIds: [],
|
|
151
|
+
});
|
|
152
|
+
}
|
|
73
153
|
continue;
|
|
154
|
+
}
|
|
155
|
+
if (raw === undefined)
|
|
156
|
+
continue;
|
|
157
|
+
if (!Array.isArray(raw)) {
|
|
158
|
+
invalid.push({ ruleId: e.id, reason: `metadata.checks must be an array (got ${describeType(raw)})`, ...at });
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
74
161
|
const descriptors = readDescriptorsFromRule(e);
|
|
75
162
|
for (const d of descriptors) {
|
|
76
163
|
const warnings = [];
|
|
77
164
|
if (!d.id || typeof d.id !== 'string') {
|
|
78
|
-
invalid.push({ ruleId: e.id, reason: 'check entry missing string id' });
|
|
165
|
+
invalid.push({ ruleId: e.id, reason: 'check entry missing string id', ...at });
|
|
79
166
|
continue;
|
|
80
167
|
}
|
|
81
168
|
if (!ID_RE.test(d.id)) {
|
|
82
169
|
warnings.push(`id "${d.id}" should match ${ID_RE.source}`);
|
|
83
170
|
}
|
|
84
171
|
if (!d.command || typeof d.command !== 'string') {
|
|
85
|
-
invalid.push({ ruleId: e.id, reason: `check "${d.id}" missing command
|
|
172
|
+
invalid.push({ ruleId: e.id, reason: `check "${d.id}" missing command`, checkId: d.id, ...at });
|
|
86
173
|
continue;
|
|
87
174
|
}
|
|
88
175
|
if (d.output === CustomCheckOutput.Json && !d.reportPath) {
|
|
@@ -108,12 +195,77 @@ export function buildCustomChecksRegistry(entries) {
|
|
|
108
195
|
entries: out,
|
|
109
196
|
duplicates,
|
|
110
197
|
invalid,
|
|
198
|
+
ignored,
|
|
199
|
+
scannedRules,
|
|
111
200
|
};
|
|
112
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* Every declaration the registry saw: registered + invalid + ignored (an
|
|
204
|
+
* ignored entry whose ids are unreadable still counts as one). The `expected`
|
|
205
|
+
* of the doctor's coverage — 0 means nothing was declared at all.
|
|
206
|
+
*/
|
|
207
|
+
export function declaredCustomCheckCount(registry) {
|
|
208
|
+
return (registry.entries.length +
|
|
209
|
+
registry.invalid.length +
|
|
210
|
+
registry.ignored.reduce((n, i) => n + Math.max(1, i.checkIds.length), 0));
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* The concrete surface the custom-checks registry scans: local `ruleFiles` /
|
|
214
|
+
* `knowledgeFiles` / `docsFiles` and every valid pack's `ruleFiles` /
|
|
215
|
+
* `knowledgeFiles` — split into TypeScript (scanned) and Markdown (cannot
|
|
216
|
+
* carry metadata).
|
|
217
|
+
*/
|
|
218
|
+
export function customCheckScanSurface(inspection) {
|
|
219
|
+
const files = [];
|
|
220
|
+
const markdownFiles = [];
|
|
221
|
+
const add = (abs, via) => {
|
|
222
|
+
// The loaders skip a configured file that does not exist (the config's
|
|
223
|
+
// default docsFiles, a stale entry) — so does the surface they read.
|
|
224
|
+
if (!existsSync(abs))
|
|
225
|
+
return;
|
|
226
|
+
const file = nodePath.relative(inspection.projectRoot, abs).split(nodePath.sep).join('/') || abs;
|
|
227
|
+
if (TS_SOURCE_RE.test(abs))
|
|
228
|
+
files.push({ file, via });
|
|
229
|
+
else if (abs.toLowerCase().endsWith('.md'))
|
|
230
|
+
markdownFiles.push(file);
|
|
231
|
+
};
|
|
232
|
+
const cfg = inspection.config;
|
|
233
|
+
if (cfg && inspection.sharkcraftDir) {
|
|
234
|
+
for (const key of ['ruleFiles', 'knowledgeFiles', 'docsFiles']) {
|
|
235
|
+
for (const rel of cfg[key] ?? [])
|
|
236
|
+
add(nodePath.resolve(inspection.sharkcraftDir, rel), key);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
for (const pack of inspection.packs.validPacks ?? []) {
|
|
240
|
+
const c = pack.manifest?.contributions;
|
|
241
|
+
for (const key of ['ruleFiles', 'knowledgeFiles']) {
|
|
242
|
+
for (const rel of c?.[key] ?? [])
|
|
243
|
+
add(nodePath.resolve(pack.packageRoot, rel), `pack ${pack.packageName} ${key}`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
const markdownRules = inspection.knowledgeEntries.filter((e) => isRuleEntry(e) && knowledgeSourceFormat(e) === KnowledgeSourceFormat.Markdown).length;
|
|
247
|
+
return { files, markdownFiles, markdownRules };
|
|
248
|
+
}
|
|
113
249
|
export function doctorCustomChecks(registry) {
|
|
114
250
|
const details = [];
|
|
115
251
|
for (const inv of registry.invalid) {
|
|
116
|
-
details.push({
|
|
252
|
+
details.push({
|
|
253
|
+
ruleId: inv.ruleId,
|
|
254
|
+
checkId: inv.checkId ?? '(invalid)',
|
|
255
|
+
severity: 'error',
|
|
256
|
+
message: inv.reason,
|
|
257
|
+
...(inv.source ? { source: inv.source } : {}),
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
// A declared check that can never run is a defect, not a footnote.
|
|
261
|
+
for (const ig of registry.ignored) {
|
|
262
|
+
details.push({
|
|
263
|
+
ruleId: ig.entryId,
|
|
264
|
+
checkId: ig.checkIds.join(',') || '(ignored)',
|
|
265
|
+
severity: 'error',
|
|
266
|
+
message: ig.reason,
|
|
267
|
+
...(ig.source ? { source: ig.source } : {}),
|
|
268
|
+
});
|
|
117
269
|
}
|
|
118
270
|
for (const dup of registry.duplicates) {
|
|
119
271
|
details.push({
|
|
@@ -139,6 +291,9 @@ export function doctorCustomChecks(registry) {
|
|
|
139
291
|
totalChecks: registry.entries.length,
|
|
140
292
|
warnings: details.filter((d) => d.severity === 'warning').length,
|
|
141
293
|
errors: details.filter((d) => d.severity === 'error').length,
|
|
294
|
+
declaredChecks: declaredCustomCheckCount(registry),
|
|
295
|
+
ignored: registry.ignored.length,
|
|
296
|
+
scannedRules: registry.scannedRules,
|
|
142
297
|
details,
|
|
143
298
|
};
|
|
144
299
|
}
|
|
@@ -32,6 +32,12 @@ export declare function buildDashboardPipelines(inspection: ISharkcraftInspectio
|
|
|
32
32
|
export declare function buildDashboardSessions(projectRoot: string): IDashboardSessionsResponse;
|
|
33
33
|
export declare function buildDashboardSessionDetail(projectRoot: string, sessionId: string): IDashboardSessionDetailResponse;
|
|
34
34
|
export declare function buildDashboardArchitecture(inspection: ISharkcraftInspection): IDashboardArchitectureResponse;
|
|
35
|
+
/**
|
|
36
|
+
* The boundary panel (round 13, V1-U2): THE boundary orchestrator's verdict —
|
|
37
|
+
* the one `shrk check boundaries` prints. The panel used to return no
|
|
38
|
+
* violations unconditionally and render "No active violations." over any
|
|
39
|
+
* state, a failing gate included; `summary` now says what the check found.
|
|
40
|
+
*/
|
|
35
41
|
export declare function buildDashboardBoundaries(inspection: ISharkcraftInspection): IDashboardBoundaryResponse;
|
|
36
42
|
export declare function buildDashboardDrift(inspection: ISharkcraftInspection): IDashboardDriftResponse;
|
|
37
43
|
export declare function buildDashboardCoverage(inspection: ISharkcraftInspection): IDashboardCoverageResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-data.d.ts","sourceRoot":"","sources":["../../src/dashboard/dashboard-data.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,0BAA0B,EAC1B,8BAA8B,EAC9B,0BAA0B,EAC1B,8BAA8B,EAC9B,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,4BAA4B,EAC5B,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,EACzB,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,yBAAyB,EACzB,+BAA+B,EAC/B,0BAA0B,EAC1B,uBAAuB,EAIxB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"dashboard-data.d.ts","sourceRoot":"","sources":["../../src/dashboard/dashboard-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,9 +13,13 @@ import { existsSync, statSync } from 'node:fs';
|
|
|
13
13
|
import * as nodePath from 'node:path';
|
|
14
14
|
import { buildAiReadinessReport } from "../ai-readiness.js";
|
|
15
15
|
import { runDoctor } from "../sharkcraft-inspector.js";
|
|
16
|
+
import { doctorVerdict } from "../doctor-verdict.js";
|
|
17
|
+
import { DoctorVerdictKind } from "../doctor-verdict-kind.js";
|
|
18
|
+
import { qualityGateStatus } from "../quality-gate-row-status.js";
|
|
16
19
|
import { DoctorSeverity } from "../doctor-result.js";
|
|
17
20
|
import { buildCoverageReport } from "../coverage-report.js";
|
|
18
21
|
import { buildDriftReport } from "../drift.js";
|
|
22
|
+
import { runBoundaryCheck } from "../run-boundary-check.js";
|
|
19
23
|
import { buildKnowledgeGraph, findGraphPath, getGraphNode } from "../knowledge-graph.js";
|
|
20
24
|
import { buildOnboardingPlan } from "../onboarding.js";
|
|
21
25
|
import { ADOPTION_STATE_SCHEMA, adoptionDir, computeAdoptionFreshness, readAdoptionState, } from "../adoption-state.js";
|
|
@@ -126,8 +130,17 @@ export function buildDashboardDoctor(inspection) {
|
|
|
126
130
|
...(c.fix ? { fix: c.fix } : {}),
|
|
127
131
|
};
|
|
128
132
|
});
|
|
133
|
+
// THE doctor settlement (`doctorVerdict`), the one `shrk doctor`, `shrk
|
|
134
|
+
// check` and MCP read: a setup the doctor could not fully verify (a compiled
|
|
135
|
+
// pack build with no build record) is `not-verified`, never `ready`.
|
|
136
|
+
const settled = doctorVerdict(doctor);
|
|
129
137
|
return {
|
|
130
|
-
verdict:
|
|
138
|
+
verdict: settled.verdict === DoctorVerdictKind.Ready
|
|
139
|
+
? 'ready'
|
|
140
|
+
: settled.verdict === DoctorVerdictKind.NotVerified
|
|
141
|
+
? 'not-verified'
|
|
142
|
+
: 'not-ready',
|
|
143
|
+
...(settled.shortfalls.length > 0 ? { shortfalls: settled.shortfalls } : {}),
|
|
131
144
|
readinessScore: buildAiReadinessReport(inspection).score,
|
|
132
145
|
checks,
|
|
133
146
|
summary: doctor.summary,
|
|
@@ -147,7 +160,9 @@ export async function buildDashboardQuality(inspection, options) {
|
|
|
147
160
|
readiness: report.overall,
|
|
148
161
|
gates: report.gates.map((g) => ({
|
|
149
162
|
id: g.id,
|
|
150
|
-
status
|
|
163
|
+
// THE row status (`qualityGateStatus`): never `pass` over a gate that
|
|
164
|
+
// passed over part of its scope, or could not run.
|
|
165
|
+
status: qualityGateStatus(g),
|
|
151
166
|
...(g.notes && g.notes.length > 0 ? { message: g.notes.join('; ') } : {}),
|
|
152
167
|
})),
|
|
153
168
|
blockers: report.gates.filter((g) => !g.passed && g.blocking).map((g) => g.label),
|
|
@@ -313,13 +328,89 @@ export function buildDashboardArchitecture(inspection) {
|
|
|
313
328
|
coverage: buildDashboardCoverage(inspection),
|
|
314
329
|
};
|
|
315
330
|
}
|
|
331
|
+
/**
|
|
332
|
+
* The boundary panel (round 13, V1-U2): THE boundary orchestrator's verdict —
|
|
333
|
+
* the one `shrk check boundaries` prints. The panel used to return no
|
|
334
|
+
* violations unconditionally and render "No active violations." over any
|
|
335
|
+
* state, a failing gate included; `summary` now says what the check found.
|
|
336
|
+
*/
|
|
316
337
|
export function buildDashboardBoundaries(inspection) {
|
|
317
338
|
const rules = inspection.boundaryRegistry.list();
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
339
|
+
const loadIssues = inspection.boundaryLoadIssues ?? [];
|
|
340
|
+
if (rules.length === 0 && loadIssues.length === 0) {
|
|
341
|
+
return {
|
|
342
|
+
available: false,
|
|
343
|
+
violations: [],
|
|
344
|
+
ruleCount: 0,
|
|
345
|
+
verdict: 'not-verified',
|
|
346
|
+
exitCode: 2,
|
|
347
|
+
summary: 'No boundary rules loaded — nothing was checked.',
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
try {
|
|
351
|
+
const r = runBoundaryCheck(inspection);
|
|
352
|
+
return {
|
|
353
|
+
available: true,
|
|
354
|
+
violations: r.violations.map((v, i) => ({
|
|
355
|
+
id: `${v.ruleId}:${v.file}:${v.line}:${i}`,
|
|
356
|
+
from: `${v.file}:${v.line}`,
|
|
357
|
+
to: v.importSpecifier,
|
|
358
|
+
rule: v.ruleId,
|
|
359
|
+
severity: v.severity,
|
|
360
|
+
message: v.message,
|
|
361
|
+
})),
|
|
362
|
+
ruleCount: rules.length,
|
|
363
|
+
verdict: r.verdict,
|
|
364
|
+
exitCode: r.exitCode,
|
|
365
|
+
summary: dashboardBoundarySummary(r),
|
|
366
|
+
deadUnitCount: r.deadUnits.length,
|
|
367
|
+
intendedEmptyCount: r.intendedEmpty.length,
|
|
368
|
+
wentLiveCount: r.wentLive.length,
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
catch (e) {
|
|
372
|
+
return {
|
|
373
|
+
available: true,
|
|
374
|
+
violations: [],
|
|
375
|
+
ruleCount: rules.length,
|
|
376
|
+
verdict: 'not-verified',
|
|
377
|
+
exitCode: 2,
|
|
378
|
+
summary: `Boundary scan failed — nothing was checked: ${e.message}`,
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
/** One sentence for the boundary panel, from the settled verdict — never "no violations" over a failing or unverified run. */
|
|
383
|
+
function dashboardBoundarySummary(r) {
|
|
384
|
+
const notes = [];
|
|
385
|
+
if (r.deadUnits.length > 0)
|
|
386
|
+
notes.push(`${r.deadUnits.length} dead selector unit(s)`);
|
|
387
|
+
if (r.wentLive.length > 0)
|
|
388
|
+
notes.push(`${r.wentLive.length} expectEmpty marker(s) went live`);
|
|
389
|
+
// "accepted" only when the settle accepted them — an acceptance exists at exit
|
|
390
|
+
// 0 alone (`r.accepted`); a failing or unverified run holds the same units as
|
|
391
|
+
// intended empty, the word finish's boundaries sub-gate uses.
|
|
392
|
+
if (r.intendedEmpty.length > 0) {
|
|
393
|
+
notes.push(r.exitCode === 0 && r.accepted.length > 0
|
|
394
|
+
? `${r.intendedEmpty.length} expectEmpty unit(s) accepted`
|
|
395
|
+
: `${r.intendedEmpty.length} expectEmpty unit(s) intended empty`);
|
|
396
|
+
}
|
|
397
|
+
const tail = notes.length > 0 ? ` (${notes.join('; ')})` : '';
|
|
398
|
+
if (r.exitCode === 0)
|
|
399
|
+
return `No active violations — ${r.rules.length} rule(s) checked.${tail}`;
|
|
400
|
+
if (r.exitCode === 1) {
|
|
401
|
+
const parts = [];
|
|
402
|
+
if (r.violations.length > 0)
|
|
403
|
+
parts.push(`${r.violations.length} violation(s)`);
|
|
404
|
+
if (r.loadIssues.length > 0)
|
|
405
|
+
parts.push(`${r.loadIssues.length} errored rule(s)`);
|
|
406
|
+
if (r.staleExceptions.length > 0)
|
|
407
|
+
parts.push(`${r.staleExceptions.length} stale exception(s)`);
|
|
408
|
+
const onEmpty = r.rules.filter((x) => x.failedOnEmpty === true).length;
|
|
409
|
+
if (onEmpty > 0)
|
|
410
|
+
parts.push(`${onEmpty} rule(s) matched nothing (failOnEmpty)`);
|
|
411
|
+
return `Boundary check needs attention — ${parts.join(', ') || 'see `shrk check boundaries`'}.${tail}`;
|
|
412
|
+
}
|
|
413
|
+
return `NOT VERIFIED — ${r.shortfalls[0] ?? 'part of the boundary scope was never examined'}.${tail}`;
|
|
323
414
|
}
|
|
324
415
|
export function buildDashboardDrift(inspection) {
|
|
325
416
|
const drift = buildDriftReport(inspection);
|
|
@@ -508,7 +599,7 @@ export function buildDashboardReview(_inspection, options) {
|
|
|
508
599
|
suggestedChecks: [],
|
|
509
600
|
artifacts: [],
|
|
510
601
|
commandHints: [
|
|
511
|
-
commandHint('shrk review
|
|
602
|
+
commandHint('shrk review packet --since main', 'Generate a review packet from a diff', 'read-only'),
|
|
512
603
|
],
|
|
513
604
|
};
|
|
514
605
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard-knowledge.d.ts","sourceRoot":"","sources":["../../src/dashboard/dashboard-knowledge.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAGV,gCAAgC,EAGhC,gCAAgC,EAEhC,+BAA+B,EAG/B,kCAAkC,EAGnC,MAAM,yBAAyB,CAAC;AAQjC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAuHxE,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,qBAAqB,GAChC,+BAA+B,CAoBjC;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,gCAAgC,CAkDlC;AAKD,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,qBAAqB,GAChC,gCAAgC,
|
|
1
|
+
{"version":3,"file":"dashboard-knowledge.d.ts","sourceRoot":"","sources":["../../src/dashboard/dashboard-knowledge.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAGV,gCAAgC,EAGhC,gCAAgC,EAEhC,+BAA+B,EAG/B,kCAAkC,EAGnC,MAAM,yBAAyB,CAAC;AAQjC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAuHxE,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,qBAAqB,GAChC,+BAA+B,CAoBjC;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,gCAAgC,CAkDlC;AAKD,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,qBAAqB,GAChC,gCAAgC,CAyDlC;AAED,gFAAgF;AAChF,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,kCAAkC,CAqBpC"}
|
|
@@ -209,9 +209,15 @@ export function buildDashboardKnowledgeGraph(inspection) {
|
|
|
209
209
|
seen.add(key);
|
|
210
210
|
edges.push({ from, to, kind });
|
|
211
211
|
};
|
|
212
|
-
// Semantic edges: explicit cross-references.
|
|
212
|
+
// Semantic edges: explicit cross-references. One whose target is not an entry
|
|
213
|
+
// in the drawn set (a dangling id, a non-knowledge id, or an entry outside the
|
|
214
|
+
// node cap) is not drawn — but it is COUNTED, so the graph never reads as
|
|
215
|
+
// complete while it silently lost edges.
|
|
216
|
+
let droppedEdges = 0;
|
|
213
217
|
for (const e of entries) {
|
|
214
218
|
for (const t of [...(e.related ?? []), ...(e.actionHints?.relatedKnowledge ?? [])]) {
|
|
219
|
+
if (t !== e.id && !ids.has(t))
|
|
220
|
+
droppedEdges += 1;
|
|
215
221
|
addEdge(e.id, t, 'related');
|
|
216
222
|
}
|
|
217
223
|
}
|
|
@@ -230,7 +236,13 @@ export function buildDashboardKnowledgeGraph(inspection) {
|
|
|
230
236
|
addEdge(group[i - 1], group[i], 'scope');
|
|
231
237
|
}
|
|
232
238
|
}
|
|
233
|
-
return {
|
|
239
|
+
return {
|
|
240
|
+
available: entries.length > 0,
|
|
241
|
+
nodes,
|
|
242
|
+
edges,
|
|
243
|
+
truncated,
|
|
244
|
+
...(droppedEdges > 0 ? { droppedEdges } : {}),
|
|
245
|
+
};
|
|
234
246
|
}
|
|
235
247
|
/** Relevance-ranked "more like this" for one entry (lexical, deterministic). */
|
|
236
248
|
export function buildDashboardKnowledgeSimilar(inspection, id) {
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
|
|
2
|
+
import { type IRejectedEntry } from '@shrkcrft/core';
|
|
3
|
+
import type { IContributionFileIssue } from './i-contribution-file-issue.js';
|
|
2
4
|
export declare const DECISION_RECORD_SCHEMA = "sharkcraft.decision/v1";
|
|
3
5
|
export declare enum DecisionStatus {
|
|
4
6
|
Proposed = "proposed",
|
|
@@ -18,6 +20,8 @@ export interface IDecisionRecord {
|
|
|
18
20
|
relatedPolicies: readonly string[];
|
|
19
21
|
relatedConstructs: readonly string[];
|
|
20
22
|
relatedFiles: readonly string[];
|
|
23
|
+
/** Commands the decision relates to (TS decisions only) — probed by the self-config doctor. */
|
|
24
|
+
relatedCommands?: readonly string[];
|
|
21
25
|
date: string;
|
|
22
26
|
sourceFile?: string;
|
|
23
27
|
}
|
|
@@ -35,12 +39,32 @@ export interface IDecisionDraftInput {
|
|
|
35
39
|
date?: string;
|
|
36
40
|
}
|
|
37
41
|
export declare function listDecisions(inspection: ISharkcraftInspection): readonly IDecisionRecord[];
|
|
42
|
+
/**
|
|
43
|
+
* THE TS-decision acceptance predicate (round 12, 12.1): a non-empty string
|
|
44
|
+
* `id` — `[]` means accepted. An id-less decision used to be dropped with no
|
|
45
|
+
* signal (`if (!rec?.id) return`).
|
|
46
|
+
*/
|
|
47
|
+
export declare function decisionRejectionReasons(raw: unknown): readonly string[];
|
|
38
48
|
/**
|
|
39
49
|
* Async warm-up for `sharkcraft/decisions.ts` and pack-contributed
|
|
40
50
|
* decisions. Call this before `listDecisions` if you want TS decisions
|
|
41
51
|
* folded in.
|
|
42
52
|
*/
|
|
43
53
|
export declare function loadTsDecisions(inspection: ISharkcraftInspection): Promise<readonly IDecisionRecord[]>;
|
|
54
|
+
/**
|
|
55
|
+
* {@link loadTsDecisions} with what did not take effect (round 12, 12.1): a
|
|
56
|
+
* decision file that failed to import (it used to be swallowed to `[]`), and
|
|
57
|
+
* every declared decision the loader refused — invalid, or a duplicate id.
|
|
58
|
+
* `rejected` also carries every Markdown record (`sharkcraft/decisions/*.md`,
|
|
59
|
+
* `docs/adr/*.md`) whose frontmatter THE parser cannot read as declared (round
|
|
60
|
+
* 15 follow-up, F6) — the same scan {@link listDecisions} reads, so a record is
|
|
61
|
+
* either listed or reported here, never neither.
|
|
62
|
+
*/
|
|
63
|
+
export declare function loadTsDecisionsWithIssues(inspection: ISharkcraftInspection): Promise<{
|
|
64
|
+
readonly decisions: readonly IDecisionRecord[];
|
|
65
|
+
readonly issues: readonly IContributionFileIssue[];
|
|
66
|
+
readonly rejected: readonly IRejectedEntry[];
|
|
67
|
+
}>;
|
|
44
68
|
export declare function getDecision(inspection: ISharkcraftInspection, id: string): IDecisionRecord | undefined;
|
|
45
69
|
export declare function previewDecisionDraft(input: IDecisionDraftInput): string;
|
|
46
70
|
export declare function decisionDraftTargetPath(projectRoot: string, id: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-records.d.ts","sourceRoot":"","sources":["../src/decision-records.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decision-records.d.ts","sourceRoot":"","sources":["../src/decision-records.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EASL,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAE7E,eAAO,MAAM,sBAAsB,2BAA2B,CAAC;AAE/D,oBAAY,cAAc;IACxB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,sBAAsB,CAAC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,+FAA+F;IAC/F,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAyKD,wBAAgB,aAAa,CAAC,UAAU,EAAE,qBAAqB,GAAG,SAAS,eAAe,EAAE,CAmB3F;AA0BD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAIxE;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,CAErC;AAED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC;IAC1F,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAC9C,CAAC,CAuED;AAaD,wBAAgB,WAAW,CAAC,UAAU,EAAE,qBAAqB,EAAE,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEtG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CA8CvE;AAED,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAE/E"}
|