@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.
Files changed (693) hide show
  1. package/dist/acceptance-replay.js +1 -1
  2. package/dist/agent-contract-templates.js +6 -6
  3. package/dist/agent-contract.d.ts.map +1 -1
  4. package/dist/agent-contract.js +13 -8
  5. package/dist/agent-orchestration.js +2 -2
  6. package/dist/agent-task-prep.d.ts +16 -0
  7. package/dist/agent-task-prep.d.ts.map +1 -1
  8. package/dist/agent-task-prep.js +51 -4
  9. package/dist/ai-readiness.d.ts.map +1 -1
  10. package/dist/ai-readiness.js +21 -3
  11. package/dist/architecture-map.d.ts +16 -0
  12. package/dist/architecture-map.d.ts.map +1 -1
  13. package/dist/architecture-map.js +42 -26
  14. package/dist/area-explore.d.ts +2 -2
  15. package/dist/area-explore.d.ts.map +1 -1
  16. package/dist/area-explore.js +36 -16
  17. package/dist/area-map.d.ts +56 -11
  18. package/dist/area-map.d.ts.map +1 -1
  19. package/dist/area-map.js +106 -25
  20. package/dist/asset-doctor-proposed-exit.d.ts +21 -0
  21. package/dist/asset-doctor-proposed-exit.d.ts.map +1 -0
  22. package/dist/asset-doctor-proposed-exit.js +22 -0
  23. package/dist/asset-provenance.js +1 -1
  24. package/dist/boundaries-changed-only.d.ts +24 -1
  25. package/dist/boundaries-changed-only.d.ts.map +1 -1
  26. package/dist/boundaries-changed-only.js +12 -2
  27. package/dist/boundary-check-options.model.d.ts +40 -0
  28. package/dist/boundary-check-options.model.d.ts.map +1 -0
  29. package/dist/boundary-check-options.model.js +1 -0
  30. package/dist/boundary-check-result.model.d.ts +89 -0
  31. package/dist/boundary-check-result.model.d.ts.map +1 -0
  32. package/dist/boundary-check-result.model.js +1 -0
  33. package/dist/boundary-configuration-status.d.ts +38 -0
  34. package/dist/boundary-configuration-status.d.ts.map +1 -0
  35. package/dist/boundary-configuration-status.js +118 -0
  36. package/dist/boundary-configuration-status.model.d.ts +37 -0
  37. package/dist/boundary-configuration-status.model.d.ts.map +1 -0
  38. package/dist/boundary-configuration-status.model.js +1 -0
  39. package/dist/boundary-load-issue.model.d.ts +30 -0
  40. package/dist/boundary-load-issue.model.d.ts.map +1 -0
  41. package/dist/boundary-load-issue.model.js +1 -0
  42. package/dist/boundary-rule-check.model.d.ts +44 -0
  43. package/dist/boundary-rule-check.model.d.ts.map +1 -0
  44. package/dist/boundary-rule-check.model.js +1 -0
  45. package/dist/boundary-rule-invalidation.model.d.ts +31 -0
  46. package/dist/boundary-rule-invalidation.model.d.ts.map +1 -0
  47. package/dist/boundary-rule-invalidation.model.js +1 -0
  48. package/dist/boundary-rule-set-diff.model.d.ts +75 -0
  49. package/dist/boundary-rule-set-diff.model.d.ts.map +1 -0
  50. package/dist/boundary-rule-set-diff.model.js +1 -0
  51. package/dist/boundary-rule-sources.d.ts +28 -0
  52. package/dist/boundary-rule-sources.d.ts.map +1 -0
  53. package/dist/boundary-rule-sources.js +110 -0
  54. package/dist/boundary-stale-exception-finding.model.d.ts +12 -0
  55. package/dist/boundary-stale-exception-finding.model.d.ts.map +1 -0
  56. package/dist/boundary-stale-exception-finding.model.js +1 -0
  57. package/dist/boundary-unit-liveness.d.ts +35 -0
  58. package/dist/boundary-unit-liveness.d.ts.map +1 -0
  59. package/dist/boundary-unit-liveness.js +71 -0
  60. package/dist/change-intent.d.ts +3 -0
  61. package/dist/change-intent.d.ts.map +1 -1
  62. package/dist/change-intent.js +61 -27
  63. package/dist/changes-summary.d.ts.map +1 -1
  64. package/dist/changes-summary.js +19 -9
  65. package/dist/ci-integrity-report.js +1 -1
  66. package/dist/ci-predict.d.ts.map +1 -1
  67. package/dist/ci-predict.js +38 -5
  68. package/dist/code-intelligence-doctor.d.ts +6 -0
  69. package/dist/code-intelligence-doctor.d.ts.map +1 -1
  70. package/dist/code-intelligence-doctor.js +22 -7
  71. package/dist/command-recommender.d.ts +45 -2
  72. package/dist/command-recommender.d.ts.map +1 -1
  73. package/dist/command-recommender.js +41 -263
  74. package/dist/command-resolution-status.d.ts +44 -0
  75. package/dist/command-resolution-status.d.ts.map +1 -0
  76. package/dist/command-resolution-status.js +44 -0
  77. package/dist/command-safety-level.d.ts +15 -0
  78. package/dist/command-safety-level.d.ts.map +1 -0
  79. package/dist/command-safety-level.js +43 -0
  80. package/dist/command-taxonomy.js +1 -1
  81. package/dist/compliance-evidence.js +1 -1
  82. package/dist/compliance-profiles.js +1 -1
  83. package/dist/construct-registry.d.ts +40 -0
  84. package/dist/construct-registry.d.ts.map +1 -1
  85. package/dist/construct-registry.js +186 -82
  86. package/dist/context-tuning.d.ts +4 -0
  87. package/dist/context-tuning.d.ts.map +1 -1
  88. package/dist/context-tuning.js +10 -7
  89. package/dist/contract-template-registry.d.ts +10 -0
  90. package/dist/contract-template-registry.d.ts.map +1 -1
  91. package/dist/contract-template-registry.js +59 -33
  92. package/dist/contribution-kind.d.ts +52 -0
  93. package/dist/contribution-kind.d.ts.map +1 -0
  94. package/dist/contribution-kind.js +52 -0
  95. package/dist/contribution-load-failures.d.ts +106 -0
  96. package/dist/contribution-load-failures.d.ts.map +1 -0
  97. package/dist/contribution-load-failures.js +575 -0
  98. package/dist/contributions-report.d.ts +28 -0
  99. package/dist/contributions-report.d.ts.map +1 -0
  100. package/dist/contributions-report.js +242 -0
  101. package/dist/convention-registry.d.ts +22 -0
  102. package/dist/convention-registry.d.ts.map +1 -1
  103. package/dist/convention-registry.js +79 -39
  104. package/dist/coverage-report.d.ts.map +1 -1
  105. package/dist/coverage-report.js +6 -6
  106. package/dist/custom-checks.d.ts +60 -1
  107. package/dist/custom-checks.d.ts.map +1 -1
  108. package/dist/custom-checks.js +159 -6
  109. package/dist/dashboard/dashboard-data.d.ts +6 -0
  110. package/dist/dashboard/dashboard-data.d.ts.map +1 -1
  111. package/dist/dashboard/dashboard-data.js +99 -8
  112. package/dist/dashboard/dashboard-knowledge.d.ts.map +1 -1
  113. package/dist/dashboard/dashboard-knowledge.js +14 -2
  114. package/dist/decision-records.d.ts +20 -0
  115. package/dist/decision-records.d.ts.map +1 -1
  116. package/dist/decision-records.js +68 -20
  117. package/dist/declared-cross-references.d.ts +61 -0
  118. package/dist/declared-cross-references.d.ts.map +1 -0
  119. package/dist/declared-cross-references.js +550 -0
  120. package/dist/declared-gate-plane-rules.d.ts +24 -0
  121. package/dist/declared-gate-plane-rules.d.ts.map +1 -0
  122. package/dist/declared-gate-plane-rules.js +39 -0
  123. package/dist/declared-reference-coverage.d.ts +27 -0
  124. package/dist/declared-reference-coverage.d.ts.map +1 -0
  125. package/dist/declared-reference-coverage.js +50 -0
  126. package/dist/declared-xref-status.d.ts +19 -0
  127. package/dist/declared-xref-status.d.ts.map +1 -0
  128. package/dist/declared-xref-status.js +19 -0
  129. package/dist/delegate-pack-recipes.d.ts +13 -2
  130. package/dist/delegate-pack-recipes.d.ts.map +1 -1
  131. package/dist/delegate-pack-recipes.js +45 -14
  132. package/dist/demo-package.js +2 -2
  133. package/dist/demo-script.js +2 -2
  134. package/dist/demo-workflow.js +3 -3
  135. package/dist/dev-cycle.js +1 -1
  136. package/dist/dev-session.js +1 -1
  137. package/dist/doc-references.d.ts +23 -2
  138. package/dist/doc-references.d.ts.map +1 -1
  139. package/dist/doc-references.js +96 -17
  140. package/dist/doctor-result.d.ts +8 -0
  141. package/dist/doctor-result.d.ts.map +1 -1
  142. package/dist/doctor-verdict-kind.d.ts +19 -0
  143. package/dist/doctor-verdict-kind.d.ts.map +1 -0
  144. package/dist/doctor-verdict-kind.js +19 -0
  145. package/dist/doctor-verdict.d.ts +18 -0
  146. package/dist/doctor-verdict.d.ts.map +1 -0
  147. package/dist/doctor-verdict.js +28 -0
  148. package/dist/drift.d.ts +17 -0
  149. package/dist/drift.d.ts.map +1 -1
  150. package/dist/drift.js +40 -10
  151. package/dist/entrypoint-matrix.d.ts.map +1 -1
  152. package/dist/entrypoint-matrix.js +4 -1
  153. package/dist/feedback-ingestion.d.ts +28 -2
  154. package/dist/feedback-ingestion.d.ts.map +1 -1
  155. package/dist/feedback-ingestion.js +68 -19
  156. package/dist/fix-preview.d.ts.map +1 -1
  157. package/dist/fix-preview.js +9 -5
  158. package/dist/framework-extractor-outcomes.d.ts +27 -0
  159. package/dist/framework-extractor-outcomes.d.ts.map +1 -0
  160. package/dist/framework-extractor-outcomes.js +83 -0
  161. package/dist/fuzzy-impact.js +1 -1
  162. package/dist/healing-plan.d.ts.map +1 -1
  163. package/dist/healing-plan.js +3 -4
  164. package/dist/helper-catalog.d.ts +25 -0
  165. package/dist/helper-catalog.d.ts.map +1 -0
  166. package/dist/helper-catalog.js +91 -0
  167. package/dist/helper-registry.d.ts.map +1 -1
  168. package/dist/helper-registry.js +17 -1
  169. package/dist/helper-view.d.ts +33 -0
  170. package/dist/helper-view.d.ts.map +1 -0
  171. package/dist/helper-view.js +1 -0
  172. package/dist/i-asset-doctor-flags.d.ts +16 -0
  173. package/dist/i-asset-doctor-flags.d.ts.map +1 -0
  174. package/dist/i-asset-doctor-flags.js +1 -0
  175. package/dist/i-command-resolution.d.ts +22 -0
  176. package/dist/i-command-resolution.d.ts.map +1 -0
  177. package/dist/i-command-resolution.js +1 -0
  178. package/dist/i-command-resolve-options.d.ts +24 -0
  179. package/dist/i-command-resolve-options.d.ts.map +1 -0
  180. package/dist/i-command-resolve-options.js +1 -0
  181. package/dist/i-command-safety.d.ts +13 -0
  182. package/dist/i-command-safety.d.ts.map +1 -0
  183. package/dist/i-command-safety.js +1 -0
  184. package/dist/i-contribution-accepted-entry.d.ts +18 -0
  185. package/dist/i-contribution-accepted-entry.d.ts.map +1 -0
  186. package/dist/i-contribution-accepted-entry.js +1 -0
  187. package/dist/i-contribution-entry-rejection.d.ts +21 -0
  188. package/dist/i-contribution-entry-rejection.d.ts.map +1 -0
  189. package/dist/i-contribution-entry-rejection.js +1 -0
  190. package/dist/i-contribution-file-issue.d.ts +18 -0
  191. package/dist/i-contribution-file-issue.d.ts.map +1 -0
  192. package/dist/i-contribution-file-issue.js +1 -0
  193. package/dist/i-contribution-file-report.d.ts +40 -0
  194. package/dist/i-contribution-file-report.d.ts.map +1 -0
  195. package/dist/i-contribution-file-report.js +1 -0
  196. package/dist/i-contribution-file-validation.d.ts +24 -0
  197. package/dist/i-contribution-file-validation.d.ts.map +1 -0
  198. package/dist/i-contribution-file-validation.js +1 -0
  199. package/dist/i-contributions-report.d.ts +31 -0
  200. package/dist/i-contributions-report.d.ts.map +1 -0
  201. package/dist/i-contributions-report.js +1 -0
  202. package/dist/i-declared-xref-field.d.ts +25 -0
  203. package/dist/i-declared-xref-field.d.ts.map +1 -0
  204. package/dist/i-declared-xref-field.js +1 -0
  205. package/dist/i-declared-xref-issue.d.ts +25 -0
  206. package/dist/i-declared-xref-issue.d.ts.map +1 -0
  207. package/dist/i-declared-xref-issue.js +1 -0
  208. package/dist/i-declared-xref-report.d.ts +48 -0
  209. package/dist/i-declared-xref-report.d.ts.map +1 -0
  210. package/dist/i-declared-xref-report.js +1 -0
  211. package/dist/i-declared-xref-row.d.ts +29 -0
  212. package/dist/i-declared-xref-row.d.ts.map +1 -0
  213. package/dist/i-declared-xref-row.js +1 -0
  214. package/dist/i-doctor-verdict.d.ts +10 -0
  215. package/dist/i-doctor-verdict.d.ts.map +1 -0
  216. package/dist/i-doctor-verdict.js +1 -0
  217. package/dist/i-kind-outcomes.d.ts +13 -0
  218. package/dist/i-kind-outcomes.d.ts.map +1 -0
  219. package/dist/i-kind-outcomes.js +1 -0
  220. package/dist/i-pack-doctor-verdict.d.ts +15 -0
  221. package/dist/i-pack-doctor-verdict.d.ts.map +1 -0
  222. package/dist/i-pack-doctor-verdict.js +1 -0
  223. package/dist/i-probed-id-field.d.ts +17 -0
  224. package/dist/i-probed-id-field.d.ts.map +1 -0
  225. package/dist/i-probed-id-field.js +1 -0
  226. package/dist/i-reference-kind-declaration.d.ts +38 -0
  227. package/dist/i-reference-kind-declaration.d.ts.map +1 -0
  228. package/dist/i-reference-kind-declaration.js +1 -0
  229. package/dist/i-reference-warm-options.d.ts +21 -0
  230. package/dist/i-reference-warm-options.d.ts.map +1 -0
  231. package/dist/i-reference-warm-options.js +1 -0
  232. package/dist/i-registry-outcomes.d.ts +16 -0
  233. package/dist/i-registry-outcomes.d.ts.map +1 -0
  234. package/dist/i-registry-outcomes.js +1 -0
  235. package/dist/i-scaffold-pattern-doctor-report.d.ts +35 -0
  236. package/dist/i-scaffold-pattern-doctor-report.d.ts.map +1 -0
  237. package/dist/i-scaffold-pattern-doctor-report.js +1 -0
  238. package/dist/i-search-tuning-key-probe.d.ts +30 -0
  239. package/dist/i-search-tuning-key-probe.d.ts.map +1 -0
  240. package/dist/i-search-tuning-key-probe.js +1 -0
  241. package/dist/i-search-tuning-lint-issue.d.ts +61 -0
  242. package/dist/i-search-tuning-lint-issue.d.ts.map +1 -0
  243. package/dist/i-search-tuning-lint-issue.js +1 -0
  244. package/dist/i-search-tuning-lint-report.d.ts +38 -0
  245. package/dist/i-search-tuning-lint-report.d.ts.map +1 -0
  246. package/dist/i-search-tuning-lint-report.js +1 -0
  247. package/dist/i-unresolvable-reference-scan.d.ts +14 -0
  248. package/dist/i-unresolvable-reference-scan.d.ts.map +1 -0
  249. package/dist/i-unresolvable-reference-scan.js +1 -0
  250. package/dist/i-unresolvable-reference.d.ts +29 -0
  251. package/dist/i-unresolvable-reference.d.ts.map +1 -0
  252. package/dist/i-unresolvable-reference.js +1 -0
  253. package/dist/i-workspace-profile-payload.d.ts +12 -0
  254. package/dist/i-workspace-profile-payload.d.ts.map +1 -0
  255. package/dist/i-workspace-profile-payload.js +1 -0
  256. package/dist/impact-analysis.d.ts +15 -0
  257. package/dist/impact-analysis.d.ts.map +1 -1
  258. package/dist/impact-analysis.js +58 -13
  259. package/dist/impact-render.d.ts.map +1 -1
  260. package/dist/impact-render.js +22 -0
  261. package/dist/import-hygiene.d.ts +35 -1
  262. package/dist/import-hygiene.d.ts.map +1 -1
  263. package/dist/import-hygiene.js +107 -13
  264. package/dist/index.d.ts +141 -0
  265. package/dist/index.d.ts.map +1 -1
  266. package/dist/index.js +172 -0
  267. package/dist/inspection-discovery.d.ts +45 -0
  268. package/dist/inspection-discovery.d.ts.map +1 -0
  269. package/dist/inspection-discovery.js +70 -0
  270. package/dist/knowledge-advisory-code.d.ts +17 -0
  271. package/dist/knowledge-advisory-code.d.ts.map +1 -0
  272. package/dist/knowledge-advisory-code.js +17 -0
  273. package/dist/knowledge-aged-entry.d.ts +10 -0
  274. package/dist/knowledge-aged-entry.d.ts.map +1 -0
  275. package/dist/knowledge-aged-entry.js +1 -0
  276. package/dist/knowledge-authoring.d.ts +24 -1
  277. package/dist/knowledge-authoring.d.ts.map +1 -1
  278. package/dist/knowledge-authoring.js +46 -7
  279. package/dist/knowledge-entry-verdict-record.d.ts +22 -0
  280. package/dist/knowledge-entry-verdict-record.d.ts.map +1 -0
  281. package/dist/knowledge-entry-verdict-record.js +1 -0
  282. package/dist/knowledge-entry-verdict.d.ts +17 -0
  283. package/dist/knowledge-entry-verdict.d.ts.map +1 -0
  284. package/dist/knowledge-entry-verdict.js +17 -0
  285. package/dist/knowledge-graph.d.ts +6 -0
  286. package/dist/knowledge-graph.d.ts.map +1 -1
  287. package/dist/knowledge-graph.js +18 -7
  288. package/dist/knowledge-kind-bucket.d.ts +19 -0
  289. package/dist/knowledge-kind-bucket.d.ts.map +1 -0
  290. package/dist/knowledge-kind-bucket.js +1 -0
  291. package/dist/knowledge-load-failure.d.ts +23 -0
  292. package/dist/knowledge-load-failure.d.ts.map +1 -0
  293. package/dist/knowledge-load-failure.js +1 -0
  294. package/dist/knowledge-reference-kind-bucket.d.ts +11 -0
  295. package/dist/knowledge-reference-kind-bucket.d.ts.map +1 -0
  296. package/dist/knowledge-reference-kind-bucket.js +1 -0
  297. package/dist/knowledge-stale-advisory.d.ts +14 -0
  298. package/dist/knowledge-stale-advisory.d.ts.map +1 -0
  299. package/dist/knowledge-stale-advisory.js +1 -0
  300. package/dist/knowledge-stale-coverage.d.ts +19 -0
  301. package/dist/knowledge-stale-coverage.d.ts.map +1 -0
  302. package/dist/knowledge-stale-coverage.js +1 -0
  303. package/dist/knowledge-stale-gate-flags.d.ts +33 -0
  304. package/dist/knowledge-stale-gate-flags.d.ts.map +1 -0
  305. package/dist/knowledge-stale-gate-flags.js +1 -0
  306. package/dist/knowledge-stale-gate-input.d.ts +46 -0
  307. package/dist/knowledge-stale-gate-input.d.ts.map +1 -0
  308. package/dist/knowledge-stale-gate-input.js +1 -0
  309. package/dist/knowledge-stale-gate-result.d.ts +33 -0
  310. package/dist/knowledge-stale-gate-result.d.ts.map +1 -0
  311. package/dist/knowledge-stale-gate-result.js +1 -0
  312. package/dist/knowledge-stale-gate-rule.d.ts +33 -0
  313. package/dist/knowledge-stale-gate-rule.d.ts.map +1 -0
  314. package/dist/knowledge-stale-gate-rule.js +1 -0
  315. package/dist/knowledge-stale-gate-violation.d.ts +13 -0
  316. package/dist/knowledge-stale-gate-violation.d.ts.map +1 -0
  317. package/dist/knowledge-stale-gate-violation.js +1 -0
  318. package/dist/knowledge-stale-gate.d.ts +83 -0
  319. package/dist/knowledge-stale-gate.d.ts.map +1 -0
  320. package/dist/knowledge-stale-gate.js +429 -0
  321. package/dist/knowledge-stale-quality-gate.d.ts +26 -0
  322. package/dist/knowledge-stale-quality-gate.d.ts.map +1 -0
  323. package/dist/knowledge-stale-quality-gate.js +110 -0
  324. package/dist/knowledge-stale.d.ts +122 -9
  325. package/dist/knowledge-stale.d.ts.map +1 -1
  326. package/dist/knowledge-stale.js +996 -291
  327. package/dist/knowledge-unverifiable-reason.d.ts +12 -0
  328. package/dist/knowledge-unverifiable-reason.d.ts.map +1 -0
  329. package/dist/knowledge-unverifiable-reason.js +12 -0
  330. package/dist/loader-diagnostics.d.ts +14 -2
  331. package/dist/loader-diagnostics.d.ts.map +1 -1
  332. package/dist/match-terms.d.ts +48 -0
  333. package/dist/match-terms.d.ts.map +1 -0
  334. package/dist/match-terms.js +155 -0
  335. package/dist/migration-profile-registry.d.ts +10 -0
  336. package/dist/migration-profile-registry.d.ts.map +1 -1
  337. package/dist/migration-profile-registry.js +57 -34
  338. package/dist/migration-readiness.d.ts.map +1 -1
  339. package/dist/migration-readiness.js +1 -3
  340. package/dist/nearest-id.d.ts +10 -26
  341. package/dist/nearest-id.d.ts.map +1 -1
  342. package/dist/nearest-id.js +9 -59
  343. package/dist/pack-asset-freshness.d.ts +65 -0
  344. package/dist/pack-asset-freshness.d.ts.map +1 -0
  345. package/dist/pack-asset-freshness.js +340 -0
  346. package/dist/pack-author-ux.d.ts +24 -3
  347. package/dist/pack-author-ux.d.ts.map +1 -1
  348. package/dist/pack-author-ux.js +87 -93
  349. package/dist/pack-contributions-inventory.d.ts +79 -39
  350. package/dist/pack-contributions-inventory.d.ts.map +1 -1
  351. package/dist/pack-contributions-inventory.js +443 -286
  352. package/dist/pack-doctor-verdict.d.ts +29 -0
  353. package/dist/pack-doctor-verdict.d.ts.map +1 -0
  354. package/dist/pack-doctor-verdict.js +45 -0
  355. package/dist/pack-doctor.d.ts +74 -1
  356. package/dist/pack-doctor.d.ts.map +1 -1
  357. package/dist/pack-doctor.js +281 -1
  358. package/dist/pack-helper-plan.d.ts +24 -0
  359. package/dist/pack-helper-plan.d.ts.map +1 -0
  360. package/dist/pack-helper-plan.js +77 -0
  361. package/dist/pack-helper-registry.d.ts +14 -0
  362. package/dist/pack-helper-registry.d.ts.map +1 -1
  363. package/dist/pack-helper-registry.js +76 -37
  364. package/dist/pack-manifest-reader.d.ts +8 -0
  365. package/dist/pack-manifest-reader.d.ts.map +1 -0
  366. package/dist/pack-manifest-reader.js +79 -0
  367. package/dist/pack-release-check.d.ts +14 -1
  368. package/dist/pack-release-check.d.ts.map +1 -1
  369. package/dist/pack-release-check.js +23 -1
  370. package/dist/pack-signature-status.d.ts +18 -6
  371. package/dist/pack-signature-status.d.ts.map +1 -1
  372. package/dist/pack-signature-status.js +59 -105
  373. package/dist/pack-test-runner.d.ts +27 -5
  374. package/dist/pack-test-runner.d.ts.map +1 -1
  375. package/dist/pack-test-runner.js +91 -35
  376. package/dist/pack-typecheck.d.ts +8 -0
  377. package/dist/pack-typecheck.d.ts.map +1 -0
  378. package/dist/pack-typecheck.js +76 -0
  379. package/dist/plan-review.d.ts +2 -0
  380. package/dist/plan-review.d.ts.map +1 -1
  381. package/dist/plan-review.js +17 -5
  382. package/dist/plan-simulation.d.ts.map +1 -1
  383. package/dist/plan-simulation.js +16 -5
  384. package/dist/playbook-load-issue.d.ts +16 -0
  385. package/dist/playbook-load-issue.d.ts.map +1 -0
  386. package/dist/playbook-load-issue.js +1 -0
  387. package/dist/playbook-registry.d.ts +32 -1
  388. package/dist/playbook-registry.d.ts.map +1 -1
  389. package/dist/playbook-registry.js +144 -55
  390. package/dist/policy-declaration.d.ts +18 -0
  391. package/dist/policy-declaration.d.ts.map +1 -0
  392. package/dist/policy-declaration.js +1 -0
  393. package/dist/policy-engine.d.ts +8 -0
  394. package/dist/policy-engine.d.ts.map +1 -1
  395. package/dist/policy-engine.js +26 -9
  396. package/dist/policy-overrides.d.ts.map +1 -1
  397. package/dist/policy-overrides.js +4 -4
  398. package/dist/policy-registry.d.ts +27 -0
  399. package/dist/policy-registry.d.ts.map +1 -1
  400. package/dist/policy-registry.js +87 -20
  401. package/dist/probed-id-fields.d.ts +21 -0
  402. package/dist/probed-id-fields.d.ts.map +1 -0
  403. package/dist/probed-id-fields.js +25 -0
  404. package/dist/probed-id-source.d.ts +11 -0
  405. package/dist/probed-id-source.d.ts.map +1 -0
  406. package/dist/probed-id-source.js +11 -0
  407. package/dist/profile-registry.d.ts +25 -2
  408. package/dist/profile-registry.d.ts.map +1 -1
  409. package/dist/profile-registry.js +59 -6
  410. package/dist/quality-gate-examination.d.ts +15 -0
  411. package/dist/quality-gate-examination.d.ts.map +1 -0
  412. package/dist/quality-gate-examination.js +15 -0
  413. package/dist/quality-gate-row-status.d.ts +19 -0
  414. package/dist/quality-gate-row-status.d.ts.map +1 -0
  415. package/dist/quality-gate-row-status.js +28 -0
  416. package/dist/quality-gate-status.d.ts +16 -0
  417. package/dist/quality-gate-status.d.ts.map +1 -0
  418. package/dist/quality-gate-status.js +16 -0
  419. package/dist/quality-html.d.ts.map +1 -1
  420. package/dist/quality-html.js +14 -3
  421. package/dist/quality-report-coverage.d.ts +26 -0
  422. package/dist/quality-report-coverage.d.ts.map +1 -0
  423. package/dist/quality-report-coverage.js +48 -0
  424. package/dist/quality-report.d.ts +28 -1
  425. package/dist/quality-report.d.ts.map +1 -1
  426. package/dist/quality-report.js +263 -35
  427. package/dist/query-intent-kind.d.ts +18 -0
  428. package/dist/query-intent-kind.d.ts.map +1 -0
  429. package/dist/query-intent-kind.js +18 -0
  430. package/dist/query-intent-result.d.ts +23 -0
  431. package/dist/query-intent-result.d.ts.map +1 -0
  432. package/dist/query-intent-result.js +1 -0
  433. package/dist/query-intent.d.ts +18 -0
  434. package/dist/query-intent.d.ts.map +1 -0
  435. package/dist/query-intent.js +336 -0
  436. package/dist/query-resolver.d.ts +18 -0
  437. package/dist/query-resolver.d.ts.map +1 -1
  438. package/dist/query-resolver.js +7 -4
  439. package/dist/ranked-recommendations.d.ts +36 -0
  440. package/dist/ranked-recommendations.d.ts.map +1 -0
  441. package/dist/ranked-recommendations.js +1 -0
  442. package/dist/ranker-explainability.d.ts.map +1 -1
  443. package/dist/ranker-explainability.js +38 -10
  444. package/dist/recommend-recipe.d.ts +17 -0
  445. package/dist/recommend-recipe.d.ts.map +1 -0
  446. package/dist/recommend-recipe.js +1 -0
  447. package/dist/recommend-recipes.d.ts +9 -0
  448. package/dist/recommend-recipes.d.ts.map +1 -0
  449. package/dist/recommend-recipes.js +106 -0
  450. package/dist/recommendation-candidate.d.ts +30 -0
  451. package/dist/recommendation-candidate.d.ts.map +1 -0
  452. package/dist/recommendation-candidate.js +1 -0
  453. package/dist/recommendation-confidence.d.ts +27 -0
  454. package/dist/recommendation-confidence.d.ts.map +1 -0
  455. package/dist/recommendation-confidence.js +1 -0
  456. package/dist/recommendation-ranking-options.d.ts +24 -0
  457. package/dist/recommendation-ranking-options.d.ts.map +1 -0
  458. package/dist/recommendation-ranking-options.js +1 -0
  459. package/dist/recommendation-ranking.d.ts +50 -0
  460. package/dist/recommendation-ranking.d.ts.map +1 -0
  461. package/dist/recommendation-ranking.js +527 -0
  462. package/dist/recommendation-source.d.ts +23 -0
  463. package/dist/recommendation-source.d.ts.map +1 -0
  464. package/dist/recommendation-source.js +23 -0
  465. package/dist/recommendation-suppression.d.ts +14 -0
  466. package/dist/recommendation-suppression.d.ts.map +1 -0
  467. package/dist/recommendation-suppression.js +14 -0
  468. package/dist/reference-asset-kind.d.ts +14 -0
  469. package/dist/reference-asset-kind.d.ts.map +1 -0
  470. package/dist/reference-asset-kind.js +14 -0
  471. package/dist/reference-content-check.d.ts +32 -0
  472. package/dist/reference-content-check.d.ts.map +1 -0
  473. package/dist/reference-content-check.js +143 -0
  474. package/dist/reference-failure.d.ts +31 -0
  475. package/dist/reference-failure.d.ts.map +1 -0
  476. package/dist/reference-failure.js +31 -0
  477. package/dist/reference-id-status.d.ts +15 -0
  478. package/dist/reference-id-status.d.ts.map +1 -0
  479. package/dist/reference-id-status.js +15 -0
  480. package/dist/reference-kind-declarations.d.ts +42 -0
  481. package/dist/reference-kind-declarations.d.ts.map +1 -0
  482. package/dist/reference-kind-declarations.js +142 -0
  483. package/dist/reference-lookup.d.ts +6 -0
  484. package/dist/reference-lookup.d.ts.map +1 -1
  485. package/dist/reference-lookup.js +13 -5
  486. package/dist/reference-registry.d.ts +109 -11
  487. package/dist/reference-registry.d.ts.map +1 -1
  488. package/dist/reference-registry.js +186 -30
  489. package/dist/reference-subject.d.ts +20 -0
  490. package/dist/reference-subject.d.ts.map +1 -0
  491. package/dist/reference-subject.js +1 -0
  492. package/dist/registration-hint-discovery-status.d.ts +25 -0
  493. package/dist/registration-hint-discovery-status.d.ts.map +1 -0
  494. package/dist/registration-hint-discovery-status.js +25 -0
  495. package/dist/registration-hint-registry.d.ts +80 -0
  496. package/dist/registration-hint-registry.d.ts.map +1 -1
  497. package/dist/registration-hint-registry.js +356 -138
  498. package/dist/registry-lifecycle.d.ts +200 -19
  499. package/dist/registry-lifecycle.d.ts.map +1 -1
  500. package/dist/registry-lifecycle.js +526 -136
  501. package/dist/release-readiness.d.ts.map +1 -1
  502. package/dist/release-readiness.js +10 -7
  503. package/dist/release-smoke.d.ts.map +1 -1
  504. package/dist/release-smoke.js +11 -7
  505. package/dist/report-site.d.ts.map +1 -1
  506. package/dist/report-site.js +25 -7
  507. package/dist/repository-intelligence.d.ts.map +1 -1
  508. package/dist/repository-intelligence.js +3 -2
  509. package/dist/repository-knowledge-model.d.ts.map +1 -1
  510. package/dist/repository-knowledge-model.js +18 -5
  511. package/dist/resolve-project-config.d.ts +64 -0
  512. package/dist/resolve-project-config.d.ts.map +1 -1
  513. package/dist/resolve-project-config.js +240 -32
  514. package/dist/reuse/compute-reuse-coverage.d.ts +29 -0
  515. package/dist/reuse/compute-reuse-coverage.d.ts.map +1 -0
  516. package/dist/reuse/compute-reuse-coverage.js +198 -0
  517. package/dist/reuse/rank-reuse-candidates.d.ts +38 -0
  518. package/dist/reuse/rank-reuse-candidates.d.ts.map +1 -0
  519. package/dist/reuse/rank-reuse-candidates.js +212 -0
  520. package/dist/reuse/rank-reuse-options.d.ts +20 -0
  521. package/dist/reuse/rank-reuse-options.d.ts.map +1 -0
  522. package/dist/reuse/rank-reuse-options.js +1 -0
  523. package/dist/reuse/rank-reuse-suggestions.d.ts +15 -0
  524. package/dist/reuse/rank-reuse-suggestions.d.ts.map +1 -0
  525. package/dist/reuse/rank-reuse-suggestions.js +31 -0
  526. package/dist/reuse/resolve-curated-reuse.d.ts +43 -0
  527. package/dist/reuse/resolve-curated-reuse.d.ts.map +1 -0
  528. package/dist/reuse/resolve-curated-reuse.js +115 -0
  529. package/dist/reuse/reuse-candidate.d.ts +29 -0
  530. package/dist/reuse/reuse-candidate.d.ts.map +1 -0
  531. package/dist/reuse/reuse-candidate.js +1 -0
  532. package/dist/reuse/reuse-coverage-report.d.ts +74 -0
  533. package/dist/reuse/reuse-coverage-report.d.ts.map +1 -0
  534. package/dist/reuse/reuse-coverage-report.js +1 -0
  535. package/dist/reuse/reuse-curated-coverage.d.ts +36 -0
  536. package/dist/reuse/reuse-curated-coverage.d.ts.map +1 -0
  537. package/dist/reuse/reuse-curated-coverage.js +1 -0
  538. package/dist/reuse/reuse-curated-resolution.d.ts +36 -0
  539. package/dist/reuse/reuse-curated-resolution.d.ts.map +1 -0
  540. package/dist/reuse/reuse-curated-resolution.js +1 -0
  541. package/dist/reuse/reuse-curated-status.d.ts +21 -0
  542. package/dist/reuse/reuse-curated-status.d.ts.map +1 -0
  543. package/dist/reuse/reuse-curated-status.js +21 -0
  544. package/dist/reuse/reuse-match-detail.d.ts +15 -0
  545. package/dist/reuse/reuse-match-detail.d.ts.map +1 -0
  546. package/dist/reuse/reuse-match-detail.js +1 -0
  547. package/dist/reuse/reuse-ranking.d.ts +37 -0
  548. package/dist/reuse/reuse-ranking.d.ts.map +1 -0
  549. package/dist/reuse/reuse-ranking.js +1 -0
  550. package/dist/reuse/reuse-suggestion.d.ts +19 -0
  551. package/dist/reuse/reuse-suggestion.d.ts.map +1 -0
  552. package/dist/reuse/reuse-suggestion.js +1 -0
  553. package/dist/reuse/reuse-symbol-lookup.d.ts +28 -0
  554. package/dist/reuse/reuse-symbol-lookup.d.ts.map +1 -0
  555. package/dist/reuse/reuse-symbol-lookup.js +1 -0
  556. package/dist/reuse/reuse-tokenize.d.ts +11 -0
  557. package/dist/reuse/reuse-tokenize.d.ts.map +1 -0
  558. package/dist/reuse/reuse-tokenize.js +26 -0
  559. package/dist/reuse/score-reuse-name.d.ts +16 -0
  560. package/dist/reuse/score-reuse-name.d.ts.map +1 -0
  561. package/dist/reuse/score-reuse-name.js +35 -0
  562. package/dist/reuse/score-reuse-primitive.d.ts +33 -0
  563. package/dist/reuse/score-reuse-primitive.d.ts.map +1 -0
  564. package/dist/reuse/score-reuse-primitive.js +92 -0
  565. package/dist/review-packet.d.ts +2 -0
  566. package/dist/review-packet.d.ts.map +1 -1
  567. package/dist/review-packet.js +13 -6
  568. package/dist/role-views.d.ts.map +1 -1
  569. package/dist/role-views.js +16 -16
  570. package/dist/routing-recommends-channels.d.ts +24 -0
  571. package/dist/routing-recommends-channels.d.ts.map +1 -0
  572. package/dist/routing-recommends-channels.js +19 -0
  573. package/dist/run-boundary-check.d.ts +118 -0
  574. package/dist/run-boundary-check.d.ts.map +1 -0
  575. package/dist/run-boundary-check.js +592 -0
  576. package/dist/safety-audit.js +1 -1
  577. package/dist/scaffold-coverage.js +1 -1
  578. package/dist/scaffold-pattern-doctor-report.d.ts +19 -0
  579. package/dist/scaffold-pattern-doctor-report.d.ts.map +1 -0
  580. package/dist/scaffold-pattern-doctor-report.js +54 -0
  581. package/dist/scaffold-patterns.d.ts +75 -1
  582. package/dist/scaffold-patterns.d.ts.map +1 -1
  583. package/dist/scaffold-patterns.js +375 -84
  584. package/dist/schema-inventory.d.ts.map +1 -1
  585. package/dist/schema-inventory.js +4 -3
  586. package/dist/search-document-id.d.ts +52 -0
  587. package/dist/search-document-id.d.ts.map +1 -0
  588. package/dist/search-document-id.js +72 -0
  589. package/dist/search-document-prefix.d.ts +7 -0
  590. package/dist/search-document-prefix.d.ts.map +1 -0
  591. package/dist/search-document-prefix.js +1 -0
  592. package/dist/search-index.d.ts.map +1 -1
  593. package/dist/search-index.js +20 -23
  594. package/dist/search-tuning-explain.d.ts +6 -0
  595. package/dist/search-tuning-explain.d.ts.map +1 -1
  596. package/dist/search-tuning-explain.js +19 -17
  597. package/dist/search-tuning-key-probes.d.ts +16 -0
  598. package/dist/search-tuning-key-probes.d.ts.map +1 -0
  599. package/dist/search-tuning-key-probes.js +65 -0
  600. package/dist/search-tuning-key-resolution.d.ts +25 -0
  601. package/dist/search-tuning-key-resolution.d.ts.map +1 -0
  602. package/dist/search-tuning-key-resolution.js +1 -0
  603. package/dist/search-tuning-key-resolver.d.ts +4 -0
  604. package/dist/search-tuning-key-resolver.d.ts.map +1 -0
  605. package/dist/search-tuning-key-resolver.js +107 -0
  606. package/dist/search-tuning-key-status.d.ts +24 -0
  607. package/dist/search-tuning-key-status.d.ts.map +1 -0
  608. package/dist/search-tuning-key-status.js +24 -0
  609. package/dist/search-tuning-lint.d.ts +9 -0
  610. package/dist/search-tuning-lint.d.ts.map +1 -0
  611. package/dist/search-tuning-lint.js +468 -0
  612. package/dist/search-tuning-registry.d.ts +43 -0
  613. package/dist/search-tuning-registry.d.ts.map +1 -1
  614. package/dist/search-tuning-registry.js +214 -49
  615. package/dist/self-audit.d.ts +12 -0
  616. package/dist/self-audit.d.ts.map +1 -1
  617. package/dist/self-audit.js +36 -10
  618. package/dist/self-config-doctor-v2.d.ts +145 -3
  619. package/dist/self-config-doctor-v2.d.ts.map +1 -1
  620. package/dist/self-config-doctor-v2.js +1304 -181
  621. package/dist/self-config-doctor.d.ts +20 -1
  622. package/dist/self-config-doctor.d.ts.map +1 -1
  623. package/dist/self-config-doctor.js +53 -280
  624. package/dist/settled-unit-states.d.ts +9 -0
  625. package/dist/settled-unit-states.d.ts.map +1 -0
  626. package/dist/settled-unit-states.js +14 -0
  627. package/dist/sharkcraft-inspector.d.ts +34 -0
  628. package/dist/sharkcraft-inspector.d.ts.map +1 -1
  629. package/dist/sharkcraft-inspector.js +273 -26
  630. package/dist/spec/spec-evidence.d.ts.map +1 -1
  631. package/dist/spec/spec-evidence.js +14 -20
  632. package/dist/split-identifier.d.ts +21 -0
  633. package/dist/split-identifier.d.ts.map +1 -0
  634. package/dist/split-identifier.js +27 -0
  635. package/dist/start-here.d.ts.map +1 -1
  636. package/dist/start-here.js +1 -2
  637. package/dist/substitute-placeholders.d.ts +8 -0
  638. package/dist/substitute-placeholders.d.ts.map +1 -0
  639. package/dist/substitute-placeholders.js +9 -0
  640. package/dist/symbol-index.d.ts +33 -0
  641. package/dist/symbol-index.d.ts.map +1 -1
  642. package/dist/symbol-index.js +241 -3
  643. package/dist/symbol-member-entry.d.ts +26 -0
  644. package/dist/symbol-member-entry.d.ts.map +1 -0
  645. package/dist/symbol-member-entry.js +1 -0
  646. package/dist/symbol-member-kind.d.ts +14 -0
  647. package/dist/symbol-member-kind.d.ts.map +1 -0
  648. package/dist/symbol-member-kind.js +14 -0
  649. package/dist/task-packet.d.ts.map +1 -1
  650. package/dist/task-packet.js +52 -9
  651. package/dist/task-ranker.d.ts +8 -0
  652. package/dist/task-ranker.d.ts.map +1 -1
  653. package/dist/task-ranker.js +25 -13
  654. package/dist/task-risk.js +1 -1
  655. package/dist/task-routing-hint-registry.d.ts +20 -1
  656. package/dist/task-routing-hint-registry.d.ts.map +1 -1
  657. package/dist/task-routing-hint-registry.js +186 -42
  658. package/dist/template-drift.d.ts.map +1 -1
  659. package/dist/template-drift.js +30 -9
  660. package/dist/template-lint.d.ts.map +1 -1
  661. package/dist/template-lint.js +160 -2
  662. package/dist/term-query.d.ts +10 -0
  663. package/dist/term-query.d.ts.map +1 -0
  664. package/dist/term-query.js +1 -0
  665. package/dist/test-definitions.d.ts +6 -3
  666. package/dist/test-definitions.d.ts.map +1 -1
  667. package/dist/test-runner.d.ts +95 -10
  668. package/dist/test-runner.d.ts.map +1 -1
  669. package/dist/test-runner.js +309 -308
  670. package/dist/tuning-query-tokens.d.ts +29 -0
  671. package/dist/tuning-query-tokens.d.ts.map +1 -0
  672. package/dist/tuning-query-tokens.js +51 -0
  673. package/dist/typecheck-files.d.ts +36 -0
  674. package/dist/typecheck-files.d.ts.map +1 -0
  675. package/dist/typecheck-files.js +158 -0
  676. package/dist/uncertainty.js +1 -1
  677. package/dist/universal-search.d.ts.map +1 -1
  678. package/dist/universal-search.js +5 -3
  679. package/dist/unregistered-exports.d.ts +19 -0
  680. package/dist/unregistered-exports.d.ts.map +1 -0
  681. package/dist/unregistered-exports.js +141 -0
  682. package/dist/unresolvable-reason.d.ts +11 -0
  683. package/dist/unresolvable-reason.d.ts.map +1 -0
  684. package/dist/unresolvable-reason.js +11 -0
  685. package/dist/upgrade-advisor.d.ts.map +1 -1
  686. package/dist/upgrade-advisor.js +16 -9
  687. package/dist/validate-contribution-file.d.ts +4 -0
  688. package/dist/validate-contribution-file.d.ts.map +1 -0
  689. package/dist/validate-contribution-file.js +228 -0
  690. package/dist/why-file.d.ts +3 -0
  691. package/dist/why-file.d.ts.map +1 -1
  692. package/dist/why-file.js +7 -3
  693. 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
+ }
@@ -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;CAC7D;AAED,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,KAAK,CAAC,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC;CACvC;AAqID,wBAAgB,YAAY,CAC1B,UAAU,EAAE,qBAAqB,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,oBAAyB,GACjC,gBAAgB,CA8BlB"}
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"}
@@ -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(inspection, query) {
129
- const cat = inspection.commandCatalog ?? [];
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(inspection, query));
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":"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"}
1
+ {"version":3,"file":"ranker-explainability.d.ts","sourceRoot":"","sources":["../src/ranker-explainability.ts"],"names":[],"mappings":"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"}
@@ -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 suggest "<partial id>"',
190
- 'shrk find <text>',
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(`shrk why-not ${hit?.id ?? '<id>'} --for-task "<task>"`);
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
- const tokens = tokenize(taskOrQuery);
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.id,
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
- const id = request.id;
278
- const found = hits.find((h) => h.id === id);
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 === 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 ? `=== shrk why-not ${report.request.id} ===` : `=== shrk why ${report.request.id} ===`;
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 ? 'shrk why-not' : 'shrk why'} \`${report.request.id}\``);
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"}