@shrkcrft/inspector 0.1.0-alpha.29 → 0.1.0-alpha.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acceptance-replay.js +1 -1
- package/dist/agent-contract-templates.js +6 -6
- package/dist/agent-contract.d.ts.map +1 -1
- package/dist/agent-contract.js +13 -8
- package/dist/agent-orchestration.js +2 -2
- package/dist/agent-task-prep.d.ts +16 -0
- package/dist/agent-task-prep.d.ts.map +1 -1
- package/dist/agent-task-prep.js +51 -4
- package/dist/ai-readiness.d.ts.map +1 -1
- package/dist/ai-readiness.js +21 -3
- package/dist/architecture-map.d.ts +16 -0
- package/dist/architecture-map.d.ts.map +1 -1
- package/dist/architecture-map.js +42 -26
- package/dist/area-explore.d.ts +2 -2
- package/dist/area-explore.d.ts.map +1 -1
- package/dist/area-explore.js +36 -16
- package/dist/area-map.d.ts +56 -11
- package/dist/area-map.d.ts.map +1 -1
- package/dist/area-map.js +106 -25
- package/dist/asset-doctor-proposed-exit.d.ts +21 -0
- package/dist/asset-doctor-proposed-exit.d.ts.map +1 -0
- package/dist/asset-doctor-proposed-exit.js +22 -0
- package/dist/asset-provenance.js +1 -1
- package/dist/boundaries-changed-only.d.ts +24 -1
- package/dist/boundaries-changed-only.d.ts.map +1 -1
- package/dist/boundaries-changed-only.js +12 -2
- package/dist/boundary-check-options.model.d.ts +40 -0
- package/dist/boundary-check-options.model.d.ts.map +1 -0
- package/dist/boundary-check-options.model.js +1 -0
- package/dist/boundary-check-result.model.d.ts +89 -0
- package/dist/boundary-check-result.model.d.ts.map +1 -0
- package/dist/boundary-check-result.model.js +1 -0
- package/dist/boundary-configuration-status.d.ts +38 -0
- package/dist/boundary-configuration-status.d.ts.map +1 -0
- package/dist/boundary-configuration-status.js +118 -0
- package/dist/boundary-configuration-status.model.d.ts +37 -0
- package/dist/boundary-configuration-status.model.d.ts.map +1 -0
- package/dist/boundary-configuration-status.model.js +1 -0
- package/dist/boundary-load-issue.model.d.ts +30 -0
- package/dist/boundary-load-issue.model.d.ts.map +1 -0
- package/dist/boundary-load-issue.model.js +1 -0
- package/dist/boundary-rule-check.model.d.ts +44 -0
- package/dist/boundary-rule-check.model.d.ts.map +1 -0
- package/dist/boundary-rule-check.model.js +1 -0
- package/dist/boundary-rule-invalidation.model.d.ts +31 -0
- package/dist/boundary-rule-invalidation.model.d.ts.map +1 -0
- package/dist/boundary-rule-invalidation.model.js +1 -0
- package/dist/boundary-rule-set-diff.model.d.ts +75 -0
- package/dist/boundary-rule-set-diff.model.d.ts.map +1 -0
- package/dist/boundary-rule-set-diff.model.js +1 -0
- package/dist/boundary-rule-sources.d.ts +28 -0
- package/dist/boundary-rule-sources.d.ts.map +1 -0
- package/dist/boundary-rule-sources.js +110 -0
- package/dist/boundary-stale-exception-finding.model.d.ts +12 -0
- package/dist/boundary-stale-exception-finding.model.d.ts.map +1 -0
- package/dist/boundary-stale-exception-finding.model.js +1 -0
- package/dist/boundary-unit-liveness.d.ts +35 -0
- package/dist/boundary-unit-liveness.d.ts.map +1 -0
- package/dist/boundary-unit-liveness.js +71 -0
- package/dist/change-intent.d.ts +3 -0
- package/dist/change-intent.d.ts.map +1 -1
- package/dist/change-intent.js +61 -27
- package/dist/changes-summary.d.ts.map +1 -1
- package/dist/changes-summary.js +19 -9
- package/dist/ci-integrity-report.js +1 -1
- package/dist/ci-predict.d.ts.map +1 -1
- package/dist/ci-predict.js +38 -5
- package/dist/code-intelligence-doctor.d.ts +40 -0
- package/dist/code-intelligence-doctor.d.ts.map +1 -1
- package/dist/code-intelligence-doctor.js +86 -12
- package/dist/command-recommender.d.ts +45 -2
- package/dist/command-recommender.d.ts.map +1 -1
- package/dist/command-recommender.js +41 -263
- package/dist/command-resolution-status.d.ts +44 -0
- package/dist/command-resolution-status.d.ts.map +1 -0
- package/dist/command-resolution-status.js +44 -0
- package/dist/command-safety-level.d.ts +15 -0
- package/dist/command-safety-level.d.ts.map +1 -0
- package/dist/command-safety-level.js +43 -0
- package/dist/command-taxonomy.js +1 -1
- package/dist/compliance-evidence.js +1 -1
- package/dist/compliance-profiles.js +1 -1
- package/dist/construct-registry.d.ts +40 -0
- package/dist/construct-registry.d.ts.map +1 -1
- package/dist/construct-registry.js +186 -82
- package/dist/context-tuning.d.ts +4 -0
- package/dist/context-tuning.d.ts.map +1 -1
- package/dist/context-tuning.js +10 -7
- package/dist/contract-template-registry.d.ts +10 -0
- package/dist/contract-template-registry.d.ts.map +1 -1
- package/dist/contract-template-registry.js +59 -33
- package/dist/contribution-kind.d.ts +52 -0
- package/dist/contribution-kind.d.ts.map +1 -0
- package/dist/contribution-kind.js +52 -0
- package/dist/contribution-load-failures.d.ts +106 -0
- package/dist/contribution-load-failures.d.ts.map +1 -0
- package/dist/contribution-load-failures.js +575 -0
- package/dist/contributions-report.d.ts +28 -0
- package/dist/contributions-report.d.ts.map +1 -0
- package/dist/contributions-report.js +242 -0
- package/dist/convention-registry.d.ts +22 -0
- package/dist/convention-registry.d.ts.map +1 -1
- package/dist/convention-registry.js +79 -39
- package/dist/coverage-report.d.ts.map +1 -1
- package/dist/coverage-report.js +6 -6
- package/dist/custom-checks.d.ts +60 -1
- package/dist/custom-checks.d.ts.map +1 -1
- package/dist/custom-checks.js +159 -6
- package/dist/dashboard/dashboard-data.d.ts +6 -0
- package/dist/dashboard/dashboard-data.d.ts.map +1 -1
- package/dist/dashboard/dashboard-data.js +99 -8
- package/dist/dashboard/dashboard-knowledge.d.ts.map +1 -1
- package/dist/dashboard/dashboard-knowledge.js +14 -2
- package/dist/decision-records.d.ts +20 -0
- package/dist/decision-records.d.ts.map +1 -1
- package/dist/decision-records.js +68 -20
- package/dist/declared-cross-references.d.ts +61 -0
- package/dist/declared-cross-references.d.ts.map +1 -0
- package/dist/declared-cross-references.js +550 -0
- package/dist/declared-gate-plane-rules.d.ts +24 -0
- package/dist/declared-gate-plane-rules.d.ts.map +1 -0
- package/dist/declared-gate-plane-rules.js +39 -0
- package/dist/declared-reference-coverage.d.ts +27 -0
- package/dist/declared-reference-coverage.d.ts.map +1 -0
- package/dist/declared-reference-coverage.js +50 -0
- package/dist/declared-xref-status.d.ts +19 -0
- package/dist/declared-xref-status.d.ts.map +1 -0
- package/dist/declared-xref-status.js +19 -0
- package/dist/delegate-pack-recipes.d.ts +13 -2
- package/dist/delegate-pack-recipes.d.ts.map +1 -1
- package/dist/delegate-pack-recipes.js +45 -14
- package/dist/demo-package.js +2 -2
- package/dist/demo-script.js +2 -2
- package/dist/demo-workflow.js +3 -3
- package/dist/dev-cycle.js +1 -1
- package/dist/dev-session.js +1 -1
- package/dist/doc-references.d.ts +80 -0
- package/dist/doc-references.d.ts.map +1 -0
- package/dist/doc-references.js +269 -0
- package/dist/doctor-result.d.ts +8 -0
- package/dist/doctor-result.d.ts.map +1 -1
- package/dist/doctor-verdict-kind.d.ts +19 -0
- package/dist/doctor-verdict-kind.d.ts.map +1 -0
- package/dist/doctor-verdict-kind.js +19 -0
- package/dist/doctor-verdict.d.ts +18 -0
- package/dist/doctor-verdict.d.ts.map +1 -0
- package/dist/doctor-verdict.js +28 -0
- package/dist/drift.d.ts +17 -0
- package/dist/drift.d.ts.map +1 -1
- package/dist/drift.js +40 -10
- package/dist/entrypoint-matrix.d.ts.map +1 -1
- package/dist/entrypoint-matrix.js +4 -1
- package/dist/feedback-ingestion.d.ts +28 -2
- package/dist/feedback-ingestion.d.ts.map +1 -1
- package/dist/feedback-ingestion.js +68 -19
- package/dist/fix-preview.d.ts.map +1 -1
- package/dist/fix-preview.js +9 -5
- package/dist/framework-extractor-outcomes.d.ts +27 -0
- package/dist/framework-extractor-outcomes.d.ts.map +1 -0
- package/dist/framework-extractor-outcomes.js +83 -0
- package/dist/fuzzy-impact.d.ts.map +1 -1
- package/dist/fuzzy-impact.js +12 -21
- package/dist/healing-plan.d.ts.map +1 -1
- package/dist/healing-plan.js +3 -4
- package/dist/helper-catalog.d.ts +25 -0
- package/dist/helper-catalog.d.ts.map +1 -0
- package/dist/helper-catalog.js +91 -0
- package/dist/helper-registry.d.ts.map +1 -1
- package/dist/helper-registry.js +17 -1
- package/dist/helper-view.d.ts +33 -0
- package/dist/helper-view.d.ts.map +1 -0
- package/dist/helper-view.js +1 -0
- package/dist/i-asset-doctor-flags.d.ts +16 -0
- package/dist/i-asset-doctor-flags.d.ts.map +1 -0
- package/dist/i-asset-doctor-flags.js +1 -0
- package/dist/i-command-resolution.d.ts +22 -0
- package/dist/i-command-resolution.d.ts.map +1 -0
- package/dist/i-command-resolution.js +1 -0
- package/dist/i-command-resolve-options.d.ts +24 -0
- package/dist/i-command-resolve-options.d.ts.map +1 -0
- package/dist/i-command-resolve-options.js +1 -0
- package/dist/i-command-safety.d.ts +13 -0
- package/dist/i-command-safety.d.ts.map +1 -0
- package/dist/i-command-safety.js +1 -0
- package/dist/i-contribution-accepted-entry.d.ts +18 -0
- package/dist/i-contribution-accepted-entry.d.ts.map +1 -0
- package/dist/i-contribution-accepted-entry.js +1 -0
- package/dist/i-contribution-entry-rejection.d.ts +21 -0
- package/dist/i-contribution-entry-rejection.d.ts.map +1 -0
- package/dist/i-contribution-entry-rejection.js +1 -0
- package/dist/i-contribution-file-issue.d.ts +18 -0
- package/dist/i-contribution-file-issue.d.ts.map +1 -0
- package/dist/i-contribution-file-issue.js +1 -0
- package/dist/i-contribution-file-report.d.ts +40 -0
- package/dist/i-contribution-file-report.d.ts.map +1 -0
- package/dist/i-contribution-file-report.js +1 -0
- package/dist/i-contribution-file-validation.d.ts +24 -0
- package/dist/i-contribution-file-validation.d.ts.map +1 -0
- package/dist/i-contribution-file-validation.js +1 -0
- package/dist/i-contributions-report.d.ts +31 -0
- package/dist/i-contributions-report.d.ts.map +1 -0
- package/dist/i-contributions-report.js +1 -0
- package/dist/i-declared-xref-field.d.ts +25 -0
- package/dist/i-declared-xref-field.d.ts.map +1 -0
- package/dist/i-declared-xref-field.js +1 -0
- package/dist/i-declared-xref-issue.d.ts +25 -0
- package/dist/i-declared-xref-issue.d.ts.map +1 -0
- package/dist/i-declared-xref-issue.js +1 -0
- package/dist/i-declared-xref-report.d.ts +48 -0
- package/dist/i-declared-xref-report.d.ts.map +1 -0
- package/dist/i-declared-xref-report.js +1 -0
- package/dist/i-declared-xref-row.d.ts +29 -0
- package/dist/i-declared-xref-row.d.ts.map +1 -0
- package/dist/i-declared-xref-row.js +1 -0
- package/dist/i-doctor-verdict.d.ts +10 -0
- package/dist/i-doctor-verdict.d.ts.map +1 -0
- package/dist/i-doctor-verdict.js +1 -0
- package/dist/i-kind-outcomes.d.ts +13 -0
- package/dist/i-kind-outcomes.d.ts.map +1 -0
- package/dist/i-kind-outcomes.js +1 -0
- package/dist/i-pack-doctor-verdict.d.ts +15 -0
- package/dist/i-pack-doctor-verdict.d.ts.map +1 -0
- package/dist/i-pack-doctor-verdict.js +1 -0
- package/dist/i-probed-id-field.d.ts +17 -0
- package/dist/i-probed-id-field.d.ts.map +1 -0
- package/dist/i-probed-id-field.js +1 -0
- package/dist/i-reference-kind-declaration.d.ts +38 -0
- package/dist/i-reference-kind-declaration.d.ts.map +1 -0
- package/dist/i-reference-kind-declaration.js +1 -0
- package/dist/i-reference-warm-options.d.ts +21 -0
- package/dist/i-reference-warm-options.d.ts.map +1 -0
- package/dist/i-reference-warm-options.js +1 -0
- package/dist/i-registry-outcomes.d.ts +16 -0
- package/dist/i-registry-outcomes.d.ts.map +1 -0
- package/dist/i-registry-outcomes.js +1 -0
- package/dist/i-scaffold-pattern-doctor-report.d.ts +35 -0
- package/dist/i-scaffold-pattern-doctor-report.d.ts.map +1 -0
- package/dist/i-scaffold-pattern-doctor-report.js +1 -0
- package/dist/i-search-tuning-key-probe.d.ts +30 -0
- package/dist/i-search-tuning-key-probe.d.ts.map +1 -0
- package/dist/i-search-tuning-key-probe.js +1 -0
- package/dist/i-search-tuning-lint-issue.d.ts +61 -0
- package/dist/i-search-tuning-lint-issue.d.ts.map +1 -0
- package/dist/i-search-tuning-lint-issue.js +1 -0
- package/dist/i-search-tuning-lint-report.d.ts +38 -0
- package/dist/i-search-tuning-lint-report.d.ts.map +1 -0
- package/dist/i-search-tuning-lint-report.js +1 -0
- package/dist/i-unresolvable-reference-scan.d.ts +14 -0
- package/dist/i-unresolvable-reference-scan.d.ts.map +1 -0
- package/dist/i-unresolvable-reference-scan.js +1 -0
- package/dist/i-unresolvable-reference.d.ts +29 -0
- package/dist/i-unresolvable-reference.d.ts.map +1 -0
- package/dist/i-unresolvable-reference.js +1 -0
- package/dist/i-workspace-profile-payload.d.ts +12 -0
- package/dist/i-workspace-profile-payload.d.ts.map +1 -0
- package/dist/i-workspace-profile-payload.js +1 -0
- package/dist/impact-analysis.d.ts +15 -0
- package/dist/impact-analysis.d.ts.map +1 -1
- package/dist/impact-analysis.js +58 -13
- package/dist/impact-render.d.ts.map +1 -1
- package/dist/impact-render.js +22 -0
- package/dist/import-hygiene.d.ts +35 -1
- package/dist/import-hygiene.d.ts.map +1 -1
- package/dist/import-hygiene.js +107 -13
- package/dist/index.d.ts +145 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +176 -0
- package/dist/inspection-discovery.d.ts +45 -0
- package/dist/inspection-discovery.d.ts.map +1 -0
- package/dist/inspection-discovery.js +70 -0
- package/dist/knowledge-advisory-code.d.ts +17 -0
- package/dist/knowledge-advisory-code.d.ts.map +1 -0
- package/dist/knowledge-advisory-code.js +17 -0
- package/dist/knowledge-aged-entry.d.ts +10 -0
- package/dist/knowledge-aged-entry.d.ts.map +1 -0
- package/dist/knowledge-aged-entry.js +1 -0
- package/dist/knowledge-authoring.d.ts +24 -1
- package/dist/knowledge-authoring.d.ts.map +1 -1
- package/dist/knowledge-authoring.js +46 -7
- package/dist/knowledge-entry-verdict-record.d.ts +22 -0
- package/dist/knowledge-entry-verdict-record.d.ts.map +1 -0
- package/dist/knowledge-entry-verdict-record.js +1 -0
- package/dist/knowledge-entry-verdict.d.ts +17 -0
- package/dist/knowledge-entry-verdict.d.ts.map +1 -0
- package/dist/knowledge-entry-verdict.js +17 -0
- package/dist/knowledge-graph.d.ts +6 -0
- package/dist/knowledge-graph.d.ts.map +1 -1
- package/dist/knowledge-graph.js +18 -7
- package/dist/knowledge-kind-bucket.d.ts +19 -0
- package/dist/knowledge-kind-bucket.d.ts.map +1 -0
- package/dist/knowledge-kind-bucket.js +1 -0
- package/dist/knowledge-load-failure.d.ts +23 -0
- package/dist/knowledge-load-failure.d.ts.map +1 -0
- package/dist/knowledge-load-failure.js +1 -0
- package/dist/knowledge-reference-kind-bucket.d.ts +11 -0
- package/dist/knowledge-reference-kind-bucket.d.ts.map +1 -0
- package/dist/knowledge-reference-kind-bucket.js +1 -0
- package/dist/knowledge-stale-advisory.d.ts +14 -0
- package/dist/knowledge-stale-advisory.d.ts.map +1 -0
- package/dist/knowledge-stale-advisory.js +1 -0
- package/dist/knowledge-stale-coverage.d.ts +19 -0
- package/dist/knowledge-stale-coverage.d.ts.map +1 -0
- package/dist/knowledge-stale-coverage.js +1 -0
- package/dist/knowledge-stale-gate-flags.d.ts +33 -0
- package/dist/knowledge-stale-gate-flags.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-flags.js +1 -0
- package/dist/knowledge-stale-gate-input.d.ts +46 -0
- package/dist/knowledge-stale-gate-input.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-input.js +1 -0
- package/dist/knowledge-stale-gate-result.d.ts +33 -0
- package/dist/knowledge-stale-gate-result.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-result.js +1 -0
- package/dist/knowledge-stale-gate-rule.d.ts +33 -0
- package/dist/knowledge-stale-gate-rule.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-rule.js +1 -0
- package/dist/knowledge-stale-gate-violation.d.ts +13 -0
- package/dist/knowledge-stale-gate-violation.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-violation.js +1 -0
- package/dist/knowledge-stale-gate.d.ts +83 -0
- package/dist/knowledge-stale-gate.d.ts.map +1 -0
- package/dist/knowledge-stale-gate.js +429 -0
- package/dist/knowledge-stale-quality-gate.d.ts +26 -0
- package/dist/knowledge-stale-quality-gate.d.ts.map +1 -0
- package/dist/knowledge-stale-quality-gate.js +110 -0
- package/dist/knowledge-stale.d.ts +122 -9
- package/dist/knowledge-stale.d.ts.map +1 -1
- package/dist/knowledge-stale.js +1002 -316
- package/dist/knowledge-unverifiable-reason.d.ts +12 -0
- package/dist/knowledge-unverifiable-reason.d.ts.map +1 -0
- package/dist/knowledge-unverifiable-reason.js +12 -0
- package/dist/loader-diagnostics.d.ts +14 -2
- package/dist/loader-diagnostics.d.ts.map +1 -1
- package/dist/match-terms.d.ts +48 -0
- package/dist/match-terms.d.ts.map +1 -0
- package/dist/match-terms.js +155 -0
- package/dist/migration-profile-registry.d.ts +10 -0
- package/dist/migration-profile-registry.d.ts.map +1 -1
- package/dist/migration-profile-registry.js +57 -34
- package/dist/migration-readiness.d.ts.map +1 -1
- package/dist/migration-readiness.js +1 -3
- package/dist/nearest-id.d.ts +14 -0
- package/dist/nearest-id.d.ts.map +1 -0
- package/dist/nearest-id.js +12 -0
- package/dist/pack-asset-freshness.d.ts +65 -0
- package/dist/pack-asset-freshness.d.ts.map +1 -0
- package/dist/pack-asset-freshness.js +340 -0
- package/dist/pack-author-ux.d.ts +24 -3
- package/dist/pack-author-ux.d.ts.map +1 -1
- package/dist/pack-author-ux.js +87 -93
- package/dist/pack-contributions-inventory.d.ts +79 -39
- package/dist/pack-contributions-inventory.d.ts.map +1 -1
- package/dist/pack-contributions-inventory.js +443 -286
- package/dist/pack-doctor-verdict.d.ts +29 -0
- package/dist/pack-doctor-verdict.d.ts.map +1 -0
- package/dist/pack-doctor-verdict.js +45 -0
- package/dist/pack-doctor.d.ts +74 -1
- package/dist/pack-doctor.d.ts.map +1 -1
- package/dist/pack-doctor.js +281 -1
- package/dist/pack-helper-plan.d.ts +24 -0
- package/dist/pack-helper-plan.d.ts.map +1 -0
- package/dist/pack-helper-plan.js +77 -0
- package/dist/pack-helper-registry.d.ts +14 -0
- package/dist/pack-helper-registry.d.ts.map +1 -1
- package/dist/pack-helper-registry.js +76 -37
- package/dist/pack-manifest-reader.d.ts +8 -0
- package/dist/pack-manifest-reader.d.ts.map +1 -0
- package/dist/pack-manifest-reader.js +79 -0
- package/dist/pack-release-check.d.ts +14 -1
- package/dist/pack-release-check.d.ts.map +1 -1
- package/dist/pack-release-check.js +23 -1
- package/dist/pack-signature-status.d.ts +18 -6
- package/dist/pack-signature-status.d.ts.map +1 -1
- package/dist/pack-signature-status.js +59 -105
- package/dist/pack-test-runner.d.ts +27 -5
- package/dist/pack-test-runner.d.ts.map +1 -1
- package/dist/pack-test-runner.js +91 -35
- package/dist/pack-typecheck.d.ts +8 -0
- package/dist/pack-typecheck.d.ts.map +1 -0
- package/dist/pack-typecheck.js +76 -0
- package/dist/plan-review.d.ts +2 -0
- package/dist/plan-review.d.ts.map +1 -1
- package/dist/plan-review.js +17 -5
- package/dist/plan-simulation.d.ts.map +1 -1
- package/dist/plan-simulation.js +16 -5
- package/dist/playbook-load-issue.d.ts +16 -0
- package/dist/playbook-load-issue.d.ts.map +1 -0
- package/dist/playbook-load-issue.js +1 -0
- package/dist/playbook-registry.d.ts +32 -1
- package/dist/playbook-registry.d.ts.map +1 -1
- package/dist/playbook-registry.js +144 -55
- package/dist/policy-declaration.d.ts +18 -0
- package/dist/policy-declaration.d.ts.map +1 -0
- package/dist/policy-declaration.js +1 -0
- package/dist/policy-engine.d.ts +8 -0
- package/dist/policy-engine.d.ts.map +1 -1
- package/dist/policy-engine.js +26 -9
- package/dist/policy-overrides.d.ts.map +1 -1
- package/dist/policy-overrides.js +4 -4
- package/dist/policy-registry.d.ts +42 -0
- package/dist/policy-registry.d.ts.map +1 -0
- package/dist/policy-registry.js +131 -0
- package/dist/probed-id-fields.d.ts +21 -0
- package/dist/probed-id-fields.d.ts.map +1 -0
- package/dist/probed-id-fields.js +25 -0
- package/dist/probed-id-source.d.ts +11 -0
- package/dist/probed-id-source.d.ts.map +1 -0
- package/dist/probed-id-source.js +11 -0
- package/dist/profile-registry.d.ts +25 -2
- package/dist/profile-registry.d.ts.map +1 -1
- package/dist/profile-registry.js +59 -6
- package/dist/quality-gate-examination.d.ts +15 -0
- package/dist/quality-gate-examination.d.ts.map +1 -0
- package/dist/quality-gate-examination.js +15 -0
- package/dist/quality-gate-row-status.d.ts +19 -0
- package/dist/quality-gate-row-status.d.ts.map +1 -0
- package/dist/quality-gate-row-status.js +28 -0
- package/dist/quality-gate-status.d.ts +16 -0
- package/dist/quality-gate-status.d.ts.map +1 -0
- package/dist/quality-gate-status.js +16 -0
- package/dist/quality-html.d.ts.map +1 -1
- package/dist/quality-html.js +14 -3
- package/dist/quality-report-coverage.d.ts +26 -0
- package/dist/quality-report-coverage.d.ts.map +1 -0
- package/dist/quality-report-coverage.js +48 -0
- package/dist/quality-report.d.ts +28 -1
- package/dist/quality-report.d.ts.map +1 -1
- package/dist/quality-report.js +263 -35
- package/dist/query-intent-kind.d.ts +18 -0
- package/dist/query-intent-kind.d.ts.map +1 -0
- package/dist/query-intent-kind.js +18 -0
- package/dist/query-intent-result.d.ts +23 -0
- package/dist/query-intent-result.d.ts.map +1 -0
- package/dist/query-intent-result.js +1 -0
- package/dist/query-intent.d.ts +18 -0
- package/dist/query-intent.d.ts.map +1 -0
- package/dist/query-intent.js +336 -0
- package/dist/query-resolver.d.ts +18 -0
- package/dist/query-resolver.d.ts.map +1 -1
- package/dist/query-resolver.js +15 -12
- package/dist/ranked-recommendations.d.ts +36 -0
- package/dist/ranked-recommendations.d.ts.map +1 -0
- package/dist/ranked-recommendations.js +1 -0
- package/dist/ranker-explainability.d.ts.map +1 -1
- package/dist/ranker-explainability.js +38 -10
- package/dist/recommend-recipe.d.ts +17 -0
- package/dist/recommend-recipe.d.ts.map +1 -0
- package/dist/recommend-recipe.js +1 -0
- package/dist/recommend-recipes.d.ts +9 -0
- package/dist/recommend-recipes.d.ts.map +1 -0
- package/dist/recommend-recipes.js +106 -0
- package/dist/recommendation-candidate.d.ts +30 -0
- package/dist/recommendation-candidate.d.ts.map +1 -0
- package/dist/recommendation-candidate.js +1 -0
- package/dist/recommendation-confidence.d.ts +27 -0
- package/dist/recommendation-confidence.d.ts.map +1 -0
- package/dist/recommendation-confidence.js +1 -0
- package/dist/recommendation-ranking-options.d.ts +24 -0
- package/dist/recommendation-ranking-options.d.ts.map +1 -0
- package/dist/recommendation-ranking-options.js +1 -0
- package/dist/recommendation-ranking.d.ts +50 -0
- package/dist/recommendation-ranking.d.ts.map +1 -0
- package/dist/recommendation-ranking.js +527 -0
- package/dist/recommendation-source.d.ts +23 -0
- package/dist/recommendation-source.d.ts.map +1 -0
- package/dist/recommendation-source.js +23 -0
- package/dist/recommendation-suppression.d.ts +14 -0
- package/dist/recommendation-suppression.d.ts.map +1 -0
- package/dist/recommendation-suppression.js +14 -0
- package/dist/reference-asset-kind.d.ts +14 -0
- package/dist/reference-asset-kind.d.ts.map +1 -0
- package/dist/reference-asset-kind.js +14 -0
- package/dist/reference-content-check.d.ts +32 -0
- package/dist/reference-content-check.d.ts.map +1 -0
- package/dist/reference-content-check.js +143 -0
- package/dist/reference-failure.d.ts +31 -0
- package/dist/reference-failure.d.ts.map +1 -0
- package/dist/reference-failure.js +31 -0
- package/dist/reference-id-status.d.ts +15 -0
- package/dist/reference-id-status.d.ts.map +1 -0
- package/dist/reference-id-status.js +15 -0
- package/dist/reference-kind-declarations.d.ts +42 -0
- package/dist/reference-kind-declarations.d.ts.map +1 -0
- package/dist/reference-kind-declarations.js +142 -0
- package/dist/reference-lookup.d.ts +6 -0
- package/dist/reference-lookup.d.ts.map +1 -1
- package/dist/reference-lookup.js +13 -5
- package/dist/reference-registry.d.ts +210 -0
- package/dist/reference-registry.d.ts.map +1 -0
- package/dist/reference-registry.js +395 -0
- package/dist/reference-subject.d.ts +20 -0
- package/dist/reference-subject.d.ts.map +1 -0
- package/dist/reference-subject.js +1 -0
- package/dist/registration-hint-discovery-status.d.ts +25 -0
- package/dist/registration-hint-discovery-status.d.ts.map +1 -0
- package/dist/registration-hint-discovery-status.js +25 -0
- package/dist/registration-hint-registry.d.ts +80 -0
- package/dist/registration-hint-registry.d.ts.map +1 -1
- package/dist/registration-hint-registry.js +356 -138
- package/dist/registry-lifecycle.d.ts +200 -19
- package/dist/registry-lifecycle.d.ts.map +1 -1
- package/dist/registry-lifecycle.js +526 -136
- package/dist/release-readiness.d.ts.map +1 -1
- package/dist/release-readiness.js +10 -7
- package/dist/release-smoke.d.ts.map +1 -1
- package/dist/release-smoke.js +11 -7
- package/dist/report-site.d.ts.map +1 -1
- package/dist/report-site.js +25 -7
- package/dist/repository-intelligence.d.ts.map +1 -1
- package/dist/repository-intelligence.js +3 -2
- package/dist/repository-knowledge-model.d.ts.map +1 -1
- package/dist/repository-knowledge-model.js +18 -5
- package/dist/resolve-project-config.d.ts +64 -0
- package/dist/resolve-project-config.d.ts.map +1 -1
- package/dist/resolve-project-config.js +258 -32
- package/dist/reuse/compute-reuse-coverage.d.ts +29 -0
- package/dist/reuse/compute-reuse-coverage.d.ts.map +1 -0
- package/dist/reuse/compute-reuse-coverage.js +198 -0
- package/dist/reuse/rank-reuse-candidates.d.ts +38 -0
- package/dist/reuse/rank-reuse-candidates.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-candidates.js +212 -0
- package/dist/reuse/rank-reuse-options.d.ts +20 -0
- package/dist/reuse/rank-reuse-options.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-options.js +1 -0
- package/dist/reuse/rank-reuse-suggestions.d.ts +15 -0
- package/dist/reuse/rank-reuse-suggestions.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-suggestions.js +31 -0
- package/dist/reuse/resolve-curated-reuse.d.ts +43 -0
- package/dist/reuse/resolve-curated-reuse.d.ts.map +1 -0
- package/dist/reuse/resolve-curated-reuse.js +115 -0
- package/dist/reuse/reuse-candidate.d.ts +29 -0
- package/dist/reuse/reuse-candidate.d.ts.map +1 -0
- package/dist/reuse/reuse-candidate.js +1 -0
- package/dist/reuse/reuse-coverage-report.d.ts +74 -0
- package/dist/reuse/reuse-coverage-report.d.ts.map +1 -0
- package/dist/reuse/reuse-coverage-report.js +1 -0
- package/dist/reuse/reuse-curated-coverage.d.ts +36 -0
- package/dist/reuse/reuse-curated-coverage.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-coverage.js +1 -0
- package/dist/reuse/reuse-curated-resolution.d.ts +36 -0
- package/dist/reuse/reuse-curated-resolution.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-resolution.js +1 -0
- package/dist/reuse/reuse-curated-status.d.ts +21 -0
- package/dist/reuse/reuse-curated-status.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-status.js +21 -0
- package/dist/reuse/reuse-match-detail.d.ts +15 -0
- package/dist/reuse/reuse-match-detail.d.ts.map +1 -0
- package/dist/reuse/reuse-match-detail.js +1 -0
- package/dist/reuse/reuse-ranking.d.ts +37 -0
- package/dist/reuse/reuse-ranking.d.ts.map +1 -0
- package/dist/reuse/reuse-ranking.js +1 -0
- package/dist/reuse/reuse-suggestion.d.ts +19 -0
- package/dist/reuse/reuse-suggestion.d.ts.map +1 -0
- package/dist/reuse/reuse-suggestion.js +1 -0
- package/dist/reuse/reuse-symbol-lookup.d.ts +28 -0
- package/dist/reuse/reuse-symbol-lookup.d.ts.map +1 -0
- package/dist/reuse/reuse-symbol-lookup.js +1 -0
- package/dist/reuse/reuse-tokenize.d.ts +11 -0
- package/dist/reuse/reuse-tokenize.d.ts.map +1 -0
- package/dist/reuse/reuse-tokenize.js +26 -0
- package/dist/reuse/score-reuse-name.d.ts +16 -0
- package/dist/reuse/score-reuse-name.d.ts.map +1 -0
- package/dist/reuse/score-reuse-name.js +35 -0
- package/dist/reuse/score-reuse-primitive.d.ts +33 -0
- package/dist/reuse/score-reuse-primitive.d.ts.map +1 -0
- package/dist/reuse/score-reuse-primitive.js +92 -0
- package/dist/review-packet.d.ts +2 -0
- package/dist/review-packet.d.ts.map +1 -1
- package/dist/review-packet.js +13 -6
- package/dist/role-views.d.ts.map +1 -1
- package/dist/role-views.js +16 -16
- package/dist/routing-recommends-channels.d.ts +24 -0
- package/dist/routing-recommends-channels.d.ts.map +1 -0
- package/dist/routing-recommends-channels.js +19 -0
- package/dist/run-boundary-check.d.ts +118 -0
- package/dist/run-boundary-check.d.ts.map +1 -0
- package/dist/run-boundary-check.js +592 -0
- package/dist/safety-audit.js +1 -1
- package/dist/scaffold-coverage.js +1 -1
- package/dist/scaffold-pattern-doctor-report.d.ts +19 -0
- package/dist/scaffold-pattern-doctor-report.d.ts.map +1 -0
- package/dist/scaffold-pattern-doctor-report.js +54 -0
- package/dist/scaffold-patterns.d.ts +75 -1
- package/dist/scaffold-patterns.d.ts.map +1 -1
- package/dist/scaffold-patterns.js +375 -84
- package/dist/schema-inventory.d.ts.map +1 -1
- package/dist/schema-inventory.js +4 -3
- package/dist/search-document-id.d.ts +52 -0
- package/dist/search-document-id.d.ts.map +1 -0
- package/dist/search-document-id.js +72 -0
- package/dist/search-document-prefix.d.ts +7 -0
- package/dist/search-document-prefix.d.ts.map +1 -0
- package/dist/search-document-prefix.js +1 -0
- package/dist/search-index.d.ts.map +1 -1
- package/dist/search-index.js +20 -23
- package/dist/search-tuning-explain.d.ts +6 -0
- package/dist/search-tuning-explain.d.ts.map +1 -1
- package/dist/search-tuning-explain.js +19 -17
- package/dist/search-tuning-key-probes.d.ts +16 -0
- package/dist/search-tuning-key-probes.d.ts.map +1 -0
- package/dist/search-tuning-key-probes.js +65 -0
- package/dist/search-tuning-key-resolution.d.ts +25 -0
- package/dist/search-tuning-key-resolution.d.ts.map +1 -0
- package/dist/search-tuning-key-resolution.js +1 -0
- package/dist/search-tuning-key-resolver.d.ts +4 -0
- package/dist/search-tuning-key-resolver.d.ts.map +1 -0
- package/dist/search-tuning-key-resolver.js +107 -0
- package/dist/search-tuning-key-status.d.ts +24 -0
- package/dist/search-tuning-key-status.d.ts.map +1 -0
- package/dist/search-tuning-key-status.js +24 -0
- package/dist/search-tuning-lint.d.ts +9 -0
- package/dist/search-tuning-lint.d.ts.map +1 -0
- package/dist/search-tuning-lint.js +468 -0
- package/dist/search-tuning-registry.d.ts +43 -0
- package/dist/search-tuning-registry.d.ts.map +1 -1
- package/dist/search-tuning-registry.js +214 -49
- package/dist/self-audit.d.ts +12 -0
- package/dist/self-audit.d.ts.map +1 -1
- package/dist/self-audit.js +36 -10
- package/dist/self-config-doctor-v2.d.ts +145 -3
- package/dist/self-config-doctor-v2.d.ts.map +1 -1
- package/dist/self-config-doctor-v2.js +1329 -255
- 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 +65 -309
- 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 +47 -1
- package/dist/sharkcraft-inspector.d.ts.map +1 -1
- package/dist/sharkcraft-inspector.js +278 -29
- package/dist/spec/spec-evidence.d.ts.map +1 -1
- package/dist/spec/spec-evidence.js +14 -20
- package/dist/split-identifier.d.ts +21 -0
- package/dist/split-identifier.d.ts.map +1 -0
- package/dist/split-identifier.js +27 -0
- package/dist/start-here.d.ts.map +1 -1
- package/dist/start-here.js +1 -2
- package/dist/substitute-placeholders.d.ts +8 -0
- package/dist/substitute-placeholders.d.ts.map +1 -0
- package/dist/substitute-placeholders.js +9 -0
- package/dist/symbol-index.d.ts +33 -0
- package/dist/symbol-index.d.ts.map +1 -1
- package/dist/symbol-index.js +241 -3
- package/dist/symbol-member-entry.d.ts +26 -0
- package/dist/symbol-member-entry.d.ts.map +1 -0
- package/dist/symbol-member-entry.js +1 -0
- package/dist/symbol-member-kind.d.ts +14 -0
- package/dist/symbol-member-kind.d.ts.map +1 -0
- package/dist/symbol-member-kind.js +14 -0
- package/dist/task-packet.d.ts.map +1 -1
- package/dist/task-packet.js +52 -9
- package/dist/task-ranker.d.ts +8 -0
- package/dist/task-ranker.d.ts.map +1 -1
- package/dist/task-ranker.js +25 -13
- package/dist/task-risk.js +1 -1
- package/dist/task-routing-hint-registry.d.ts +20 -1
- package/dist/task-routing-hint-registry.d.ts.map +1 -1
- package/dist/task-routing-hint-registry.js +186 -42
- package/dist/template-drift.d.ts.map +1 -1
- package/dist/template-drift.js +30 -9
- package/dist/template-lint.d.ts.map +1 -1
- package/dist/template-lint.js +160 -2
- package/dist/term-query.d.ts +10 -0
- package/dist/term-query.d.ts.map +1 -0
- package/dist/term-query.js +1 -0
- package/dist/test-definitions.d.ts +6 -3
- package/dist/test-definitions.d.ts.map +1 -1
- package/dist/test-runner.d.ts +95 -10
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +309 -318
- package/dist/tuning-query-tokens.d.ts +29 -0
- package/dist/tuning-query-tokens.d.ts.map +1 -0
- package/dist/tuning-query-tokens.js +51 -0
- package/dist/typecheck-files.d.ts +36 -0
- package/dist/typecheck-files.d.ts.map +1 -0
- package/dist/typecheck-files.js +158 -0
- package/dist/uncertainty.js +1 -1
- package/dist/universal-search.d.ts.map +1 -1
- package/dist/universal-search.js +5 -3
- package/dist/unregistered-exports.d.ts +19 -0
- package/dist/unregistered-exports.d.ts.map +1 -0
- package/dist/unregistered-exports.js +141 -0
- package/dist/unresolvable-reason.d.ts +11 -0
- package/dist/unresolvable-reason.d.ts.map +1 -0
- package/dist/unresolvable-reason.js +11 -0
- package/dist/upgrade-advisor.d.ts.map +1 -1
- package/dist/upgrade-advisor.js +16 -9
- package/dist/validate-contribution-file.d.ts +4 -0
- package/dist/validate-contribution-file.d.ts.map +1 -0
- package/dist/validate-contribution-file.js +228 -0
- package/dist/why-file.d.ts +3 -0
- package/dist/why-file.d.ts.map +1 -1
- package/dist/why-file.js +7 -3
- package/package.json +17 -17
|
@@ -14,7 +14,7 @@
|
|
|
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
18
|
export const FEEDBACK_INGESTION_SCHEMA = 'sharkcraft.feedback-ingestion/v1';
|
|
19
19
|
export var FeedbackBucket;
|
|
20
20
|
(function (FeedbackBucket) {
|
|
@@ -141,7 +141,7 @@ const KEYWORD_RULES = [
|
|
|
141
141
|
pattern: /\b(mcp|tool[s]?)\b/i,
|
|
142
142
|
tags: ['mcp'],
|
|
143
143
|
targetArea: 'mcp',
|
|
144
|
-
suggestedCommands: ['shrk commands
|
|
144
|
+
suggestedCommands: ['shrk commands search mcp'],
|
|
145
145
|
},
|
|
146
146
|
{
|
|
147
147
|
pattern: /\b(helper[s]?)\b/i,
|
|
@@ -305,41 +305,90 @@ export function ingestFeedbackFile(projectRoot, file, options = {}) {
|
|
|
305
305
|
* Packs contribute via `feedbackRuleFiles[]` in their manifest.
|
|
306
306
|
*/
|
|
307
307
|
export async function loadFeedbackRules(inspection) {
|
|
308
|
+
return (await loadFeedbackRulesWithIssues(inspection)).rules;
|
|
309
|
+
}
|
|
310
|
+
/**
|
|
311
|
+
* THE feedback-rule acceptance predicate (round 12, 12.1): a non-empty string
|
|
312
|
+
* `id` — `[]` means accepted. An id-less rule used to be dropped with no signal.
|
|
313
|
+
*/
|
|
314
|
+
export function feedbackRuleRejectionReasons(raw) {
|
|
315
|
+
if (!raw || typeof raw !== 'object' || Array.isArray(raw))
|
|
316
|
+
return ['(entry): must be an object'];
|
|
317
|
+
const id = raw.id;
|
|
318
|
+
return typeof id === 'string' && id.length > 0 ? [] : ['id: must be a non-empty string'];
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* {@link loadFeedbackRules} WITH what did not take effect (round 12, 12.1): a
|
|
322
|
+
* rules file that failed to import (it was swallowed to `[]`), and every
|
|
323
|
+
* declared rule the loader refused — invalid, or a duplicate id.
|
|
324
|
+
*/
|
|
325
|
+
export async function loadFeedbackRulesWithIssues(inspection) {
|
|
308
326
|
const out = [];
|
|
309
|
-
const
|
|
310
|
-
const
|
|
311
|
-
|
|
327
|
+
const entries = [];
|
|
328
|
+
const issues = [];
|
|
329
|
+
const rejected = [];
|
|
330
|
+
const seen = new Map();
|
|
331
|
+
const readInto = async (file, packageName) => {
|
|
332
|
+
const r = await importDefaultArray(file);
|
|
333
|
+
if (r.error !== undefined) {
|
|
334
|
+
const rel = nodePath.relative(inspection.projectRoot, file) || file;
|
|
335
|
+
issues.push({
|
|
336
|
+
severity: 'warning',
|
|
337
|
+
code: 'load-failed',
|
|
338
|
+
message: `${packageName ? `Pack ${packageName} (${rel})` : `Failed to load ${rel}`}: ${r.error}`,
|
|
339
|
+
source: file,
|
|
340
|
+
...(packageName ? { packageName } : {}),
|
|
341
|
+
});
|
|
312
342
|
return;
|
|
313
|
-
|
|
314
|
-
|
|
343
|
+
}
|
|
344
|
+
r.items.forEach((item, index) => {
|
|
345
|
+
const reasons = feedbackRuleRejectionReasons(item);
|
|
346
|
+
if (reasons.length > 0) {
|
|
347
|
+
rejected.push({ file, index, exportName: 'default', reasons, cause: RejectionCause.Invalid });
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
const rule = item;
|
|
351
|
+
const prev = seen.get(rule.id);
|
|
352
|
+
if (prev !== undefined) {
|
|
353
|
+
rejected.push({
|
|
354
|
+
file,
|
|
355
|
+
index,
|
|
356
|
+
exportName: 'default',
|
|
357
|
+
entryId: rule.id,
|
|
358
|
+
reasons: [`id: "${rule.id}" is already declared in ${prev}`],
|
|
359
|
+
cause: RejectionCause.DuplicateId,
|
|
360
|
+
});
|
|
361
|
+
return;
|
|
362
|
+
}
|
|
363
|
+
seen.set(rule.id, nodePath.relative(inspection.projectRoot, file) || file);
|
|
364
|
+
out.push(rule);
|
|
365
|
+
entries.push({ id: rule.id, file, ...(packageName ? { packageName } : {}) });
|
|
366
|
+
});
|
|
315
367
|
};
|
|
316
368
|
// Local file.
|
|
317
369
|
if (inspection.sharkcraftDir) {
|
|
318
|
-
|
|
319
|
-
for (const r of await importDefaultArray(local))
|
|
320
|
-
add(r);
|
|
370
|
+
await readInto(nodePath.join(inspection.sharkcraftDir, 'feedback-rules.ts'));
|
|
321
371
|
}
|
|
322
372
|
// Pack contributions.
|
|
323
373
|
const packs = inspection.packs?.validPacks ?? [];
|
|
324
374
|
for (const pack of packs) {
|
|
325
375
|
const c = (pack.manifest?.contributions ?? {});
|
|
326
376
|
for (const rel of c.feedbackRuleFiles ?? []) {
|
|
327
|
-
|
|
328
|
-
for (const r of await importDefaultArray(full))
|
|
329
|
-
add(r);
|
|
377
|
+
await readInto(nodePath.resolve(pack.packageRoot, rel), pack.packageName);
|
|
330
378
|
}
|
|
331
379
|
}
|
|
332
|
-
return out;
|
|
380
|
+
return { rules: out, entries, issues, rejected };
|
|
333
381
|
}
|
|
382
|
+
/** A rules file's default array; `error` (first line) when the import threw. A missing file is `[]`. */
|
|
334
383
|
async function importDefaultArray(absPath) {
|
|
384
|
+
if (!existsSync(absPath))
|
|
385
|
+
return { items: [] };
|
|
335
386
|
try {
|
|
336
|
-
if (!existsSync(absPath))
|
|
337
|
-
return [];
|
|
338
387
|
const mod = (await importModuleViaLoader(absPath));
|
|
339
|
-
return Array.isArray(mod.default) ? mod.default : [];
|
|
388
|
+
return { items: Array.isArray(mod.default) ? mod.default : [] };
|
|
340
389
|
}
|
|
341
|
-
catch {
|
|
342
|
-
return [];
|
|
390
|
+
catch (e) {
|
|
391
|
+
return { items: [], error: (e.message ?? String(e)).split('\n')[0].trim() };
|
|
343
392
|
}
|
|
344
393
|
}
|
|
345
394
|
export function renderFeedbackBacklog(report) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fix-preview.d.ts","sourceRoot":"","sources":["../src/fix-preview.ts"],"names":[],"mappings":"AAyBA,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;AAoCD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAoFnB;AA4CD;;4CAE4C;AAC5C,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,
|
|
1
|
+
{"version":3,"file":"fix-preview.d.ts","sourceRoot":"","sources":["../src/fix-preview.ts"],"names":[],"mappings":"AAyBA,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;AAoCD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAoFnB;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
|
@@ -237,13 +237,14 @@ export async function buildFixPreviewExtended(inspection, options = {}) {
|
|
|
237
237
|
const kinds = new Set(options.kinds ?? sync.kinds);
|
|
238
238
|
const suggestions = [...sync.suggestions];
|
|
239
239
|
if (kinds.has(FixKind.SelfConfig)) {
|
|
240
|
-
|
|
241
|
-
const
|
|
240
|
+
// THE doctor (v2) — the same checks `shrk self-config doctor` runs.
|
|
241
|
+
const { buildSelfConfigDoctorReportV2 } = await import("./self-config-doctor-v2.js");
|
|
242
|
+
const report = await buildSelfConfigDoctorReportV2(inspection);
|
|
242
243
|
for (const f of report.findings) {
|
|
243
244
|
const severity = f.severity === 'error' ? 'error' : f.severity === 'warning' ? 'warning' : 'info';
|
|
244
245
|
suggestions.push({
|
|
245
246
|
kind: FixKind.SelfConfig,
|
|
246
|
-
targetId: f.
|
|
247
|
+
targetId: f.sourceId || f.targetId || f.code,
|
|
247
248
|
severity,
|
|
248
249
|
title: `Self-config: ${f.code}`,
|
|
249
250
|
description: f.message,
|
|
@@ -253,8 +254,11 @@ export async function buildFixPreviewExtended(inspection, options = {}) {
|
|
|
253
254
|
}
|
|
254
255
|
}
|
|
255
256
|
if (kinds.has(FixKind.PackConflict) || kinds.has(FixKind.StalePackSignature)) {
|
|
256
|
-
|
|
257
|
-
|
|
257
|
+
// The async inventory: loader-backed extraction, so a conflict preview is
|
|
258
|
+
// built from the ids the registries really load (the sync regex scrape
|
|
259
|
+
// marks them unverified).
|
|
260
|
+
const { buildPackContributionsInventoryAsync } = await import("./pack-contributions-inventory.js");
|
|
261
|
+
const inv = await buildPackContributionsInventoryAsync(inspection);
|
|
258
262
|
for (const c of inv.conflicts) {
|
|
259
263
|
if (c.kind === 'stale-signature' && kinds.has(FixKind.StalePackSignature)) {
|
|
260
264
|
suggestions.push({
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type IRejectedEntry } from '@shrkcrft/core';
|
|
2
|
+
import type { IContributionFileIssue } from './i-contribution-file-issue.js';
|
|
3
|
+
import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
|
|
4
|
+
/**
|
|
5
|
+
* Every pack `frameworkExtractorFiles` candidate, read through THE shared
|
|
6
|
+
* reading (`frameworkExtractorExports`) and shape predicate
|
|
7
|
+
* (`frameworkExtractorRejectionReasons`, both @shrkcrft/plugin-api) — the
|
|
8
|
+
* same two the runtime loader (`loadPackExtractors`, @shrkcrft/framework-
|
|
9
|
+
* scanners) applies. The inspector cannot import that loader (it sits above
|
|
10
|
+
* this layer via @shrkcrft/graph), so this is how framework extractors join
|
|
11
|
+
* THE rejection channel (round 12, 12.1).
|
|
12
|
+
*
|
|
13
|
+
* A candidate whose `framework` collides with a BUILT-IN extractor (nestjs,
|
|
14
|
+
* react, …) is refused only by the runtime loader, which alone knows the
|
|
15
|
+
* built-in registry; a collision between two contributed extractors is
|
|
16
|
+
* refused here too (the runtime keeps the first).
|
|
17
|
+
*/
|
|
18
|
+
export declare function loadFrameworkExtractorOutcomes(inspection: ISharkcraftInspection): Promise<{
|
|
19
|
+
readonly accepted: readonly {
|
|
20
|
+
readonly id: string;
|
|
21
|
+
readonly file: string;
|
|
22
|
+
readonly packageName: string;
|
|
23
|
+
}[];
|
|
24
|
+
readonly rejected: readonly IRejectedEntry[];
|
|
25
|
+
readonly issues: readonly IContributionFileIssue[];
|
|
26
|
+
}>;
|
|
27
|
+
//# sourceMappingURL=framework-extractor-outcomes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework-extractor-outcomes.d.ts","sourceRoot":"","sources":["../src/framework-extractor-outcomes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyC,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE5F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;;;;;;;;;;;;GAaG;AACH,wBAAsB,8BAA8B,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC;IAC/F,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3G,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACpD,CAAC,CA+DD"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import * as nodePath from 'node:path';
|
|
3
|
+
import { importModuleViaLoader, RejectionCause } from '@shrkcrft/core';
|
|
4
|
+
import { frameworkExtractorExports, frameworkExtractorRejectionReasons } from '@shrkcrft/plugin-api';
|
|
5
|
+
/**
|
|
6
|
+
* Every pack `frameworkExtractorFiles` candidate, read through THE shared
|
|
7
|
+
* reading (`frameworkExtractorExports`) and shape predicate
|
|
8
|
+
* (`frameworkExtractorRejectionReasons`, both @shrkcrft/plugin-api) — the
|
|
9
|
+
* same two the runtime loader (`loadPackExtractors`, @shrkcrft/framework-
|
|
10
|
+
* scanners) applies. The inspector cannot import that loader (it sits above
|
|
11
|
+
* this layer via @shrkcrft/graph), so this is how framework extractors join
|
|
12
|
+
* THE rejection channel (round 12, 12.1).
|
|
13
|
+
*
|
|
14
|
+
* A candidate whose `framework` collides with a BUILT-IN extractor (nestjs,
|
|
15
|
+
* react, …) is refused only by the runtime loader, which alone knows the
|
|
16
|
+
* built-in registry; a collision between two contributed extractors is
|
|
17
|
+
* refused here too (the runtime keeps the first).
|
|
18
|
+
*/
|
|
19
|
+
export async function loadFrameworkExtractorOutcomes(inspection) {
|
|
20
|
+
const accepted = [];
|
|
21
|
+
const rejected = [];
|
|
22
|
+
const issues = [];
|
|
23
|
+
const seen = new Map();
|
|
24
|
+
for (const pack of inspection.packs.validPacks ?? []) {
|
|
25
|
+
const files = pack.manifest?.contributions
|
|
26
|
+
?.frameworkExtractorFiles;
|
|
27
|
+
for (const rel of files ?? []) {
|
|
28
|
+
const file = nodePath.resolve(pack.packageRoot, rel);
|
|
29
|
+
if (!existsSync(file)) {
|
|
30
|
+
issues.push({
|
|
31
|
+
severity: 'warning',
|
|
32
|
+
code: 'missing-file',
|
|
33
|
+
message: `Pack ${pack.packageName} declares ${rel} but the file is missing.`,
|
|
34
|
+
source: file,
|
|
35
|
+
packageName: pack.packageName,
|
|
36
|
+
});
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
let mod;
|
|
40
|
+
try {
|
|
41
|
+
mod = await importModuleViaLoader(file);
|
|
42
|
+
}
|
|
43
|
+
catch (e) {
|
|
44
|
+
issues.push({
|
|
45
|
+
severity: 'warning',
|
|
46
|
+
code: 'load-failed',
|
|
47
|
+
message: `Pack ${pack.packageName} (${rel}): ${(e.message ?? String(e)).split('\n')[0].trim()}`,
|
|
48
|
+
source: file,
|
|
49
|
+
packageName: pack.packageName,
|
|
50
|
+
});
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
for (const c of frameworkExtractorExports(mod)) {
|
|
54
|
+
const reasons = frameworkExtractorRejectionReasons(c.value);
|
|
55
|
+
const framework = c.value?.framework;
|
|
56
|
+
const at = { file, index: c.index, exportName: c.exportName };
|
|
57
|
+
if (reasons.length > 0) {
|
|
58
|
+
rejected.push({
|
|
59
|
+
...at,
|
|
60
|
+
...(typeof framework === 'string' ? { entryId: framework } : {}),
|
|
61
|
+
reasons,
|
|
62
|
+
cause: RejectionCause.Invalid,
|
|
63
|
+
});
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
const name = framework;
|
|
67
|
+
const prev = seen.get(name);
|
|
68
|
+
if (prev !== undefined) {
|
|
69
|
+
rejected.push({
|
|
70
|
+
...at,
|
|
71
|
+
entryId: name,
|
|
72
|
+
reasons: [`framework: "${name}" is already registered by ${prev}`],
|
|
73
|
+
cause: RejectionCause.DuplicateId,
|
|
74
|
+
});
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
seen.set(name, `${pack.packageName} (${rel})`);
|
|
78
|
+
accepted.push({ id: name, file, packageName: pack.packageName });
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return { accepted, rejected, issues };
|
|
83
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fuzzy-impact.d.ts","sourceRoot":"","sources":["../src/fuzzy-impact.ts"],"names":[],"mappings":"AA2BA,OAAO,EACL,cAAc,EAEd,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"fuzzy-impact.d.ts","sourceRoot":"","sources":["../src/fuzzy-impact.ts"],"names":[],"mappings":"AA2BA,OAAO,EACL,cAAc,EAEd,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAKvE,eAAO,MAAM,8BAA8B,0CAA0C,CAAC;AAEtF,oBAAY,qBAAqB;IAC/B,SAAS,eAAe;IACxB,SAAS,cAAc;IACvB,SAAS,eAAe;IACxB,UAAU,gBAAgB;IAC1B,OAAO,aAAa;IACpB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,UAAU,eAAe;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,OAAO,8BAA8B,CAAC;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,EAAE,qBAAqB,CAAC;IAC9B,sEAAsE;IACtE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,YAAY,EAAE,SAAS,WAAW,EAAE,CAAC;IACrC,2EAA2E;IAC3E,eAAe,EAAE,OAAO,CAAC;IACzB,oEAAoE;IACpE,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,kCAAkC;IAClC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,8EAA8E;IAC9E,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED,MAAM,WAAW,0BAA0B;IACzC,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAClC,6DAA6D;IAC7D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAqaD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,qBAAqB,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,0BAA+B,GACvC,sBAAsB,CA+BxB"}
|
package/dist/fuzzy-impact.js
CHANGED
|
@@ -27,6 +27,8 @@ import { existsSync } from 'node:fs';
|
|
|
27
27
|
import * as nodePath from 'node:path';
|
|
28
28
|
import { QueryMatchKind, resolveQuery, } from "./query-resolver.js";
|
|
29
29
|
import { HELPERS } from "./helper-registry.js";
|
|
30
|
+
import { listConstructs } from "./construct-registry.js";
|
|
31
|
+
import { listPlaybooks } from "./playbook-registry.js";
|
|
30
32
|
export const FUZZY_IMPACT_RESOLUTION_SCHEMA = 'sharkcraft.fuzzy-impact-resolution/v1';
|
|
31
33
|
export var FuzzyImpactSourceKind;
|
|
32
34
|
(function (FuzzyImpactSourceKind) {
|
|
@@ -45,22 +47,11 @@ export var FuzzyImpactSourceKind;
|
|
|
45
47
|
FuzzyImpactSourceKind["Unresolved"] = "unresolved";
|
|
46
48
|
})(FuzzyImpactSourceKind || (FuzzyImpactSourceKind = {}));
|
|
47
49
|
function listConstructsFrom(inspection) {
|
|
48
|
-
//
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const reg = inspection
|
|
54
|
-
.constructRegistry;
|
|
55
|
-
if (reg && typeof reg.list === 'function') {
|
|
56
|
-
try {
|
|
57
|
-
return reg.list();
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
return [];
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
return [];
|
|
50
|
+
// One source. The two structural casts that used to precede this
|
|
51
|
+
// (`inspection.constructs`, then `inspection.constructRegistry.list()`) read
|
|
52
|
+
// properties nothing assigns, so this function returned [] in production
|
|
53
|
+
// while tests that faked those properties passed.
|
|
54
|
+
return listConstructs(inspection);
|
|
64
55
|
}
|
|
65
56
|
function constructFor(inspection, id) {
|
|
66
57
|
return listConstructsFrom(inspection).find((c) => c.id === id);
|
|
@@ -145,10 +136,10 @@ function knowledgeFileReferences(inspection, knowledgeId) {
|
|
|
145
136
|
return out;
|
|
146
137
|
}
|
|
147
138
|
function playbookFiles(inspection, playbookId) {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
const playbook =
|
|
139
|
+
// `listPlaybooks` is the same source `shrk playbooks list` reads. The
|
|
140
|
+
// previous `inspection.playbookRegistry?.get()` cast pointed at a property
|
|
141
|
+
// nothing ever assigned, so every playbook expanded to zero files.
|
|
142
|
+
const playbook = listPlaybooks(inspection).find((p) => p.id === playbookId);
|
|
152
143
|
if (!playbook)
|
|
153
144
|
return [];
|
|
154
145
|
const out = [];
|
|
@@ -388,7 +379,7 @@ function buildResolution(inspection, query, resolution, opts) {
|
|
|
388
379
|
resolvedLabel: best.label,
|
|
389
380
|
alternatives,
|
|
390
381
|
shouldRunImpact: false,
|
|
391
|
-
followUpCommands: [`shrk
|
|
382
|
+
followUpCommands: [`shrk help ${best.id}`, `shrk ${best.id} --help`],
|
|
392
383
|
diagnostics: [
|
|
393
384
|
`"${best.id}" resolves to a CLI command, not a code construct. Use \`shrk impact <file>\` to analyse files this command would touch.`,
|
|
394
385
|
],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"healing-plan.d.ts","sourceRoot":"","sources":["../src/healing-plan.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAGlC,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAEhE,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,mBAAmB,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;
|
|
1
|
+
{"version":3,"file":"healing-plan.d.ts","sourceRoot":"","sources":["../src/healing-plan.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAGlC,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAEhE,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,mBAAmB,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAmQD,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAMzE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAcvE;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAqB3E;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,YAAY,CAQd;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAsB7D;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAiBjE"}
|
package/dist/healing-plan.js
CHANGED
|
@@ -15,7 +15,7 @@ export var HealingInputKind;
|
|
|
15
15
|
HealingInputKind["Report"] = "report";
|
|
16
16
|
HealingInputKind["Command"] = "command";
|
|
17
17
|
})(HealingInputKind || (HealingInputKind = {}));
|
|
18
|
-
const GENERIC_NEXT = 'shrk
|
|
18
|
+
const GENERIC_NEXT = 'shrk recommend --from-error <stderr-file>';
|
|
19
19
|
function inferFromKeywords(text) {
|
|
20
20
|
const causes = [];
|
|
21
21
|
const recover = [];
|
|
@@ -58,8 +58,7 @@ function inferFromKeywords(text) {
|
|
|
58
58
|
if (lower.includes('migration') && (lower.includes('readiness') || lower.includes('blocker'))) {
|
|
59
59
|
causes.push('Migration readiness gate reported a blocker.');
|
|
60
60
|
recover.push('Resolve each blocker before re-running the gate.');
|
|
61
|
-
cmds.push('shrk
|
|
62
|
-
cmds.push('shrk migration profiles');
|
|
61
|
+
cmds.push('shrk migrate plan <id>');
|
|
63
62
|
docs.push('docs/migration-readiness.md');
|
|
64
63
|
}
|
|
65
64
|
// Unknown command.
|
|
@@ -202,7 +201,7 @@ function buildPlan(ctx) {
|
|
|
202
201
|
const safeRecoverySteps = [
|
|
203
202
|
'Re-read the failing command output carefully (do not skip).',
|
|
204
203
|
'Reproduce the failure locally before changing code.',
|
|
205
|
-
'If unsure, run `shrk doctor` and `shrk
|
|
204
|
+
'If unsure, run `shrk doctor` and `shrk recommend --from-error <stderr-file>`.',
|
|
206
205
|
];
|
|
207
206
|
for (const r of inferred.recover)
|
|
208
207
|
safeRecoverySteps.push(r);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type IRejectedEntry } from '@shrkcrft/core';
|
|
2
|
+
import type { IHelperView } from './helper-view.js';
|
|
3
|
+
import { type IPackHelperDoctorIssue } from './pack-helper-registry.js';
|
|
4
|
+
import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
|
|
5
|
+
export interface IHelperCatalog {
|
|
6
|
+
/** Every helper, deduped by id: built-ins first, then local, then pack (loader order). */
|
|
7
|
+
readonly entries: readonly IHelperView[];
|
|
8
|
+
/** load-failed / missing-file / invalid-helper / duplicate-id / helper-warning issues. */
|
|
9
|
+
readonly issues: readonly IPackHelperDoctorIssue[];
|
|
10
|
+
/** Every helper FILE considered (local `helpers.ts` + pack `helperFiles[]`) and whether it loaded. */
|
|
11
|
+
readonly files: readonly {
|
|
12
|
+
readonly file: string;
|
|
13
|
+
readonly status: 'loaded' | 'failed' | 'missing';
|
|
14
|
+
}[];
|
|
15
|
+
/**
|
|
16
|
+
* Every declared helper that did not make the catalog (round 12, 12.1): the
|
|
17
|
+
* loader's refusals plus a contributed helper shadowed by a built-in id.
|
|
18
|
+
*/
|
|
19
|
+
readonly rejected: readonly IRejectedEntry[];
|
|
20
|
+
}
|
|
21
|
+
/** Build the catalog. One pack-helper load per call (it returns entries AND issues). */
|
|
22
|
+
export declare function listAllHelpers(inspection: ISharkcraftInspection): Promise<IHelperCatalog>;
|
|
23
|
+
/** One helper by id, from the same catalog `helper list` prints. */
|
|
24
|
+
export declare function findHelper(inspection: ISharkcraftInspection, id: string): Promise<IHelperView | null>;
|
|
25
|
+
//# sourceMappingURL=helper-catalog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper-catalog.d.ts","sourceRoot":"","sources":["../src/helper-catalog.ts"],"names":[],"mappings":"AAWA,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,WAAW,cAAc;IAC7B,0FAA0F;IAC1F,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,sGAAsG;IACtG,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;KAAE,EAAE,CAAC;IACvG;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAC9C;AAED,wFAAwF;AACxF,wBAAsB,cAAc,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsE/F;AAED,oEAAoE;AACpE,wBAAsB,UAAU,CAC9B,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAG7B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE helper catalog — built-in helpers ∪ pack/local-contributed helpers.
|
|
3
|
+
*
|
|
4
|
+
* `helper list|get|plan` used to read only the built-in `HELPERS` (which ships
|
|
5
|
+
* empty), while the id resolver, universal search and the MCP pack-helper tools
|
|
6
|
+
* read the pack loader — two authorities answering "which helpers exist", so
|
|
7
|
+
* the self-config doctor saw a helper that `helper get` called unknown. Every
|
|
8
|
+
* helper surface now reads this one catalog; `warmReferenceRegistries` derives
|
|
9
|
+
* the resolver's `helper` ids from it, so list ≡ resolve by construction.
|
|
10
|
+
*/
|
|
11
|
+
import * as nodePath from 'node:path';
|
|
12
|
+
import { RejectionCause } from '@shrkcrft/core';
|
|
13
|
+
import { HELPERS } from "./helper-registry.js";
|
|
14
|
+
import { loadPackHelpers } from "./pack-helper-registry.js";
|
|
15
|
+
/** Build the catalog. One pack-helper load per call (it returns entries AND issues). */
|
|
16
|
+
export async function listAllHelpers(inspection) {
|
|
17
|
+
const entries = [];
|
|
18
|
+
const issues = [];
|
|
19
|
+
const seen = new Set();
|
|
20
|
+
for (const h of HELPERS) {
|
|
21
|
+
seen.add(h.id);
|
|
22
|
+
entries.push({
|
|
23
|
+
id: h.id,
|
|
24
|
+
title: h.id,
|
|
25
|
+
description: h.description,
|
|
26
|
+
source: 'builtin',
|
|
27
|
+
destructive: h.destructive,
|
|
28
|
+
requiresHumanReview: h.requiresHumanReview,
|
|
29
|
+
requiresProfile: h.requiresProfile === true,
|
|
30
|
+
outputKind: 'plan',
|
|
31
|
+
variables: h.variables.map((v) => ({ name: v.name, required: v.required, description: v.description })),
|
|
32
|
+
operations: [],
|
|
33
|
+
manualChecklist: [],
|
|
34
|
+
tags: [],
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
const loaded = await loadPackHelpers(inspection);
|
|
38
|
+
issues.push(...loaded.issues);
|
|
39
|
+
const rejected = [...loaded.rejected];
|
|
40
|
+
for (const e of loaded.entries) {
|
|
41
|
+
const h = e.helper;
|
|
42
|
+
if (seen.has(h.id)) {
|
|
43
|
+
issues.push({
|
|
44
|
+
severity: 'error',
|
|
45
|
+
code: 'duplicate-id',
|
|
46
|
+
message: `Helper "${h.id}" from ${e.sourceFile} duplicates a built-in helper — the built-in wins.`,
|
|
47
|
+
helperId: h.id,
|
|
48
|
+
source: e.sourceFile,
|
|
49
|
+
});
|
|
50
|
+
const packRoot = e.packageName
|
|
51
|
+
? inspection.packs.validPacks.find((p) => p.packageName === e.packageName)?.packageRoot
|
|
52
|
+
: undefined;
|
|
53
|
+
rejected.push({
|
|
54
|
+
file: nodePath.resolve(packRoot ?? inspection.projectRoot, e.sourceFile),
|
|
55
|
+
index: -1,
|
|
56
|
+
entryId: h.id,
|
|
57
|
+
reasons: [`id: "${h.id}" is a built-in helper — the built-in wins`],
|
|
58
|
+
cause: RejectionCause.DuplicateId,
|
|
59
|
+
});
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
seen.add(h.id);
|
|
63
|
+
entries.push({
|
|
64
|
+
id: h.id,
|
|
65
|
+
title: h.title,
|
|
66
|
+
description: h.description,
|
|
67
|
+
source: e.source,
|
|
68
|
+
...(e.packageName ? { packageName: e.packageName } : {}),
|
|
69
|
+
sourceFile: e.sourceFile,
|
|
70
|
+
destructive: h.safety.destructivePotential === true,
|
|
71
|
+
requiresHumanReview: h.safety.requiresHumanReview === true,
|
|
72
|
+
requiresProfile: h.safety.requiresProfile === true,
|
|
73
|
+
outputKind: h.safety.outputKind,
|
|
74
|
+
variables: (h.variables ?? []).map((v) => ({
|
|
75
|
+
name: v.name,
|
|
76
|
+
required: v.required,
|
|
77
|
+
description: v.description,
|
|
78
|
+
...(v.defaultValue !== undefined ? { defaultValue: v.defaultValue } : {}),
|
|
79
|
+
})),
|
|
80
|
+
operations: h.operations ?? [],
|
|
81
|
+
manualChecklist: h.manualChecklist ?? [],
|
|
82
|
+
tags: h.tags ?? [],
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
return { entries, issues, files: loaded.files, rejected };
|
|
86
|
+
}
|
|
87
|
+
/** One helper by id, from the same catalog `helper list` prints. */
|
|
88
|
+
export async function findHelper(inspection, id) {
|
|
89
|
+
const catalog = await listAllHelpers(inspection);
|
|
90
|
+
return catalog.entries.find((h) => h.id === id) ?? null;
|
|
91
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helper-registry.d.ts","sourceRoot":"","sources":["../src/helper-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,QAAQ,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpF;AAED,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,iBAAiB,CAAqB,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,GAAG,cAAc,GAAG,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,2BAA2B,CAAC;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,yBAAyB,eAAe,CAAC;AAEtD,UAAU,iBAAiB;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAItE;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAET;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"helper-registry.d.ts","sourceRoot":"","sources":["../src/helper-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,QAAQ,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpF;AAED,eAAO,MAAM,OAAO,EAAE,aAAa,CAAC,iBAAiB,CAAqB,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,GAAG,cAAc,GAAG,eAAe,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,2BAA2B,CAAC;IACpC,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,SAAS,aAAa,EAAE,CAAC;IAC9B,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,WAAW,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAED,eAAO,MAAM,yBAAyB,eAAe,CAAC;AAEtD,UAAU,iBAAiB;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAItE;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAET;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAoB9D"}
|
package/dist/helper-registry.js
CHANGED
|
@@ -23,6 +23,22 @@ export function renderHelperPlanText(plan) {
|
|
|
23
23
|
const lines = [];
|
|
24
24
|
lines.push(`Helper plan: ${String(plan.helperId)}`);
|
|
25
25
|
lines.push(`Ops: ${plan.ops.length}`);
|
|
26
|
+
for (const op of plan.ops) {
|
|
27
|
+
const where = op.anchor ? ` (anchor ${JSON.stringify(op.anchor)})` : op.fromPattern ? ` (find ${JSON.stringify(op.fromPattern)})` : '';
|
|
28
|
+
lines.push(` • ${op.kind} ${op.targetPath}${where}`);
|
|
29
|
+
if (op.snippet !== undefined) {
|
|
30
|
+
for (const l of (op.snippet.length > 0 ? op.snippet : '(empty — removes the match)').split('\n')) {
|
|
31
|
+
lines.push(` ${l}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (plan.manualSteps.length > 0) {
|
|
36
|
+
lines.push(`Manual steps: ${plan.manualSteps.length}`);
|
|
37
|
+
for (const s of plan.manualSteps)
|
|
38
|
+
lines.push(` • ${s.description}`);
|
|
39
|
+
}
|
|
26
40
|
lines.push(`Conflicts: ${plan.conflicts.length}`);
|
|
27
|
-
|
|
41
|
+
for (const c of plan.conflicts)
|
|
42
|
+
lines.push(` ! ${c}`);
|
|
43
|
+
return lines.join('\n') + '\n';
|
|
28
44
|
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { IPackHelperOperationInput } from '@shrkcrft/plugin-api';
|
|
2
|
+
/**
|
|
3
|
+
* One helper as every helper surface shows it — built-in (`HELPERS`) and
|
|
4
|
+
* pack/local-contributed (`helperFiles[]`) alike. `helper list|get|plan|doctor`
|
|
5
|
+
* and the MCP helper tools all read this one shape from `listAllHelpers`, so
|
|
6
|
+
* "which helpers exist" has one answer.
|
|
7
|
+
*/
|
|
8
|
+
export interface IHelperView {
|
|
9
|
+
readonly id: string;
|
|
10
|
+
readonly title: string;
|
|
11
|
+
readonly description: string;
|
|
12
|
+
/** Where the helper came from. */
|
|
13
|
+
readonly source: 'builtin' | 'local' | 'pack' | 'fixture';
|
|
14
|
+
readonly packageName?: string;
|
|
15
|
+
/** Pack-relative (pack) or project-relative (local) file the helper was loaded from. */
|
|
16
|
+
readonly sourceFile?: string;
|
|
17
|
+
/** From `safety.destructivePotential` (pack) / `destructive` (builtin). */
|
|
18
|
+
readonly destructive: boolean;
|
|
19
|
+
readonly requiresHumanReview: boolean;
|
|
20
|
+
readonly requiresProfile: boolean;
|
|
21
|
+
readonly outputKind: 'preview' | 'plan' | 'checklist';
|
|
22
|
+
readonly variables: readonly {
|
|
23
|
+
readonly name: string;
|
|
24
|
+
readonly required: boolean;
|
|
25
|
+
readonly description: string;
|
|
26
|
+
readonly defaultValue?: string;
|
|
27
|
+
}[];
|
|
28
|
+
/** Declarative operations (pack helpers); empty for builtins. */
|
|
29
|
+
readonly operations: readonly IPackHelperOperationInput[];
|
|
30
|
+
readonly manualChecklist: readonly string[];
|
|
31
|
+
readonly tags: readonly string[];
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=helper-view.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper-view.d.ts","sourceRoot":"","sources":["../src/helper-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,wFAAwF;IACxF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,SAAS;QAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;QAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;KAChC,EAAE,CAAC;IACJ,iEAAiE;IACjE,QAAQ,CAAC,UAAU,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC1D,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CAClC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The flags an asset doctor's proposal reads (round 13) — `registrations
|
|
3
|
+
* doctor`, `scaffolds doctor`, `search tuning doctor`, `self-config
|
|
4
|
+
* doctor|report` and their MCP twins (which pass both `false`).
|
|
5
|
+
*/
|
|
6
|
+
export interface IAssetDoctorFlags {
|
|
7
|
+
/**
|
|
8
|
+
* `--strict`: a warning issue fails (1). It never promotes a went-live
|
|
9
|
+
* `expectEmpty` marker — only `check boundaries`, where `--strict` is already
|
|
10
|
+
* the warning promoter for selector units, does that.
|
|
11
|
+
*/
|
|
12
|
+
readonly strict: boolean;
|
|
13
|
+
/** `--fail-on-dead-units`: a dead selector unit, or a stale LOCAL `expectEmpty` marker, fails (1). */
|
|
14
|
+
readonly failOnDeadUnits: boolean;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=i-asset-doctor-flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i-asset-doctor-flags.d.ts","sourceRoot":"","sources":["../src/i-asset-doctor-flags.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,sGAAsG;IACtG,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CommandResolutionStatus } from './command-resolution-status.js';
|
|
2
|
+
/**
|
|
3
|
+
* The answer to "does this command string resolve?" — produced by the CLI's
|
|
4
|
+
* command-string resolver and read by every inspector consumer through
|
|
5
|
+
* `resolveCommandReference`.
|
|
6
|
+
*/
|
|
7
|
+
export interface ICommandResolution {
|
|
8
|
+
readonly status: CommandResolutionStatus;
|
|
9
|
+
/**
|
|
10
|
+
* Nearest real alternatives (full command strings, e.g. `shrk check wiring`
|
|
11
|
+
* or `bun run test`), best first. Present on the unknown-* statuses when
|
|
12
|
+
* something is close enough to suggest.
|
|
13
|
+
*/
|
|
14
|
+
readonly closest?: readonly string[];
|
|
15
|
+
/** The proven shrk command path (`check wiring`), when a verb chain matched. */
|
|
16
|
+
readonly matched?: string;
|
|
17
|
+
/** The `&&` / `;` / `|` segment that decided the status, for multi-command strings. */
|
|
18
|
+
readonly segment?: string;
|
|
19
|
+
/** One-line human explanation of the status. */
|
|
20
|
+
readonly reason?: string;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=i-command-resolution.d.ts.map
|