@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,336 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE query-intent classifier.
|
|
3
|
+
*
|
|
4
|
+
* One answer to "what shape of work does this query ask for?". It replaces
|
|
5
|
+
* three parallel create/planning detectors (the inspector's
|
|
6
|
+
* `looksLikeScaffolding`, the CLI's `looksLikeCreateBuild` /
|
|
7
|
+
* `looksLikePlanning`) and is consulted by change-intent and
|
|
8
|
+
* prepare-agent-task instead of their own verb regexes. Deterministic; terms
|
|
9
|
+
* come from THE term normaliser (`match-terms.ts`).
|
|
10
|
+
*
|
|
11
|
+
* Create rules — the ones the recommender's source-writing gate hangs on:
|
|
12
|
+
* - a create verb in slot 0 is STRONG, unless the next term shows it is a
|
|
13
|
+
* subject noun ("build is broken", "build fails");
|
|
14
|
+
* - a create verb in slots 1–3 right after a lead-in ("please add",
|
|
15
|
+
* "I want to generate", "we should add") is STRONG;
|
|
16
|
+
* - any other create verb in slots 1–3 is LOOSE, and a repair/diagnosis
|
|
17
|
+
* marker anywhere in the query VETOES it ("fix the broken build",
|
|
18
|
+
* "why does the new route fail");
|
|
19
|
+
* - `new` is never strong on its own — it is an adjective as often as a verb.
|
|
20
|
+
* A strong create survives a marker ("add a fix for the crash" is create work).
|
|
21
|
+
*/
|
|
22
|
+
import { normaliseTerms } from "./match-terms.js";
|
|
23
|
+
import { QueryIntent } from "./query-intent-kind.js";
|
|
24
|
+
/** Only the first four terms carry the query's verb ("help me plan …"). */
|
|
25
|
+
const SLOT_WINDOW = 4;
|
|
26
|
+
const CREATE_VERBS = new Set([
|
|
27
|
+
'create',
|
|
28
|
+
'build',
|
|
29
|
+
'add',
|
|
30
|
+
'generate',
|
|
31
|
+
'scaffold',
|
|
32
|
+
'implement',
|
|
33
|
+
'make',
|
|
34
|
+
'new',
|
|
35
|
+
'introduce',
|
|
36
|
+
'write',
|
|
37
|
+
]);
|
|
38
|
+
/** Create words that are never a strong create signal on their own. */
|
|
39
|
+
const WEAK_CREATE_WORDS = new Set(['new']);
|
|
40
|
+
/** A create verb right after one of these is an imperative ("please add", "want to generate"). */
|
|
41
|
+
const CREATE_LEAD_INS = new Set([
|
|
42
|
+
'please',
|
|
43
|
+
'to',
|
|
44
|
+
'i',
|
|
45
|
+
'we',
|
|
46
|
+
'lets',
|
|
47
|
+
'let',
|
|
48
|
+
'want',
|
|
49
|
+
'need',
|
|
50
|
+
'can',
|
|
51
|
+
'should',
|
|
52
|
+
'must',
|
|
53
|
+
'will',
|
|
54
|
+
'me',
|
|
55
|
+
'us',
|
|
56
|
+
'just',
|
|
57
|
+
'also',
|
|
58
|
+
]);
|
|
59
|
+
/** After a slot-0 create word, these show it is the subject noun, not a verb. */
|
|
60
|
+
const NOUN_FOLLOWERS = new Set([
|
|
61
|
+
'is',
|
|
62
|
+
'are',
|
|
63
|
+
'was',
|
|
64
|
+
'were',
|
|
65
|
+
'has',
|
|
66
|
+
'have',
|
|
67
|
+
'had',
|
|
68
|
+
'keeps',
|
|
69
|
+
'kept',
|
|
70
|
+
'broke',
|
|
71
|
+
'breaks',
|
|
72
|
+
'broken',
|
|
73
|
+
'fails',
|
|
74
|
+
'failed',
|
|
75
|
+
'failing',
|
|
76
|
+
'crashes',
|
|
77
|
+
'crashed',
|
|
78
|
+
'doesnt',
|
|
79
|
+
'didnt',
|
|
80
|
+
'cannot',
|
|
81
|
+
'cant',
|
|
82
|
+
'wont',
|
|
83
|
+
'isnt',
|
|
84
|
+
'wasnt',
|
|
85
|
+
'error',
|
|
86
|
+
'errors',
|
|
87
|
+
'hangs',
|
|
88
|
+
'stopped',
|
|
89
|
+
'stops',
|
|
90
|
+
]);
|
|
91
|
+
const REPAIR_MARKERS = new Set(['fix', 'fixes', 'fixing', 'repair', 'resolve', 'unbreak', 'restore']);
|
|
92
|
+
const DIAGNOSE_MARKERS = new Set([
|
|
93
|
+
'broken',
|
|
94
|
+
'fail',
|
|
95
|
+
'fails',
|
|
96
|
+
'failing',
|
|
97
|
+
'failed',
|
|
98
|
+
'failure',
|
|
99
|
+
'failures',
|
|
100
|
+
'error',
|
|
101
|
+
'errors',
|
|
102
|
+
'crash',
|
|
103
|
+
'crashes',
|
|
104
|
+
'crashed',
|
|
105
|
+
'crashing',
|
|
106
|
+
'bug',
|
|
107
|
+
'bugs',
|
|
108
|
+
'buggy',
|
|
109
|
+
'why',
|
|
110
|
+
'debug',
|
|
111
|
+
'diagnose',
|
|
112
|
+
'investigate',
|
|
113
|
+
'violation',
|
|
114
|
+
'violations',
|
|
115
|
+
'regression',
|
|
116
|
+
'regressions',
|
|
117
|
+
'doesnt',
|
|
118
|
+
'didnt',
|
|
119
|
+
'cannot',
|
|
120
|
+
'cant',
|
|
121
|
+
'wont',
|
|
122
|
+
'isnt',
|
|
123
|
+
'flaky',
|
|
124
|
+
'hang',
|
|
125
|
+
'hangs',
|
|
126
|
+
'wrong',
|
|
127
|
+
]);
|
|
128
|
+
/** Markers that, followed by one of {@link MARKER_COMPOUND_NOUNS}, name a THING ("error handling"). */
|
|
129
|
+
const COMPOUNDABLE_MARKERS = new Set(['error', 'errors', 'bug', 'bugs', 'crash', 'failure']);
|
|
130
|
+
const MARKER_COMPOUND_NOUNS = new Set([
|
|
131
|
+
'handling',
|
|
132
|
+
'handler',
|
|
133
|
+
'handlers',
|
|
134
|
+
'message',
|
|
135
|
+
'messages',
|
|
136
|
+
'page',
|
|
137
|
+
'pages',
|
|
138
|
+
'boundary',
|
|
139
|
+
'boundaries',
|
|
140
|
+
'type',
|
|
141
|
+
'types',
|
|
142
|
+
'code',
|
|
143
|
+
'codes',
|
|
144
|
+
'class',
|
|
145
|
+
'classes',
|
|
146
|
+
'report',
|
|
147
|
+
'reports',
|
|
148
|
+
'reporting',
|
|
149
|
+
'tracker',
|
|
150
|
+
'tracking',
|
|
151
|
+
'state',
|
|
152
|
+
'states',
|
|
153
|
+
]);
|
|
154
|
+
/** The planning verbs (moved from the CLI's DX#2 classifier, unchanged). */
|
|
155
|
+
const PLANNING_VERBS = new Set([
|
|
156
|
+
'plan',
|
|
157
|
+
'design',
|
|
158
|
+
'propose',
|
|
159
|
+
'review',
|
|
160
|
+
'audit',
|
|
161
|
+
'analyze',
|
|
162
|
+
'analyse',
|
|
163
|
+
'explore',
|
|
164
|
+
'consider',
|
|
165
|
+
'investigate',
|
|
166
|
+
'survey',
|
|
167
|
+
'compare',
|
|
168
|
+
'evaluate',
|
|
169
|
+
'assess',
|
|
170
|
+
]);
|
|
171
|
+
const REVIEW_VERBS = new Set(['review', 'audit']);
|
|
172
|
+
/** "review" + one of these reviews a CHANGE (a PR), not a design. */
|
|
173
|
+
const REVIEW_OBJECTS = new Set([
|
|
174
|
+
'pr',
|
|
175
|
+
'prs',
|
|
176
|
+
'pull',
|
|
177
|
+
'diff',
|
|
178
|
+
'diffs',
|
|
179
|
+
'change',
|
|
180
|
+
'changes',
|
|
181
|
+
'changeset',
|
|
182
|
+
'branch',
|
|
183
|
+
'commit',
|
|
184
|
+
'commits',
|
|
185
|
+
'patch',
|
|
186
|
+
'mr',
|
|
187
|
+
]);
|
|
188
|
+
const REFACTOR_VERBS = new Set([
|
|
189
|
+
'refactor',
|
|
190
|
+
'refactoring',
|
|
191
|
+
'rename',
|
|
192
|
+
'extract',
|
|
193
|
+
'cleanup',
|
|
194
|
+
'clean',
|
|
195
|
+
'tidy',
|
|
196
|
+
'simplify',
|
|
197
|
+
'restructure',
|
|
198
|
+
'reorganize',
|
|
199
|
+
'reorganise',
|
|
200
|
+
'move',
|
|
201
|
+
'split',
|
|
202
|
+
'consolidate',
|
|
203
|
+
'dedupe',
|
|
204
|
+
'deduplicate',
|
|
205
|
+
'rewrite',
|
|
206
|
+
'inline',
|
|
207
|
+
'decouple',
|
|
208
|
+
]);
|
|
209
|
+
const RELEASE_VERBS = new Set(['release', 'publish', 'ship', 'tag', 'bump', 'version', 'deploy']);
|
|
210
|
+
const EXPLAIN_LEADS = new Set([
|
|
211
|
+
'explain',
|
|
212
|
+
'what',
|
|
213
|
+
'how',
|
|
214
|
+
'where',
|
|
215
|
+
'which',
|
|
216
|
+
'who',
|
|
217
|
+
'describe',
|
|
218
|
+
'show',
|
|
219
|
+
'understand',
|
|
220
|
+
'trace',
|
|
221
|
+
'list',
|
|
222
|
+
'find',
|
|
223
|
+
]);
|
|
224
|
+
/** "let's" → "lets", "doesn't" → "doesnt": one term, so the marker/lead-in sets can name it. */
|
|
225
|
+
function expandContractions(query) {
|
|
226
|
+
return query.replace(/\b(let|don|doesn|didn|can|won|isn|wasn|aren)['’](s|t)\b/gi, '$1$2');
|
|
227
|
+
}
|
|
228
|
+
/** "error handling", "bug report": the marker word names a thing, not a failure. */
|
|
229
|
+
function isCompound(terms, i) {
|
|
230
|
+
const next = terms[i + 1];
|
|
231
|
+
return COMPOUNDABLE_MARKERS.has(terms[i]) && next !== undefined && MARKER_COMPOUND_NOUNS.has(next);
|
|
232
|
+
}
|
|
233
|
+
function isMarker(terms, i) {
|
|
234
|
+
const t = terms[i];
|
|
235
|
+
if (!REPAIR_MARKERS.has(t) && !DIAGNOSE_MARKERS.has(t))
|
|
236
|
+
return false;
|
|
237
|
+
return !isCompound(terms, i);
|
|
238
|
+
}
|
|
239
|
+
function firstIn(terms, set, window = terms.length) {
|
|
240
|
+
const n = Math.min(window, terms.length);
|
|
241
|
+
for (let i = 0; i < n; i++)
|
|
242
|
+
if (set.has(terms[i]))
|
|
243
|
+
return i;
|
|
244
|
+
return -1;
|
|
245
|
+
}
|
|
246
|
+
/** The best create sighting in the slot window: a strong one beats a loose one; earliest among equals. */
|
|
247
|
+
function findCreate(terms) {
|
|
248
|
+
let loose;
|
|
249
|
+
const n = Math.min(SLOT_WINDOW, terms.length);
|
|
250
|
+
for (let i = 0; i < n; i++) {
|
|
251
|
+
const t = terms[i];
|
|
252
|
+
if (!CREATE_VERBS.has(t))
|
|
253
|
+
continue;
|
|
254
|
+
let strong = false;
|
|
255
|
+
if (!WEAK_CREATE_WORDS.has(t)) {
|
|
256
|
+
if (i === 0) {
|
|
257
|
+
// "build is broken" / "build error in billing": the create word is the
|
|
258
|
+
// subject noun. "add error handling" is not — `error handling` is a thing.
|
|
259
|
+
const next = terms[1];
|
|
260
|
+
if (next !== undefined && NOUN_FOLLOWERS.has(next) && !isCompound(terms, 1))
|
|
261
|
+
continue;
|
|
262
|
+
strong = true;
|
|
263
|
+
}
|
|
264
|
+
else if (CREATE_LEAD_INS.has(terms[i - 1])) {
|
|
265
|
+
strong = true;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
if (strong)
|
|
269
|
+
return { index: i, verb: t, strong: true };
|
|
270
|
+
if (!loose)
|
|
271
|
+
loose = { index: i, verb: t, strong: false };
|
|
272
|
+
}
|
|
273
|
+
return loose;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* THE eligibility rule for SOURCE-WRITING offers — a scaffold, a `gen` /
|
|
277
|
+
* `apply` command, a suggested generation: only a create/build query admits
|
|
278
|
+
* them. The recommender gates its writes-source candidates on it and the task
|
|
279
|
+
* packet gates its suggested generation on it, so the two cannot disagree
|
|
280
|
+
* about one query (spec 2.3, round 11 review R11-GAP-6).
|
|
281
|
+
*/
|
|
282
|
+
export function intentAdmitsSourceWrites(intent) {
|
|
283
|
+
return intent.intent === QueryIntent.Create;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* A diagnose / repair query ("fix the broken build", "why does the new route
|
|
287
|
+
* fail"): a create/scaffold pipeline, a template, or a source-writing command
|
|
288
|
+
* is never an answer to it — the task packet drops them.
|
|
289
|
+
*/
|
|
290
|
+
export function intentIsRepairOrDiagnosis(intent) {
|
|
291
|
+
return intent.intent === QueryIntent.Repair || intent.intent === QueryIntent.Diagnose;
|
|
292
|
+
}
|
|
293
|
+
/** Classify a free-text query. Pure and deterministic. */
|
|
294
|
+
export function classifyQueryIntent(query) {
|
|
295
|
+
const terms = normaliseTerms(expandContractions(query));
|
|
296
|
+
if (terms.length === 0)
|
|
297
|
+
return { intent: QueryIntent.Unknown, terms };
|
|
298
|
+
let marker;
|
|
299
|
+
let repair = false;
|
|
300
|
+
for (let i = 0; i < terms.length; i++) {
|
|
301
|
+
if (!isMarker(terms, i))
|
|
302
|
+
continue;
|
|
303
|
+
marker ??= terms[i];
|
|
304
|
+
if (REPAIR_MARKERS.has(terms[i]))
|
|
305
|
+
repair = true;
|
|
306
|
+
}
|
|
307
|
+
const create = findCreate(terms);
|
|
308
|
+
const createDetected = create !== undefined && (create.strong || marker === undefined);
|
|
309
|
+
const planIndex = firstIn(terms, PLANNING_VERBS, SLOT_WINDOW);
|
|
310
|
+
const planVerb = planIndex >= 0 ? terms[planIndex] : undefined;
|
|
311
|
+
const base = {
|
|
312
|
+
terms,
|
|
313
|
+
...(createDetected ? { createVerb: create.verb } : {}),
|
|
314
|
+
...(planVerb !== undefined ? { planVerb } : {}),
|
|
315
|
+
...(create !== undefined && !createDetected && marker !== undefined ? { vetoedBy: marker } : {}),
|
|
316
|
+
};
|
|
317
|
+
if (createDetected && !(planIndex >= 0 && planIndex < create.index)) {
|
|
318
|
+
return { intent: QueryIntent.Create, ...base };
|
|
319
|
+
}
|
|
320
|
+
if (repair)
|
|
321
|
+
return { intent: QueryIntent.Repair, ...base };
|
|
322
|
+
if (marker !== undefined)
|
|
323
|
+
return { intent: QueryIntent.Diagnose, ...base };
|
|
324
|
+
if (firstIn(terms, REVIEW_VERBS, SLOT_WINDOW) >= 0 && firstIn(terms, REVIEW_OBJECTS) >= 0) {
|
|
325
|
+
return { intent: QueryIntent.Review, ...base };
|
|
326
|
+
}
|
|
327
|
+
if (planVerb !== undefined)
|
|
328
|
+
return { intent: QueryIntent.Plan, ...base };
|
|
329
|
+
if (firstIn(terms, REFACTOR_VERBS, SLOT_WINDOW) >= 0)
|
|
330
|
+
return { intent: QueryIntent.Refactor, ...base };
|
|
331
|
+
if (firstIn(terms, RELEASE_VERBS, SLOT_WINDOW) >= 0)
|
|
332
|
+
return { intent: QueryIntent.Release, ...base };
|
|
333
|
+
if (EXPLAIN_LEADS.has(terms[0]))
|
|
334
|
+
return { intent: QueryIntent.Explain, ...base };
|
|
335
|
+
return { intent: QueryIntent.Unknown, ...base };
|
|
336
|
+
}
|
package/dist/query-resolver.d.ts
CHANGED
|
@@ -27,12 +27,30 @@ export interface IQueryResolution {
|
|
|
27
27
|
bestMatch?: IQueryMatch;
|
|
28
28
|
alternatives: ReadonlyArray<IQueryMatch>;
|
|
29
29
|
confidence: 'exact' | 'high' | 'medium' | 'low' | 'unknown';
|
|
30
|
+
/**
|
|
31
|
+
* Match kinds that were NOT searched because their inventory lives above
|
|
32
|
+
* this layer and was not supplied (today: `command`, without
|
|
33
|
+
* {@link IQueryResolveOptions.commands}). A query that "matched nothing"
|
|
34
|
+
* there was never compared — not the same as no match.
|
|
35
|
+
*/
|
|
36
|
+
unconsulted?: ReadonlyArray<QueryMatchKind>;
|
|
30
37
|
}
|
|
31
38
|
export interface IQueryResolveOptions {
|
|
32
39
|
/** Limit number of alternatives returned. */
|
|
33
40
|
limit?: number;
|
|
34
41
|
/** Restrict to a subset of match kinds. */
|
|
35
42
|
kinds?: ReadonlyArray<QueryMatchKind>;
|
|
43
|
+
/**
|
|
44
|
+
* The command inventory to rank `command` matches against — injected by the
|
|
45
|
+
* CLI from its command index (the inventory lives above this layer). It used
|
|
46
|
+
* to be read off `inspection.commandCatalog`, a property no inspection ever
|
|
47
|
+
* has, so command matching silently ranked nothing.
|
|
48
|
+
*/
|
|
49
|
+
commands?: ReadonlyArray<{
|
|
50
|
+
id: string;
|
|
51
|
+
name?: string;
|
|
52
|
+
description?: string;
|
|
53
|
+
}>;
|
|
36
54
|
}
|
|
37
55
|
export declare function resolveQuery(inspection: ISharkcraftInspection, query: string, options?: IQueryResolveOptions): IQueryResolution;
|
|
38
56
|
//# sourceMappingURL=query-resolver.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-resolver.d.ts","sourceRoot":"","sources":["../src/query-resolver.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAMvE,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AAExE,oBAAY,cAAc;IACxB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,SAAS,eAAe;IACxB,UAAU,gBAAgB;IAC1B,OAAO,aAAa;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,uBAAuB,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACzC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"query-resolver.d.ts","sourceRoot":"","sources":["../src/query-resolver.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAMvE,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AAExE,oBAAY,cAAc;IACxB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,SAAS,eAAe;IACxB,UAAU,gBAAgB;IAC1B,OAAO,aAAa;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,cAAc,CAAC;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,uBAAuB,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;IACzC,UAAU,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;IAC5D;;;;;OAKG;IACH,WAAW,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,KAAK,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/E;AAuID,wBAAgB,YAAY,CAC1B,UAAU,EAAE,qBAAqB,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,oBAAyB,GACjC,gBAAgB,CAmClB"}
|
package/dist/query-resolver.js
CHANGED
|
@@ -125,9 +125,8 @@ function rankPlaybooks(inspection, query) {
|
|
|
125
125
|
function rankPolicies(inspection, query) {
|
|
126
126
|
return rankList(listPolicyIds(inspection).map((id) => ({ id })), query, QueryMatchKind.Policy);
|
|
127
127
|
}
|
|
128
|
-
function rankCommands(
|
|
129
|
-
|
|
130
|
-
return rankList(cat, query, QueryMatchKind.Command);
|
|
128
|
+
function rankCommands(commands, query) {
|
|
129
|
+
return rankList(commands ?? [], query, QueryMatchKind.Command);
|
|
131
130
|
}
|
|
132
131
|
function pickConfidence(top) {
|
|
133
132
|
if (!top)
|
|
@@ -146,18 +145,22 @@ export function resolveQuery(inspection, query, options = {}) {
|
|
|
146
145
|
const file = fileMatches(query, inspection.projectRoot);
|
|
147
146
|
if (file)
|
|
148
147
|
matches.push(file);
|
|
149
|
-
matches.push(...rankConstructs(inspection, query), ...rankKnowledge(inspection, query), ...rankTemplates(inspection, query), ...rankHelpers(query), ...rankPlaybooks(inspection, query), ...rankPolicies(inspection, query), ...rankCommands(
|
|
148
|
+
matches.push(...rankConstructs(inspection, query), ...rankKnowledge(inspection, query), ...rankTemplates(inspection, query), ...rankHelpers(query), ...rankPlaybooks(inspection, query), ...rankPolicies(inspection, query), ...rankCommands(options.commands, query));
|
|
150
149
|
const filtered = options.kinds && options.kinds.length > 0
|
|
151
150
|
? matches.filter((m) => options.kinds.includes(m.kind))
|
|
152
151
|
: matches;
|
|
153
152
|
filtered.sort((a, b) => b.score - a.score);
|
|
154
153
|
const limit = options.limit ?? 10;
|
|
155
154
|
const top = filtered[0];
|
|
155
|
+
const commandsWanted = !options.kinds || options.kinds.length === 0 || options.kinds.includes(QueryMatchKind.Command);
|
|
156
156
|
return {
|
|
157
157
|
schema: QUERY_RESOLUTION_SCHEMA,
|
|
158
158
|
query,
|
|
159
159
|
...(top ? { bestMatch: top } : {}),
|
|
160
160
|
alternatives: filtered.slice(1, limit + 1),
|
|
161
161
|
confidence: pickConfidence(top),
|
|
162
|
+
...(commandsWanted && options.commands === undefined
|
|
163
|
+
? { unconsulted: [QueryMatchKind.Command] }
|
|
164
|
+
: {}),
|
|
162
165
|
};
|
|
163
166
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { IQueryIntentResult } from './query-intent-result.js';
|
|
2
|
+
import type { IRecommendationCandidate } from './recommendation-candidate.js';
|
|
3
|
+
import type { IRecommendationConfidence } from './recommendation-confidence.js';
|
|
4
|
+
import type { ITaskRoutingMatchResult } from './task-routing-hint-registry.js';
|
|
5
|
+
/**
|
|
6
|
+
* THE ranked recommendation list. The recommend headline, `nextCommand`,
|
|
7
|
+
* confidence and reasons, the CLI, MCP `recommend_commands` and
|
|
8
|
+
* `shrk context` all derive from this one value.
|
|
9
|
+
*/
|
|
10
|
+
export interface IRankedRecommendations {
|
|
11
|
+
readonly query: string;
|
|
12
|
+
readonly intent: IQueryIntentResult;
|
|
13
|
+
/** The floor multiplier in effect (CLI `--min-score` > MCP `minScore` > config `recommend.minScore` > 1). */
|
|
14
|
+
readonly floor: number;
|
|
15
|
+
/** Every candidate: the recommendations first (ranked), then the suppressed rows. */
|
|
16
|
+
readonly candidates: readonly IRecommendationCandidate[];
|
|
17
|
+
/** Eligible rows, deduped by command, ranked (a planning row is pinned first). */
|
|
18
|
+
readonly recommendations: readonly IRecommendationCandidate[];
|
|
19
|
+
readonly confidence: IRecommendationConfidence;
|
|
20
|
+
/** Computed LAST, over `recommendations`: never a writes-source guess. */
|
|
21
|
+
readonly nextCommand: string;
|
|
22
|
+
/** The routing-hint matches the list was built from (`explainTaskRouting`). */
|
|
23
|
+
readonly routingMatches: readonly ITaskRoutingMatchResult[];
|
|
24
|
+
/** The shared ranker's raw top template / pipeline (null when the ranker did not run). */
|
|
25
|
+
readonly rankerTop: {
|
|
26
|
+
readonly topTemplate: {
|
|
27
|
+
readonly id: string;
|
|
28
|
+
readonly score: number;
|
|
29
|
+
} | null;
|
|
30
|
+
readonly topPipeline: {
|
|
31
|
+
readonly id: string;
|
|
32
|
+
readonly score: number;
|
|
33
|
+
} | null;
|
|
34
|
+
} | null;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=ranked-recommendations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ranked-recommendations.d.ts","sourceRoot":"","sources":["../src/ranked-recommendations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AAC9E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,6GAA6G;IAC7G,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,QAAQ,CAAC,UAAU,EAAE,SAAS,wBAAwB,EAAE,CAAC;IACzD,kFAAkF;IAClF,QAAQ,CAAC,eAAe,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC9D,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;IAC/C,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,cAAc,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC5D,0FAA0F;IAC1F,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,WAAW,EAAE;YAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;QAC7E,QAAQ,CAAC,WAAW,EAAE;YAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;SAAE,GAAG,IAAI,CAAC;KAC9E,GAAG,IAAI,CAAC;CACV"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ranker-explainability.d.ts","sourceRoot":"","sources":["../src/ranker-explainability.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"ranker-explainability.d.ts","sourceRoot":"","sources":["../src/ranker-explainability.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAUvE,eAAO,MAAM,4BAA4B,wCAAwC,CAAC;AAElF,oBAAY,iBAAiB;IAC3B,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,IAAI,CAAC,EAAE,iBAAiB,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,4BAA4B,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,qBAAqB,CAAC;IAC/B,gDAAgD;IAChD,KAAK,EAAE,OAAO,CAAC;IACf,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4FAA4F;IAC5F,QAAQ,EAAE,OAAO,CAAC;IAClB,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,cAAc,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAChD,kFAAkF;IAClF,cAAc,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAChD,qDAAqD;IACrD,WAAW,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC3C,2EAA2E;IAC3E,WAAW,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAClD,8DAA8D;IAC9D,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,oCAAoC;IACpC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,iEAAiE;IACjE,UAAU,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC/C,6BAA6B;IAC7B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;CAChC;AAgTD,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,qBAAqB,EACjC,OAAO,EAAE,qBAAqB,EAC9B,OAAO,GAAE,qBAA0B,GAClC,oBAAoB,CAmHtB;AAID,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CA+D7F;AAMD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CA4DjG;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAS7F"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { buildSearchIndex, searchIndex, } from "./search-index.js";
|
|
2
2
|
import { listSearchTuning, tuningBoostFor, } from "./search-tuning-registry.js";
|
|
3
3
|
import { rankAll } from "./task-ranker.js";
|
|
4
|
+
import { isSearchDocumentPrefix, parseSearchDocumentId, searchDocumentId, searchDocumentPrefixForKind, searchKindForPrefix, } from "./search-document-id.js";
|
|
5
|
+
import { tuningQueryTokens } from "./tuning-query-tokens.js";
|
|
4
6
|
export const RANKER_EXPLAINABILITY_SCHEMA = 'sharkcraft.ranker-explainability/v1';
|
|
5
7
|
export var RankerExplainKind;
|
|
6
8
|
(function (RankerExplainKind) {
|
|
@@ -186,13 +188,13 @@ function inferDomainAppliesWhen(taskLower) {
|
|
|
186
188
|
function commonSuggestedCommands(found, hit) {
|
|
187
189
|
if (!found) {
|
|
188
190
|
return [
|
|
189
|
-
'shrk commands
|
|
190
|
-
'shrk
|
|
191
|
+
'shrk commands search "<partial id>"',
|
|
192
|
+
'shrk search <text>',
|
|
191
193
|
'shrk search <text> --explain',
|
|
192
194
|
];
|
|
193
195
|
}
|
|
194
196
|
const out = [];
|
|
195
|
-
out.push(
|
|
197
|
+
out.push('shrk task "<task>" --explain-ranking');
|
|
196
198
|
out.push('shrk search "<task>" --explain');
|
|
197
199
|
out.push('shrk search tuning explain "<task>"');
|
|
198
200
|
out.push('shrk coverage scaffolds --task "<task>"');
|
|
@@ -244,12 +246,34 @@ function deriveMatchedAndMissing(hit, taskOrQuery) {
|
|
|
244
246
|
missing.push({ signal: 'appliesWhen', matched: false });
|
|
245
247
|
return { matched, missing };
|
|
246
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* A registry hit's SEARCH-DOCUMENT id — what `tuningBoostFor` and the search
|
|
251
|
+
* index key by — from THE codec. `why` used to hand the matcher the BARE id, so
|
|
252
|
+
* it reported a dead bare boost as applied and hid every live prefixed one.
|
|
253
|
+
*/
|
|
254
|
+
function registryHitDocumentId(hit) {
|
|
255
|
+
const prefix = searchDocumentPrefixForKind(hit.kind);
|
|
256
|
+
return prefix ? searchDocumentId(prefix, hit.id) : hit.id;
|
|
257
|
+
}
|
|
258
|
+
/** The hit for a bare registry id OR its search-document id (`knowledge:foo`). */
|
|
259
|
+
function findRegistryHit(hits, requested) {
|
|
260
|
+
const exact = hits.find((h) => h.id === requested);
|
|
261
|
+
if (exact)
|
|
262
|
+
return exact;
|
|
263
|
+
const parsed = parseSearchDocumentId(requested);
|
|
264
|
+
if (!parsed || !isSearchDocumentPrefix(parsed.prefix))
|
|
265
|
+
return undefined;
|
|
266
|
+
const kind = searchKindForPrefix(parsed.prefix);
|
|
267
|
+
return hits.find((h) => h.id === parsed.id && h.kind === kind);
|
|
268
|
+
}
|
|
247
269
|
function gatherTuningTrace(hit, tuning, taskOrQuery) {
|
|
248
270
|
if (!hit)
|
|
249
271
|
return [];
|
|
250
|
-
|
|
272
|
+
// THE trigger tokenizer and THE document id — the same inputs the rankers
|
|
273
|
+
// hand `tuningBoostFor`, so this trace is what they apply (explain ≡ ranker).
|
|
274
|
+
const tokens = tuningQueryTokens(taskOrQuery);
|
|
251
275
|
const boost = tuningBoostFor({
|
|
252
|
-
id: hit
|
|
276
|
+
id: registryHitDocumentId(hit),
|
|
253
277
|
kind: hit.kind,
|
|
254
278
|
...(hit.tags ? { tags: hit.tags } : {}),
|
|
255
279
|
source: hit.source,
|
|
@@ -274,8 +298,12 @@ function gatherTuningTrace(hit, tuning, taskOrQuery) {
|
|
|
274
298
|
export function explainRankerDecision(inspection, request, options = {}) {
|
|
275
299
|
const topN = options.topN ?? 10;
|
|
276
300
|
const hits = listRegistryHits(inspection);
|
|
277
|
-
|
|
278
|
-
|
|
301
|
+
// A search-document id (`knowledge:foo`) and the bare registry id (`foo`)
|
|
302
|
+
// name the same entry; the ranker compares bare ids, the search index
|
|
303
|
+
// prefixed ones.
|
|
304
|
+
const found = findRegistryHit(hits, request.id);
|
|
305
|
+
const id = found?.id ?? request.id;
|
|
306
|
+
const documentId = found ? registryHitDocumentId(found) : request.id;
|
|
279
307
|
const taskOrQuery = request.task ?? request.query ?? '';
|
|
280
308
|
const tuning = listSearchTuning(inspection);
|
|
281
309
|
// Build search-based ranking for query mode (no task).
|
|
@@ -290,7 +318,7 @@ export function explainRankerDecision(inspection, request, options = {}) {
|
|
|
290
318
|
if (request.query) {
|
|
291
319
|
const index = buildSearchIndex(inspection);
|
|
292
320
|
const result = searchIndex(index, { query: request.query, limit: Math.max(topN, 20), explain: true }, inspection);
|
|
293
|
-
const targetHit = result.hits.find((h) => h.document.id ===
|
|
321
|
+
const targetHit = result.hits.find((h) => h.document.id === documentId);
|
|
294
322
|
if (targetHit) {
|
|
295
323
|
documentSnapshot = targetHit.document;
|
|
296
324
|
searchScore = targetHit.score;
|
|
@@ -383,7 +411,7 @@ export function explainRankerDecision(inspection, request, options = {}) {
|
|
|
383
411
|
// ── Rendering ───────────────────────────────────────────────────────────
|
|
384
412
|
export function renderRankerExplainText(report, whyNot) {
|
|
385
413
|
const lines = [];
|
|
386
|
-
const heading = whyNot ? `===
|
|
414
|
+
const heading = whyNot ? `=== why-not ${report.request.id} ===` : `=== why ${report.request.id} ===`;
|
|
387
415
|
lines.push(heading);
|
|
388
416
|
if (report.request.task)
|
|
389
417
|
lines.push(`task: ${report.request.task}`);
|
|
@@ -461,7 +489,7 @@ function escHtml(s) {
|
|
|
461
489
|
}
|
|
462
490
|
export function renderRankerExplainMarkdown(report, whyNot) {
|
|
463
491
|
const lines = [];
|
|
464
|
-
lines.push(`# ${whyNot ? '
|
|
492
|
+
lines.push(`# ${whyNot ? 'why-not' : 'why'}\`${report.request.id}\``);
|
|
465
493
|
if (report.request.task)
|
|
466
494
|
lines.push(`Task: \`${report.request.task}\``);
|
|
467
495
|
if (report.request.query)
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A built-in recommender recipe. `terms` and `phrases` go through THE term
|
|
3
|
+
* matcher (tokens mode), so `pr` no longer fires inside "pricing" nor `pack`
|
|
4
|
+
* inside "package". `regex` is kept only for phrase-shaped alternations, every
|
|
5
|
+
* alternative anchored at a word boundary.
|
|
6
|
+
*/
|
|
7
|
+
export interface IRecommendRecipe {
|
|
8
|
+
readonly id: string;
|
|
9
|
+
readonly terms: readonly string[];
|
|
10
|
+
readonly phrases?: readonly string[];
|
|
11
|
+
readonly regex?: RegExp;
|
|
12
|
+
readonly recommendations: readonly {
|
|
13
|
+
readonly command: string;
|
|
14
|
+
readonly why: string;
|
|
15
|
+
}[];
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=recommend-recipe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommend-recipe.d.ts","sourceRoot":"","sources":["../src/recommend-recipe.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE,SAAS;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACzF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IRecommendRecipe } from './recommend-recipe.js';
|
|
2
|
+
import type { ITermQuery } from './term-query.js';
|
|
3
|
+
export declare const RECOMMEND_RECIPES: readonly IRecommendRecipe[];
|
|
4
|
+
/**
|
|
5
|
+
* The evidence a recipe matched on — its matched terms and phrases, plus the
|
|
6
|
+
* regex's matched text — distinct. Empty = the recipe does not apply.
|
|
7
|
+
*/
|
|
8
|
+
export declare function matchRecommendRecipe(recipe: IRecommendRecipe, query: ITermQuery, text: string): string[];
|
|
9
|
+
//# sourceMappingURL=recommend-recipes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recommend-recipes.d.ts","sourceRoot":"","sources":["../src/recommend-recipes.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,eAAO,MAAM,iBAAiB,EAAE,SAAS,gBAAgB,EA2ExD,CAAC;AAEF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAYxG"}
|