@shrkcrft/inspector 0.1.0-alpha.30 → 0.1.0-alpha.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/acceptance-replay.js +1 -1
- package/dist/agent-contract-templates.js +6 -6
- package/dist/agent-contract.d.ts.map +1 -1
- package/dist/agent-contract.js +13 -8
- package/dist/agent-orchestration.js +2 -2
- package/dist/agent-task-prep.d.ts +16 -0
- package/dist/agent-task-prep.d.ts.map +1 -1
- package/dist/agent-task-prep.js +51 -4
- package/dist/ai-readiness.d.ts.map +1 -1
- package/dist/ai-readiness.js +21 -3
- package/dist/architecture-map.d.ts +16 -0
- package/dist/architecture-map.d.ts.map +1 -1
- package/dist/architecture-map.js +42 -26
- package/dist/area-explore.d.ts +2 -2
- package/dist/area-explore.d.ts.map +1 -1
- package/dist/area-explore.js +36 -16
- package/dist/area-map.d.ts +56 -11
- package/dist/area-map.d.ts.map +1 -1
- package/dist/area-map.js +106 -25
- package/dist/asset-doctor-proposed-exit.d.ts +21 -0
- package/dist/asset-doctor-proposed-exit.d.ts.map +1 -0
- package/dist/asset-doctor-proposed-exit.js +22 -0
- package/dist/asset-provenance.js +1 -1
- package/dist/boundaries-changed-only.d.ts +24 -1
- package/dist/boundaries-changed-only.d.ts.map +1 -1
- package/dist/boundaries-changed-only.js +12 -2
- package/dist/boundary-check-options.model.d.ts +40 -0
- package/dist/boundary-check-options.model.d.ts.map +1 -0
- package/dist/boundary-check-options.model.js +1 -0
- package/dist/boundary-check-result.model.d.ts +89 -0
- package/dist/boundary-check-result.model.d.ts.map +1 -0
- package/dist/boundary-check-result.model.js +1 -0
- package/dist/boundary-configuration-status.d.ts +38 -0
- package/dist/boundary-configuration-status.d.ts.map +1 -0
- package/dist/boundary-configuration-status.js +118 -0
- package/dist/boundary-configuration-status.model.d.ts +37 -0
- package/dist/boundary-configuration-status.model.d.ts.map +1 -0
- package/dist/boundary-configuration-status.model.js +1 -0
- package/dist/boundary-load-issue.model.d.ts +30 -0
- package/dist/boundary-load-issue.model.d.ts.map +1 -0
- package/dist/boundary-load-issue.model.js +1 -0
- package/dist/boundary-rule-check.model.d.ts +44 -0
- package/dist/boundary-rule-check.model.d.ts.map +1 -0
- package/dist/boundary-rule-check.model.js +1 -0
- package/dist/boundary-rule-invalidation.model.d.ts +31 -0
- package/dist/boundary-rule-invalidation.model.d.ts.map +1 -0
- package/dist/boundary-rule-invalidation.model.js +1 -0
- package/dist/boundary-rule-set-diff.model.d.ts +75 -0
- package/dist/boundary-rule-set-diff.model.d.ts.map +1 -0
- package/dist/boundary-rule-set-diff.model.js +1 -0
- package/dist/boundary-rule-sources.d.ts +28 -0
- package/dist/boundary-rule-sources.d.ts.map +1 -0
- package/dist/boundary-rule-sources.js +110 -0
- package/dist/boundary-stale-exception-finding.model.d.ts +12 -0
- package/dist/boundary-stale-exception-finding.model.d.ts.map +1 -0
- package/dist/boundary-stale-exception-finding.model.js +1 -0
- package/dist/boundary-unit-liveness.d.ts +35 -0
- package/dist/boundary-unit-liveness.d.ts.map +1 -0
- package/dist/boundary-unit-liveness.js +71 -0
- package/dist/change-intent.d.ts +3 -0
- package/dist/change-intent.d.ts.map +1 -1
- package/dist/change-intent.js +61 -27
- package/dist/changes-summary.d.ts.map +1 -1
- package/dist/changes-summary.js +19 -9
- package/dist/ci-integrity-report.js +1 -1
- package/dist/ci-predict.d.ts.map +1 -1
- package/dist/ci-predict.js +38 -5
- package/dist/code-intelligence-doctor.d.ts +6 -0
- package/dist/code-intelligence-doctor.d.ts.map +1 -1
- package/dist/code-intelligence-doctor.js +22 -7
- package/dist/command-recommender.d.ts +45 -2
- package/dist/command-recommender.d.ts.map +1 -1
- package/dist/command-recommender.js +41 -263
- package/dist/command-resolution-status.d.ts +44 -0
- package/dist/command-resolution-status.d.ts.map +1 -0
- package/dist/command-resolution-status.js +44 -0
- package/dist/command-safety-level.d.ts +15 -0
- package/dist/command-safety-level.d.ts.map +1 -0
- package/dist/command-safety-level.js +43 -0
- package/dist/command-taxonomy.js +1 -1
- package/dist/compliance-evidence.js +1 -1
- package/dist/compliance-profiles.js +1 -1
- package/dist/construct-registry.d.ts +40 -0
- package/dist/construct-registry.d.ts.map +1 -1
- package/dist/construct-registry.js +186 -82
- package/dist/context-tuning.d.ts +4 -0
- package/dist/context-tuning.d.ts.map +1 -1
- package/dist/context-tuning.js +10 -7
- package/dist/contract-template-registry.d.ts +10 -0
- package/dist/contract-template-registry.d.ts.map +1 -1
- package/dist/contract-template-registry.js +59 -33
- package/dist/contribution-kind.d.ts +52 -0
- package/dist/contribution-kind.d.ts.map +1 -0
- package/dist/contribution-kind.js +52 -0
- package/dist/contribution-load-failures.d.ts +106 -0
- package/dist/contribution-load-failures.d.ts.map +1 -0
- package/dist/contribution-load-failures.js +575 -0
- package/dist/contributions-report.d.ts +28 -0
- package/dist/contributions-report.d.ts.map +1 -0
- package/dist/contributions-report.js +242 -0
- package/dist/convention-registry.d.ts +22 -0
- package/dist/convention-registry.d.ts.map +1 -1
- package/dist/convention-registry.js +79 -39
- package/dist/coverage-report.d.ts.map +1 -1
- package/dist/coverage-report.js +6 -6
- package/dist/custom-checks.d.ts +60 -1
- package/dist/custom-checks.d.ts.map +1 -1
- package/dist/custom-checks.js +159 -6
- package/dist/dashboard/dashboard-data.d.ts +6 -0
- package/dist/dashboard/dashboard-data.d.ts.map +1 -1
- package/dist/dashboard/dashboard-data.js +99 -8
- package/dist/dashboard/dashboard-knowledge.d.ts.map +1 -1
- package/dist/dashboard/dashboard-knowledge.js +14 -2
- package/dist/decision-records.d.ts +20 -0
- package/dist/decision-records.d.ts.map +1 -1
- package/dist/decision-records.js +68 -20
- package/dist/declared-cross-references.d.ts +61 -0
- package/dist/declared-cross-references.d.ts.map +1 -0
- package/dist/declared-cross-references.js +550 -0
- package/dist/declared-gate-plane-rules.d.ts +24 -0
- package/dist/declared-gate-plane-rules.d.ts.map +1 -0
- package/dist/declared-gate-plane-rules.js +39 -0
- package/dist/declared-reference-coverage.d.ts +27 -0
- package/dist/declared-reference-coverage.d.ts.map +1 -0
- package/dist/declared-reference-coverage.js +50 -0
- package/dist/declared-xref-status.d.ts +19 -0
- package/dist/declared-xref-status.d.ts.map +1 -0
- package/dist/declared-xref-status.js +19 -0
- package/dist/delegate-pack-recipes.d.ts +13 -2
- package/dist/delegate-pack-recipes.d.ts.map +1 -1
- package/dist/delegate-pack-recipes.js +45 -14
- package/dist/demo-package.js +2 -2
- package/dist/demo-script.js +2 -2
- package/dist/demo-workflow.js +3 -3
- package/dist/dev-cycle.js +1 -1
- package/dist/dev-session.js +1 -1
- package/dist/doc-references.d.ts +23 -2
- package/dist/doc-references.d.ts.map +1 -1
- package/dist/doc-references.js +96 -17
- package/dist/doctor-result.d.ts +8 -0
- package/dist/doctor-result.d.ts.map +1 -1
- package/dist/doctor-verdict-kind.d.ts +19 -0
- package/dist/doctor-verdict-kind.d.ts.map +1 -0
- package/dist/doctor-verdict-kind.js +19 -0
- package/dist/doctor-verdict.d.ts +18 -0
- package/dist/doctor-verdict.d.ts.map +1 -0
- package/dist/doctor-verdict.js +28 -0
- package/dist/drift.d.ts +17 -0
- package/dist/drift.d.ts.map +1 -1
- package/dist/drift.js +40 -10
- package/dist/entrypoint-matrix.d.ts.map +1 -1
- package/dist/entrypoint-matrix.js +4 -1
- package/dist/feedback-ingestion.d.ts +28 -2
- package/dist/feedback-ingestion.d.ts.map +1 -1
- package/dist/feedback-ingestion.js +68 -19
- package/dist/fix-preview.d.ts.map +1 -1
- package/dist/fix-preview.js +9 -5
- package/dist/framework-extractor-outcomes.d.ts +27 -0
- package/dist/framework-extractor-outcomes.d.ts.map +1 -0
- package/dist/framework-extractor-outcomes.js +83 -0
- package/dist/fuzzy-impact.js +1 -1
- package/dist/healing-plan.d.ts.map +1 -1
- package/dist/healing-plan.js +3 -4
- package/dist/helper-catalog.d.ts +25 -0
- package/dist/helper-catalog.d.ts.map +1 -0
- package/dist/helper-catalog.js +91 -0
- package/dist/helper-registry.d.ts.map +1 -1
- package/dist/helper-registry.js +17 -1
- package/dist/helper-view.d.ts +33 -0
- package/dist/helper-view.d.ts.map +1 -0
- package/dist/helper-view.js +1 -0
- package/dist/i-asset-doctor-flags.d.ts +16 -0
- package/dist/i-asset-doctor-flags.d.ts.map +1 -0
- package/dist/i-asset-doctor-flags.js +1 -0
- package/dist/i-command-resolution.d.ts +22 -0
- package/dist/i-command-resolution.d.ts.map +1 -0
- package/dist/i-command-resolution.js +1 -0
- package/dist/i-command-resolve-options.d.ts +24 -0
- package/dist/i-command-resolve-options.d.ts.map +1 -0
- package/dist/i-command-resolve-options.js +1 -0
- package/dist/i-command-safety.d.ts +13 -0
- package/dist/i-command-safety.d.ts.map +1 -0
- package/dist/i-command-safety.js +1 -0
- package/dist/i-contribution-accepted-entry.d.ts +18 -0
- package/dist/i-contribution-accepted-entry.d.ts.map +1 -0
- package/dist/i-contribution-accepted-entry.js +1 -0
- package/dist/i-contribution-entry-rejection.d.ts +21 -0
- package/dist/i-contribution-entry-rejection.d.ts.map +1 -0
- package/dist/i-contribution-entry-rejection.js +1 -0
- package/dist/i-contribution-file-issue.d.ts +18 -0
- package/dist/i-contribution-file-issue.d.ts.map +1 -0
- package/dist/i-contribution-file-issue.js +1 -0
- package/dist/i-contribution-file-report.d.ts +40 -0
- package/dist/i-contribution-file-report.d.ts.map +1 -0
- package/dist/i-contribution-file-report.js +1 -0
- package/dist/i-contribution-file-validation.d.ts +24 -0
- package/dist/i-contribution-file-validation.d.ts.map +1 -0
- package/dist/i-contribution-file-validation.js +1 -0
- package/dist/i-contributions-report.d.ts +31 -0
- package/dist/i-contributions-report.d.ts.map +1 -0
- package/dist/i-contributions-report.js +1 -0
- package/dist/i-declared-xref-field.d.ts +25 -0
- package/dist/i-declared-xref-field.d.ts.map +1 -0
- package/dist/i-declared-xref-field.js +1 -0
- package/dist/i-declared-xref-issue.d.ts +25 -0
- package/dist/i-declared-xref-issue.d.ts.map +1 -0
- package/dist/i-declared-xref-issue.js +1 -0
- package/dist/i-declared-xref-report.d.ts +48 -0
- package/dist/i-declared-xref-report.d.ts.map +1 -0
- package/dist/i-declared-xref-report.js +1 -0
- package/dist/i-declared-xref-row.d.ts +29 -0
- package/dist/i-declared-xref-row.d.ts.map +1 -0
- package/dist/i-declared-xref-row.js +1 -0
- package/dist/i-doctor-verdict.d.ts +10 -0
- package/dist/i-doctor-verdict.d.ts.map +1 -0
- package/dist/i-doctor-verdict.js +1 -0
- package/dist/i-kind-outcomes.d.ts +13 -0
- package/dist/i-kind-outcomes.d.ts.map +1 -0
- package/dist/i-kind-outcomes.js +1 -0
- package/dist/i-pack-doctor-verdict.d.ts +15 -0
- package/dist/i-pack-doctor-verdict.d.ts.map +1 -0
- package/dist/i-pack-doctor-verdict.js +1 -0
- package/dist/i-probed-id-field.d.ts +17 -0
- package/dist/i-probed-id-field.d.ts.map +1 -0
- package/dist/i-probed-id-field.js +1 -0
- package/dist/i-reference-kind-declaration.d.ts +38 -0
- package/dist/i-reference-kind-declaration.d.ts.map +1 -0
- package/dist/i-reference-kind-declaration.js +1 -0
- package/dist/i-reference-warm-options.d.ts +21 -0
- package/dist/i-reference-warm-options.d.ts.map +1 -0
- package/dist/i-reference-warm-options.js +1 -0
- package/dist/i-registry-outcomes.d.ts +16 -0
- package/dist/i-registry-outcomes.d.ts.map +1 -0
- package/dist/i-registry-outcomes.js +1 -0
- package/dist/i-scaffold-pattern-doctor-report.d.ts +35 -0
- package/dist/i-scaffold-pattern-doctor-report.d.ts.map +1 -0
- package/dist/i-scaffold-pattern-doctor-report.js +1 -0
- package/dist/i-search-tuning-key-probe.d.ts +30 -0
- package/dist/i-search-tuning-key-probe.d.ts.map +1 -0
- package/dist/i-search-tuning-key-probe.js +1 -0
- package/dist/i-search-tuning-lint-issue.d.ts +61 -0
- package/dist/i-search-tuning-lint-issue.d.ts.map +1 -0
- package/dist/i-search-tuning-lint-issue.js +1 -0
- package/dist/i-search-tuning-lint-report.d.ts +38 -0
- package/dist/i-search-tuning-lint-report.d.ts.map +1 -0
- package/dist/i-search-tuning-lint-report.js +1 -0
- package/dist/i-unresolvable-reference-scan.d.ts +14 -0
- package/dist/i-unresolvable-reference-scan.d.ts.map +1 -0
- package/dist/i-unresolvable-reference-scan.js +1 -0
- package/dist/i-unresolvable-reference.d.ts +29 -0
- package/dist/i-unresolvable-reference.d.ts.map +1 -0
- package/dist/i-unresolvable-reference.js +1 -0
- package/dist/i-workspace-profile-payload.d.ts +12 -0
- package/dist/i-workspace-profile-payload.d.ts.map +1 -0
- package/dist/i-workspace-profile-payload.js +1 -0
- package/dist/impact-analysis.d.ts +15 -0
- package/dist/impact-analysis.d.ts.map +1 -1
- package/dist/impact-analysis.js +58 -13
- package/dist/impact-render.d.ts.map +1 -1
- package/dist/impact-render.js +22 -0
- package/dist/import-hygiene.d.ts +35 -1
- package/dist/import-hygiene.d.ts.map +1 -1
- package/dist/import-hygiene.js +107 -13
- package/dist/index.d.ts +141 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +172 -0
- package/dist/inspection-discovery.d.ts +45 -0
- package/dist/inspection-discovery.d.ts.map +1 -0
- package/dist/inspection-discovery.js +70 -0
- package/dist/knowledge-advisory-code.d.ts +17 -0
- package/dist/knowledge-advisory-code.d.ts.map +1 -0
- package/dist/knowledge-advisory-code.js +17 -0
- package/dist/knowledge-aged-entry.d.ts +10 -0
- package/dist/knowledge-aged-entry.d.ts.map +1 -0
- package/dist/knowledge-aged-entry.js +1 -0
- package/dist/knowledge-authoring.d.ts +24 -1
- package/dist/knowledge-authoring.d.ts.map +1 -1
- package/dist/knowledge-authoring.js +46 -7
- package/dist/knowledge-entry-verdict-record.d.ts +22 -0
- package/dist/knowledge-entry-verdict-record.d.ts.map +1 -0
- package/dist/knowledge-entry-verdict-record.js +1 -0
- package/dist/knowledge-entry-verdict.d.ts +17 -0
- package/dist/knowledge-entry-verdict.d.ts.map +1 -0
- package/dist/knowledge-entry-verdict.js +17 -0
- package/dist/knowledge-graph.d.ts +6 -0
- package/dist/knowledge-graph.d.ts.map +1 -1
- package/dist/knowledge-graph.js +18 -7
- package/dist/knowledge-kind-bucket.d.ts +19 -0
- package/dist/knowledge-kind-bucket.d.ts.map +1 -0
- package/dist/knowledge-kind-bucket.js +1 -0
- package/dist/knowledge-load-failure.d.ts +23 -0
- package/dist/knowledge-load-failure.d.ts.map +1 -0
- package/dist/knowledge-load-failure.js +1 -0
- package/dist/knowledge-reference-kind-bucket.d.ts +11 -0
- package/dist/knowledge-reference-kind-bucket.d.ts.map +1 -0
- package/dist/knowledge-reference-kind-bucket.js +1 -0
- package/dist/knowledge-stale-advisory.d.ts +14 -0
- package/dist/knowledge-stale-advisory.d.ts.map +1 -0
- package/dist/knowledge-stale-advisory.js +1 -0
- package/dist/knowledge-stale-coverage.d.ts +19 -0
- package/dist/knowledge-stale-coverage.d.ts.map +1 -0
- package/dist/knowledge-stale-coverage.js +1 -0
- package/dist/knowledge-stale-gate-flags.d.ts +33 -0
- package/dist/knowledge-stale-gate-flags.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-flags.js +1 -0
- package/dist/knowledge-stale-gate-input.d.ts +46 -0
- package/dist/knowledge-stale-gate-input.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-input.js +1 -0
- package/dist/knowledge-stale-gate-result.d.ts +33 -0
- package/dist/knowledge-stale-gate-result.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-result.js +1 -0
- package/dist/knowledge-stale-gate-rule.d.ts +33 -0
- package/dist/knowledge-stale-gate-rule.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-rule.js +1 -0
- package/dist/knowledge-stale-gate-violation.d.ts +13 -0
- package/dist/knowledge-stale-gate-violation.d.ts.map +1 -0
- package/dist/knowledge-stale-gate-violation.js +1 -0
- package/dist/knowledge-stale-gate.d.ts +83 -0
- package/dist/knowledge-stale-gate.d.ts.map +1 -0
- package/dist/knowledge-stale-gate.js +429 -0
- package/dist/knowledge-stale-quality-gate.d.ts +26 -0
- package/dist/knowledge-stale-quality-gate.d.ts.map +1 -0
- package/dist/knowledge-stale-quality-gate.js +110 -0
- package/dist/knowledge-stale.d.ts +122 -9
- package/dist/knowledge-stale.d.ts.map +1 -1
- package/dist/knowledge-stale.js +996 -291
- package/dist/knowledge-unverifiable-reason.d.ts +12 -0
- package/dist/knowledge-unverifiable-reason.d.ts.map +1 -0
- package/dist/knowledge-unverifiable-reason.js +12 -0
- package/dist/loader-diagnostics.d.ts +14 -2
- package/dist/loader-diagnostics.d.ts.map +1 -1
- package/dist/match-terms.d.ts +48 -0
- package/dist/match-terms.d.ts.map +1 -0
- package/dist/match-terms.js +155 -0
- package/dist/migration-profile-registry.d.ts +10 -0
- package/dist/migration-profile-registry.d.ts.map +1 -1
- package/dist/migration-profile-registry.js +57 -34
- package/dist/migration-readiness.d.ts.map +1 -1
- package/dist/migration-readiness.js +1 -3
- package/dist/nearest-id.d.ts +10 -26
- package/dist/nearest-id.d.ts.map +1 -1
- package/dist/nearest-id.js +9 -59
- package/dist/pack-asset-freshness.d.ts +65 -0
- package/dist/pack-asset-freshness.d.ts.map +1 -0
- package/dist/pack-asset-freshness.js +340 -0
- package/dist/pack-author-ux.d.ts +24 -3
- package/dist/pack-author-ux.d.ts.map +1 -1
- package/dist/pack-author-ux.js +87 -93
- package/dist/pack-contributions-inventory.d.ts +79 -39
- package/dist/pack-contributions-inventory.d.ts.map +1 -1
- package/dist/pack-contributions-inventory.js +443 -286
- package/dist/pack-doctor-verdict.d.ts +29 -0
- package/dist/pack-doctor-verdict.d.ts.map +1 -0
- package/dist/pack-doctor-verdict.js +45 -0
- package/dist/pack-doctor.d.ts +74 -1
- package/dist/pack-doctor.d.ts.map +1 -1
- package/dist/pack-doctor.js +281 -1
- package/dist/pack-helper-plan.d.ts +24 -0
- package/dist/pack-helper-plan.d.ts.map +1 -0
- package/dist/pack-helper-plan.js +77 -0
- package/dist/pack-helper-registry.d.ts +14 -0
- package/dist/pack-helper-registry.d.ts.map +1 -1
- package/dist/pack-helper-registry.js +76 -37
- package/dist/pack-manifest-reader.d.ts +8 -0
- package/dist/pack-manifest-reader.d.ts.map +1 -0
- package/dist/pack-manifest-reader.js +79 -0
- package/dist/pack-release-check.d.ts +14 -1
- package/dist/pack-release-check.d.ts.map +1 -1
- package/dist/pack-release-check.js +23 -1
- package/dist/pack-signature-status.d.ts +18 -6
- package/dist/pack-signature-status.d.ts.map +1 -1
- package/dist/pack-signature-status.js +59 -105
- package/dist/pack-test-runner.d.ts +27 -5
- package/dist/pack-test-runner.d.ts.map +1 -1
- package/dist/pack-test-runner.js +91 -35
- package/dist/pack-typecheck.d.ts +8 -0
- package/dist/pack-typecheck.d.ts.map +1 -0
- package/dist/pack-typecheck.js +76 -0
- package/dist/plan-review.d.ts +2 -0
- package/dist/plan-review.d.ts.map +1 -1
- package/dist/plan-review.js +17 -5
- package/dist/plan-simulation.d.ts.map +1 -1
- package/dist/plan-simulation.js +16 -5
- package/dist/playbook-load-issue.d.ts +16 -0
- package/dist/playbook-load-issue.d.ts.map +1 -0
- package/dist/playbook-load-issue.js +1 -0
- package/dist/playbook-registry.d.ts +32 -1
- package/dist/playbook-registry.d.ts.map +1 -1
- package/dist/playbook-registry.js +144 -55
- package/dist/policy-declaration.d.ts +18 -0
- package/dist/policy-declaration.d.ts.map +1 -0
- package/dist/policy-declaration.js +1 -0
- package/dist/policy-engine.d.ts +8 -0
- package/dist/policy-engine.d.ts.map +1 -1
- package/dist/policy-engine.js +26 -9
- package/dist/policy-overrides.d.ts.map +1 -1
- package/dist/policy-overrides.js +4 -4
- package/dist/policy-registry.d.ts +27 -0
- package/dist/policy-registry.d.ts.map +1 -1
- package/dist/policy-registry.js +87 -20
- package/dist/probed-id-fields.d.ts +21 -0
- package/dist/probed-id-fields.d.ts.map +1 -0
- package/dist/probed-id-fields.js +25 -0
- package/dist/probed-id-source.d.ts +11 -0
- package/dist/probed-id-source.d.ts.map +1 -0
- package/dist/probed-id-source.js +11 -0
- package/dist/profile-registry.d.ts +25 -2
- package/dist/profile-registry.d.ts.map +1 -1
- package/dist/profile-registry.js +59 -6
- package/dist/quality-gate-examination.d.ts +15 -0
- package/dist/quality-gate-examination.d.ts.map +1 -0
- package/dist/quality-gate-examination.js +15 -0
- package/dist/quality-gate-row-status.d.ts +19 -0
- package/dist/quality-gate-row-status.d.ts.map +1 -0
- package/dist/quality-gate-row-status.js +28 -0
- package/dist/quality-gate-status.d.ts +16 -0
- package/dist/quality-gate-status.d.ts.map +1 -0
- package/dist/quality-gate-status.js +16 -0
- package/dist/quality-html.d.ts.map +1 -1
- package/dist/quality-html.js +14 -3
- package/dist/quality-report-coverage.d.ts +26 -0
- package/dist/quality-report-coverage.d.ts.map +1 -0
- package/dist/quality-report-coverage.js +48 -0
- package/dist/quality-report.d.ts +28 -1
- package/dist/quality-report.d.ts.map +1 -1
- package/dist/quality-report.js +263 -35
- package/dist/query-intent-kind.d.ts +18 -0
- package/dist/query-intent-kind.d.ts.map +1 -0
- package/dist/query-intent-kind.js +18 -0
- package/dist/query-intent-result.d.ts +23 -0
- package/dist/query-intent-result.d.ts.map +1 -0
- package/dist/query-intent-result.js +1 -0
- package/dist/query-intent.d.ts +18 -0
- package/dist/query-intent.d.ts.map +1 -0
- package/dist/query-intent.js +336 -0
- package/dist/query-resolver.d.ts +18 -0
- package/dist/query-resolver.d.ts.map +1 -1
- package/dist/query-resolver.js +7 -4
- package/dist/ranked-recommendations.d.ts +36 -0
- package/dist/ranked-recommendations.d.ts.map +1 -0
- package/dist/ranked-recommendations.js +1 -0
- package/dist/ranker-explainability.d.ts.map +1 -1
- package/dist/ranker-explainability.js +38 -10
- package/dist/recommend-recipe.d.ts +17 -0
- package/dist/recommend-recipe.d.ts.map +1 -0
- package/dist/recommend-recipe.js +1 -0
- package/dist/recommend-recipes.d.ts +9 -0
- package/dist/recommend-recipes.d.ts.map +1 -0
- package/dist/recommend-recipes.js +106 -0
- package/dist/recommendation-candidate.d.ts +30 -0
- package/dist/recommendation-candidate.d.ts.map +1 -0
- package/dist/recommendation-candidate.js +1 -0
- package/dist/recommendation-confidence.d.ts +27 -0
- package/dist/recommendation-confidence.d.ts.map +1 -0
- package/dist/recommendation-confidence.js +1 -0
- package/dist/recommendation-ranking-options.d.ts +24 -0
- package/dist/recommendation-ranking-options.d.ts.map +1 -0
- package/dist/recommendation-ranking-options.js +1 -0
- package/dist/recommendation-ranking.d.ts +50 -0
- package/dist/recommendation-ranking.d.ts.map +1 -0
- package/dist/recommendation-ranking.js +527 -0
- package/dist/recommendation-source.d.ts +23 -0
- package/dist/recommendation-source.d.ts.map +1 -0
- package/dist/recommendation-source.js +23 -0
- package/dist/recommendation-suppression.d.ts +14 -0
- package/dist/recommendation-suppression.d.ts.map +1 -0
- package/dist/recommendation-suppression.js +14 -0
- package/dist/reference-asset-kind.d.ts +14 -0
- package/dist/reference-asset-kind.d.ts.map +1 -0
- package/dist/reference-asset-kind.js +14 -0
- package/dist/reference-content-check.d.ts +32 -0
- package/dist/reference-content-check.d.ts.map +1 -0
- package/dist/reference-content-check.js +143 -0
- package/dist/reference-failure.d.ts +31 -0
- package/dist/reference-failure.d.ts.map +1 -0
- package/dist/reference-failure.js +31 -0
- package/dist/reference-id-status.d.ts +15 -0
- package/dist/reference-id-status.d.ts.map +1 -0
- package/dist/reference-id-status.js +15 -0
- package/dist/reference-kind-declarations.d.ts +42 -0
- package/dist/reference-kind-declarations.d.ts.map +1 -0
- package/dist/reference-kind-declarations.js +142 -0
- package/dist/reference-lookup.d.ts +6 -0
- package/dist/reference-lookup.d.ts.map +1 -1
- package/dist/reference-lookup.js +13 -5
- package/dist/reference-registry.d.ts +109 -11
- package/dist/reference-registry.d.ts.map +1 -1
- package/dist/reference-registry.js +186 -30
- package/dist/reference-subject.d.ts +20 -0
- package/dist/reference-subject.d.ts.map +1 -0
- package/dist/reference-subject.js +1 -0
- package/dist/registration-hint-discovery-status.d.ts +25 -0
- package/dist/registration-hint-discovery-status.d.ts.map +1 -0
- package/dist/registration-hint-discovery-status.js +25 -0
- package/dist/registration-hint-registry.d.ts +80 -0
- package/dist/registration-hint-registry.d.ts.map +1 -1
- package/dist/registration-hint-registry.js +356 -138
- package/dist/registry-lifecycle.d.ts +200 -19
- package/dist/registry-lifecycle.d.ts.map +1 -1
- package/dist/registry-lifecycle.js +526 -136
- package/dist/release-readiness.d.ts.map +1 -1
- package/dist/release-readiness.js +10 -7
- package/dist/release-smoke.d.ts.map +1 -1
- package/dist/release-smoke.js +11 -7
- package/dist/report-site.d.ts.map +1 -1
- package/dist/report-site.js +25 -7
- package/dist/repository-intelligence.d.ts.map +1 -1
- package/dist/repository-intelligence.js +3 -2
- package/dist/repository-knowledge-model.d.ts.map +1 -1
- package/dist/repository-knowledge-model.js +18 -5
- package/dist/resolve-project-config.d.ts +64 -0
- package/dist/resolve-project-config.d.ts.map +1 -1
- package/dist/resolve-project-config.js +240 -32
- package/dist/reuse/compute-reuse-coverage.d.ts +29 -0
- package/dist/reuse/compute-reuse-coverage.d.ts.map +1 -0
- package/dist/reuse/compute-reuse-coverage.js +198 -0
- package/dist/reuse/rank-reuse-candidates.d.ts +38 -0
- package/dist/reuse/rank-reuse-candidates.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-candidates.js +212 -0
- package/dist/reuse/rank-reuse-options.d.ts +20 -0
- package/dist/reuse/rank-reuse-options.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-options.js +1 -0
- package/dist/reuse/rank-reuse-suggestions.d.ts +15 -0
- package/dist/reuse/rank-reuse-suggestions.d.ts.map +1 -0
- package/dist/reuse/rank-reuse-suggestions.js +31 -0
- package/dist/reuse/resolve-curated-reuse.d.ts +43 -0
- package/dist/reuse/resolve-curated-reuse.d.ts.map +1 -0
- package/dist/reuse/resolve-curated-reuse.js +115 -0
- package/dist/reuse/reuse-candidate.d.ts +29 -0
- package/dist/reuse/reuse-candidate.d.ts.map +1 -0
- package/dist/reuse/reuse-candidate.js +1 -0
- package/dist/reuse/reuse-coverage-report.d.ts +74 -0
- package/dist/reuse/reuse-coverage-report.d.ts.map +1 -0
- package/dist/reuse/reuse-coverage-report.js +1 -0
- package/dist/reuse/reuse-curated-coverage.d.ts +36 -0
- package/dist/reuse/reuse-curated-coverage.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-coverage.js +1 -0
- package/dist/reuse/reuse-curated-resolution.d.ts +36 -0
- package/dist/reuse/reuse-curated-resolution.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-resolution.js +1 -0
- package/dist/reuse/reuse-curated-status.d.ts +21 -0
- package/dist/reuse/reuse-curated-status.d.ts.map +1 -0
- package/dist/reuse/reuse-curated-status.js +21 -0
- package/dist/reuse/reuse-match-detail.d.ts +15 -0
- package/dist/reuse/reuse-match-detail.d.ts.map +1 -0
- package/dist/reuse/reuse-match-detail.js +1 -0
- package/dist/reuse/reuse-ranking.d.ts +37 -0
- package/dist/reuse/reuse-ranking.d.ts.map +1 -0
- package/dist/reuse/reuse-ranking.js +1 -0
- package/dist/reuse/reuse-suggestion.d.ts +19 -0
- package/dist/reuse/reuse-suggestion.d.ts.map +1 -0
- package/dist/reuse/reuse-suggestion.js +1 -0
- package/dist/reuse/reuse-symbol-lookup.d.ts +28 -0
- package/dist/reuse/reuse-symbol-lookup.d.ts.map +1 -0
- package/dist/reuse/reuse-symbol-lookup.js +1 -0
- package/dist/reuse/reuse-tokenize.d.ts +11 -0
- package/dist/reuse/reuse-tokenize.d.ts.map +1 -0
- package/dist/reuse/reuse-tokenize.js +26 -0
- package/dist/reuse/score-reuse-name.d.ts +16 -0
- package/dist/reuse/score-reuse-name.d.ts.map +1 -0
- package/dist/reuse/score-reuse-name.js +35 -0
- package/dist/reuse/score-reuse-primitive.d.ts +33 -0
- package/dist/reuse/score-reuse-primitive.d.ts.map +1 -0
- package/dist/reuse/score-reuse-primitive.js +92 -0
- package/dist/review-packet.d.ts +2 -0
- package/dist/review-packet.d.ts.map +1 -1
- package/dist/review-packet.js +13 -6
- package/dist/role-views.d.ts.map +1 -1
- package/dist/role-views.js +16 -16
- package/dist/routing-recommends-channels.d.ts +24 -0
- package/dist/routing-recommends-channels.d.ts.map +1 -0
- package/dist/routing-recommends-channels.js +19 -0
- package/dist/run-boundary-check.d.ts +118 -0
- package/dist/run-boundary-check.d.ts.map +1 -0
- package/dist/run-boundary-check.js +592 -0
- package/dist/safety-audit.js +1 -1
- package/dist/scaffold-coverage.js +1 -1
- package/dist/scaffold-pattern-doctor-report.d.ts +19 -0
- package/dist/scaffold-pattern-doctor-report.d.ts.map +1 -0
- package/dist/scaffold-pattern-doctor-report.js +54 -0
- package/dist/scaffold-patterns.d.ts +75 -1
- package/dist/scaffold-patterns.d.ts.map +1 -1
- package/dist/scaffold-patterns.js +375 -84
- package/dist/schema-inventory.d.ts.map +1 -1
- package/dist/schema-inventory.js +4 -3
- package/dist/search-document-id.d.ts +52 -0
- package/dist/search-document-id.d.ts.map +1 -0
- package/dist/search-document-id.js +72 -0
- package/dist/search-document-prefix.d.ts +7 -0
- package/dist/search-document-prefix.d.ts.map +1 -0
- package/dist/search-document-prefix.js +1 -0
- package/dist/search-index.d.ts.map +1 -1
- package/dist/search-index.js +20 -23
- package/dist/search-tuning-explain.d.ts +6 -0
- package/dist/search-tuning-explain.d.ts.map +1 -1
- package/dist/search-tuning-explain.js +19 -17
- package/dist/search-tuning-key-probes.d.ts +16 -0
- package/dist/search-tuning-key-probes.d.ts.map +1 -0
- package/dist/search-tuning-key-probes.js +65 -0
- package/dist/search-tuning-key-resolution.d.ts +25 -0
- package/dist/search-tuning-key-resolution.d.ts.map +1 -0
- package/dist/search-tuning-key-resolution.js +1 -0
- package/dist/search-tuning-key-resolver.d.ts +4 -0
- package/dist/search-tuning-key-resolver.d.ts.map +1 -0
- package/dist/search-tuning-key-resolver.js +107 -0
- package/dist/search-tuning-key-status.d.ts +24 -0
- package/dist/search-tuning-key-status.d.ts.map +1 -0
- package/dist/search-tuning-key-status.js +24 -0
- package/dist/search-tuning-lint.d.ts +9 -0
- package/dist/search-tuning-lint.d.ts.map +1 -0
- package/dist/search-tuning-lint.js +468 -0
- package/dist/search-tuning-registry.d.ts +43 -0
- package/dist/search-tuning-registry.d.ts.map +1 -1
- package/dist/search-tuning-registry.js +214 -49
- package/dist/self-audit.d.ts +12 -0
- package/dist/self-audit.d.ts.map +1 -1
- package/dist/self-audit.js +36 -10
- package/dist/self-config-doctor-v2.d.ts +145 -3
- package/dist/self-config-doctor-v2.d.ts.map +1 -1
- package/dist/self-config-doctor-v2.js +1304 -181
- package/dist/self-config-doctor.d.ts +20 -1
- package/dist/self-config-doctor.d.ts.map +1 -1
- package/dist/self-config-doctor.js +53 -280
- package/dist/settled-unit-states.d.ts +9 -0
- package/dist/settled-unit-states.d.ts.map +1 -0
- package/dist/settled-unit-states.js +14 -0
- package/dist/sharkcraft-inspector.d.ts +34 -0
- package/dist/sharkcraft-inspector.d.ts.map +1 -1
- package/dist/sharkcraft-inspector.js +273 -26
- package/dist/spec/spec-evidence.d.ts.map +1 -1
- package/dist/spec/spec-evidence.js +14 -20
- package/dist/split-identifier.d.ts +21 -0
- package/dist/split-identifier.d.ts.map +1 -0
- package/dist/split-identifier.js +27 -0
- package/dist/start-here.d.ts.map +1 -1
- package/dist/start-here.js +1 -2
- package/dist/substitute-placeholders.d.ts +8 -0
- package/dist/substitute-placeholders.d.ts.map +1 -0
- package/dist/substitute-placeholders.js +9 -0
- package/dist/symbol-index.d.ts +33 -0
- package/dist/symbol-index.d.ts.map +1 -1
- package/dist/symbol-index.js +241 -3
- package/dist/symbol-member-entry.d.ts +26 -0
- package/dist/symbol-member-entry.d.ts.map +1 -0
- package/dist/symbol-member-entry.js +1 -0
- package/dist/symbol-member-kind.d.ts +14 -0
- package/dist/symbol-member-kind.d.ts.map +1 -0
- package/dist/symbol-member-kind.js +14 -0
- package/dist/task-packet.d.ts.map +1 -1
- package/dist/task-packet.js +52 -9
- package/dist/task-ranker.d.ts +8 -0
- package/dist/task-ranker.d.ts.map +1 -1
- package/dist/task-ranker.js +25 -13
- package/dist/task-risk.js +1 -1
- package/dist/task-routing-hint-registry.d.ts +20 -1
- package/dist/task-routing-hint-registry.d.ts.map +1 -1
- package/dist/task-routing-hint-registry.js +186 -42
- package/dist/template-drift.d.ts.map +1 -1
- package/dist/template-drift.js +30 -9
- package/dist/template-lint.d.ts.map +1 -1
- package/dist/template-lint.js +160 -2
- package/dist/term-query.d.ts +10 -0
- package/dist/term-query.d.ts.map +1 -0
- package/dist/term-query.js +1 -0
- package/dist/test-definitions.d.ts +6 -3
- package/dist/test-definitions.d.ts.map +1 -1
- package/dist/test-runner.d.ts +95 -10
- package/dist/test-runner.d.ts.map +1 -1
- package/dist/test-runner.js +309 -308
- package/dist/tuning-query-tokens.d.ts +29 -0
- package/dist/tuning-query-tokens.d.ts.map +1 -0
- package/dist/tuning-query-tokens.js +51 -0
- package/dist/typecheck-files.d.ts +36 -0
- package/dist/typecheck-files.d.ts.map +1 -0
- package/dist/typecheck-files.js +158 -0
- package/dist/uncertainty.js +1 -1
- package/dist/universal-search.d.ts.map +1 -1
- package/dist/universal-search.js +5 -3
- package/dist/unregistered-exports.d.ts +19 -0
- package/dist/unregistered-exports.d.ts.map +1 -0
- package/dist/unregistered-exports.js +141 -0
- package/dist/unresolvable-reason.d.ts +11 -0
- package/dist/unresolvable-reason.d.ts.map +1 -0
- package/dist/unresolvable-reason.js +11 -0
- package/dist/upgrade-advisor.d.ts.map +1 -1
- package/dist/upgrade-advisor.js +16 -9
- package/dist/validate-contribution-file.d.ts +4 -0
- package/dist/validate-contribution-file.d.ts.map +1 -0
- package/dist/validate-contribution-file.js +228 -0
- package/dist/why-file.d.ts +3 -0
- package/dist/why-file.d.ts.map +1 -1
- package/dist/why-file.js +7 -3
- package/package.json +17 -17
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One row per prefix. `Record<SearchDocumentPrefix, …>` makes a prefix added
|
|
3
|
+
* to the type without a row here a compile error.
|
|
4
|
+
*/
|
|
5
|
+
const PREFIXES = Object.freeze({
|
|
6
|
+
knowledge: { referenceKind: 'knowledge', searchKind: 'knowledge' },
|
|
7
|
+
rule: { referenceKind: 'rule', searchKind: 'rule' },
|
|
8
|
+
path: { referenceKind: 'path-convention', searchKind: 'path' },
|
|
9
|
+
template: { referenceKind: 'template', searchKind: 'template' },
|
|
10
|
+
pipeline: { referenceKind: 'pipeline', searchKind: 'pipeline' },
|
|
11
|
+
boundary: { referenceKind: 'boundary-rule', searchKind: 'boundary' },
|
|
12
|
+
construct: { referenceKind: 'construct', searchKind: 'construct' },
|
|
13
|
+
playbook: { referenceKind: 'playbook', searchKind: 'playbook' },
|
|
14
|
+
// No id registry: presets, packs, bundles, sessions, construct facets and
|
|
15
|
+
// docs are indexed, but nothing answers "does this id exist?" for them, so a
|
|
16
|
+
// key naming one is UNVERIFIED — never "missing".
|
|
17
|
+
preset: { referenceKind: null, searchKind: 'preset' },
|
|
18
|
+
pack: { referenceKind: null, searchKind: 'pack' },
|
|
19
|
+
bundle: { referenceKind: null, searchKind: 'bundle' },
|
|
20
|
+
session: { referenceKind: null, searchKind: 'session' },
|
|
21
|
+
facet: { referenceKind: null, searchKind: 'construct-facet' },
|
|
22
|
+
doc: { referenceKind: null, searchKind: 'doc' },
|
|
23
|
+
});
|
|
24
|
+
/** Every search-document prefix, in declaration order. */
|
|
25
|
+
export const SEARCH_DOCUMENT_PREFIXES = Object.freeze(Object.keys(PREFIXES));
|
|
26
|
+
/** Prefix → the id registry its ids resolve against (`null` = none). */
|
|
27
|
+
export const SEARCH_DOCUMENT_ID_KINDS = Object.freeze(Object.fromEntries(SEARCH_DOCUMENT_PREFIXES.map((p) => [p, PREFIXES[p].referenceKind])));
|
|
28
|
+
/** `searchDocumentId('knowledge', 'auth.login')` → `knowledge:auth.login`. */
|
|
29
|
+
export function searchDocumentId(prefix, id) {
|
|
30
|
+
return `${prefix}:${id}`;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* `<prefix>:<id>` → `{ prefix, id }`, split on the FIRST `:`. `null` when the
|
|
34
|
+
* key has no `:` or either side is empty. The prefix is NOT validated — pair
|
|
35
|
+
* with {@link isSearchDocumentPrefix}.
|
|
36
|
+
*/
|
|
37
|
+
export function parseSearchDocumentId(key) {
|
|
38
|
+
const at = key.indexOf(':');
|
|
39
|
+
if (at <= 0 || at === key.length - 1)
|
|
40
|
+
return null;
|
|
41
|
+
return { prefix: key.slice(0, at), id: key.slice(at + 1) };
|
|
42
|
+
}
|
|
43
|
+
/** True when `prefix` is one `buildSearchIndex` emits. */
|
|
44
|
+
export function isSearchDocumentPrefix(prefix) {
|
|
45
|
+
return Object.prototype.hasOwnProperty.call(PREFIXES, prefix);
|
|
46
|
+
}
|
|
47
|
+
/** The `SearchKind` value the prefix's documents carry, or `undefined`. */
|
|
48
|
+
export function searchKindForPrefix(prefix) {
|
|
49
|
+
return isSearchDocumentPrefix(prefix) ? PREFIXES[prefix].searchKind : undefined;
|
|
50
|
+
}
|
|
51
|
+
/** The prefix whose documents carry `searchKind` (`construct-facet` → `facet`). */
|
|
52
|
+
export function searchDocumentPrefixForKind(searchKind) {
|
|
53
|
+
return SEARCH_DOCUMENT_PREFIXES.find((p) => PREFIXES[p].searchKind === searchKind);
|
|
54
|
+
}
|
|
55
|
+
/** The prefix whose ids live in `kind`'s registry (`path-convention` → `path`). */
|
|
56
|
+
export function searchDocumentPrefixForReferenceKind(kind) {
|
|
57
|
+
return SEARCH_DOCUMENT_PREFIXES.find((p) => PREFIXES[p].referenceKind === kind);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* The registry entry a search-document id names: `knowledge:gamma.entry` →
|
|
61
|
+
* `{ referenceKind: 'knowledge', id: 'gamma.entry' }`. `undefined` when the id
|
|
62
|
+
* does not parse, its prefix is not one the index emits, or its prefix has no
|
|
63
|
+
* id registry (`doc:`, `preset:`, `facet:`, …) — such a document exists, but
|
|
64
|
+
* no registry can be asked about it.
|
|
65
|
+
*/
|
|
66
|
+
export function searchDocumentReference(docId) {
|
|
67
|
+
const parsed = parseSearchDocumentId(docId);
|
|
68
|
+
if (!parsed || !isSearchDocumentPrefix(parsed.prefix))
|
|
69
|
+
return undefined;
|
|
70
|
+
const referenceKind = PREFIXES[parsed.prefix].referenceKind;
|
|
71
|
+
return referenceKind === null ? undefined : { referenceKind, id: parsed.id };
|
|
72
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Every `<prefix>` a search-document id (`<prefix>:<id>`) can carry — exactly
|
|
3
|
+
* the prefixes `buildSearchIndex` emits. See `search-document-id.ts`, the one
|
|
4
|
+
* codec for the format.
|
|
5
|
+
*/
|
|
6
|
+
export type SearchDocumentPrefix = 'knowledge' | 'rule' | 'path' | 'template' | 'pipeline' | 'preset' | 'pack' | 'boundary' | 'bundle' | 'session' | 'construct' | 'facet' | 'playbook' | 'doc';
|
|
7
|
+
//# sourceMappingURL=search-document-prefix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-document-prefix.d.ts","sourceRoot":"","sources":["../src/search-document-prefix.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAC5B,WAAW,GACX,MAAM,GACN,MAAM,GACN,UAAU,GACV,UAAU,GACV,QAAQ,GACR,MAAM,GACN,UAAU,GACV,QAAQ,GACR,SAAS,GACT,WAAW,GACX,OAAO,GACP,UAAU,GACV,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-index.d.ts","sourceRoot":"","sources":["../src/search-index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAKvE,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"search-index.d.ts","sourceRoot":"","sources":["../src/search-index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAKvE,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AAIrC,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAEhE,oBAAY,UAAU;IACpB,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,cAAc,oBAAoB;IAClC,QAAQ,aAAa;IACrB,eAAe,qBAAqB;IACpC,OAAO,YAAY;CACpB;AAED,oBAAY,YAAY;IACtB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,GAAG,QAAQ;CACZ;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,CAAC;IACpD,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,KAAK,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IAC9B,qCAAqC;IACrC,OAAO,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAClC,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+EAA+E;IAC/E,MAAM,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5B,OAAO,EAAE,WAAW,CAAC,UAAU,EAAE,SAAS,UAAU,EAAE,CAAC,CAAC;CACzD;AA0FD,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,EAAE,CAyNrF;AAmHD,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,OAAO,EAAE,cAAc,EACvB,UAAU,CAAC,EAAE,qBAAqB,GACjC,aAAa,CA8Df;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAe9D"}
|
package/dist/search-index.js
CHANGED
|
@@ -5,6 +5,8 @@ import { listDevSessionsDetailed } from "./dev-session.js";
|
|
|
5
5
|
import { listConstructs } from "./construct-registry.js";
|
|
6
6
|
import { listPlaybooks } from "./playbook-registry.js";
|
|
7
7
|
import { listSearchTuning, tuningBoostFor, } from "./search-tuning-registry.js";
|
|
8
|
+
import { searchDocumentId } from "./search-document-id.js";
|
|
9
|
+
import { tuningQueryTokens } from "./tuning-query-tokens.js";
|
|
8
10
|
export const SEARCH_INDEX_SCHEMA = 'sharkcraft.search-index/v1';
|
|
9
11
|
export var SearchKind;
|
|
10
12
|
(function (SearchKind) {
|
|
@@ -111,7 +113,7 @@ function loadDocFiles(projectRoot) {
|
|
|
111
113
|
const titleMatch = /^#\s+(.+)/m.exec(content);
|
|
112
114
|
const title = titleMatch?.[1]?.trim() ?? f.replace(/\.md$/, '');
|
|
113
115
|
out.push({
|
|
114
|
-
id:
|
|
116
|
+
id: searchDocumentId('doc', f),
|
|
115
117
|
kind: SearchKind.Doc,
|
|
116
118
|
title,
|
|
117
119
|
content: safeContent(content, 1200),
|
|
@@ -130,7 +132,7 @@ export function buildSearchIndex(inspection) {
|
|
|
130
132
|
for (const k of inspection.knowledgeEntries) {
|
|
131
133
|
const src = inspection.entrySources.get(k.id);
|
|
132
134
|
docs.push({
|
|
133
|
-
id:
|
|
135
|
+
id: searchDocumentId('knowledge', k.id),
|
|
134
136
|
kind: SearchKind.Knowledge,
|
|
135
137
|
title: k.title ?? k.id,
|
|
136
138
|
content: safeContent([k.summary ?? '', k.content ?? ''].filter(Boolean).join('\n\n'), 1200),
|
|
@@ -144,7 +146,7 @@ export function buildSearchIndex(inspection) {
|
|
|
144
146
|
}
|
|
145
147
|
for (const r of inspection.ruleService.list()) {
|
|
146
148
|
docs.push({
|
|
147
|
-
id:
|
|
149
|
+
id: searchDocumentId('rule', r.id),
|
|
148
150
|
kind: SearchKind.Rule,
|
|
149
151
|
title: r.title ?? r.id,
|
|
150
152
|
content: safeContent(r.summary ?? r.content ?? '', 800),
|
|
@@ -163,7 +165,7 @@ export function buildSearchIndex(inspection) {
|
|
|
163
165
|
for (const p of inspection.pathService.list()) {
|
|
164
166
|
const meta = (p.metadata ?? {});
|
|
165
167
|
docs.push({
|
|
166
|
-
id:
|
|
168
|
+
id: searchDocumentId('path', p.id),
|
|
167
169
|
kind: SearchKind.Path,
|
|
168
170
|
title: p.title ?? p.id,
|
|
169
171
|
content: safeContent(meta.description ?? p.summary ?? p.content ?? '', 400),
|
|
@@ -179,7 +181,7 @@ export function buildSearchIndex(inspection) {
|
|
|
179
181
|
for (const t of inspection.templateRegistry.list()) {
|
|
180
182
|
const src = inspection.templateSources.get(t.id);
|
|
181
183
|
docs.push({
|
|
182
|
-
id:
|
|
184
|
+
id: searchDocumentId('template', t.id),
|
|
183
185
|
kind: SearchKind.Template,
|
|
184
186
|
title: t.name ?? t.id,
|
|
185
187
|
content: safeContent(t.description ?? '', 800),
|
|
@@ -194,7 +196,7 @@ export function buildSearchIndex(inspection) {
|
|
|
194
196
|
for (const p of inspection.pipelineRegistry.list()) {
|
|
195
197
|
const src = inspection.pipelineSources.get(p.id);
|
|
196
198
|
docs.push({
|
|
197
|
-
id:
|
|
199
|
+
id: searchDocumentId('pipeline', p.id),
|
|
198
200
|
kind: SearchKind.Pipeline,
|
|
199
201
|
title: p.title ?? p.id,
|
|
200
202
|
content: safeContent(p.description ?? '', 800),
|
|
@@ -210,7 +212,7 @@ export function buildSearchIndex(inspection) {
|
|
|
210
212
|
for (const p of presets) {
|
|
211
213
|
const src = inspection.presetSources?.get(p.id);
|
|
212
214
|
docs.push({
|
|
213
|
-
id:
|
|
215
|
+
id: searchDocumentId('preset', p.id),
|
|
214
216
|
kind: SearchKind.Preset,
|
|
215
217
|
title: p.name ?? p.id,
|
|
216
218
|
content: safeContent(p.description ?? '', 400),
|
|
@@ -224,7 +226,7 @@ export function buildSearchIndex(inspection) {
|
|
|
224
226
|
}
|
|
225
227
|
for (const pack of inspection.packs.validPacks ?? []) {
|
|
226
228
|
docs.push({
|
|
227
|
-
id:
|
|
229
|
+
id: searchDocumentId('pack', pack.packageName),
|
|
228
230
|
kind: SearchKind.Pack,
|
|
229
231
|
title: pack.packageName,
|
|
230
232
|
content: safeContent(pack.manifest?.info?.description ?? '', 400),
|
|
@@ -238,7 +240,7 @@ export function buildSearchIndex(inspection) {
|
|
|
238
240
|
for (const r of inspection.boundaryRegistry.list()) {
|
|
239
241
|
const rb = r;
|
|
240
242
|
docs.push({
|
|
241
|
-
id:
|
|
243
|
+
id: searchDocumentId('boundary', r.id),
|
|
242
244
|
kind: SearchKind.Boundary,
|
|
243
245
|
title: rb.title ?? r.id,
|
|
244
246
|
content: safeContent(rb.description ?? rb.message ?? '', 400),
|
|
@@ -251,20 +253,12 @@ export function buildSearchIndex(inspection) {
|
|
|
251
253
|
},
|
|
252
254
|
});
|
|
253
255
|
}
|
|
254
|
-
// Policies (registered checks).
|
|
255
|
-
try {
|
|
256
|
-
const cfg = inspection.config;
|
|
257
|
-
void cfg;
|
|
258
|
-
}
|
|
259
|
-
catch {
|
|
260
|
-
/* ignore */
|
|
261
|
-
}
|
|
262
256
|
// Bundles, sessions.
|
|
263
257
|
try {
|
|
264
258
|
const bundles = listFeatureBundles(inspection.projectRoot);
|
|
265
259
|
for (const b of bundles) {
|
|
266
260
|
docs.push({
|
|
267
|
-
id:
|
|
261
|
+
id: searchDocumentId('bundle', b.id),
|
|
268
262
|
kind: SearchKind.Bundle,
|
|
269
263
|
title: b.task ?? b.id,
|
|
270
264
|
content: safeContent(b.task ?? '', 400),
|
|
@@ -280,7 +274,7 @@ export function buildSearchIndex(inspection) {
|
|
|
280
274
|
const sessions = listDevSessionsDetailed(inspection.projectRoot);
|
|
281
275
|
for (const s of sessions) {
|
|
282
276
|
docs.push({
|
|
283
|
-
id:
|
|
277
|
+
id: searchDocumentId('session', s.id),
|
|
284
278
|
kind: SearchKind.Session,
|
|
285
279
|
title: s.task || s.id,
|
|
286
280
|
source: SearchSource.Session,
|
|
@@ -296,7 +290,7 @@ export function buildSearchIndex(inspection) {
|
|
|
296
290
|
const constructs = listConstructs(inspection);
|
|
297
291
|
for (const c of constructs) {
|
|
298
292
|
docs.push({
|
|
299
|
-
id:
|
|
293
|
+
id: searchDocumentId('construct', c.id),
|
|
300
294
|
kind: SearchKind.Construct,
|
|
301
295
|
title: c.title ?? c.id,
|
|
302
296
|
content: safeContent(c.description ?? '', 600),
|
|
@@ -307,7 +301,7 @@ export function buildSearchIndex(inspection) {
|
|
|
307
301
|
});
|
|
308
302
|
for (const f of facetsFor(c)) {
|
|
309
303
|
docs.push({
|
|
310
|
-
id:
|
|
304
|
+
id: searchDocumentId('facet', `${c.id}:${f.id}`),
|
|
311
305
|
kind: SearchKind.ConstructFacet,
|
|
312
306
|
title: `${c.id} / ${f.kind}: ${f.value}`,
|
|
313
307
|
content: safeContent(f.description ?? '', 200),
|
|
@@ -324,7 +318,7 @@ export function buildSearchIndex(inspection) {
|
|
|
324
318
|
const playbooks = listPlaybooks(inspection);
|
|
325
319
|
for (const p of playbooks) {
|
|
326
320
|
docs.push({
|
|
327
|
-
id:
|
|
321
|
+
id: searchDocumentId('playbook', p.id),
|
|
328
322
|
kind: SearchKind.Playbook,
|
|
329
323
|
title: p.title ?? p.id,
|
|
330
324
|
content: safeContent(p.description ?? '', 600),
|
|
@@ -462,6 +456,9 @@ export function searchIndex(index, options, inspection) {
|
|
|
462
456
|
}
|
|
463
457
|
const tokens = tokenize(query.toLowerCase());
|
|
464
458
|
const tuning = options.tuning ?? (inspection ? listSearchTuning(inspection) : []);
|
|
459
|
+
// Scoring keeps its own tokens; trigger matching reads THE tuning tokenizer,
|
|
460
|
+
// the same one the task ranker, the context re-ranker and `why` read.
|
|
461
|
+
const tuningTokens = tuningQueryTokens(query);
|
|
465
462
|
const hits = [];
|
|
466
463
|
for (const doc of index) {
|
|
467
464
|
const { score, matchedFields, reasons } = scoreDocument(doc, query, tokens, options);
|
|
@@ -470,7 +467,7 @@ export function searchIndex(index, options, inspection) {
|
|
|
470
467
|
let finalScore = score;
|
|
471
468
|
let finalReasons = options.explain ? [...reasons] : [];
|
|
472
469
|
if (tuning.length > 0) {
|
|
473
|
-
const boost = tuningBoostFor({ id: doc.id, kind: doc.kind, ...(doc.tags ? { tags: doc.tags } : {}), source: doc.source },
|
|
470
|
+
const boost = tuningBoostFor({ id: doc.id, kind: doc.kind, ...(doc.tags ? { tags: doc.tags } : {}), source: doc.source }, tuningTokens, tuning);
|
|
474
471
|
if (boost.delta !== 0) {
|
|
475
472
|
finalScore += boost.delta;
|
|
476
473
|
if (options.explain)
|
|
@@ -49,11 +49,17 @@ export interface ISearchTuningExplainReport {
|
|
|
49
49
|
mergeStrategy?: 'sum' | 'max';
|
|
50
50
|
}[];
|
|
51
51
|
matched: readonly ITuningMatch[];
|
|
52
|
+
/**
|
|
53
|
+
* Every boost the ±cap changed. A per-boost clamp names its tuning and key;
|
|
54
|
+
* the global total cap is a row with `key: 'total'` and the `docId` it
|
|
55
|
+
* discarded tuning on (it used to be applied silently).
|
|
56
|
+
*/
|
|
52
57
|
cappedBoosts: readonly {
|
|
53
58
|
tuningId: string;
|
|
54
59
|
key: string;
|
|
55
60
|
original: number;
|
|
56
61
|
clamped: number;
|
|
62
|
+
docId?: string;
|
|
57
63
|
}[];
|
|
58
64
|
topResults: readonly IPerHitTuningExplain[];
|
|
59
65
|
warnings: readonly {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-tuning-explain.d.ts","sourceRoot":"","sources":["../src/search-tuning-explain.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"search-tuning-explain.d.ts","sourceRoot":"","sources":["../src/search-tuning-explain.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,eAAO,MAAM,4BAA4B,wCAAwC,CAAC;AAElF,MAAM,WAAW,2BAA2B;IAC1C,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,iFAAiF;IACjF,WAAW,CAAC,EAAE,SAAS;QACrB,GAAG,EAAE,MAAM,CAAC;QACZ,QAAQ,EAAE,KAAK,GAAG,KAAK,CAAC;QACxB,YAAY,EAAE,SAAS;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAC7D,QAAQ,EAAE,MAAM,CAAC;KAClB,EAAE,CAAC;CACL;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,SAAS,EAAE,SAAS;QAAE,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAC3E;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,OAAO,4BAA4B,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,SAAS;QACtB,EAAE,EAAE,MAAM,CAAC;QACX,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,aAAa,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;KAC/B,EAAE,CAAC;IACJ,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IACjC;;;;OAIG;IACH,YAAY,EAAE,SAAS;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC9G,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC5C,QAAQ,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC3E;AAiCD,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,qBAAqB,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,0BAA0B,CAAC,CAmFrC;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,0BAA0B,GAAG,MAAM,CA0DtF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,0BAA0B,GAAG,MAAM,CAiClF"}
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
import { buildSearchIndex, searchIndex } from "./search-index.js";
|
|
2
2
|
import { listSearchTuning, listSearchTuningIssues, loadSearchTuning, tuningBoostFor, } from "./search-tuning-registry.js";
|
|
3
|
+
import { tuningQueryTokens } from "./tuning-query-tokens.js";
|
|
3
4
|
export const SEARCH_TUNING_EXPLAIN_SCHEMA = 'sharkcraft.search-tuning-explain/v1';
|
|
4
|
-
function tokenize(query) {
|
|
5
|
-
return query
|
|
6
|
-
.toLowerCase()
|
|
7
|
-
.split(/[\s,\.;:\/]+/)
|
|
8
|
-
.map((t) => t.trim())
|
|
9
|
-
.filter((t) => t.length > 1);
|
|
10
|
-
}
|
|
11
5
|
function describeBoost(entry, tokens) {
|
|
12
6
|
const matchedTags = entry.boostTags ? Object.keys(entry.boostTags) : [];
|
|
13
7
|
const matchedKinds = [];
|
|
@@ -49,19 +43,18 @@ export async function explainSearchTuning(inspection, query, options = {}) {
|
|
|
49
43
|
await loadSearchTuning(inspection);
|
|
50
44
|
const tuning = listSearchTuning(inspection);
|
|
51
45
|
const issues = listSearchTuningIssues(inspection);
|
|
52
|
-
|
|
46
|
+
// THE trigger tokenizer — the one `searchIndex` hands `tuningBoostFor`.
|
|
47
|
+
const tokens = tuningQueryTokens(query);
|
|
53
48
|
const matched = tuning.map((t) => describeBoost(t, tokens));
|
|
49
|
+
// Structured fields from the loader, not a regex over the message text.
|
|
54
50
|
const cappedBoosts = issues
|
|
55
51
|
.filter((i) => i.code === 'boost-clamped')
|
|
56
|
-
.map((i) => {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
original: parsed ? Number(parsed[3]) : 0,
|
|
63
|
-
};
|
|
64
|
-
});
|
|
52
|
+
.map((i) => ({
|
|
53
|
+
tuningId: i.tuningId ?? '(unknown)',
|
|
54
|
+
key: i.key ?? '?',
|
|
55
|
+
clamped: i.clamped ?? 0,
|
|
56
|
+
original: i.original ?? 0,
|
|
57
|
+
}));
|
|
65
58
|
const index = buildSearchIndex(inspection);
|
|
66
59
|
const opts = { query, limit: Math.max(5, options.topN ?? 5), explain: true };
|
|
67
60
|
const baseline = searchIndex(index, { ...opts, tuning: [] });
|
|
@@ -79,6 +72,15 @@ export async function explainSearchTuning(inspection, query, options = {}) {
|
|
|
79
72
|
...(h.document.tags ? { tags: h.document.tags } : {}),
|
|
80
73
|
source: h.document.source,
|
|
81
74
|
}, tokens, tuning);
|
|
75
|
+
if (boost.capped) {
|
|
76
|
+
cappedBoosts.push({
|
|
77
|
+
tuningId: '(combined)',
|
|
78
|
+
key: 'total',
|
|
79
|
+
docId: h.document.id,
|
|
80
|
+
original: boost.capped.raw,
|
|
81
|
+
clamped: boost.capped.applied,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
82
84
|
topResults.push({
|
|
83
85
|
docId: h.document.id,
|
|
84
86
|
title: h.document.title,
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ISearchTuningKeyProbe } from './i-search-tuning-key-probe.js';
|
|
2
|
+
import { type ISearchTuningEntry } from './search-tuning-registry.js';
|
|
3
|
+
import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
|
|
4
|
+
/**
|
|
5
|
+
* THE boost-key probes (round 13): every (entry, key) declared in an id boost
|
|
6
|
+
* map, with the maps it sits in, the entry's expectEmpty markers on it, and
|
|
7
|
+
* THE key resolver's answer (resolved once per distinct key). `lintSearchTuning`
|
|
8
|
+
* settles and words them (`search tuning doctor`, the self-config doctor), and
|
|
9
|
+
* `collectUnresolvableReferences` reads them for `packs contributions` — one
|
|
10
|
+
* answer to "could this boost key be checked?".
|
|
11
|
+
*
|
|
12
|
+
* Callers load the entries (`loadSearchTuning`) and warm the reference
|
|
13
|
+
* registries (`warmReferenceRegistries`) first.
|
|
14
|
+
*/
|
|
15
|
+
export declare function searchTuningKeyProbes(inspection: ISharkcraftInspection, entries: readonly ISearchTuningEntry[]): readonly ISearchTuningKeyProbe[];
|
|
16
|
+
//# sourceMappingURL=search-tuning-key-probes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-tuning-key-probes.d.ts","sourceRoot":"","sources":["../src/search-tuning-key-probes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAI5E,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,qBAAqB,EACjC,OAAO,EAAE,SAAS,kBAAkB,EAAE,GACrC,SAAS,qBAAqB,EAAE,CAkDlC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { isSearchDocumentPrefix, searchKindForPrefix } from "./search-document-id.js";
|
|
2
|
+
import { resolveSearchTuningKey } from "./search-tuning-key-resolver.js";
|
|
3
|
+
import { SEARCH_TUNING_BOOST_IDS, searchTuningTaskHintBoostIdsPath, } from "./search-tuning-registry.js";
|
|
4
|
+
/**
|
|
5
|
+
* THE boost-key probes (round 13): every (entry, key) declared in an id boost
|
|
6
|
+
* map, with the maps it sits in, the entry's expectEmpty markers on it, and
|
|
7
|
+
* THE key resolver's answer (resolved once per distinct key). `lintSearchTuning`
|
|
8
|
+
* settles and words them (`search tuning doctor`, the self-config doctor), and
|
|
9
|
+
* `collectUnresolvableReferences` reads them for `packs contributions` — one
|
|
10
|
+
* answer to "could this boost key be checked?".
|
|
11
|
+
*
|
|
12
|
+
* Callers load the entries (`loadSearchTuning`) and warm the reference
|
|
13
|
+
* registries (`warmReferenceRegistries`) first.
|
|
14
|
+
*/
|
|
15
|
+
export function searchTuningKeyProbes(inspection, entries) {
|
|
16
|
+
const resolutions = new Map();
|
|
17
|
+
const resolve = (key) => {
|
|
18
|
+
let r = resolutions.get(key);
|
|
19
|
+
if (!r) {
|
|
20
|
+
r = resolveSearchTuningKey(inspection, key);
|
|
21
|
+
resolutions.set(key, r);
|
|
22
|
+
}
|
|
23
|
+
return r;
|
|
24
|
+
};
|
|
25
|
+
const probes = [];
|
|
26
|
+
for (const e of entries) {
|
|
27
|
+
const ledger = new Map((e.expectEmptyUnits ?? []).map((m) => [`${m.list} ${m.unit}`, m]));
|
|
28
|
+
const maps = [
|
|
29
|
+
[SEARCH_TUNING_BOOST_IDS, e.boostIds],
|
|
30
|
+
...(e.taskHints ?? []).map((h, i) => [searchTuningTaskHintBoostIdsPath(i), h.boostIds]),
|
|
31
|
+
];
|
|
32
|
+
// One probe per (entry, key): the same key in three maps is one declaration
|
|
33
|
+
// (one finding, `declared 3 times`), carrying every map and every marker.
|
|
34
|
+
const byKey = new Map();
|
|
35
|
+
for (const [list, map] of maps) {
|
|
36
|
+
for (const key of Object.keys(map ?? {})) {
|
|
37
|
+
const d = byKey.get(key) ?? { lists: [], marks: [] };
|
|
38
|
+
d.lists.push(list);
|
|
39
|
+
const mark = ledger.get(`${list} ${key}`);
|
|
40
|
+
if (mark)
|
|
41
|
+
d.marks.push(mark);
|
|
42
|
+
byKey.set(key, d);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
for (const [key, d] of byKey) {
|
|
46
|
+
const resolution = resolve(key);
|
|
47
|
+
const kind = resolution.prefix !== undefined && isSearchDocumentPrefix(resolution.prefix)
|
|
48
|
+
? (searchKindForPrefix(resolution.prefix) ?? resolution.prefix)
|
|
49
|
+
: undefined;
|
|
50
|
+
const excludedKind = kind !== undefined && e.appliesToKinds && !e.appliesToKinds.includes(kind) ? kind : undefined;
|
|
51
|
+
probes.push({
|
|
52
|
+
tuningId: e.id,
|
|
53
|
+
key,
|
|
54
|
+
lists: d.lists,
|
|
55
|
+
marks: d.marks,
|
|
56
|
+
resolution,
|
|
57
|
+
...(e.appliesToKinds ? { appliesToKinds: e.appliesToKinds } : {}),
|
|
58
|
+
...(excludedKind !== undefined ? { excludedKind } : {}),
|
|
59
|
+
...(e.sourceFile ? { sourceFile: e.sourceFile } : {}),
|
|
60
|
+
...(e.packageName ? { packageName: e.packageName } : {}),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return probes;
|
|
65
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ReferenceKind } from './reference-registry.js';
|
|
2
|
+
import type { SearchTuningKeyStatus } from './search-tuning-key-status.js';
|
|
3
|
+
/** The answer {@link resolveSearchTuningKey} gives for one boost key. */
|
|
4
|
+
export interface ISearchTuningKeyResolution {
|
|
5
|
+
/** The boost key exactly as declared. */
|
|
6
|
+
readonly key: string;
|
|
7
|
+
readonly status: SearchTuningKeyStatus;
|
|
8
|
+
/** The `<prefix>` when the key parsed as `<prefix>:<id>`. */
|
|
9
|
+
readonly prefix?: string;
|
|
10
|
+
/** The right-hand id — the WHOLE key when it has no prefix. */
|
|
11
|
+
readonly id: string;
|
|
12
|
+
/** The registry the id was (or would be) resolved in. */
|
|
13
|
+
readonly referenceKind?: ReferenceKind;
|
|
14
|
+
/**
|
|
15
|
+
* The key to write instead: the prefixed form of an unprefixed key, the
|
|
16
|
+
* nearest registered id of a missing one, or the nearest real prefix of an
|
|
17
|
+
* unknown kind.
|
|
18
|
+
*/
|
|
19
|
+
readonly suggestion?: string;
|
|
20
|
+
/** Every prefixed form an unprefixed key resolves as (when more than one kind lists it). */
|
|
21
|
+
readonly suggestions?: readonly string[];
|
|
22
|
+
/** Why — always set for `unverified`, so the skip is never silent. */
|
|
23
|
+
readonly reason?: string;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=search-tuning-key-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-tuning-key-resolution.d.ts","sourceRoot":"","sources":["../src/search-tuning-key-resolution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAE3E,yEAAyE;AACzE,MAAM,WAAW,0BAA0B;IACzC,yCAAyC;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,4FAA4F;IAC5F,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,sEAAsE;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ISearchTuningKeyResolution } from './search-tuning-key-resolution.js';
|
|
2
|
+
import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
|
|
3
|
+
export declare function resolveSearchTuningKey(inspection: ISharkcraftInspection, key: string): ISearchTuningKeyResolution;
|
|
4
|
+
//# sourceMappingURL=search-tuning-key-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-tuning-key-resolver.d.ts","sourceRoot":"","sources":["../src/search-tuning-key-resolver.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAEpF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAiBvE,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,qBAAqB,EACjC,GAAG,EAAE,MAAM,GACV,0BAA0B,CA4E5B"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE resolver for search-tuning boost keys.
|
|
3
|
+
*
|
|
4
|
+
* A boost key is a search-document id, `<kind>:<id>` — the matcher
|
|
5
|
+
* (`tuningBoostFor`) compares `boostIds[doc.id]` against the WHOLE document id.
|
|
6
|
+
* The self-config doctor used to look that whole prefixed key up in BARE-id
|
|
7
|
+
* registries, so every correctly prefixed key (which fires) was reported
|
|
8
|
+
* "unknown", and a bare key (which can never fire) passed. On a healthy pack
|
|
9
|
+
* that was 200 false warnings inviting the deletion of correct config, and on
|
|
10
|
+
* shrk itself it certified 33 dead entries.
|
|
11
|
+
*
|
|
12
|
+
* The key is split on its FIRST `:` by THE codec (`search-document-id.ts`), and
|
|
13
|
+
* the right-hand id is resolved WITHIN the named kind through THE id resolver
|
|
14
|
+
* (`reference-registry.ts`). Callers must `warmReferenceRegistries` first.
|
|
15
|
+
*/
|
|
16
|
+
import { nearestIds } from "./nearest-id.js";
|
|
17
|
+
import { emptyReferenceKinds, referenceIdExists, referenceIdsFor, referenceKindOf, } from "./reference-registry.js";
|
|
18
|
+
import { isSearchDocumentPrefix, parseSearchDocumentId, SEARCH_DOCUMENT_ID_KINDS, SEARCH_DOCUMENT_PREFIXES, searchDocumentId, } from "./search-document-id.js";
|
|
19
|
+
import { SearchTuningKeyStatus } from "./search-tuning-key-status.js";
|
|
20
|
+
/** Every prefixed key a BARE id resolves as, with the kind it resolved in, in prefix order. */
|
|
21
|
+
function prefixedFormsOf(inspection, bareId) {
|
|
22
|
+
const out = [];
|
|
23
|
+
for (const prefix of SEARCH_DOCUMENT_PREFIXES) {
|
|
24
|
+
const kind = SEARCH_DOCUMENT_ID_KINDS[prefix];
|
|
25
|
+
if (kind !== null && referenceIdExists(inspection, kind, bareId)) {
|
|
26
|
+
out.push({ key: searchDocumentId(prefix, bareId), kind });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return out;
|
|
30
|
+
}
|
|
31
|
+
export function resolveSearchTuningKey(inspection, key) {
|
|
32
|
+
const parsed = parseSearchDocumentId(key);
|
|
33
|
+
if (parsed && isSearchDocumentPrefix(parsed.prefix)) {
|
|
34
|
+
const { prefix, id } = parsed;
|
|
35
|
+
const kind = SEARCH_DOCUMENT_ID_KINDS[prefix];
|
|
36
|
+
if (kind === null) {
|
|
37
|
+
return {
|
|
38
|
+
key,
|
|
39
|
+
status: SearchTuningKeyStatus.Unverified,
|
|
40
|
+
prefix,
|
|
41
|
+
id,
|
|
42
|
+
reason: `\`${prefix}:\` documents have no id registry, so "${id}" cannot be checked`,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
if (emptyReferenceKinds(inspection, [kind]).length > 0) {
|
|
46
|
+
return {
|
|
47
|
+
key,
|
|
48
|
+
status: SearchTuningKeyStatus.Unverified,
|
|
49
|
+
prefix,
|
|
50
|
+
id,
|
|
51
|
+
referenceKind: kind,
|
|
52
|
+
reason: `no ${kind} is registered in this workspace (or its registry did not load), so "${id}" cannot be checked`,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
if (referenceIdExists(inspection, kind, id)) {
|
|
56
|
+
return { key, status: SearchTuningKeyStatus.Resolved, prefix, id, referenceKind: kind };
|
|
57
|
+
}
|
|
58
|
+
const near = nearestIds(id, referenceIdsFor(inspection, kind), 1)[0];
|
|
59
|
+
return {
|
|
60
|
+
key,
|
|
61
|
+
status: SearchTuningKeyStatus.Missing,
|
|
62
|
+
prefix,
|
|
63
|
+
id,
|
|
64
|
+
referenceKind: kind,
|
|
65
|
+
...(near ? { suggestion: searchDocumentId(prefix, near.id) } : {}),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
// Not `<known prefix>:<id>`. A WHOLE key that resolves as a bare id is the
|
|
69
|
+
// common mistake: it reads right and never fires.
|
|
70
|
+
const forms = prefixedFormsOf(inspection, key);
|
|
71
|
+
if (forms.length > 0) {
|
|
72
|
+
return {
|
|
73
|
+
key,
|
|
74
|
+
status: SearchTuningKeyStatus.Unprefixed,
|
|
75
|
+
id: key,
|
|
76
|
+
// The kind the bare id DID resolve in (the field's contract: "the
|
|
77
|
+
// registry the id was resolved in"). Without it a consumer labelling the
|
|
78
|
+
// target had nothing but `unknown` for an id that exists (round 12, 12.4).
|
|
79
|
+
referenceKind: forms[0].kind,
|
|
80
|
+
suggestion: forms[0].key,
|
|
81
|
+
...(forms.length > 1 ? { suggestions: forms.map((f) => f.key) } : {}),
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
if (parsed) {
|
|
85
|
+
const near = nearestIds(parsed.prefix, SEARCH_DOCUMENT_PREFIXES, 1)[0];
|
|
86
|
+
return {
|
|
87
|
+
key,
|
|
88
|
+
status: SearchTuningKeyStatus.UnknownKind,
|
|
89
|
+
prefix: parsed.prefix,
|
|
90
|
+
id: parsed.id,
|
|
91
|
+
...(near ? { suggestion: `${near.id}:${parsed.id}` } : {}),
|
|
92
|
+
reason: `"${parsed.prefix}" is not a search-document kind (${SEARCH_DOCUMENT_PREFIXES.join(', ')})`,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// Registered — but as a kind the search index never emits (a decision, a
|
|
96
|
+
// policy, a scaffold pattern): no boost key can target it at all.
|
|
97
|
+
const registeredAs = referenceKindOf(inspection, key);
|
|
98
|
+
return {
|
|
99
|
+
key,
|
|
100
|
+
status: SearchTuningKeyStatus.Unprefixed,
|
|
101
|
+
id: key,
|
|
102
|
+
...(registeredAs ? { referenceKind: registeredAs } : {}),
|
|
103
|
+
reason: registeredAs
|
|
104
|
+
? `"${key}" is a registered ${registeredAs}, but ${registeredAs} entries are not search documents, so no boost key can target it`
|
|
105
|
+
: 'it has no `<kind>:` prefix, and no registry lists it as a bare id either',
|
|
106
|
+
};
|
|
107
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What resolving one search-tuning boost key (`boostIds` /
|
|
3
|
+
* `taskHints[].boostIds`) against the live registries found.
|
|
4
|
+
*
|
|
5
|
+
* A boost key is a SEARCH-DOCUMENT id (`<kind>:<id>`, see
|
|
6
|
+
* `search-document-id.ts`): the matcher compares it to `doc.id` whole.
|
|
7
|
+
*/
|
|
8
|
+
export declare enum SearchTuningKeyStatus {
|
|
9
|
+
/** `<kind>:<id>` whose id is registered under that kind — the boost can fire. */
|
|
10
|
+
Resolved = "resolved",
|
|
11
|
+
/** `<kind>:<id>` whose id is NOT registered under that kind — dead. */
|
|
12
|
+
Missing = "missing",
|
|
13
|
+
/** A bare id (no `<kind>:` prefix) — no search document is keyed like that, so it never fires. */
|
|
14
|
+
Unprefixed = "unprefixed",
|
|
15
|
+
/** `<prefix>:<id>` whose prefix is not a search-document kind — dead. */
|
|
16
|
+
UnknownKind = "unknown-kind",
|
|
17
|
+
/**
|
|
18
|
+
* NOT checked: the kind has no id registry (preset, pack, bundle, session,
|
|
19
|
+
* facet, doc) or its registry is empty in this workspace. Never reported as
|
|
20
|
+
* missing — a check that cannot look must say so instead of guessing.
|
|
21
|
+
*/
|
|
22
|
+
Unverified = "unverified"
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=search-tuning-key-status.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-tuning-key-status.d.ts","sourceRoot":"","sources":["../src/search-tuning-key-status.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,oBAAY,qBAAqB;IAC/B,iFAAiF;IACjF,QAAQ,aAAa;IACrB,uEAAuE;IACvE,OAAO,YAAY;IACnB,kGAAkG;IAClG,UAAU,eAAe;IACzB,yEAAyE;IACzE,WAAW,iBAAiB;IAC5B;;;;OAIG;IACH,UAAU,eAAe;CAC1B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What resolving one search-tuning boost key (`boostIds` /
|
|
3
|
+
* `taskHints[].boostIds`) against the live registries found.
|
|
4
|
+
*
|
|
5
|
+
* A boost key is a SEARCH-DOCUMENT id (`<kind>:<id>`, see
|
|
6
|
+
* `search-document-id.ts`): the matcher compares it to `doc.id` whole.
|
|
7
|
+
*/
|
|
8
|
+
export var SearchTuningKeyStatus;
|
|
9
|
+
(function (SearchTuningKeyStatus) {
|
|
10
|
+
/** `<kind>:<id>` whose id is registered under that kind — the boost can fire. */
|
|
11
|
+
SearchTuningKeyStatus["Resolved"] = "resolved";
|
|
12
|
+
/** `<kind>:<id>` whose id is NOT registered under that kind — dead. */
|
|
13
|
+
SearchTuningKeyStatus["Missing"] = "missing";
|
|
14
|
+
/** A bare id (no `<kind>:` prefix) — no search document is keyed like that, so it never fires. */
|
|
15
|
+
SearchTuningKeyStatus["Unprefixed"] = "unprefixed";
|
|
16
|
+
/** `<prefix>:<id>` whose prefix is not a search-document kind — dead. */
|
|
17
|
+
SearchTuningKeyStatus["UnknownKind"] = "unknown-kind";
|
|
18
|
+
/**
|
|
19
|
+
* NOT checked: the kind has no id registry (preset, pack, bundle, session,
|
|
20
|
+
* facet, doc) or its registry is empty in this workspace. Never reported as
|
|
21
|
+
* missing — a check that cannot look must say so instead of guessing.
|
|
22
|
+
*/
|
|
23
|
+
SearchTuningKeyStatus["Unverified"] = "unverified";
|
|
24
|
+
})(SearchTuningKeyStatus || (SearchTuningKeyStatus = {}));
|