@shrkcrft/inspector 0.1.0-alpha.29 → 0.1.0-alpha.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (694) 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 +40 -0
  69. package/dist/code-intelligence-doctor.d.ts.map +1 -1
  70. package/dist/code-intelligence-doctor.js +86 -12
  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 +80 -0
  138. package/dist/doc-references.d.ts.map +1 -0
  139. package/dist/doc-references.js +269 -0
  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.d.ts.map +1 -1
  162. package/dist/fuzzy-impact.js +12 -21
  163. package/dist/healing-plan.d.ts.map +1 -1
  164. package/dist/healing-plan.js +3 -4
  165. package/dist/helper-catalog.d.ts +25 -0
  166. package/dist/helper-catalog.d.ts.map +1 -0
  167. package/dist/helper-catalog.js +91 -0
  168. package/dist/helper-registry.d.ts.map +1 -1
  169. package/dist/helper-registry.js +17 -1
  170. package/dist/helper-view.d.ts +33 -0
  171. package/dist/helper-view.d.ts.map +1 -0
  172. package/dist/helper-view.js +1 -0
  173. package/dist/i-asset-doctor-flags.d.ts +16 -0
  174. package/dist/i-asset-doctor-flags.d.ts.map +1 -0
  175. package/dist/i-asset-doctor-flags.js +1 -0
  176. package/dist/i-command-resolution.d.ts +22 -0
  177. package/dist/i-command-resolution.d.ts.map +1 -0
  178. package/dist/i-command-resolution.js +1 -0
  179. package/dist/i-command-resolve-options.d.ts +24 -0
  180. package/dist/i-command-resolve-options.d.ts.map +1 -0
  181. package/dist/i-command-resolve-options.js +1 -0
  182. package/dist/i-command-safety.d.ts +13 -0
  183. package/dist/i-command-safety.d.ts.map +1 -0
  184. package/dist/i-command-safety.js +1 -0
  185. package/dist/i-contribution-accepted-entry.d.ts +18 -0
  186. package/dist/i-contribution-accepted-entry.d.ts.map +1 -0
  187. package/dist/i-contribution-accepted-entry.js +1 -0
  188. package/dist/i-contribution-entry-rejection.d.ts +21 -0
  189. package/dist/i-contribution-entry-rejection.d.ts.map +1 -0
  190. package/dist/i-contribution-entry-rejection.js +1 -0
  191. package/dist/i-contribution-file-issue.d.ts +18 -0
  192. package/dist/i-contribution-file-issue.d.ts.map +1 -0
  193. package/dist/i-contribution-file-issue.js +1 -0
  194. package/dist/i-contribution-file-report.d.ts +40 -0
  195. package/dist/i-contribution-file-report.d.ts.map +1 -0
  196. package/dist/i-contribution-file-report.js +1 -0
  197. package/dist/i-contribution-file-validation.d.ts +24 -0
  198. package/dist/i-contribution-file-validation.d.ts.map +1 -0
  199. package/dist/i-contribution-file-validation.js +1 -0
  200. package/dist/i-contributions-report.d.ts +31 -0
  201. package/dist/i-contributions-report.d.ts.map +1 -0
  202. package/dist/i-contributions-report.js +1 -0
  203. package/dist/i-declared-xref-field.d.ts +25 -0
  204. package/dist/i-declared-xref-field.d.ts.map +1 -0
  205. package/dist/i-declared-xref-field.js +1 -0
  206. package/dist/i-declared-xref-issue.d.ts +25 -0
  207. package/dist/i-declared-xref-issue.d.ts.map +1 -0
  208. package/dist/i-declared-xref-issue.js +1 -0
  209. package/dist/i-declared-xref-report.d.ts +48 -0
  210. package/dist/i-declared-xref-report.d.ts.map +1 -0
  211. package/dist/i-declared-xref-report.js +1 -0
  212. package/dist/i-declared-xref-row.d.ts +29 -0
  213. package/dist/i-declared-xref-row.d.ts.map +1 -0
  214. package/dist/i-declared-xref-row.js +1 -0
  215. package/dist/i-doctor-verdict.d.ts +10 -0
  216. package/dist/i-doctor-verdict.d.ts.map +1 -0
  217. package/dist/i-doctor-verdict.js +1 -0
  218. package/dist/i-kind-outcomes.d.ts +13 -0
  219. package/dist/i-kind-outcomes.d.ts.map +1 -0
  220. package/dist/i-kind-outcomes.js +1 -0
  221. package/dist/i-pack-doctor-verdict.d.ts +15 -0
  222. package/dist/i-pack-doctor-verdict.d.ts.map +1 -0
  223. package/dist/i-pack-doctor-verdict.js +1 -0
  224. package/dist/i-probed-id-field.d.ts +17 -0
  225. package/dist/i-probed-id-field.d.ts.map +1 -0
  226. package/dist/i-probed-id-field.js +1 -0
  227. package/dist/i-reference-kind-declaration.d.ts +38 -0
  228. package/dist/i-reference-kind-declaration.d.ts.map +1 -0
  229. package/dist/i-reference-kind-declaration.js +1 -0
  230. package/dist/i-reference-warm-options.d.ts +21 -0
  231. package/dist/i-reference-warm-options.d.ts.map +1 -0
  232. package/dist/i-reference-warm-options.js +1 -0
  233. package/dist/i-registry-outcomes.d.ts +16 -0
  234. package/dist/i-registry-outcomes.d.ts.map +1 -0
  235. package/dist/i-registry-outcomes.js +1 -0
  236. package/dist/i-scaffold-pattern-doctor-report.d.ts +35 -0
  237. package/dist/i-scaffold-pattern-doctor-report.d.ts.map +1 -0
  238. package/dist/i-scaffold-pattern-doctor-report.js +1 -0
  239. package/dist/i-search-tuning-key-probe.d.ts +30 -0
  240. package/dist/i-search-tuning-key-probe.d.ts.map +1 -0
  241. package/dist/i-search-tuning-key-probe.js +1 -0
  242. package/dist/i-search-tuning-lint-issue.d.ts +61 -0
  243. package/dist/i-search-tuning-lint-issue.d.ts.map +1 -0
  244. package/dist/i-search-tuning-lint-issue.js +1 -0
  245. package/dist/i-search-tuning-lint-report.d.ts +38 -0
  246. package/dist/i-search-tuning-lint-report.d.ts.map +1 -0
  247. package/dist/i-search-tuning-lint-report.js +1 -0
  248. package/dist/i-unresolvable-reference-scan.d.ts +14 -0
  249. package/dist/i-unresolvable-reference-scan.d.ts.map +1 -0
  250. package/dist/i-unresolvable-reference-scan.js +1 -0
  251. package/dist/i-unresolvable-reference.d.ts +29 -0
  252. package/dist/i-unresolvable-reference.d.ts.map +1 -0
  253. package/dist/i-unresolvable-reference.js +1 -0
  254. package/dist/i-workspace-profile-payload.d.ts +12 -0
  255. package/dist/i-workspace-profile-payload.d.ts.map +1 -0
  256. package/dist/i-workspace-profile-payload.js +1 -0
  257. package/dist/impact-analysis.d.ts +15 -0
  258. package/dist/impact-analysis.d.ts.map +1 -1
  259. package/dist/impact-analysis.js +58 -13
  260. package/dist/impact-render.d.ts.map +1 -1
  261. package/dist/impact-render.js +22 -0
  262. package/dist/import-hygiene.d.ts +35 -1
  263. package/dist/import-hygiene.d.ts.map +1 -1
  264. package/dist/import-hygiene.js +107 -13
  265. package/dist/index.d.ts +145 -0
  266. package/dist/index.d.ts.map +1 -1
  267. package/dist/index.js +176 -0
  268. package/dist/inspection-discovery.d.ts +45 -0
  269. package/dist/inspection-discovery.d.ts.map +1 -0
  270. package/dist/inspection-discovery.js +70 -0
  271. package/dist/knowledge-advisory-code.d.ts +17 -0
  272. package/dist/knowledge-advisory-code.d.ts.map +1 -0
  273. package/dist/knowledge-advisory-code.js +17 -0
  274. package/dist/knowledge-aged-entry.d.ts +10 -0
  275. package/dist/knowledge-aged-entry.d.ts.map +1 -0
  276. package/dist/knowledge-aged-entry.js +1 -0
  277. package/dist/knowledge-authoring.d.ts +24 -1
  278. package/dist/knowledge-authoring.d.ts.map +1 -1
  279. package/dist/knowledge-authoring.js +46 -7
  280. package/dist/knowledge-entry-verdict-record.d.ts +22 -0
  281. package/dist/knowledge-entry-verdict-record.d.ts.map +1 -0
  282. package/dist/knowledge-entry-verdict-record.js +1 -0
  283. package/dist/knowledge-entry-verdict.d.ts +17 -0
  284. package/dist/knowledge-entry-verdict.d.ts.map +1 -0
  285. package/dist/knowledge-entry-verdict.js +17 -0
  286. package/dist/knowledge-graph.d.ts +6 -0
  287. package/dist/knowledge-graph.d.ts.map +1 -1
  288. package/dist/knowledge-graph.js +18 -7
  289. package/dist/knowledge-kind-bucket.d.ts +19 -0
  290. package/dist/knowledge-kind-bucket.d.ts.map +1 -0
  291. package/dist/knowledge-kind-bucket.js +1 -0
  292. package/dist/knowledge-load-failure.d.ts +23 -0
  293. package/dist/knowledge-load-failure.d.ts.map +1 -0
  294. package/dist/knowledge-load-failure.js +1 -0
  295. package/dist/knowledge-reference-kind-bucket.d.ts +11 -0
  296. package/dist/knowledge-reference-kind-bucket.d.ts.map +1 -0
  297. package/dist/knowledge-reference-kind-bucket.js +1 -0
  298. package/dist/knowledge-stale-advisory.d.ts +14 -0
  299. package/dist/knowledge-stale-advisory.d.ts.map +1 -0
  300. package/dist/knowledge-stale-advisory.js +1 -0
  301. package/dist/knowledge-stale-coverage.d.ts +19 -0
  302. package/dist/knowledge-stale-coverage.d.ts.map +1 -0
  303. package/dist/knowledge-stale-coverage.js +1 -0
  304. package/dist/knowledge-stale-gate-flags.d.ts +33 -0
  305. package/dist/knowledge-stale-gate-flags.d.ts.map +1 -0
  306. package/dist/knowledge-stale-gate-flags.js +1 -0
  307. package/dist/knowledge-stale-gate-input.d.ts +46 -0
  308. package/dist/knowledge-stale-gate-input.d.ts.map +1 -0
  309. package/dist/knowledge-stale-gate-input.js +1 -0
  310. package/dist/knowledge-stale-gate-result.d.ts +33 -0
  311. package/dist/knowledge-stale-gate-result.d.ts.map +1 -0
  312. package/dist/knowledge-stale-gate-result.js +1 -0
  313. package/dist/knowledge-stale-gate-rule.d.ts +33 -0
  314. package/dist/knowledge-stale-gate-rule.d.ts.map +1 -0
  315. package/dist/knowledge-stale-gate-rule.js +1 -0
  316. package/dist/knowledge-stale-gate-violation.d.ts +13 -0
  317. package/dist/knowledge-stale-gate-violation.d.ts.map +1 -0
  318. package/dist/knowledge-stale-gate-violation.js +1 -0
  319. package/dist/knowledge-stale-gate.d.ts +83 -0
  320. package/dist/knowledge-stale-gate.d.ts.map +1 -0
  321. package/dist/knowledge-stale-gate.js +429 -0
  322. package/dist/knowledge-stale-quality-gate.d.ts +26 -0
  323. package/dist/knowledge-stale-quality-gate.d.ts.map +1 -0
  324. package/dist/knowledge-stale-quality-gate.js +110 -0
  325. package/dist/knowledge-stale.d.ts +122 -9
  326. package/dist/knowledge-stale.d.ts.map +1 -1
  327. package/dist/knowledge-stale.js +1002 -316
  328. package/dist/knowledge-unverifiable-reason.d.ts +12 -0
  329. package/dist/knowledge-unverifiable-reason.d.ts.map +1 -0
  330. package/dist/knowledge-unverifiable-reason.js +12 -0
  331. package/dist/loader-diagnostics.d.ts +14 -2
  332. package/dist/loader-diagnostics.d.ts.map +1 -1
  333. package/dist/match-terms.d.ts +48 -0
  334. package/dist/match-terms.d.ts.map +1 -0
  335. package/dist/match-terms.js +155 -0
  336. package/dist/migration-profile-registry.d.ts +10 -0
  337. package/dist/migration-profile-registry.d.ts.map +1 -1
  338. package/dist/migration-profile-registry.js +57 -34
  339. package/dist/migration-readiness.d.ts.map +1 -1
  340. package/dist/migration-readiness.js +1 -3
  341. package/dist/nearest-id.d.ts +14 -0
  342. package/dist/nearest-id.d.ts.map +1 -0
  343. package/dist/nearest-id.js +12 -0
  344. package/dist/pack-asset-freshness.d.ts +65 -0
  345. package/dist/pack-asset-freshness.d.ts.map +1 -0
  346. package/dist/pack-asset-freshness.js +340 -0
  347. package/dist/pack-author-ux.d.ts +24 -3
  348. package/dist/pack-author-ux.d.ts.map +1 -1
  349. package/dist/pack-author-ux.js +87 -93
  350. package/dist/pack-contributions-inventory.d.ts +79 -39
  351. package/dist/pack-contributions-inventory.d.ts.map +1 -1
  352. package/dist/pack-contributions-inventory.js +443 -286
  353. package/dist/pack-doctor-verdict.d.ts +29 -0
  354. package/dist/pack-doctor-verdict.d.ts.map +1 -0
  355. package/dist/pack-doctor-verdict.js +45 -0
  356. package/dist/pack-doctor.d.ts +74 -1
  357. package/dist/pack-doctor.d.ts.map +1 -1
  358. package/dist/pack-doctor.js +281 -1
  359. package/dist/pack-helper-plan.d.ts +24 -0
  360. package/dist/pack-helper-plan.d.ts.map +1 -0
  361. package/dist/pack-helper-plan.js +77 -0
  362. package/dist/pack-helper-registry.d.ts +14 -0
  363. package/dist/pack-helper-registry.d.ts.map +1 -1
  364. package/dist/pack-helper-registry.js +76 -37
  365. package/dist/pack-manifest-reader.d.ts +8 -0
  366. package/dist/pack-manifest-reader.d.ts.map +1 -0
  367. package/dist/pack-manifest-reader.js +79 -0
  368. package/dist/pack-release-check.d.ts +14 -1
  369. package/dist/pack-release-check.d.ts.map +1 -1
  370. package/dist/pack-release-check.js +23 -1
  371. package/dist/pack-signature-status.d.ts +18 -6
  372. package/dist/pack-signature-status.d.ts.map +1 -1
  373. package/dist/pack-signature-status.js +59 -105
  374. package/dist/pack-test-runner.d.ts +27 -5
  375. package/dist/pack-test-runner.d.ts.map +1 -1
  376. package/dist/pack-test-runner.js +91 -35
  377. package/dist/pack-typecheck.d.ts +8 -0
  378. package/dist/pack-typecheck.d.ts.map +1 -0
  379. package/dist/pack-typecheck.js +76 -0
  380. package/dist/plan-review.d.ts +2 -0
  381. package/dist/plan-review.d.ts.map +1 -1
  382. package/dist/plan-review.js +17 -5
  383. package/dist/plan-simulation.d.ts.map +1 -1
  384. package/dist/plan-simulation.js +16 -5
  385. package/dist/playbook-load-issue.d.ts +16 -0
  386. package/dist/playbook-load-issue.d.ts.map +1 -0
  387. package/dist/playbook-load-issue.js +1 -0
  388. package/dist/playbook-registry.d.ts +32 -1
  389. package/dist/playbook-registry.d.ts.map +1 -1
  390. package/dist/playbook-registry.js +144 -55
  391. package/dist/policy-declaration.d.ts +18 -0
  392. package/dist/policy-declaration.d.ts.map +1 -0
  393. package/dist/policy-declaration.js +1 -0
  394. package/dist/policy-engine.d.ts +8 -0
  395. package/dist/policy-engine.d.ts.map +1 -1
  396. package/dist/policy-engine.js +26 -9
  397. package/dist/policy-overrides.d.ts.map +1 -1
  398. package/dist/policy-overrides.js +4 -4
  399. package/dist/policy-registry.d.ts +42 -0
  400. package/dist/policy-registry.d.ts.map +1 -0
  401. package/dist/policy-registry.js +131 -0
  402. package/dist/probed-id-fields.d.ts +21 -0
  403. package/dist/probed-id-fields.d.ts.map +1 -0
  404. package/dist/probed-id-fields.js +25 -0
  405. package/dist/probed-id-source.d.ts +11 -0
  406. package/dist/probed-id-source.d.ts.map +1 -0
  407. package/dist/probed-id-source.js +11 -0
  408. package/dist/profile-registry.d.ts +25 -2
  409. package/dist/profile-registry.d.ts.map +1 -1
  410. package/dist/profile-registry.js +59 -6
  411. package/dist/quality-gate-examination.d.ts +15 -0
  412. package/dist/quality-gate-examination.d.ts.map +1 -0
  413. package/dist/quality-gate-examination.js +15 -0
  414. package/dist/quality-gate-row-status.d.ts +19 -0
  415. package/dist/quality-gate-row-status.d.ts.map +1 -0
  416. package/dist/quality-gate-row-status.js +28 -0
  417. package/dist/quality-gate-status.d.ts +16 -0
  418. package/dist/quality-gate-status.d.ts.map +1 -0
  419. package/dist/quality-gate-status.js +16 -0
  420. package/dist/quality-html.d.ts.map +1 -1
  421. package/dist/quality-html.js +14 -3
  422. package/dist/quality-report-coverage.d.ts +26 -0
  423. package/dist/quality-report-coverage.d.ts.map +1 -0
  424. package/dist/quality-report-coverage.js +48 -0
  425. package/dist/quality-report.d.ts +28 -1
  426. package/dist/quality-report.d.ts.map +1 -1
  427. package/dist/quality-report.js +263 -35
  428. package/dist/query-intent-kind.d.ts +18 -0
  429. package/dist/query-intent-kind.d.ts.map +1 -0
  430. package/dist/query-intent-kind.js +18 -0
  431. package/dist/query-intent-result.d.ts +23 -0
  432. package/dist/query-intent-result.d.ts.map +1 -0
  433. package/dist/query-intent-result.js +1 -0
  434. package/dist/query-intent.d.ts +18 -0
  435. package/dist/query-intent.d.ts.map +1 -0
  436. package/dist/query-intent.js +336 -0
  437. package/dist/query-resolver.d.ts +18 -0
  438. package/dist/query-resolver.d.ts.map +1 -1
  439. package/dist/query-resolver.js +15 -12
  440. package/dist/ranked-recommendations.d.ts +36 -0
  441. package/dist/ranked-recommendations.d.ts.map +1 -0
  442. package/dist/ranked-recommendations.js +1 -0
  443. package/dist/ranker-explainability.d.ts.map +1 -1
  444. package/dist/ranker-explainability.js +38 -10
  445. package/dist/recommend-recipe.d.ts +17 -0
  446. package/dist/recommend-recipe.d.ts.map +1 -0
  447. package/dist/recommend-recipe.js +1 -0
  448. package/dist/recommend-recipes.d.ts +9 -0
  449. package/dist/recommend-recipes.d.ts.map +1 -0
  450. package/dist/recommend-recipes.js +106 -0
  451. package/dist/recommendation-candidate.d.ts +30 -0
  452. package/dist/recommendation-candidate.d.ts.map +1 -0
  453. package/dist/recommendation-candidate.js +1 -0
  454. package/dist/recommendation-confidence.d.ts +27 -0
  455. package/dist/recommendation-confidence.d.ts.map +1 -0
  456. package/dist/recommendation-confidence.js +1 -0
  457. package/dist/recommendation-ranking-options.d.ts +24 -0
  458. package/dist/recommendation-ranking-options.d.ts.map +1 -0
  459. package/dist/recommendation-ranking-options.js +1 -0
  460. package/dist/recommendation-ranking.d.ts +50 -0
  461. package/dist/recommendation-ranking.d.ts.map +1 -0
  462. package/dist/recommendation-ranking.js +527 -0
  463. package/dist/recommendation-source.d.ts +23 -0
  464. package/dist/recommendation-source.d.ts.map +1 -0
  465. package/dist/recommendation-source.js +23 -0
  466. package/dist/recommendation-suppression.d.ts +14 -0
  467. package/dist/recommendation-suppression.d.ts.map +1 -0
  468. package/dist/recommendation-suppression.js +14 -0
  469. package/dist/reference-asset-kind.d.ts +14 -0
  470. package/dist/reference-asset-kind.d.ts.map +1 -0
  471. package/dist/reference-asset-kind.js +14 -0
  472. package/dist/reference-content-check.d.ts +32 -0
  473. package/dist/reference-content-check.d.ts.map +1 -0
  474. package/dist/reference-content-check.js +143 -0
  475. package/dist/reference-failure.d.ts +31 -0
  476. package/dist/reference-failure.d.ts.map +1 -0
  477. package/dist/reference-failure.js +31 -0
  478. package/dist/reference-id-status.d.ts +15 -0
  479. package/dist/reference-id-status.d.ts.map +1 -0
  480. package/dist/reference-id-status.js +15 -0
  481. package/dist/reference-kind-declarations.d.ts +42 -0
  482. package/dist/reference-kind-declarations.d.ts.map +1 -0
  483. package/dist/reference-kind-declarations.js +142 -0
  484. package/dist/reference-lookup.d.ts +6 -0
  485. package/dist/reference-lookup.d.ts.map +1 -1
  486. package/dist/reference-lookup.js +13 -5
  487. package/dist/reference-registry.d.ts +210 -0
  488. package/dist/reference-registry.d.ts.map +1 -0
  489. package/dist/reference-registry.js +395 -0
  490. package/dist/reference-subject.d.ts +20 -0
  491. package/dist/reference-subject.d.ts.map +1 -0
  492. package/dist/reference-subject.js +1 -0
  493. package/dist/registration-hint-discovery-status.d.ts +25 -0
  494. package/dist/registration-hint-discovery-status.d.ts.map +1 -0
  495. package/dist/registration-hint-discovery-status.js +25 -0
  496. package/dist/registration-hint-registry.d.ts +80 -0
  497. package/dist/registration-hint-registry.d.ts.map +1 -1
  498. package/dist/registration-hint-registry.js +356 -138
  499. package/dist/registry-lifecycle.d.ts +200 -19
  500. package/dist/registry-lifecycle.d.ts.map +1 -1
  501. package/dist/registry-lifecycle.js +526 -136
  502. package/dist/release-readiness.d.ts.map +1 -1
  503. package/dist/release-readiness.js +10 -7
  504. package/dist/release-smoke.d.ts.map +1 -1
  505. package/dist/release-smoke.js +11 -7
  506. package/dist/report-site.d.ts.map +1 -1
  507. package/dist/report-site.js +25 -7
  508. package/dist/repository-intelligence.d.ts.map +1 -1
  509. package/dist/repository-intelligence.js +3 -2
  510. package/dist/repository-knowledge-model.d.ts.map +1 -1
  511. package/dist/repository-knowledge-model.js +18 -5
  512. package/dist/resolve-project-config.d.ts +64 -0
  513. package/dist/resolve-project-config.d.ts.map +1 -1
  514. package/dist/resolve-project-config.js +258 -32
  515. package/dist/reuse/compute-reuse-coverage.d.ts +29 -0
  516. package/dist/reuse/compute-reuse-coverage.d.ts.map +1 -0
  517. package/dist/reuse/compute-reuse-coverage.js +198 -0
  518. package/dist/reuse/rank-reuse-candidates.d.ts +38 -0
  519. package/dist/reuse/rank-reuse-candidates.d.ts.map +1 -0
  520. package/dist/reuse/rank-reuse-candidates.js +212 -0
  521. package/dist/reuse/rank-reuse-options.d.ts +20 -0
  522. package/dist/reuse/rank-reuse-options.d.ts.map +1 -0
  523. package/dist/reuse/rank-reuse-options.js +1 -0
  524. package/dist/reuse/rank-reuse-suggestions.d.ts +15 -0
  525. package/dist/reuse/rank-reuse-suggestions.d.ts.map +1 -0
  526. package/dist/reuse/rank-reuse-suggestions.js +31 -0
  527. package/dist/reuse/resolve-curated-reuse.d.ts +43 -0
  528. package/dist/reuse/resolve-curated-reuse.d.ts.map +1 -0
  529. package/dist/reuse/resolve-curated-reuse.js +115 -0
  530. package/dist/reuse/reuse-candidate.d.ts +29 -0
  531. package/dist/reuse/reuse-candidate.d.ts.map +1 -0
  532. package/dist/reuse/reuse-candidate.js +1 -0
  533. package/dist/reuse/reuse-coverage-report.d.ts +74 -0
  534. package/dist/reuse/reuse-coverage-report.d.ts.map +1 -0
  535. package/dist/reuse/reuse-coverage-report.js +1 -0
  536. package/dist/reuse/reuse-curated-coverage.d.ts +36 -0
  537. package/dist/reuse/reuse-curated-coverage.d.ts.map +1 -0
  538. package/dist/reuse/reuse-curated-coverage.js +1 -0
  539. package/dist/reuse/reuse-curated-resolution.d.ts +36 -0
  540. package/dist/reuse/reuse-curated-resolution.d.ts.map +1 -0
  541. package/dist/reuse/reuse-curated-resolution.js +1 -0
  542. package/dist/reuse/reuse-curated-status.d.ts +21 -0
  543. package/dist/reuse/reuse-curated-status.d.ts.map +1 -0
  544. package/dist/reuse/reuse-curated-status.js +21 -0
  545. package/dist/reuse/reuse-match-detail.d.ts +15 -0
  546. package/dist/reuse/reuse-match-detail.d.ts.map +1 -0
  547. package/dist/reuse/reuse-match-detail.js +1 -0
  548. package/dist/reuse/reuse-ranking.d.ts +37 -0
  549. package/dist/reuse/reuse-ranking.d.ts.map +1 -0
  550. package/dist/reuse/reuse-ranking.js +1 -0
  551. package/dist/reuse/reuse-suggestion.d.ts +19 -0
  552. package/dist/reuse/reuse-suggestion.d.ts.map +1 -0
  553. package/dist/reuse/reuse-suggestion.js +1 -0
  554. package/dist/reuse/reuse-symbol-lookup.d.ts +28 -0
  555. package/dist/reuse/reuse-symbol-lookup.d.ts.map +1 -0
  556. package/dist/reuse/reuse-symbol-lookup.js +1 -0
  557. package/dist/reuse/reuse-tokenize.d.ts +11 -0
  558. package/dist/reuse/reuse-tokenize.d.ts.map +1 -0
  559. package/dist/reuse/reuse-tokenize.js +26 -0
  560. package/dist/reuse/score-reuse-name.d.ts +16 -0
  561. package/dist/reuse/score-reuse-name.d.ts.map +1 -0
  562. package/dist/reuse/score-reuse-name.js +35 -0
  563. package/dist/reuse/score-reuse-primitive.d.ts +33 -0
  564. package/dist/reuse/score-reuse-primitive.d.ts.map +1 -0
  565. package/dist/reuse/score-reuse-primitive.js +92 -0
  566. package/dist/review-packet.d.ts +2 -0
  567. package/dist/review-packet.d.ts.map +1 -1
  568. package/dist/review-packet.js +13 -6
  569. package/dist/role-views.d.ts.map +1 -1
  570. package/dist/role-views.js +16 -16
  571. package/dist/routing-recommends-channels.d.ts +24 -0
  572. package/dist/routing-recommends-channels.d.ts.map +1 -0
  573. package/dist/routing-recommends-channels.js +19 -0
  574. package/dist/run-boundary-check.d.ts +118 -0
  575. package/dist/run-boundary-check.d.ts.map +1 -0
  576. package/dist/run-boundary-check.js +592 -0
  577. package/dist/safety-audit.js +1 -1
  578. package/dist/scaffold-coverage.js +1 -1
  579. package/dist/scaffold-pattern-doctor-report.d.ts +19 -0
  580. package/dist/scaffold-pattern-doctor-report.d.ts.map +1 -0
  581. package/dist/scaffold-pattern-doctor-report.js +54 -0
  582. package/dist/scaffold-patterns.d.ts +75 -1
  583. package/dist/scaffold-patterns.d.ts.map +1 -1
  584. package/dist/scaffold-patterns.js +375 -84
  585. package/dist/schema-inventory.d.ts.map +1 -1
  586. package/dist/schema-inventory.js +4 -3
  587. package/dist/search-document-id.d.ts +52 -0
  588. package/dist/search-document-id.d.ts.map +1 -0
  589. package/dist/search-document-id.js +72 -0
  590. package/dist/search-document-prefix.d.ts +7 -0
  591. package/dist/search-document-prefix.d.ts.map +1 -0
  592. package/dist/search-document-prefix.js +1 -0
  593. package/dist/search-index.d.ts.map +1 -1
  594. package/dist/search-index.js +20 -23
  595. package/dist/search-tuning-explain.d.ts +6 -0
  596. package/dist/search-tuning-explain.d.ts.map +1 -1
  597. package/dist/search-tuning-explain.js +19 -17
  598. package/dist/search-tuning-key-probes.d.ts +16 -0
  599. package/dist/search-tuning-key-probes.d.ts.map +1 -0
  600. package/dist/search-tuning-key-probes.js +65 -0
  601. package/dist/search-tuning-key-resolution.d.ts +25 -0
  602. package/dist/search-tuning-key-resolution.d.ts.map +1 -0
  603. package/dist/search-tuning-key-resolution.js +1 -0
  604. package/dist/search-tuning-key-resolver.d.ts +4 -0
  605. package/dist/search-tuning-key-resolver.d.ts.map +1 -0
  606. package/dist/search-tuning-key-resolver.js +107 -0
  607. package/dist/search-tuning-key-status.d.ts +24 -0
  608. package/dist/search-tuning-key-status.d.ts.map +1 -0
  609. package/dist/search-tuning-key-status.js +24 -0
  610. package/dist/search-tuning-lint.d.ts +9 -0
  611. package/dist/search-tuning-lint.d.ts.map +1 -0
  612. package/dist/search-tuning-lint.js +468 -0
  613. package/dist/search-tuning-registry.d.ts +43 -0
  614. package/dist/search-tuning-registry.d.ts.map +1 -1
  615. package/dist/search-tuning-registry.js +214 -49
  616. package/dist/self-audit.d.ts +12 -0
  617. package/dist/self-audit.d.ts.map +1 -1
  618. package/dist/self-audit.js +36 -10
  619. package/dist/self-config-doctor-v2.d.ts +145 -3
  620. package/dist/self-config-doctor-v2.d.ts.map +1 -1
  621. package/dist/self-config-doctor-v2.js +1329 -255
  622. package/dist/self-config-doctor.d.ts +20 -1
  623. package/dist/self-config-doctor.d.ts.map +1 -1
  624. package/dist/self-config-doctor.js +65 -309
  625. package/dist/settled-unit-states.d.ts +9 -0
  626. package/dist/settled-unit-states.d.ts.map +1 -0
  627. package/dist/settled-unit-states.js +14 -0
  628. package/dist/sharkcraft-inspector.d.ts +47 -1
  629. package/dist/sharkcraft-inspector.d.ts.map +1 -1
  630. package/dist/sharkcraft-inspector.js +278 -29
  631. package/dist/spec/spec-evidence.d.ts.map +1 -1
  632. package/dist/spec/spec-evidence.js +14 -20
  633. package/dist/split-identifier.d.ts +21 -0
  634. package/dist/split-identifier.d.ts.map +1 -0
  635. package/dist/split-identifier.js +27 -0
  636. package/dist/start-here.d.ts.map +1 -1
  637. package/dist/start-here.js +1 -2
  638. package/dist/substitute-placeholders.d.ts +8 -0
  639. package/dist/substitute-placeholders.d.ts.map +1 -0
  640. package/dist/substitute-placeholders.js +9 -0
  641. package/dist/symbol-index.d.ts +33 -0
  642. package/dist/symbol-index.d.ts.map +1 -1
  643. package/dist/symbol-index.js +241 -3
  644. package/dist/symbol-member-entry.d.ts +26 -0
  645. package/dist/symbol-member-entry.d.ts.map +1 -0
  646. package/dist/symbol-member-entry.js +1 -0
  647. package/dist/symbol-member-kind.d.ts +14 -0
  648. package/dist/symbol-member-kind.d.ts.map +1 -0
  649. package/dist/symbol-member-kind.js +14 -0
  650. package/dist/task-packet.d.ts.map +1 -1
  651. package/dist/task-packet.js +52 -9
  652. package/dist/task-ranker.d.ts +8 -0
  653. package/dist/task-ranker.d.ts.map +1 -1
  654. package/dist/task-ranker.js +25 -13
  655. package/dist/task-risk.js +1 -1
  656. package/dist/task-routing-hint-registry.d.ts +20 -1
  657. package/dist/task-routing-hint-registry.d.ts.map +1 -1
  658. package/dist/task-routing-hint-registry.js +186 -42
  659. package/dist/template-drift.d.ts.map +1 -1
  660. package/dist/template-drift.js +30 -9
  661. package/dist/template-lint.d.ts.map +1 -1
  662. package/dist/template-lint.js +160 -2
  663. package/dist/term-query.d.ts +10 -0
  664. package/dist/term-query.d.ts.map +1 -0
  665. package/dist/term-query.js +1 -0
  666. package/dist/test-definitions.d.ts +6 -3
  667. package/dist/test-definitions.d.ts.map +1 -1
  668. package/dist/test-runner.d.ts +95 -10
  669. package/dist/test-runner.d.ts.map +1 -1
  670. package/dist/test-runner.js +309 -318
  671. package/dist/tuning-query-tokens.d.ts +29 -0
  672. package/dist/tuning-query-tokens.d.ts.map +1 -0
  673. package/dist/tuning-query-tokens.js +51 -0
  674. package/dist/typecheck-files.d.ts +36 -0
  675. package/dist/typecheck-files.d.ts.map +1 -0
  676. package/dist/typecheck-files.js +158 -0
  677. package/dist/uncertainty.js +1 -1
  678. package/dist/universal-search.d.ts.map +1 -1
  679. package/dist/universal-search.js +5 -3
  680. package/dist/unregistered-exports.d.ts +19 -0
  681. package/dist/unregistered-exports.d.ts.map +1 -0
  682. package/dist/unregistered-exports.js +141 -0
  683. package/dist/unresolvable-reason.d.ts +11 -0
  684. package/dist/unresolvable-reason.d.ts.map +1 -0
  685. package/dist/unresolvable-reason.js +11 -0
  686. package/dist/upgrade-advisor.d.ts.map +1 -1
  687. package/dist/upgrade-advisor.js +16 -9
  688. package/dist/validate-contribution-file.d.ts +4 -0
  689. package/dist/validate-contribution-file.d.ts.map +1 -0
  690. package/dist/validate-contribution-file.js +228 -0
  691. package/dist/why-file.d.ts +3 -0
  692. package/dist/why-file.d.ts.map +1 -1
  693. package/dist/why-file.js +7 -3
  694. package/package.json +17 -17
@@ -0,0 +1,45 @@
1
+ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
2
+ import type { IKnowledgeLoadFailure } from './knowledge-load-failure.js';
3
+ /**
4
+ * Where discovery landed, and why — read by any verdict that must refuse to
5
+ * pass over a corpus it never loaded.
6
+ *
7
+ * A corpus check run from a nested package (its own package.json, no
8
+ * `sharkcraft/` folder) resolves that package as the root, loads 0 entries, and
9
+ * used to print `ok=0 stale=0` with exit 0. The disconfirming facts were all on
10
+ * the inspection; nothing put them in front of the reader.
11
+ */
12
+ export interface IInspectionDiscovery {
13
+ /** The directory discovery started from (the caller's cwd). */
14
+ readonly startDir: string;
15
+ /** The project root the inspection resolved — the nearest ancestor carrying a root marker. */
16
+ readonly resolvedRoot: string;
17
+ /** Which markers made {@link resolvedRoot} a root (`package.json`, `.git`, …). */
18
+ readonly rootMarkers: readonly string[];
19
+ readonly sharkcraftDir: string | null;
20
+ readonly configFile: string | null;
21
+ /** The loader's message when a config file EXISTS but failed to load. */
22
+ readonly configError?: string;
23
+ /** Knowledge entries loaded. */
24
+ readonly entriesLoaded: number;
25
+ /** Knowledge-bearing files the loaders were told about (local + pack; missing ones included). */
26
+ readonly knowledgeFilesAttempted: number;
27
+ /**
28
+ * Knowledge-bearing files whose entries never reached the corpus (failed,
29
+ * timed out, a cached failure, or declared and missing). Non-empty = the
30
+ * corpus is PARTIAL: a stale-check over it is never a pass, and
31
+ * `--allow-empty` never clears it.
32
+ */
33
+ readonly knowledgeLoadFailures: readonly IKnowledgeLoadFailure[];
34
+ /**
35
+ * When {@link resolvedRoot} has no `sharkcraft/` folder: the nearest ancestor
36
+ * (up to the repository top) that has one — the `--cwd` to rerun with.
37
+ */
38
+ readonly configuredAncestor?: string;
39
+ }
40
+ /**
41
+ * Describe the inspection's discovery. The ONE reader of "where did discovery
42
+ * land": the stale-check refusal, its JSON, and the MCP stale tool all call it.
43
+ */
44
+ export declare function describeInspectionDiscovery(inspection: ISharkcraftInspection, startDir?: string): IInspectionDiscovery;
45
+ //# sourceMappingURL=inspection-discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspection-discovery.d.ts","sourceRoot":"","sources":["../src/inspection-discovery.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAqDzE;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,+DAA+D;IAC/D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,8FAA8F;IAC9F,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,kFAAkF;IAClF,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,yEAAyE;IACzE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,gCAAgC;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,iGAAiG;IACjG,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,qBAAqB,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACjE;;;OAGG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,UAAU,EAAE,qBAAqB,EACjC,QAAQ,GAAE,MAA+B,GACxC,oBAAoB,CAiBtB"}
@@ -0,0 +1,70 @@
1
+ import * as nodePath from 'node:path';
2
+ import { detectProjectRoot, findConfiguredAncestor } from '@shrkcrft/config';
3
+ /** The loader slots whose entries feed `inspection.knowledgeEntries`. */
4
+ const KNOWLEDGE_LOADER_KINDS = new Set(['knowledge', 'rules', 'paths', 'docs']);
5
+ /** `failed` / `timeout` / `cached-failed` / `missing`, or `ok` for a file whose entries loaded. */
6
+ function loadOutcome(d) {
7
+ if (d.status === 'cached-skip') {
8
+ return d.cachedStatus !== undefined && d.cachedStatus !== 'ok' ? 'cached-failed' : 'ok';
9
+ }
10
+ return d.status;
11
+ }
12
+ /**
13
+ * Every knowledge-bearing file the loaders were told about, and the ones whose
14
+ * entries never reached the corpus — read off `inspection.loaderDiagnostics`,
15
+ * the one record of what each loader did.
16
+ */
17
+ function knowledgeLoadOutcomes(inspection) {
18
+ const byFile = new Map();
19
+ for (const d of inspection.loaderDiagnostics ?? []) {
20
+ if (!KNOWLEDGE_LOADER_KINDS.has(d.kind))
21
+ continue;
22
+ const key = nodePath.resolve(d.filePath);
23
+ const prior = byFile.get(key);
24
+ // A failure recorded for a file wins over an ok one (never folded into it).
25
+ if (!prior || (loadOutcome(prior) === 'ok' && loadOutcome(d) !== 'ok'))
26
+ byFile.set(key, d);
27
+ }
28
+ const rel = (abs) => {
29
+ const r = nodePath.relative(inspection.projectRoot, abs);
30
+ return r && !r.startsWith('..') && !nodePath.isAbsolute(r) ? r.split(nodePath.sep).join('/') : abs;
31
+ };
32
+ const failures = [];
33
+ for (const d of byFile.values()) {
34
+ const status = loadOutcome(d);
35
+ if (status === 'ok')
36
+ continue;
37
+ failures.push({
38
+ file: rel(d.filePath),
39
+ kind: d.kind,
40
+ status,
41
+ message: d.errorMessage ??
42
+ (status === 'missing' ? 'declared by the config, but the file does not exist' : `the ${d.kind} loader reported ${status}`),
43
+ ...(d.packName ? { packName: d.packName } : {}),
44
+ });
45
+ }
46
+ failures.sort((a, b) => a.file.localeCompare(b.file));
47
+ return { attempted: byFile.size, failures };
48
+ }
49
+ /**
50
+ * Describe the inspection's discovery. The ONE reader of "where did discovery
51
+ * land": the stale-check refusal, its JSON, and the MCP stale tool all call it.
52
+ */
53
+ export function describeInspectionDiscovery(inspection, startDir = inspection.projectRoot) {
54
+ const ancestor = inspection.hasSharkcraftFolder
55
+ ? null
56
+ : findConfiguredAncestor(inspection.projectRoot);
57
+ const loads = knowledgeLoadOutcomes(inspection);
58
+ return {
59
+ startDir,
60
+ resolvedRoot: inspection.projectRoot,
61
+ rootMarkers: detectProjectRoot(inspection.projectRoot).markers,
62
+ sharkcraftDir: inspection.sharkcraftDir,
63
+ configFile: inspection.configFile,
64
+ ...(inspection.configLoadError ? { configError: inspection.configLoadError.message } : {}),
65
+ entriesLoaded: inspection.knowledgeEntries.length,
66
+ knowledgeFilesAttempted: loads.attempted,
67
+ knowledgeLoadFailures: loads.failures,
68
+ ...(ancestor ? { configuredAncestor: ancestor } : {}),
69
+ };
70
+ }
@@ -0,0 +1,17 @@
1
+ /** Advisory findings of a staleness sweep. None of them changes the exit code on its own. */
2
+ export declare enum KnowledgeAdvisoryCode {
3
+ /**
4
+ * An entry whose references are all file / directory paths names, in its
5
+ * prose, a symbol one of those files declares — a rename inside the file
6
+ * would leave the entry wrong while every reference still resolves.
7
+ */
8
+ PathOnlyReference = "path-only-reference",
9
+ /**
10
+ * A boundary rule's `from` glob has a static prefix that does not exist —
11
+ * the rule governs nothing there (implicit reference, `--fail-on implicit`).
12
+ */
13
+ ImplicitPathMissing = "implicit-path-missing",
14
+ /** Policy checks keep their scope inside `evaluate()`, which cannot be read without running it. */
15
+ PolicyScopeUnverifiable = "policy-scope-unverifiable"
16
+ }
17
+ //# sourceMappingURL=knowledge-advisory-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-advisory-code.d.ts","sourceRoot":"","sources":["../src/knowledge-advisory-code.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,oBAAY,qBAAqB;IAC/B;;;;OAIG;IACH,iBAAiB,wBAAwB;IACzC;;;OAGG;IACH,mBAAmB,0BAA0B;IAC7C,mGAAmG;IACnG,uBAAuB,8BAA8B;CACtD"}
@@ -0,0 +1,17 @@
1
+ /** Advisory findings of a staleness sweep. None of them changes the exit code on its own. */
2
+ export var KnowledgeAdvisoryCode;
3
+ (function (KnowledgeAdvisoryCode) {
4
+ /**
5
+ * An entry whose references are all file / directory paths names, in its
6
+ * prose, a symbol one of those files declares — a rename inside the file
7
+ * would leave the entry wrong while every reference still resolves.
8
+ */
9
+ KnowledgeAdvisoryCode["PathOnlyReference"] = "path-only-reference";
10
+ /**
11
+ * A boundary rule's `from` glob has a static prefix that does not exist —
12
+ * the rule governs nothing there (implicit reference, `--fail-on implicit`).
13
+ */
14
+ KnowledgeAdvisoryCode["ImplicitPathMissing"] = "implicit-path-missing";
15
+ /** Policy checks keep their scope inside `evaluate()`, which cannot be read without running it. */
16
+ KnowledgeAdvisoryCode["PolicyScopeUnverifiable"] = "policy-scope-unverifiable";
17
+ })(KnowledgeAdvisoryCode || (KnowledgeAdvisoryCode = {}));
@@ -0,0 +1,10 @@
1
+ /** An entry whose `verifiedOn` is older than `--stale-after`. */
2
+ export interface IKnowledgeAgedEntry {
3
+ readonly entryId: string;
4
+ readonly verifiedOn: string;
5
+ /** Whole days from `verifiedOn` to the sweep's `asOf`. */
6
+ readonly ageDays: number;
7
+ /** Where the entry is declared, relative to the project root. */
8
+ readonly source: string;
9
+ }
10
+ //# sourceMappingURL=knowledge-aged-entry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-aged-entry.d.ts","sourceRoot":"","sources":["../src/knowledge-aged-entry.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,0DAA0D;IAC1D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -15,6 +15,7 @@
15
15
  * remain.
16
16
  */
17
17
  import type { IKnowledgeAnchor, IKnowledgeEntry, IKnowledgeReference } from '@shrkcrft/knowledge';
18
+ import type { IDeclaredXrefReport } from './i-declared-xref-report.js';
18
19
  export declare const KNOWLEDGE_AUTHORING_SCHEMA = "sharkcraft.knowledge-authoring/v1";
19
20
  export declare enum KnowledgeAuthoringOperation {
20
21
  Add = "add",
@@ -127,8 +128,20 @@ export interface IKnowledgeAuthoringResult {
127
128
  suggestedDeprecationInstead?: boolean;
128
129
  }
129
130
  export interface IReverseReference {
131
+ /** The referencing asset's id — a knowledge entry unless {@link sourceKind} says otherwise. */
130
132
  fromEntryId: string;
131
- field: 'related' | 'reference.id' | 'reference.symbol' | 'reference.path' | 'anchor.targetId';
133
+ /**
134
+ * The referencing asset's kind (`construct`, `boundary-rule`, `template`).
135
+ * Absent for a knowledge entry, so knowledge-only results keep their shape.
136
+ */
137
+ sourceKind?: string;
138
+ /**
139
+ * The field holding the reference: `related`, `reference.id`,
140
+ * `anchor.targetId`, or any declared cross-reference field
141
+ * (`seeAlso`, `actionHints.relatedKnowledge`, `relatedKnowledge`,
142
+ * `facets.<name>`, …).
143
+ */
144
+ field: string;
132
145
  note?: string;
133
146
  }
134
147
  export interface IKnowledgeAuthoringPatch {
@@ -146,6 +159,16 @@ export interface IKnowledgeAuthoringPatchChange {
146
159
  export interface IKnowledgeAuthoringContext {
147
160
  /** Currently loaded entries — used for reverse-ref + duplicate detection. */
148
161
  entries: readonly IKnowledgeEntry[];
162
+ /**
163
+ * Every declared cross-reference in the workspace (`buildDeclaredXrefReport`).
164
+ * A removal is refused when ANY asset points at the entry — a construct's
165
+ * `relatedKnowledge`, a boundary rule's `relatedRules`, a template's
166
+ * `related` — not only another knowledge entry. Without it the check covers
167
+ * knowledge only, and the preview says so.
168
+ */
169
+ declaredXrefs?: IDeclaredXrefReport;
149
170
  }
171
+ /** `construct:fx-construct` — or the bare id for a knowledge entry (the shape it always had). */
172
+ export declare function reverseReferenceLabel(rr: IReverseReference): string;
150
173
  export declare function buildKnowledgeAuthoringPreview(input: IKnowledgeAuthoringInput, context: IKnowledgeAuthoringContext): IKnowledgeAuthoringResult;
151
174
  //# sourceMappingURL=knowledge-authoring.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge-authoring.d.ts","sourceRoot":"","sources":["../src/knowledge-authoring.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"knowledge-authoring.d.ts","sourceRoot":"","sources":["../src/knowledge-authoring.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@
14
14
  * - Remove always reports reverse references and refuses by default if any
15
15
  * remain.
16
16
  */
17
+ import { KNOWLEDGE_BACKED_KINDS, reverseXrefs } from "./declared-cross-references.js";
17
18
  export const KNOWLEDGE_AUTHORING_SCHEMA = 'sharkcraft.knowledge-authoring/v1';
18
19
  export var KnowledgeAuthoringOperation;
19
20
  (function (KnowledgeAuthoringOperation) {
@@ -55,14 +56,25 @@ function tsObject(value, indent) {
55
56
  .map((line, idx) => (idx === 0 ? line : indent + line))
56
57
  .join('\n'));
57
58
  }
58
- function findReverseReferences(entries, targetId) {
59
+ /**
60
+ * Everything that points at `targetId`. The structured `references[].id` and
61
+ * `anchors[].targetId` are scanned here; every DECLARED cross-reference field
62
+ * (knowledge `related` / `seeAlso` / `supersededBy` / action hints, construct
63
+ * `related*` + declared facets, boundary `related*`, template `related`) comes
64
+ * from THE collector when the caller supplied it — this used to be a private
65
+ * knowledge-only `related` loop, so an entry a construct relied on could be
66
+ * removed without a word.
67
+ */
68
+ function findReverseReferences(entries, targetId, declaredXrefs) {
59
69
  const out = [];
60
70
  for (const e of entries) {
61
71
  if (e.id === targetId)
62
72
  continue;
63
- for (const r of e.related ?? []) {
64
- if (r === targetId) {
65
- out.push({ fromEntryId: e.id, field: 'related' });
73
+ if (!declaredXrefs) {
74
+ for (const r of e.related ?? []) {
75
+ if (r === targetId) {
76
+ out.push({ fromEntryId: e.id, field: 'related' });
77
+ }
66
78
  }
67
79
  }
68
80
  for (const ref of e.references ?? []) {
@@ -76,8 +88,26 @@ function findReverseReferences(entries, targetId) {
76
88
  }
77
89
  }
78
90
  }
91
+ if (declaredXrefs) {
92
+ // Only fields that could mean THIS entry: a construct's
93
+ // `relatedTemplates: ['x']` is not a reference to a knowledge entry `x`.
94
+ for (const row of reverseXrefs(declaredXrefs, targetId, KNOWLEDGE_BACKED_KINDS)) {
95
+ if (row.sourceKind === 'knowledge' && row.sourceId === targetId)
96
+ continue;
97
+ out.push({
98
+ fromEntryId: row.sourceId,
99
+ ...(row.sourceKind !== 'knowledge' ? { sourceKind: row.sourceKind } : {}),
100
+ field: row.field,
101
+ ...(row.facetId ? { note: `facet value ${row.facetId}` } : {}),
102
+ });
103
+ }
104
+ }
79
105
  return out;
80
106
  }
107
+ /** `construct:fx-construct` — or the bare id for a knowledge entry (the shape it always had). */
108
+ export function reverseReferenceLabel(rr) {
109
+ return rr.sourceKind && rr.sourceKind !== 'knowledge' ? `${rr.sourceKind}:${rr.fromEntryId}` : rr.fromEntryId;
110
+ }
81
111
  function buildEntryFromAdd(input) {
82
112
  return {
83
113
  id: input.id,
@@ -266,7 +296,7 @@ function buildExplainer(input, result) {
266
296
  lines.push(`## Reverse references`);
267
297
  lines.push('');
268
298
  for (const rr of result.reverseReferences) {
269
- lines.push(`- \`${rr.fromEntryId}\` → \`${rr.field}\`${rr.note ? ` — ${rr.note}` : ''}`);
299
+ lines.push(`- \`${reverseReferenceLabel(rr)}\` → \`${rr.field}\`${rr.note ? ` — ${rr.note}` : ''}`);
270
300
  }
271
301
  lines.push('');
272
302
  }
@@ -453,15 +483,24 @@ export function buildKnowledgeAuthoringPreview(input, context) {
453
483
  refused.explainer = files.explainer;
454
484
  return refused;
455
485
  }
456
- const reverseReferences = findReverseReferences(context.entries, input.id);
486
+ const reverseReferences = findReverseReferences(context.entries, input.id, context.declaredXrefs);
487
+ if (!context.declaredXrefs) {
488
+ // An unmeasured "no references" must not read as a clean one.
489
+ warnings.push('reverse references checked in knowledge only — constructs / boundaries / templates were not consulted (pass declaredXrefs from buildDeclaredXrefReport).');
490
+ }
491
+ const fromOtherKinds = reverseReferences.filter((r) => r.sourceKind !== undefined && r.sourceKind !== 'knowledge').length;
457
492
  if (reverseReferences.length > 0 && !input.forcePreview) {
493
+ const n = reverseReferences.length;
494
+ const refusal = fromOtherKinds === 0
495
+ ? `Refused: ${n} other entr${n === 1 ? 'y references' : 'ies reference'} "${input.id}".`
496
+ : `Refused: ${n} declared reference${n === 1 ? '' : 's'} point${n === 1 ? 's' : ''} at "${input.id}" — ${n - fromOtherKinds} from knowledge, ${fromOtherKinds} from constructs / boundary rules / templates.`;
458
497
  const refused = {
459
498
  schema: KNOWLEDGE_AUTHORING_SCHEMA,
460
499
  generatedAt: nowIso(),
461
500
  operation: input.operation,
462
501
  entryId: input.id,
463
502
  ok: false,
464
- refusal: `Refused: ${reverseReferences.length} other entr${reverseReferences.length === 1 ? 'y references' : 'ies reference'} "${input.id}". Pass --force-preview to preview removal anyway, or prefer deprecation via \`shrk knowledge update ${input.id} --mark-deprecated\`.`,
503
+ refusal: `${refusal} Pass --force-preview to preview removal anyway, or prefer deprecation via \`shrk knowledge update ${input.id} --mark-deprecated\`.`,
465
504
  tsDraft: emptyDraftFile(input.id, input.operation, 'typescript'),
466
505
  jsonManifest: emptyDraftFile(input.id, input.operation, 'json'),
467
506
  explainer: emptyDraftFile(input.id, input.operation, 'markdown'),
@@ -0,0 +1,22 @@
1
+ import type { KnowledgeEntryVerdict } from './knowledge-entry-verdict.js';
2
+ import type { KnowledgeUnverifiableReason } from './knowledge-unverifiable-reason.js';
3
+ /** One entry in scope, classified — the unit the stale-check's coverage counts. */
4
+ export interface IKnowledgeEntryVerdictRecord {
5
+ readonly entryId: string;
6
+ readonly verdict: KnowledgeEntryVerdict;
7
+ /** Set when {@link verdict} is `unverifiable`. */
8
+ readonly reason?: KnowledgeUnverifiableReason;
9
+ /**
10
+ * Where the entry is declared, relative to the project root
11
+ * (`sharkcraft/rules.ts`) — so the fix for an unverifiable entry names the
12
+ * file to edit. `(unknown source)` when the loader recorded none.
13
+ */
14
+ readonly source: string;
15
+ /** The entry's knowledge `type` (`rule`, `path`, `technical`, …). */
16
+ readonly type: string;
17
+ /** References + anchors whose outcome was a real check (ok / stale / missing). */
18
+ readonly checkable: number;
19
+ /** Of {@link checkable}, how many did not resolve (stale / missing). */
20
+ readonly failing: number;
21
+ }
22
+ //# sourceMappingURL=knowledge-entry-verdict-record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-entry-verdict-record.d.ts","sourceRoot":"","sources":["../src/knowledge-entry-verdict-record.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEtF,mFAAmF;AACnF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,kDAAkD;IAClD,QAAQ,CAAC,MAAM,CAAC,EAAE,2BAA2B,CAAC;IAC9C;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kFAAkF;IAClF,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ /**
2
+ * One entry's verdict in the staleness sweep — three buckets, never one.
3
+ *
4
+ * The sweep used to report only reference-level counts, so an entry that
5
+ * declared NO references contributed nothing and was folded into the healthy
6
+ * total: the less verifiable a corpus was, the healthier it looked. An entry
7
+ * the check could not examine is its own bucket, reported with its id.
8
+ */
9
+ export declare enum KnowledgeEntryVerdict {
10
+ /** At least one reference / anchor was checked, and every checked one resolved. */
11
+ Verified = "verified",
12
+ /** At least one checked reference / anchor did not resolve. */
13
+ Stale = "stale",
14
+ /** Nothing about this entry could be checked — see its reason. */
15
+ Unverifiable = "unverifiable"
16
+ }
17
+ //# sourceMappingURL=knowledge-entry-verdict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-entry-verdict.d.ts","sourceRoot":"","sources":["../src/knowledge-entry-verdict.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,oBAAY,qBAAqB;IAC/B,mFAAmF;IACnF,QAAQ,aAAa;IACrB,+DAA+D;IAC/D,KAAK,UAAU;IACf,kEAAkE;IAClE,YAAY,iBAAiB;CAC9B"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * One entry's verdict in the staleness sweep — three buckets, never one.
3
+ *
4
+ * The sweep used to report only reference-level counts, so an entry that
5
+ * declared NO references contributed nothing and was folded into the healthy
6
+ * total: the less verifiable a corpus was, the healthier it looked. An entry
7
+ * the check could not examine is its own bucket, reported with its id.
8
+ */
9
+ export var KnowledgeEntryVerdict;
10
+ (function (KnowledgeEntryVerdict) {
11
+ /** At least one reference / anchor was checked, and every checked one resolved. */
12
+ KnowledgeEntryVerdict["Verified"] = "verified";
13
+ /** At least one checked reference / anchor did not resolve. */
14
+ KnowledgeEntryVerdict["Stale"] = "stale";
15
+ /** Nothing about this entry could be checked — see its reason. */
16
+ KnowledgeEntryVerdict["Unverifiable"] = "unverifiable";
17
+ })(KnowledgeEntryVerdict || (KnowledgeEntryVerdict = {}));
@@ -22,6 +22,12 @@ export interface IKnowledgeGraph {
22
22
  edges: IGraphEdge[];
23
23
  /** Convenience: lookup by composite id (kind:id). */
24
24
  byId: ReadonlyMap<string, IGraphNode>;
25
+ /**
26
+ * Declared edges NOT drawn because an endpoint is not a node of this graph
27
+ * (a dangling id, or a kind the graph does not model). A shrunken graph says
28
+ * it shrank — `shrk self-config xrefs --dangling-only` lists the ids.
29
+ */
30
+ droppedEdges?: number;
25
31
  }
26
32
  /**
27
33
  * Build the full SharkCraft knowledge graph for the current inspection.
@@ -1 +1 @@
1
- {"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,MAAM,GACN,MAAM,GACN,UAAU,GACV,UAAU,GACV,QAAQ,GACR,MAAM,GACN,UAAU,GACV,KAAK,CAAC;AAEV,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,iBAAiB,GACzB,kBAAkB,GAClB,cAAc,GACd,cAAc,GACd,iBAAiB,GACjB,mBAAmB,GACnB,0BAA0B,GAC1B,kBAAkB,GAClB,uBAAuB,GACvB,uBAAuB,GACvB,UAAU,CAAC;AAEf,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,qDAAqD;IACrD,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACvC;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,CAyQtF;AAED,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,iBAAiB,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAC7C,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC1C,UAAU,CA+DZ;AAgDD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE;IAAE,IAAI,CAAC,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACxC;IACD,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB,GAAG,IAAI,CA+BP"}
1
+ {"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,MAAM,GACN,MAAM,GACN,UAAU,GACV,UAAU,GACV,QAAQ,GACR,MAAM,GACN,UAAU,GACV,KAAK,CAAC;AAEV,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,iBAAiB,GACzB,kBAAkB,GAClB,cAAc,GACd,cAAc,GACd,iBAAiB,GACjB,mBAAmB,GACnB,0BAA0B,GAC1B,kBAAkB,GAClB,uBAAuB,GACvB,uBAAuB,GACvB,UAAU,CAAC;AAEf,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,qDAAqD;IACrD,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAMD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,qBAAqB,GAAG,eAAe,CA0RtF;AAED,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,8DAA8D;IAC9D,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,iBAAiB,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,EAC7C,KAAK,EAAE;IAAE,IAAI,CAAC,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC1C,UAAU,CA+DZ;AAgDD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE;IAAE,IAAI,CAAC,EAAE,aAAa,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GACxC;IACD,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,QAAQ,EAAE,UAAU,EAAE,CAAC;CACxB,GAAG,IAAI,CA+BP"}
@@ -9,6 +9,7 @@ export function buildKnowledgeGraph(inspection) {
9
9
  const nodes = [];
10
10
  const edges = [];
11
11
  const byId = new Map();
12
+ let droppedEdges = 0;
12
13
  function addNode(n) {
13
14
  const key = nodeKey(n.kind, n.id);
14
15
  if (byId.has(key))
@@ -19,10 +20,12 @@ export function buildKnowledgeGraph(inspection) {
19
20
  function addEdge(from, to, relation, why) {
20
21
  const fromKey = nodeKey(from.kind, from.id);
21
22
  const toKey = nodeKey(to.kind, to.id);
22
- if (!byId.has(toKey))
23
- return; // don't add edges to nodes we didn't see
24
- if (!byId.has(fromKey))
23
+ // An edge to a node we didn't see is not drawn — but it is COUNTED, so the
24
+ // graph never reads as complete while it silently lost edges.
25
+ if (!byId.has(toKey) || !byId.has(fromKey)) {
26
+ droppedEdges += 1;
25
27
  return;
28
+ }
26
29
  edges.push({ from: fromKey, to: toKey, relation, why });
27
30
  }
28
31
  function sourceOf(map, id) {
@@ -142,8 +145,10 @@ export function buildKnowledgeGraph(inspection) {
142
145
  : byId.has(kKey)
143
146
  ? 'knowledge'
144
147
  : null;
145
- if (!targetKind)
148
+ if (!targetKind) {
149
+ droppedEdges += 1;
146
150
  continue;
151
+ }
147
152
  addEdge({ kind: 'pipeline', id: pipeline.id }, { kind: targetKind, id: ref }, 'pipeline-step-references', `step ${step.id} references`);
148
153
  }
149
154
  }
@@ -157,11 +162,17 @@ export function buildKnowledgeGraph(inspection) {
157
162
  addEdge({ kind: 'boundary', id: r.id }, { kind: 'path', id }, 'boundary-related-path', 'relatedPathConventions');
158
163
  }
159
164
  }
160
- // Pack contributions: pack → its contributed items.
165
+ // Pack contributions: pack → its contributed items. A contributed rule or
166
+ // path convention is a `rule:` / `path:` node, not a `knowledge:` one — the
167
+ // edge used to target `knowledge:<id>` and was silently dropped for both.
168
+ const entryKinds = new Map();
169
+ for (const e of inspection.knowledgeEntries) {
170
+ entryKinds.set(e.id, String(e.type) === 'rule' ? 'rule' : String(e.type) === 'path' ? 'path' : 'knowledge');
171
+ }
161
172
  for (const [id, src] of inspection.entrySources) {
162
173
  if (src.type !== 'pack' || !src.packageName)
163
174
  continue;
164
- addEdge({ kind: 'pack', id: src.packageName }, { kind: 'knowledge', id }, 'pack-contributes', 'knowledge entry');
175
+ addEdge({ kind: 'pack', id: src.packageName }, { kind: entryKinds.get(id) ?? 'knowledge', id }, 'pack-contributes', 'knowledge entry');
165
176
  }
166
177
  for (const [id, src] of inspection.templateSources) {
167
178
  if (src.type !== 'pack' || !src.packageName)
@@ -183,7 +194,7 @@ export function buildKnowledgeGraph(inspection) {
183
194
  continue;
184
195
  addEdge({ kind: 'pack', id: src.packageName }, { kind: 'boundary', id }, 'pack-contributes', 'boundary rule');
185
196
  }
186
- return { nodes, edges, byId };
197
+ return { nodes, edges, byId, droppedEdges };
187
198
  }
188
199
  /**
189
200
  * Find the shortest directed path (BFS) between two graph nodes. Edges are
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Per-kind counts of a staleness sweep — by asset kind (knowledge / boundary
3
+ * rule / policy) and by knowledge entry `type`.
4
+ *
5
+ * `scanned: 0` means the kind was NOT IN THE SWEEP, which a renderer must say
6
+ * in words — a row of zeros cannot tell "clean" from "never looked".
7
+ */
8
+ export interface IKnowledgeKindBucket {
9
+ /** Subjects of this kind the sweep visited. */
10
+ scanned: number;
11
+ /** Of those, how many declare no references / anchors at all. */
12
+ zeroReferences: number;
13
+ /** References + anchors checked for this kind. */
14
+ referencesChecked: number;
15
+ verified: number;
16
+ stale: number;
17
+ unverifiable: number;
18
+ }
19
+ //# sourceMappingURL=knowledge-kind-bucket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-kind-bucket.d.ts","sourceRoot":"","sources":["../src/knowledge-kind-bucket.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,cAAc,EAAE,MAAM,CAAC;IACvB,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,23 @@
1
+ /**
2
+ * One knowledge-bearing file (`knowledgeFiles` / `ruleFiles` / `pathFiles` /
3
+ * `docsFiles`, local or pack-contributed) whose entries never reached the
4
+ * corpus — it failed to import, timed out, was skipped as a cached failure, or
5
+ * is declared by the config and does not exist.
6
+ *
7
+ * Read off `inspection.loaderDiagnostics` (the ONE record of what each loader
8
+ * did) by `describeInspectionDiscovery`. A corpus verdict over a load failure
9
+ * examined part of what it was told to, so it is never a pass.
10
+ */
11
+ export interface IKnowledgeLoadFailure {
12
+ /** Project-relative when inside the project, else absolute. */
13
+ readonly file: string;
14
+ /** The loader slot (`knowledge` / `rules` / `paths` / `docs`). */
15
+ readonly kind: string;
16
+ /** `failed` / `timeout` / `cached-failed` / `missing`. */
17
+ readonly status: string;
18
+ /** The loader's message (the import error), or why nothing was read. */
19
+ readonly message: string;
20
+ /** Set for a pack-contributed file. */
21
+ readonly packName?: string;
22
+ }
23
+ //# sourceMappingURL=knowledge-load-failure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-load-failure.d.ts","sourceRoot":"","sources":["../src/knowledge-load-failure.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,+DAA+D;IAC/D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,11 @@
1
+ /** Per-reference-kind outcome counts of a staleness sweep (`file`, `symbol`, `template`, …). */
2
+ export interface IKnowledgeReferenceKindBucket {
3
+ checked: number;
4
+ ok: number;
5
+ stale: number;
6
+ missing: number;
7
+ unknown: number;
8
+ /** Malformed references of this kind (a missing required field) — never checked. */
9
+ invalid: number;
10
+ }
11
+ //# sourceMappingURL=knowledge-reference-kind-bucket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-reference-kind-bucket.d.ts","sourceRoot":"","sources":["../src/knowledge-reference-kind-bucket.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ import type { IAssetReference } from '@shrkcrft/core';
2
+ import type { KnowledgeAdvisoryCode } from './knowledge-advisory-code.js';
3
+ import type { ReferenceAssetKind } from './reference-asset-kind.js';
4
+ /** One advisory from a staleness sweep — reported, never gating by itself. */
5
+ export interface IKnowledgeStaleAdvisory {
6
+ readonly code: KnowledgeAdvisoryCode;
7
+ /** The entry / boundary rule / policy the advisory is about. */
8
+ readonly subjectId: string;
9
+ readonly assetKind: ReferenceAssetKind;
10
+ readonly message: string;
11
+ /** A reference that would verify the claim, ready to paste into `references[]`. */
12
+ readonly suggestion?: IAssetReference;
13
+ }
14
+ //# sourceMappingURL=knowledge-stale-advisory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-stale-advisory.d.ts","sourceRoot":"","sources":["../src/knowledge-stale-advisory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,8EAA8E;AAC9E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,mFAAmF;IACnF,QAAQ,CAAC,UAAU,CAAC,EAAE,eAAe,CAAC;CACvC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ /**
2
+ * The three entry buckets of a staleness sweep, over the entries in scope.
3
+ *
4
+ * `verified + stale + unverifiable === entriesInScope`, always. The CLI renders
5
+ * the unverifiable count AND its percentage on the summary line where a bare
6
+ * `0 stale` used to sit, and turns {@link referencedRatio} into the verdict's
7
+ * coverage (`examined` = verified + stale).
8
+ */
9
+ export interface IKnowledgeStaleCoverage {
10
+ readonly entriesInScope: number;
11
+ readonly verified: number;
12
+ readonly stale: number;
13
+ readonly unverifiable: number;
14
+ /** `unverifiable / entriesInScope × 100`, one decimal place; 0 for an empty scope. */
15
+ readonly unverifiablePct: number;
16
+ /** `(verified + stale) / entriesInScope` — the share the check could examine; 0 for an empty scope. */
17
+ readonly referencedRatio: number;
18
+ }
19
+ //# sourceMappingURL=knowledge-stale-coverage.d.ts.map