@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
@@ -1,4 +1,8 @@
1
1
  import type { KnowledgeReferenceKind } from '@shrkcrft/knowledge';
2
+ import type { ICommandResolution } from './i-command-resolution.js';
3
+ import type { ICommandResolveOptions } from './i-command-resolve-options.js';
4
+ import type { IReferenceWarmOptions } from './i-reference-warm-options.js';
5
+ import { ReferenceIdStatus } from './reference-id-status.js';
2
6
  import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
3
7
  /**
4
8
  * The id sets a knowledge/doc reference can resolve against.
@@ -38,15 +42,35 @@ export type DocReferenceKind = KnowledgeReferenceKind | 'pipeline';
38
42
  * `docReferences[].resolvesAs` is unchanged — it still accepts exactly the
39
43
  * `DocReferenceKind`s. Widening the RESOLVER is not widening the config.
40
44
  */
41
- export type ReferenceKind = DocReferenceKind | 'knowledge' | 'rule' | 'decision' | 'convention' | 'contract-template' | 'migration-profile' | 'routing-hint' | 'registration-hint' | 'scaffold-pattern';
45
+ export type ReferenceKind = DocReferenceKind | 'knowledge' | 'rule' | 'decision' | 'convention' | 'contract-template' | 'migration-profile' | 'workspace-profile' | 'routing-hint' | 'registration-hint' | 'scaffold-pattern';
42
46
  /**
43
47
  * Every kind that resolves against a registry of ids.
44
48
  *
45
- * `command` is deliberately absent: the catalog lives in the CLI package,
46
- * ABOVE this layer, so it resolves by shape instead of by list. `file` /
47
- * `directory` / `symbol` / `package` / `url` are not id registries at all.
49
+ * `command` is deliberately absent: the command index lives in the CLI
50
+ * package, ABOVE this layer, so it resolves through the resolver the CLI
51
+ * injects ({@link resolveCommandReference}) — never by shape, and never by a
52
+ * list this layer cannot see. `file` / `directory` / `symbol` / `package` /
53
+ * `url` are not id registries at all.
54
+ *
55
+ * **List order is SPECIFICITY.** A rule and a path convention are knowledge
56
+ * entries filtered by type, so `knowledge` is a SUPERSET of both and must come
57
+ * after them: {@link referenceKindsOf} returns kinds in this order, so its first
58
+ * element names the most specific registry. With `knowledge` listed first,
59
+ * every rule id used to report `knowledge` as "the" kind it resolved as.
60
+ *
61
+ * **Every kind here is DECLARABLE** (round 12): `REFERENCE_KIND_DECLARATIONS`
62
+ * is a `Record<IdReferenceKind, …>`, so a kind added here without a row saying
63
+ * how its ids come to exist is a compile error, and the r76 declarability lock
64
+ * proves every path in that row fills this resolver. `workspace-profile` is
65
+ * the builtin WorkspaceProfile vocabulary — the applicability filters'
66
+ * `profileIds` resolve against it (they were bound to `migration-profile`, a
67
+ * readiness registry, and sat at NOT VERIFIED forever).
48
68
  */
49
- export declare const ALL_ID_REFERENCE_KINDS: readonly ReferenceKind[];
69
+ export declare const ALL_ID_REFERENCE_KINDS: readonly ["template", "pipeline", "playbook", "policy", "construct", "helper", "boundary-rule", "path-convention", "rule", "knowledge", "decision", "convention", "contract-template", "migration-profile", "workspace-profile", "routing-hint", "registration-hint", "scaffold-pattern"];
70
+ /** A kind that resolves against a registry of ids — a member of {@link ALL_ID_REFERENCE_KINDS}. */
71
+ export type IdReferenceKind = (typeof ALL_ID_REFERENCE_KINDS)[number];
72
+ /** The loud-skip message every consumer prints for an un-injected command index. */
73
+ export declare const COMMAND_INDEX_NOT_INJECTED = "command index not injected \u2014 NOT VERIFIED";
50
74
  /**
51
75
  * Populate the snapshot the synchronous accessors read.
52
76
  *
@@ -54,8 +78,12 @@ export declare const ALL_ID_REFERENCE_KINDS: readonly ReferenceKind[];
54
78
  * resolving anything. Without it a correct playbook — or convention, or
55
79
  * scaffold pattern — resolves to nothing, which is exactly how a correct id got
56
80
  * reported as an error twice.
81
+ *
82
+ * `options.commandResolver` is the CLI's command-string resolver (the command
83
+ * index lives above this layer). Without one, every `command` reference is
84
+ * `Unverifiable` — see {@link resolveCommandReference}.
57
85
  */
58
- export declare function warmReferenceRegistries(inspection: ISharkcraftInspection): Promise<void>;
86
+ export declare function warmReferenceRegistries(inspection: ISharkcraftInspection, options?: IReferenceWarmOptions): Promise<void>;
59
87
  /**
60
88
  * Every registered id of `kind`, for existence checks and for suggesting what
61
89
  * an unresolved token might have meant.
@@ -75,16 +103,68 @@ export declare function referenceIdsFor(inspection: ISharkcraftInspection, kind:
75
103
  * to get a gate switched off. Emptiness is repo-dependent (a project may simply
76
104
  * have no playbooks), so it cannot be a config-time error; the caller surfaces
77
105
  * it as a loud refusal at run time instead.
106
+ *
107
+ * `command` has no list; it can resolve exactly when a resolver was injected.
108
+ * Without one it is reported here — nothing could resolve, so every command
109
+ * would be reported wrong (or, before round 11, every `shrk …` string right).
78
110
  */
79
111
  export declare function emptyReferenceKinds(inspection: ISharkcraftInspection, kinds: readonly ReferenceKind[]): readonly ReferenceKind[];
112
+ /** True when the CLI injected its command resolver for this inspection. */
113
+ export declare function hasCommandResolver(inspection: ISharkcraftInspection): boolean;
114
+ /**
115
+ * True once {@link warmReferenceRegistries} ran for this inspection's root.
116
+ *
117
+ * The cache-backed kinds read EMPTY until then, so a consumer that resolves
118
+ * them (a test runner checking `expectedPlaybooks`) can report "could not look"
119
+ * instead of "your correct id does not exist".
120
+ */
121
+ export declare function isReferenceCacheWarm(inspection: ISharkcraftInspection): boolean;
122
+ /** Ok / PrefixOnly / NotShrk: the string resolves (or is not ours to judge). */
123
+ export declare function isCommandResolved(resolution: ICommandResolution): boolean;
124
+ /**
125
+ * THE function every consumer calls to resolve a command string: knowledge
126
+ * `command` references and anchors, the self-config doctor's command probes,
127
+ * agent-test `expectedCommands`, the query resolver.
128
+ *
129
+ * The command index lives in the CLI, above this layer, so the answer comes
130
+ * from the resolver the CLI injected via `warmReferenceRegistries(inspection,
131
+ * { commandResolver })`. Without one the answer is `Unverified` — the string
132
+ * was NOT checked. It used to be `id.startsWith('shrk ')`, which certified
133
+ * every `shrk …` string (including three dead ones in shrk's own knowledge) as
134
+ * a real command, forever.
135
+ */
136
+ export declare function resolveCommandReference(inspection: ISharkcraftInspection, raw: string, options?: ICommandResolveOptions): ICommandResolution;
137
+ /**
138
+ * THE reading of a `command` REFERENCE — a knowledge `command` reference or
139
+ * anchor, an agent test's `expectedCommands`, the `command` reference kind.
140
+ *
141
+ * Such a string names a shrk command, so a bare form is read as one: `doctor`
142
+ * resolves, `frobnicate` is an unknown verb (see {@link ICommandResolveOptions}).
143
+ * knowledge-stale, the self-config doctor's reference probes and the agent-test
144
+ * runner all call THIS — they used to normalise the same string three ways
145
+ * (`frobnicate` was `ok` in one, `not-shrk` in another and `unknown-verb` in
146
+ * the third). Free shell text (a playbook step) goes through
147
+ * {@link resolveCommandReference} without the assumption.
148
+ */
149
+ export declare function resolveShrkCommandReference(inspection: ISharkcraftInspection, command: string): ICommandResolution;
150
+ /**
151
+ * Tri-state existence: `Exists` / `Missing` / `Unverifiable`.
152
+ *
153
+ * For `command`: Ok, PrefixOnly and NotShrk are `Exists`; every Unknown* is
154
+ * `Missing`; no injected resolver is `Unverifiable` (report it as NOT VERIFIED,
155
+ * never as Ok). Read as a command REFERENCE ({@link resolveShrkCommandReference}).
156
+ * Every other kind is `Exists` / `Missing` against its registry.
157
+ */
158
+ export declare function referenceIdStatus(inspection: ISharkcraftInspection, kind: ReferenceKind, id: string): ReferenceIdStatus;
80
159
  /** True when `kind`'s ids come from an async-populated cache. */
81
160
  export declare function isCacheBackedKind(kind: ReferenceKind): boolean;
82
161
  /**
83
- * Whether `id` is registered under `kind`.
162
+ * Whether `id` is registered under `kind` — `true` only for
163
+ * {@link ReferenceIdStatus.Exists}.
84
164
  *
85
- * `command` keeps its historical permissiveness: the catalog is not always
86
- * populated, and a repo citing `shrk gen …` should not be told its own CLI
87
- * does not exist because an optional catalog was absent.
165
+ * For `command` this is `false` when no resolver was injected: an unverifiable
166
+ * command is not an existing one. A caller that must tell "missing" from
167
+ * "could not look" reads {@link referenceIdStatus} instead.
88
168
  */
89
169
  export declare function referenceIdExists(inspection: ISharkcraftInspection, kind: ReferenceKind, id: string): boolean;
90
170
  /**
@@ -107,6 +187,24 @@ export declare function referenceIdPool(inspection: ISharkcraftInspection, kinds
107
187
  * automatically.
108
188
  */
109
189
  export declare function referenceIdExistsInAnyKind(inspection: ISharkcraftInspection, id: string): boolean;
110
- /** The kind that accepted `id`, or `undefined` — for "resolved as what?" output. */
190
+ /**
191
+ * EVERY kind whose registry lists `id`, most specific first (the order of
192
+ * {@link ALL_ID_REFERENCE_KINDS}) — empty when nothing does.
193
+ *
194
+ * Ids carry no namespace prefix, so one id can legitimately live in several
195
+ * registries: a rule is also a knowledge entry, and a template may share an id
196
+ * with a construct. "Which namespace did this resolve into?" therefore has a
197
+ * LIST as its honest answer; {@link referenceKindOf} is its first element.
198
+ */
199
+ export declare function referenceKindsOf(inspection: ISharkcraftInspection, id: string): readonly ReferenceKind[];
200
+ /** The most specific kind that accepted `id`, or `undefined` — for "resolved as what?" output. */
111
201
  export declare function referenceKindOf(inspection: ISharkcraftInspection, id: string): ReferenceKind | undefined;
202
+ /**
203
+ * One-shot projection of {@link referenceIdsFor} over every kind, for O(1)
204
+ * membership when a caller resolves many ids at once (the declared
205
+ * cross-reference collector walks every asset). Not a second source: each set
206
+ * is built from `referenceIdsFor`, so list ≡ resolve still holds per kind.
207
+ * Snapshot semantics — rebuild it after a warm.
208
+ */
209
+ export declare function referenceIdSets(inspection: ISharkcraftInspection): ReadonlyMap<ReferenceKind, ReadonlySet<string>>;
112
210
  //# sourceMappingURL=reference-registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reference-registry.d.ts","sourceRoot":"","sources":["../src/reference-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAalE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,UAAU,CAAC;AAEnE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,WAAW,GACX,MAAM,GACN,UAAU,GACV,YAAY,GACZ,mBAAmB,GACnB,mBAAmB,GACnB,cAAc,GACd,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,aAAa,EAkB1D,CAAC;AAiDF;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwC9F;AAMD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,qBAAqB,EACjC,IAAI,EAAE,aAAa,GAClB,SAAS,MAAM,EAAE,CA6CnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,qBAAqB,EACjC,KAAK,EAAE,SAAS,aAAa,EAAE,GAC9B,SAAS,aAAa,EAAE,CAI1B;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,qBAAqB,EACjC,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,MAAM,GACT,OAAO,CAOT;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,qBAAqB,EACjC,KAAK,EAAE,SAAS,aAAa,EAAE,GAC9B,SAAS,MAAM,EAAE,CAMnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,OAAO,CAET;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAC7B,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,aAAa,GAAG,SAAS,CAE3B"}
1
+ {"version":3,"file":"reference-registry.d.ts","sourceRoot":"","sources":["../src/reference-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAa7D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;;;;;;;;;;;;GAaG;AAEH;;;;;;;;GAQG;AACH,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,UAAU,CAAC;AAEnE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,aAAa,GACrB,gBAAgB,GAChB,WAAW,GACX,MAAM,GACN,UAAU,GACV,YAAY,GACZ,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,cAAc,GACd,mBAAmB,GACnB,kBAAkB,CAAC;AAEvB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,sBAAsB,2RAmBU,CAAC;AAE9C,mGAAmG;AACnG,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AA2DtE,oFAAoF;AACpF,eAAO,MAAM,0BAA0B,mDAA8C,CAAC;AActF;;;;;;;;;;;GAWG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAMD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,qBAAqB,EACjC,IAAI,EAAE,aAAa,GAClB,SAAS,MAAM,EAAE,CAmDnB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,qBAAqB,EACjC,KAAK,EAAE,SAAS,aAAa,EAAE,GAC9B,SAAS,aAAa,EAAE,CAM1B;AAED,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAE7E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAE/E;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAMzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,qBAAqB,EACjC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,sBAA2B,GACnC,kBAAkB,CAMpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,qBAAqB,EACjC,OAAO,EAAE,MAAM,GACd,kBAAkB,CAEpB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,qBAAqB,EACjC,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,MAAM,GACT,iBAAiB,CAWnB;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAE9D;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,qBAAqB,EACjC,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,MAAM,GACT,OAAO,CAET;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,qBAAqB,EACjC,KAAK,EAAE,SAAS,aAAa,EAAE,GAC9B,SAAS,MAAM,EAAE,CAMnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,OAAO,CAET;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,SAAS,aAAa,EAAE,CAE1B;AAED,kGAAkG;AAClG,wBAAgB,eAAe,CAC7B,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,aAAa,GAAG,SAAS,CAE3B;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,qBAAqB,GAChC,WAAW,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAIjD"}
@@ -1,21 +1,39 @@
1
+ import { CommandResolutionStatus } from "./command-resolution-status.js";
2
+ import { ReferenceIdStatus } from "./reference-id-status.js";
1
3
  import { listConstructs, warmConstructCache } from "./construct-registry.js";
2
4
  import { listConventions } from "./convention-registry.js";
3
5
  import { loadAllContractTemplates } from "./contract-template-registry.js";
4
- import { listDecisions } from "./decision-records.js";
5
- import { HELPERS } from "./helper-registry.js";
6
+ import { listDecisions, loadTsDecisions } from "./decision-records.js";
7
+ import { listAllHelpers } from "./helper-catalog.js";
6
8
  import { listMigrationProfilesFromPacks } from "./migration-profile-registry.js";
7
- import { listPackHelpers } from "./pack-helper-registry.js";
8
9
  import { listPlaybooks, warmPlaybookCache } from "./playbook-registry.js";
9
10
  import { listPolicyIds, warmPolicyCache } from "./policy-registry.js";
11
+ import { listWorkspaceProfileEntries } from "./profile-registry.js";
10
12
  import { listRegistrationHints } from "./registration-hint-registry.js";
11
13
  import { loadScaffoldPatternsFromInspection } from "./scaffold-patterns.js";
12
14
  import { listTaskRoutingHints } from "./task-routing-hint-registry.js";
13
15
  /**
14
16
  * Every kind that resolves against a registry of ids.
15
17
  *
16
- * `command` is deliberately absent: the catalog lives in the CLI package,
17
- * ABOVE this layer, so it resolves by shape instead of by list. `file` /
18
- * `directory` / `symbol` / `package` / `url` are not id registries at all.
18
+ * `command` is deliberately absent: the command index lives in the CLI
19
+ * package, ABOVE this layer, so it resolves through the resolver the CLI
20
+ * injects ({@link resolveCommandReference}) — never by shape, and never by a
21
+ * list this layer cannot see. `file` / `directory` / `symbol` / `package` /
22
+ * `url` are not id registries at all.
23
+ *
24
+ * **List order is SPECIFICITY.** A rule and a path convention are knowledge
25
+ * entries filtered by type, so `knowledge` is a SUPERSET of both and must come
26
+ * after them: {@link referenceKindsOf} returns kinds in this order, so its first
27
+ * element names the most specific registry. With `knowledge` listed first,
28
+ * every rule id used to report `knowledge` as "the" kind it resolved as.
29
+ *
30
+ * **Every kind here is DECLARABLE** (round 12): `REFERENCE_KIND_DECLARATIONS`
31
+ * is a `Record<IdReferenceKind, …>`, so a kind added here without a row saying
32
+ * how its ids come to exist is a compile error, and the r76 declarability lock
33
+ * proves every path in that row fills this resolver. `workspace-profile` is
34
+ * the builtin WorkspaceProfile vocabulary — the applicability filters'
35
+ * `profileIds` resolve against it (they were bound to `migration-profile`, a
36
+ * readiness registry, and sat at NOT VERIFIED forever).
19
37
  */
20
38
  export const ALL_ID_REFERENCE_KINDS = [
21
39
  'template',
@@ -26,12 +44,13 @@ export const ALL_ID_REFERENCE_KINDS = [
26
44
  'helper',
27
45
  'boundary-rule',
28
46
  'path-convention',
29
- 'knowledge',
30
47
  'rule',
48
+ 'knowledge',
31
49
  'decision',
32
50
  'convention',
33
51
  'contract-template',
34
52
  'migration-profile',
53
+ 'workspace-profile',
35
54
  'routing-hint',
36
55
  'registration-hint',
37
56
  'scaffold-pattern',
@@ -61,9 +80,28 @@ const CACHE_BACKED_KINDS = [
61
80
  'routing-hint',
62
81
  'registration-hint',
63
82
  'scaffold-pattern',
83
+ // TS decisions (`sharkcraft/decisions.ts`, pack `decisionFiles`) reach the
84
+ // sync `listDecisions` only after the warm loads them, so an unwarmed lookup
85
+ // of a declared decision reads "missing" — a cache-backed kind, covered by
86
+ // the same "could not look" safety net (round 12 review, R12-DOC-5).
87
+ 'decision',
64
88
  ];
65
89
  /** Snapshot of the async-loaded kinds, per project root. */
66
90
  const ASYNC_IDS = new Map();
91
+ /**
92
+ * The injected command resolver, per inspection OBJECT.
93
+ *
94
+ * Keyed by the inspection rather than the project root so a resolver injected
95
+ * for one run can never leak into an unrelated inspection of the same root —
96
+ * an engine call that was never given one must stay `Unverifiable`. A later
97
+ * warm WITHOUT a resolver (an inner engine call re-warming the same
98
+ * inspection) keeps the one already injected.
99
+ */
100
+ const COMMAND_RESOLVERS = new WeakMap();
101
+ /** The command-REFERENCE reading: a bare command-word head names a shrk verb. */
102
+ const SHRK_COMMAND_REFERENCE = Object.freeze({ assumeShrk: true });
103
+ /** The loud-skip message every consumer prints for an un-injected command index. */
104
+ export const COMMAND_INDEX_NOT_INJECTED = 'command index not injected — NOT VERIFIED';
67
105
  async function safeIds(load) {
68
106
  try {
69
107
  return await load();
@@ -83,15 +121,26 @@ async function safeIds(load) {
83
121
  * resolving anything. Without it a correct playbook — or convention, or
84
122
  * scaffold pattern — resolves to nothing, which is exactly how a correct id got
85
123
  * reported as an error twice.
124
+ *
125
+ * `options.commandResolver` is the CLI's command-string resolver (the command
126
+ * index lives above this layer). Without one, every `command` reference is
127
+ * `Unverifiable` — see {@link resolveCommandReference}.
86
128
  */
87
- export async function warmReferenceRegistries(inspection) {
129
+ export async function warmReferenceRegistries(inspection, options = {}) {
130
+ if (options.commandResolver)
131
+ COMMAND_RESOLVERS.set(inspection, options.commandResolver);
88
132
  await Promise.all([
89
133
  warmPlaybookCache(inspection),
90
134
  warmConstructCache(inspection),
91
135
  warmPolicyCache(inspection),
136
+ // TS decisions (`sharkcraft/decisions.ts`, pack `decisionFiles`) reach the
137
+ // sync `listDecisions` only through this cache. Unwarmed, a declared
138
+ // decision resolved as nothing — the r76 declarability lock found it.
139
+ loadTsDecisions(inspection).catch(() => []),
92
140
  ]);
93
141
  const [packHelpers, conventions, contractTemplates, migrationProfiles, routingHints, registrationHints, scaffoldPatterns,] = await Promise.all([
94
- safeIds(async () => (await listPackHelpers(inspection)).map((e) => e.helper.id)),
142
+ // THE helper catalog — the same list `shrk helper list` prints.
143
+ safeIds(async () => (await listAllHelpers(inspection)).entries.map((h) => h.id)),
95
144
  safeIds(async () => (await listConventions(inspection)).map((e) => e.convention.id)),
96
145
  safeIds(async () => (await loadAllContractTemplates(inspection)).entries.map((e) => e.template.id)),
97
146
  safeIds(async () => (await listMigrationProfilesFromPacks(inspection)).map((p) => p.id)),
@@ -100,10 +149,11 @@ export async function warmReferenceRegistries(inspection) {
100
149
  safeIds(async () => (await loadScaffoldPatternsFromInspection(inspection)).patterns.map((e) => e.pattern.id)),
101
150
  ]);
102
151
  ASYNC_IDS.set(inspection.projectRoot, new Map([
103
- // Built-in helpers need no load; pack-contributed ones do. The doc
104
- // resolver used to see only the built-ins (an empty frozen array) while
105
- // the doctor saw both — a live divergence between the two paths.
106
- ['helper', [...HELPERS.map((h) => h.id), ...packHelpers]],
152
+ // Built-ins ∪ pack/local helpers, from the one catalog `helper
153
+ // list|get|plan` read — so list ≡ resolve by construction. (The doc
154
+ // resolver used to see only the built-ins while the doctor saw both,
155
+ // and `helper get` saw neither.)
156
+ ['helper', packHelpers],
107
157
  ['convention', conventions],
108
158
  ['contract-template', contractTemplates],
109
159
  ['migration-profile', migrationProfiles],
@@ -152,6 +202,11 @@ export function referenceIdsFor(inspection, kind) {
152
202
  case 'policy':
153
203
  // Declarations only — `evaluatePolicy` is the one that RUNS them.
154
204
  return listPolicyIds(inspection);
205
+ case 'workspace-profile':
206
+ // THE builtin WorkspaceProfile vocabulary — the same function `shrk
207
+ // profiles list --kind workspace` prints, so list ≡ resolve by
208
+ // construction. Sync and never empty: it can never loud-skip.
209
+ return listWorkspaceProfileEntries(inspection).map((e) => e.id);
155
210
  case 'helper':
156
211
  case 'convention':
157
212
  case 'contract-template':
@@ -161,9 +216,10 @@ export function referenceIdsFor(inspection, kind) {
161
216
  case 'scaffold-pattern':
162
217
  return asyncIds(inspection, kind);
163
218
  case 'command':
164
- // The command catalog lives in the CLI package, ABOVE this layer, so it
165
- // cannot be imported here. `referenceIdExists` keeps the permissive
166
- // shape check instead of pretending to a list it cannot see.
219
+ // The command index lives in the CLI package, ABOVE this layer, so it
220
+ // cannot be listed here. Existence goes through the injected resolver
221
+ // (`resolveCommandReference`) — never through a list this layer cannot
222
+ // see, and never through the shape of the string.
167
223
  return [];
168
224
  default:
169
225
  // `file` / `directory` / `symbol` / `package` / `url` are not id
@@ -180,29 +236,104 @@ export function referenceIdsFor(inspection, kind) {
180
236
  * to get a gate switched off. Emptiness is repo-dependent (a project may simply
181
237
  * have no playbooks), so it cannot be a config-time error; the caller surfaces
182
238
  * it as a loud refusal at run time instead.
239
+ *
240
+ * `command` has no list; it can resolve exactly when a resolver was injected.
241
+ * Without one it is reported here — nothing could resolve, so every command
242
+ * would be reported wrong (or, before round 11, every `shrk …` string right).
183
243
  */
184
244
  export function emptyReferenceKinds(inspection, kinds) {
185
- return kinds.filter((kind) => kind !== 'command' && referenceIdsFor(inspection, kind).length === 0);
245
+ return kinds.filter((kind) => kind === 'command'
246
+ ? !hasCommandResolver(inspection)
247
+ : referenceIdsFor(inspection, kind).length === 0);
248
+ }
249
+ /** True when the CLI injected its command resolver for this inspection. */
250
+ export function hasCommandResolver(inspection) {
251
+ return COMMAND_RESOLVERS.has(inspection);
252
+ }
253
+ /**
254
+ * True once {@link warmReferenceRegistries} ran for this inspection's root.
255
+ *
256
+ * The cache-backed kinds read EMPTY until then, so a consumer that resolves
257
+ * them (a test runner checking `expectedPlaybooks`) can report "could not look"
258
+ * instead of "your correct id does not exist".
259
+ */
260
+ export function isReferenceCacheWarm(inspection) {
261
+ return ASYNC_IDS.has(inspection.projectRoot);
262
+ }
263
+ /** Ok / PrefixOnly / NotShrk: the string resolves (or is not ours to judge). */
264
+ export function isCommandResolved(resolution) {
265
+ return (resolution.status === CommandResolutionStatus.Ok ||
266
+ resolution.status === CommandResolutionStatus.PrefixOnly ||
267
+ resolution.status === CommandResolutionStatus.NotShrk);
268
+ }
269
+ /**
270
+ * THE function every consumer calls to resolve a command string: knowledge
271
+ * `command` references and anchors, the self-config doctor's command probes,
272
+ * agent-test `expectedCommands`, the query resolver.
273
+ *
274
+ * The command index lives in the CLI, above this layer, so the answer comes
275
+ * from the resolver the CLI injected via `warmReferenceRegistries(inspection,
276
+ * { commandResolver })`. Without one the answer is `Unverified` — the string
277
+ * was NOT checked. It used to be `id.startsWith('shrk ')`, which certified
278
+ * every `shrk …` string (including three dead ones in shrk's own knowledge) as
279
+ * a real command, forever.
280
+ */
281
+ export function resolveCommandReference(inspection, raw, options = {}) {
282
+ const resolver = COMMAND_RESOLVERS.get(inspection);
283
+ if (!resolver) {
284
+ return { status: CommandResolutionStatus.Unverified, reason: COMMAND_INDEX_NOT_INJECTED };
285
+ }
286
+ return resolver(raw, options);
287
+ }
288
+ /**
289
+ * THE reading of a `command` REFERENCE — a knowledge `command` reference or
290
+ * anchor, an agent test's `expectedCommands`, the `command` reference kind.
291
+ *
292
+ * Such a string names a shrk command, so a bare form is read as one: `doctor`
293
+ * resolves, `frobnicate` is an unknown verb (see {@link ICommandResolveOptions}).
294
+ * knowledge-stale, the self-config doctor's reference probes and the agent-test
295
+ * runner all call THIS — they used to normalise the same string three ways
296
+ * (`frobnicate` was `ok` in one, `not-shrk` in another and `unknown-verb` in
297
+ * the third). Free shell text (a playbook step) goes through
298
+ * {@link resolveCommandReference} without the assumption.
299
+ */
300
+ export function resolveShrkCommandReference(inspection, command) {
301
+ return resolveCommandReference(inspection, command, SHRK_COMMAND_REFERENCE);
302
+ }
303
+ /**
304
+ * Tri-state existence: `Exists` / `Missing` / `Unverifiable`.
305
+ *
306
+ * For `command`: Ok, PrefixOnly and NotShrk are `Exists`; every Unknown* is
307
+ * `Missing`; no injected resolver is `Unverifiable` (report it as NOT VERIFIED,
308
+ * never as Ok). Read as a command REFERENCE ({@link resolveShrkCommandReference}).
309
+ * Every other kind is `Exists` / `Missing` against its registry.
310
+ */
311
+ export function referenceIdStatus(inspection, kind, id) {
312
+ if (kind === 'command') {
313
+ const resolution = resolveShrkCommandReference(inspection, id);
314
+ if (resolution.status === CommandResolutionStatus.Unverified) {
315
+ return ReferenceIdStatus.Unverifiable;
316
+ }
317
+ return isCommandResolved(resolution) ? ReferenceIdStatus.Exists : ReferenceIdStatus.Missing;
318
+ }
319
+ return referenceIdsFor(inspection, kind).includes(id)
320
+ ? ReferenceIdStatus.Exists
321
+ : ReferenceIdStatus.Missing;
186
322
  }
187
323
  /** True when `kind`'s ids come from an async-populated cache. */
188
324
  export function isCacheBackedKind(kind) {
189
325
  return CACHE_BACKED_KINDS.includes(kind);
190
326
  }
191
327
  /**
192
- * Whether `id` is registered under `kind`.
328
+ * Whether `id` is registered under `kind` — `true` only for
329
+ * {@link ReferenceIdStatus.Exists}.
193
330
  *
194
- * `command` keeps its historical permissiveness: the catalog is not always
195
- * populated, and a repo citing `shrk gen …` should not be told its own CLI
196
- * does not exist because an optional catalog was absent.
331
+ * For `command` this is `false` when no resolver was injected: an unverifiable
332
+ * command is not an existing one. A caller that must tell "missing" from
333
+ * "could not look" reads {@link referenceIdStatus} instead.
197
334
  */
198
335
  export function referenceIdExists(inspection, kind, id) {
199
- if (kind === 'command') {
200
- const catalog = inspection.commandCatalog;
201
- if (Array.isArray(catalog) && catalog.some((c) => c.id === id))
202
- return true;
203
- return id.startsWith('shrk ') || id.startsWith('bun ');
204
- }
205
- return referenceIdsFor(inspection, kind).includes(id);
336
+ return referenceIdStatus(inspection, kind, id) === ReferenceIdStatus.Exists;
206
337
  }
207
338
  /**
208
339
  * The union of candidate ids across `kinds`, deduped and sorted.
@@ -233,7 +364,32 @@ export function referenceIdPool(inspection, kinds) {
233
364
  export function referenceIdExistsInAnyKind(inspection, id) {
234
365
  return ALL_ID_REFERENCE_KINDS.some((kind) => referenceIdsFor(inspection, kind).includes(id));
235
366
  }
236
- /** The kind that accepted `id`, or `undefined` — for "resolved as what?" output. */
367
+ /**
368
+ * EVERY kind whose registry lists `id`, most specific first (the order of
369
+ * {@link ALL_ID_REFERENCE_KINDS}) — empty when nothing does.
370
+ *
371
+ * Ids carry no namespace prefix, so one id can legitimately live in several
372
+ * registries: a rule is also a knowledge entry, and a template may share an id
373
+ * with a construct. "Which namespace did this resolve into?" therefore has a
374
+ * LIST as its honest answer; {@link referenceKindOf} is its first element.
375
+ */
376
+ export function referenceKindsOf(inspection, id) {
377
+ return ALL_ID_REFERENCE_KINDS.filter((kind) => referenceIdsFor(inspection, kind).includes(id));
378
+ }
379
+ /** The most specific kind that accepted `id`, or `undefined` — for "resolved as what?" output. */
237
380
  export function referenceKindOf(inspection, id) {
238
- return ALL_ID_REFERENCE_KINDS.find((kind) => referenceIdsFor(inspection, kind).includes(id));
381
+ return referenceKindsOf(inspection, id)[0];
382
+ }
383
+ /**
384
+ * One-shot projection of {@link referenceIdsFor} over every kind, for O(1)
385
+ * membership when a caller resolves many ids at once (the declared
386
+ * cross-reference collector walks every asset). Not a second source: each set
387
+ * is built from `referenceIdsFor`, so list ≡ resolve still holds per kind.
388
+ * Snapshot semantics — rebuild it after a warm.
389
+ */
390
+ export function referenceIdSets(inspection) {
391
+ const out = new Map();
392
+ for (const kind of ALL_ID_REFERENCE_KINDS)
393
+ out.set(kind, new Set(referenceIdsFor(inspection, kind)));
394
+ return out;
239
395
  }
@@ -0,0 +1,20 @@
1
+ import type { IAssetReference } from '@shrkcrft/core';
2
+ import type { IKnowledgeAnchor } from '@shrkcrft/knowledge';
3
+ import type { ReferenceAssetKind } from './reference-asset-kind.js';
4
+ /**
5
+ * Anything the staleness sweep verifies references for: a knowledge entry, a
6
+ * boundary rule, or a declared policy check. The sweep's per-subject loop is
7
+ * written once against this shape, so every asset kind is checked by the same
8
+ * reference checker — never a second one that drifts.
9
+ */
10
+ export interface IReferenceSubject {
11
+ readonly assetKind: ReferenceAssetKind;
12
+ readonly id: string;
13
+ /** Where it is declared, relative to the project root, when known. */
14
+ readonly source?: string;
15
+ /** Knowledge `type`, for knowledge subjects. */
16
+ readonly type?: string;
17
+ readonly references: readonly IAssetReference[];
18
+ readonly anchors?: readonly IKnowledgeAnchor[];
19
+ }
20
+ //# sourceMappingURL=reference-subject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference-subject.d.ts","sourceRoot":"","sources":["../src/reference-subject.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,gDAAgD;IAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IAChD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAChD"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,25 @@
1
+ /**
2
+ * What a registration hint's discovery found on the live file system — the
3
+ * same answer `registrations preview` acts on.
4
+ *
5
+ * A doctor's "0 issues" used to be read as "every hint verified", while glob
6
+ * discovery was never checked at all: the hints whose author was LEAST sure of
7
+ * the target got the LEAST verification.
8
+ */
9
+ export declare enum RegistrationHintDiscoveryStatus {
10
+ /** Exactly one target file (a fixed `targetFile` that exists, or a glob matching one file). */
11
+ Verified = "verified",
12
+ /** A glob matched more than one file — preview refuses to guess. */
13
+ Ambiguous = "ambiguous",
14
+ /** No file: a missing fixed target, a glob matching nothing, or no discovery at all. */
15
+ Dead = "dead",
16
+ /** The discovery walk hit its directory cap, so the candidate set is incomplete. */
17
+ Unverified = "unverified",
18
+ /**
19
+ * No file yet, and every selector that matched nothing is marked
20
+ * `{ pattern, expectEmpty: true }` (round 13): the hint targets what the
21
+ * adopting app does not have yet — accepted (printed), never `dead`.
22
+ */
23
+ IntendedEmpty = "intended-empty"
24
+ }
25
+ //# sourceMappingURL=registration-hint-discovery-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registration-hint-discovery-status.d.ts","sourceRoot":"","sources":["../src/registration-hint-discovery-status.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,oBAAY,+BAA+B;IACzC,+FAA+F;IAC/F,QAAQ,aAAa;IACrB,oEAAoE;IACpE,SAAS,cAAc;IACvB,wFAAwF;IACxF,IAAI,SAAS;IACb,oFAAoF;IACpF,UAAU,eAAe;IACzB;;;;OAIG;IACH,aAAa,mBAAmB;CACjC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * What a registration hint's discovery found on the live file system — the
3
+ * same answer `registrations preview` acts on.
4
+ *
5
+ * A doctor's "0 issues" used to be read as "every hint verified", while glob
6
+ * discovery was never checked at all: the hints whose author was LEAST sure of
7
+ * the target got the LEAST verification.
8
+ */
9
+ export var RegistrationHintDiscoveryStatus;
10
+ (function (RegistrationHintDiscoveryStatus) {
11
+ /** Exactly one target file (a fixed `targetFile` that exists, or a glob matching one file). */
12
+ RegistrationHintDiscoveryStatus["Verified"] = "verified";
13
+ /** A glob matched more than one file — preview refuses to guess. */
14
+ RegistrationHintDiscoveryStatus["Ambiguous"] = "ambiguous";
15
+ /** No file: a missing fixed target, a glob matching nothing, or no discovery at all. */
16
+ RegistrationHintDiscoveryStatus["Dead"] = "dead";
17
+ /** The discovery walk hit its directory cap, so the candidate set is incomplete. */
18
+ RegistrationHintDiscoveryStatus["Unverified"] = "unverified";
19
+ /**
20
+ * No file yet, and every selector that matched nothing is marked
21
+ * `{ pattern, expectEmpty: true }` (round 13): the hint targets what the
22
+ * adopting app does not have yet — accepted (printed), never `dead`.
23
+ */
24
+ RegistrationHintDiscoveryStatus["IntendedEmpty"] = "intended-empty";
25
+ })(RegistrationHintDiscoveryStatus || (RegistrationHintDiscoveryStatus = {}));