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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. package/dist/acceptance-replay.js +1 -1
  2. package/dist/agent-contract-templates.js +6 -6
  3. package/dist/agent-contract.d.ts.map +1 -1
  4. package/dist/agent-contract.js +13 -8
  5. package/dist/agent-orchestration.js +2 -2
  6. package/dist/agent-task-prep.d.ts +16 -0
  7. package/dist/agent-task-prep.d.ts.map +1 -1
  8. package/dist/agent-task-prep.js +51 -4
  9. package/dist/ai-readiness.d.ts.map +1 -1
  10. package/dist/ai-readiness.js +21 -3
  11. package/dist/architecture-map.d.ts +16 -0
  12. package/dist/architecture-map.d.ts.map +1 -1
  13. package/dist/architecture-map.js +42 -26
  14. package/dist/area-explore.d.ts +2 -2
  15. package/dist/area-explore.d.ts.map +1 -1
  16. package/dist/area-explore.js +36 -16
  17. package/dist/area-map.d.ts +56 -11
  18. package/dist/area-map.d.ts.map +1 -1
  19. package/dist/area-map.js +106 -25
  20. package/dist/asset-doctor-proposed-exit.d.ts +21 -0
  21. package/dist/asset-doctor-proposed-exit.d.ts.map +1 -0
  22. package/dist/asset-doctor-proposed-exit.js +22 -0
  23. package/dist/asset-provenance.js +1 -1
  24. package/dist/boundaries-changed-only.d.ts +24 -1
  25. package/dist/boundaries-changed-only.d.ts.map +1 -1
  26. package/dist/boundaries-changed-only.js +12 -2
  27. package/dist/boundary-check-options.model.d.ts +40 -0
  28. package/dist/boundary-check-options.model.d.ts.map +1 -0
  29. package/dist/boundary-check-options.model.js +1 -0
  30. package/dist/boundary-check-result.model.d.ts +89 -0
  31. package/dist/boundary-check-result.model.d.ts.map +1 -0
  32. package/dist/boundary-check-result.model.js +1 -0
  33. package/dist/boundary-configuration-status.d.ts +38 -0
  34. package/dist/boundary-configuration-status.d.ts.map +1 -0
  35. package/dist/boundary-configuration-status.js +118 -0
  36. package/dist/boundary-configuration-status.model.d.ts +37 -0
  37. package/dist/boundary-configuration-status.model.d.ts.map +1 -0
  38. package/dist/boundary-configuration-status.model.js +1 -0
  39. package/dist/boundary-load-issue.model.d.ts +30 -0
  40. package/dist/boundary-load-issue.model.d.ts.map +1 -0
  41. package/dist/boundary-load-issue.model.js +1 -0
  42. package/dist/boundary-rule-check.model.d.ts +44 -0
  43. package/dist/boundary-rule-check.model.d.ts.map +1 -0
  44. package/dist/boundary-rule-check.model.js +1 -0
  45. package/dist/boundary-rule-invalidation.model.d.ts +31 -0
  46. package/dist/boundary-rule-invalidation.model.d.ts.map +1 -0
  47. package/dist/boundary-rule-invalidation.model.js +1 -0
  48. package/dist/boundary-rule-set-diff.model.d.ts +75 -0
  49. package/dist/boundary-rule-set-diff.model.d.ts.map +1 -0
  50. package/dist/boundary-rule-set-diff.model.js +1 -0
  51. package/dist/boundary-rule-sources.d.ts +28 -0
  52. package/dist/boundary-rule-sources.d.ts.map +1 -0
  53. package/dist/boundary-rule-sources.js +110 -0
  54. package/dist/boundary-stale-exception-finding.model.d.ts +12 -0
  55. package/dist/boundary-stale-exception-finding.model.d.ts.map +1 -0
  56. package/dist/boundary-stale-exception-finding.model.js +1 -0
  57. package/dist/boundary-unit-liveness.d.ts +35 -0
  58. package/dist/boundary-unit-liveness.d.ts.map +1 -0
  59. package/dist/boundary-unit-liveness.js +71 -0
  60. package/dist/change-intent.d.ts +3 -0
  61. package/dist/change-intent.d.ts.map +1 -1
  62. package/dist/change-intent.js +61 -27
  63. package/dist/changes-summary.d.ts.map +1 -1
  64. package/dist/changes-summary.js +19 -9
  65. package/dist/ci-integrity-report.js +1 -1
  66. package/dist/ci-predict.d.ts.map +1 -1
  67. package/dist/ci-predict.js +38 -5
  68. package/dist/code-intelligence-doctor.d.ts +6 -0
  69. package/dist/code-intelligence-doctor.d.ts.map +1 -1
  70. package/dist/code-intelligence-doctor.js +22 -7
  71. package/dist/command-recommender.d.ts +45 -2
  72. package/dist/command-recommender.d.ts.map +1 -1
  73. package/dist/command-recommender.js +41 -263
  74. package/dist/command-resolution-status.d.ts +44 -0
  75. package/dist/command-resolution-status.d.ts.map +1 -0
  76. package/dist/command-resolution-status.js +44 -0
  77. package/dist/command-safety-level.d.ts +15 -0
  78. package/dist/command-safety-level.d.ts.map +1 -0
  79. package/dist/command-safety-level.js +43 -0
  80. package/dist/command-taxonomy.js +1 -1
  81. package/dist/compliance-evidence.js +1 -1
  82. package/dist/compliance-profiles.js +1 -1
  83. package/dist/construct-registry.d.ts +40 -0
  84. package/dist/construct-registry.d.ts.map +1 -1
  85. package/dist/construct-registry.js +186 -82
  86. package/dist/context-tuning.d.ts +4 -0
  87. package/dist/context-tuning.d.ts.map +1 -1
  88. package/dist/context-tuning.js +10 -7
  89. package/dist/contract-template-registry.d.ts +10 -0
  90. package/dist/contract-template-registry.d.ts.map +1 -1
  91. package/dist/contract-template-registry.js +59 -33
  92. package/dist/contribution-kind.d.ts +52 -0
  93. package/dist/contribution-kind.d.ts.map +1 -0
  94. package/dist/contribution-kind.js +52 -0
  95. package/dist/contribution-load-failures.d.ts +106 -0
  96. package/dist/contribution-load-failures.d.ts.map +1 -0
  97. package/dist/contribution-load-failures.js +575 -0
  98. package/dist/contributions-report.d.ts +28 -0
  99. package/dist/contributions-report.d.ts.map +1 -0
  100. package/dist/contributions-report.js +242 -0
  101. package/dist/convention-registry.d.ts +22 -0
  102. package/dist/convention-registry.d.ts.map +1 -1
  103. package/dist/convention-registry.js +79 -39
  104. package/dist/coverage-report.d.ts.map +1 -1
  105. package/dist/coverage-report.js +6 -6
  106. package/dist/custom-checks.d.ts +60 -1
  107. package/dist/custom-checks.d.ts.map +1 -1
  108. package/dist/custom-checks.js +159 -6
  109. package/dist/dashboard/dashboard-data.d.ts +6 -0
  110. package/dist/dashboard/dashboard-data.d.ts.map +1 -1
  111. package/dist/dashboard/dashboard-data.js +99 -8
  112. package/dist/dashboard/dashboard-knowledge.d.ts.map +1 -1
  113. package/dist/dashboard/dashboard-knowledge.js +14 -2
  114. package/dist/decision-records.d.ts +20 -0
  115. package/dist/decision-records.d.ts.map +1 -1
  116. package/dist/decision-records.js +68 -20
  117. package/dist/declared-cross-references.d.ts +61 -0
  118. package/dist/declared-cross-references.d.ts.map +1 -0
  119. package/dist/declared-cross-references.js +550 -0
  120. package/dist/declared-gate-plane-rules.d.ts +24 -0
  121. package/dist/declared-gate-plane-rules.d.ts.map +1 -0
  122. package/dist/declared-gate-plane-rules.js +39 -0
  123. package/dist/declared-reference-coverage.d.ts +27 -0
  124. package/dist/declared-reference-coverage.d.ts.map +1 -0
  125. package/dist/declared-reference-coverage.js +50 -0
  126. package/dist/declared-xref-status.d.ts +19 -0
  127. package/dist/declared-xref-status.d.ts.map +1 -0
  128. package/dist/declared-xref-status.js +19 -0
  129. package/dist/delegate-pack-recipes.d.ts +13 -2
  130. package/dist/delegate-pack-recipes.d.ts.map +1 -1
  131. package/dist/delegate-pack-recipes.js +45 -14
  132. package/dist/demo-package.js +2 -2
  133. package/dist/demo-script.js +2 -2
  134. package/dist/demo-workflow.js +3 -3
  135. package/dist/dev-cycle.js +1 -1
  136. package/dist/dev-session.js +1 -1
  137. package/dist/doc-references.d.ts +23 -2
  138. package/dist/doc-references.d.ts.map +1 -1
  139. package/dist/doc-references.js +96 -17
  140. package/dist/doctor-result.d.ts +8 -0
  141. package/dist/doctor-result.d.ts.map +1 -1
  142. package/dist/doctor-verdict-kind.d.ts +19 -0
  143. package/dist/doctor-verdict-kind.d.ts.map +1 -0
  144. package/dist/doctor-verdict-kind.js +19 -0
  145. package/dist/doctor-verdict.d.ts +18 -0
  146. package/dist/doctor-verdict.d.ts.map +1 -0
  147. package/dist/doctor-verdict.js +28 -0
  148. package/dist/drift.d.ts +17 -0
  149. package/dist/drift.d.ts.map +1 -1
  150. package/dist/drift.js +40 -10
  151. package/dist/entrypoint-matrix.d.ts.map +1 -1
  152. package/dist/entrypoint-matrix.js +4 -1
  153. package/dist/feedback-ingestion.d.ts +28 -2
  154. package/dist/feedback-ingestion.d.ts.map +1 -1
  155. package/dist/feedback-ingestion.js +68 -19
  156. package/dist/fix-preview.d.ts.map +1 -1
  157. package/dist/fix-preview.js +9 -5
  158. package/dist/framework-extractor-outcomes.d.ts +27 -0
  159. package/dist/framework-extractor-outcomes.d.ts.map +1 -0
  160. package/dist/framework-extractor-outcomes.js +83 -0
  161. package/dist/fuzzy-impact.js +1 -1
  162. package/dist/healing-plan.d.ts.map +1 -1
  163. package/dist/healing-plan.js +3 -4
  164. package/dist/helper-catalog.d.ts +25 -0
  165. package/dist/helper-catalog.d.ts.map +1 -0
  166. package/dist/helper-catalog.js +91 -0
  167. package/dist/helper-registry.d.ts.map +1 -1
  168. package/dist/helper-registry.js +17 -1
  169. package/dist/helper-view.d.ts +33 -0
  170. package/dist/helper-view.d.ts.map +1 -0
  171. package/dist/helper-view.js +1 -0
  172. package/dist/i-asset-doctor-flags.d.ts +16 -0
  173. package/dist/i-asset-doctor-flags.d.ts.map +1 -0
  174. package/dist/i-asset-doctor-flags.js +1 -0
  175. package/dist/i-command-resolution.d.ts +22 -0
  176. package/dist/i-command-resolution.d.ts.map +1 -0
  177. package/dist/i-command-resolution.js +1 -0
  178. package/dist/i-command-resolve-options.d.ts +24 -0
  179. package/dist/i-command-resolve-options.d.ts.map +1 -0
  180. package/dist/i-command-resolve-options.js +1 -0
  181. package/dist/i-command-safety.d.ts +13 -0
  182. package/dist/i-command-safety.d.ts.map +1 -0
  183. package/dist/i-command-safety.js +1 -0
  184. package/dist/i-contribution-accepted-entry.d.ts +18 -0
  185. package/dist/i-contribution-accepted-entry.d.ts.map +1 -0
  186. package/dist/i-contribution-accepted-entry.js +1 -0
  187. package/dist/i-contribution-entry-rejection.d.ts +21 -0
  188. package/dist/i-contribution-entry-rejection.d.ts.map +1 -0
  189. package/dist/i-contribution-entry-rejection.js +1 -0
  190. package/dist/i-contribution-file-issue.d.ts +18 -0
  191. package/dist/i-contribution-file-issue.d.ts.map +1 -0
  192. package/dist/i-contribution-file-issue.js +1 -0
  193. package/dist/i-contribution-file-report.d.ts +40 -0
  194. package/dist/i-contribution-file-report.d.ts.map +1 -0
  195. package/dist/i-contribution-file-report.js +1 -0
  196. package/dist/i-contribution-file-validation.d.ts +24 -0
  197. package/dist/i-contribution-file-validation.d.ts.map +1 -0
  198. package/dist/i-contribution-file-validation.js +1 -0
  199. package/dist/i-contributions-report.d.ts +31 -0
  200. package/dist/i-contributions-report.d.ts.map +1 -0
  201. package/dist/i-contributions-report.js +1 -0
  202. package/dist/i-declared-xref-field.d.ts +25 -0
  203. package/dist/i-declared-xref-field.d.ts.map +1 -0
  204. package/dist/i-declared-xref-field.js +1 -0
  205. package/dist/i-declared-xref-issue.d.ts +25 -0
  206. package/dist/i-declared-xref-issue.d.ts.map +1 -0
  207. package/dist/i-declared-xref-issue.js +1 -0
  208. package/dist/i-declared-xref-report.d.ts +48 -0
  209. package/dist/i-declared-xref-report.d.ts.map +1 -0
  210. package/dist/i-declared-xref-report.js +1 -0
  211. package/dist/i-declared-xref-row.d.ts +29 -0
  212. package/dist/i-declared-xref-row.d.ts.map +1 -0
  213. package/dist/i-declared-xref-row.js +1 -0
  214. package/dist/i-doctor-verdict.d.ts +10 -0
  215. package/dist/i-doctor-verdict.d.ts.map +1 -0
  216. package/dist/i-doctor-verdict.js +1 -0
  217. package/dist/i-kind-outcomes.d.ts +13 -0
  218. package/dist/i-kind-outcomes.d.ts.map +1 -0
  219. package/dist/i-kind-outcomes.js +1 -0
  220. package/dist/i-pack-doctor-verdict.d.ts +15 -0
  221. package/dist/i-pack-doctor-verdict.d.ts.map +1 -0
  222. package/dist/i-pack-doctor-verdict.js +1 -0
  223. package/dist/i-probed-id-field.d.ts +17 -0
  224. package/dist/i-probed-id-field.d.ts.map +1 -0
  225. package/dist/i-probed-id-field.js +1 -0
  226. package/dist/i-reference-kind-declaration.d.ts +38 -0
  227. package/dist/i-reference-kind-declaration.d.ts.map +1 -0
  228. package/dist/i-reference-kind-declaration.js +1 -0
  229. package/dist/i-reference-warm-options.d.ts +21 -0
  230. package/dist/i-reference-warm-options.d.ts.map +1 -0
  231. package/dist/i-reference-warm-options.js +1 -0
  232. package/dist/i-registry-outcomes.d.ts +16 -0
  233. package/dist/i-registry-outcomes.d.ts.map +1 -0
  234. package/dist/i-registry-outcomes.js +1 -0
  235. package/dist/i-scaffold-pattern-doctor-report.d.ts +35 -0
  236. package/dist/i-scaffold-pattern-doctor-report.d.ts.map +1 -0
  237. package/dist/i-scaffold-pattern-doctor-report.js +1 -0
  238. package/dist/i-search-tuning-key-probe.d.ts +30 -0
  239. package/dist/i-search-tuning-key-probe.d.ts.map +1 -0
  240. package/dist/i-search-tuning-key-probe.js +1 -0
  241. package/dist/i-search-tuning-lint-issue.d.ts +61 -0
  242. package/dist/i-search-tuning-lint-issue.d.ts.map +1 -0
  243. package/dist/i-search-tuning-lint-issue.js +1 -0
  244. package/dist/i-search-tuning-lint-report.d.ts +38 -0
  245. package/dist/i-search-tuning-lint-report.d.ts.map +1 -0
  246. package/dist/i-search-tuning-lint-report.js +1 -0
  247. package/dist/i-unresolvable-reference-scan.d.ts +14 -0
  248. package/dist/i-unresolvable-reference-scan.d.ts.map +1 -0
  249. package/dist/i-unresolvable-reference-scan.js +1 -0
  250. package/dist/i-unresolvable-reference.d.ts +29 -0
  251. package/dist/i-unresolvable-reference.d.ts.map +1 -0
  252. package/dist/i-unresolvable-reference.js +1 -0
  253. package/dist/i-workspace-profile-payload.d.ts +12 -0
  254. package/dist/i-workspace-profile-payload.d.ts.map +1 -0
  255. package/dist/i-workspace-profile-payload.js +1 -0
  256. package/dist/impact-analysis.d.ts +15 -0
  257. package/dist/impact-analysis.d.ts.map +1 -1
  258. package/dist/impact-analysis.js +58 -13
  259. package/dist/impact-render.d.ts.map +1 -1
  260. package/dist/impact-render.js +22 -0
  261. package/dist/import-hygiene.d.ts +35 -1
  262. package/dist/import-hygiene.d.ts.map +1 -1
  263. package/dist/import-hygiene.js +107 -13
  264. package/dist/index.d.ts +141 -0
  265. package/dist/index.d.ts.map +1 -1
  266. package/dist/index.js +172 -0
  267. package/dist/inspection-discovery.d.ts +45 -0
  268. package/dist/inspection-discovery.d.ts.map +1 -0
  269. package/dist/inspection-discovery.js +70 -0
  270. package/dist/knowledge-advisory-code.d.ts +17 -0
  271. package/dist/knowledge-advisory-code.d.ts.map +1 -0
  272. package/dist/knowledge-advisory-code.js +17 -0
  273. package/dist/knowledge-aged-entry.d.ts +10 -0
  274. package/dist/knowledge-aged-entry.d.ts.map +1 -0
  275. package/dist/knowledge-aged-entry.js +1 -0
  276. package/dist/knowledge-authoring.d.ts +24 -1
  277. package/dist/knowledge-authoring.d.ts.map +1 -1
  278. package/dist/knowledge-authoring.js +46 -7
  279. package/dist/knowledge-entry-verdict-record.d.ts +22 -0
  280. package/dist/knowledge-entry-verdict-record.d.ts.map +1 -0
  281. package/dist/knowledge-entry-verdict-record.js +1 -0
  282. package/dist/knowledge-entry-verdict.d.ts +17 -0
  283. package/dist/knowledge-entry-verdict.d.ts.map +1 -0
  284. package/dist/knowledge-entry-verdict.js +17 -0
  285. package/dist/knowledge-graph.d.ts +6 -0
  286. package/dist/knowledge-graph.d.ts.map +1 -1
  287. package/dist/knowledge-graph.js +18 -7
  288. package/dist/knowledge-kind-bucket.d.ts +19 -0
  289. package/dist/knowledge-kind-bucket.d.ts.map +1 -0
  290. package/dist/knowledge-kind-bucket.js +1 -0
  291. package/dist/knowledge-load-failure.d.ts +23 -0
  292. package/dist/knowledge-load-failure.d.ts.map +1 -0
  293. package/dist/knowledge-load-failure.js +1 -0
  294. package/dist/knowledge-reference-kind-bucket.d.ts +11 -0
  295. package/dist/knowledge-reference-kind-bucket.d.ts.map +1 -0
  296. package/dist/knowledge-reference-kind-bucket.js +1 -0
  297. package/dist/knowledge-stale-advisory.d.ts +14 -0
  298. package/dist/knowledge-stale-advisory.d.ts.map +1 -0
  299. package/dist/knowledge-stale-advisory.js +1 -0
  300. package/dist/knowledge-stale-coverage.d.ts +19 -0
  301. package/dist/knowledge-stale-coverage.d.ts.map +1 -0
  302. package/dist/knowledge-stale-coverage.js +1 -0
  303. package/dist/knowledge-stale-gate-flags.d.ts +33 -0
  304. package/dist/knowledge-stale-gate-flags.d.ts.map +1 -0
  305. package/dist/knowledge-stale-gate-flags.js +1 -0
  306. package/dist/knowledge-stale-gate-input.d.ts +46 -0
  307. package/dist/knowledge-stale-gate-input.d.ts.map +1 -0
  308. package/dist/knowledge-stale-gate-input.js +1 -0
  309. package/dist/knowledge-stale-gate-result.d.ts +33 -0
  310. package/dist/knowledge-stale-gate-result.d.ts.map +1 -0
  311. package/dist/knowledge-stale-gate-result.js +1 -0
  312. package/dist/knowledge-stale-gate-rule.d.ts +33 -0
  313. package/dist/knowledge-stale-gate-rule.d.ts.map +1 -0
  314. package/dist/knowledge-stale-gate-rule.js +1 -0
  315. package/dist/knowledge-stale-gate-violation.d.ts +13 -0
  316. package/dist/knowledge-stale-gate-violation.d.ts.map +1 -0
  317. package/dist/knowledge-stale-gate-violation.js +1 -0
  318. package/dist/knowledge-stale-gate.d.ts +83 -0
  319. package/dist/knowledge-stale-gate.d.ts.map +1 -0
  320. package/dist/knowledge-stale-gate.js +429 -0
  321. package/dist/knowledge-stale-quality-gate.d.ts +26 -0
  322. package/dist/knowledge-stale-quality-gate.d.ts.map +1 -0
  323. package/dist/knowledge-stale-quality-gate.js +110 -0
  324. package/dist/knowledge-stale.d.ts +122 -9
  325. package/dist/knowledge-stale.d.ts.map +1 -1
  326. package/dist/knowledge-stale.js +996 -291
  327. package/dist/knowledge-unverifiable-reason.d.ts +12 -0
  328. package/dist/knowledge-unverifiable-reason.d.ts.map +1 -0
  329. package/dist/knowledge-unverifiable-reason.js +12 -0
  330. package/dist/loader-diagnostics.d.ts +14 -2
  331. package/dist/loader-diagnostics.d.ts.map +1 -1
  332. package/dist/match-terms.d.ts +48 -0
  333. package/dist/match-terms.d.ts.map +1 -0
  334. package/dist/match-terms.js +155 -0
  335. package/dist/migration-profile-registry.d.ts +10 -0
  336. package/dist/migration-profile-registry.d.ts.map +1 -1
  337. package/dist/migration-profile-registry.js +57 -34
  338. package/dist/migration-readiness.d.ts.map +1 -1
  339. package/dist/migration-readiness.js +1 -3
  340. package/dist/nearest-id.d.ts +10 -26
  341. package/dist/nearest-id.d.ts.map +1 -1
  342. package/dist/nearest-id.js +9 -59
  343. package/dist/pack-asset-freshness.d.ts +65 -0
  344. package/dist/pack-asset-freshness.d.ts.map +1 -0
  345. package/dist/pack-asset-freshness.js +340 -0
  346. package/dist/pack-author-ux.d.ts +24 -3
  347. package/dist/pack-author-ux.d.ts.map +1 -1
  348. package/dist/pack-author-ux.js +87 -93
  349. package/dist/pack-contributions-inventory.d.ts +79 -39
  350. package/dist/pack-contributions-inventory.d.ts.map +1 -1
  351. package/dist/pack-contributions-inventory.js +443 -286
  352. package/dist/pack-doctor-verdict.d.ts +29 -0
  353. package/dist/pack-doctor-verdict.d.ts.map +1 -0
  354. package/dist/pack-doctor-verdict.js +45 -0
  355. package/dist/pack-doctor.d.ts +74 -1
  356. package/dist/pack-doctor.d.ts.map +1 -1
  357. package/dist/pack-doctor.js +281 -1
  358. package/dist/pack-helper-plan.d.ts +24 -0
  359. package/dist/pack-helper-plan.d.ts.map +1 -0
  360. package/dist/pack-helper-plan.js +77 -0
  361. package/dist/pack-helper-registry.d.ts +14 -0
  362. package/dist/pack-helper-registry.d.ts.map +1 -1
  363. package/dist/pack-helper-registry.js +76 -37
  364. package/dist/pack-manifest-reader.d.ts +8 -0
  365. package/dist/pack-manifest-reader.d.ts.map +1 -0
  366. package/dist/pack-manifest-reader.js +79 -0
  367. package/dist/pack-release-check.d.ts +14 -1
  368. package/dist/pack-release-check.d.ts.map +1 -1
  369. package/dist/pack-release-check.js +23 -1
  370. package/dist/pack-signature-status.d.ts +18 -6
  371. package/dist/pack-signature-status.d.ts.map +1 -1
  372. package/dist/pack-signature-status.js +59 -105
  373. package/dist/pack-test-runner.d.ts +27 -5
  374. package/dist/pack-test-runner.d.ts.map +1 -1
  375. package/dist/pack-test-runner.js +91 -35
  376. package/dist/pack-typecheck.d.ts +8 -0
  377. package/dist/pack-typecheck.d.ts.map +1 -0
  378. package/dist/pack-typecheck.js +76 -0
  379. package/dist/plan-review.d.ts +2 -0
  380. package/dist/plan-review.d.ts.map +1 -1
  381. package/dist/plan-review.js +17 -5
  382. package/dist/plan-simulation.d.ts.map +1 -1
  383. package/dist/plan-simulation.js +16 -5
  384. package/dist/playbook-load-issue.d.ts +16 -0
  385. package/dist/playbook-load-issue.d.ts.map +1 -0
  386. package/dist/playbook-load-issue.js +1 -0
  387. package/dist/playbook-registry.d.ts +32 -1
  388. package/dist/playbook-registry.d.ts.map +1 -1
  389. package/dist/playbook-registry.js +144 -55
  390. package/dist/policy-declaration.d.ts +18 -0
  391. package/dist/policy-declaration.d.ts.map +1 -0
  392. package/dist/policy-declaration.js +1 -0
  393. package/dist/policy-engine.d.ts +8 -0
  394. package/dist/policy-engine.d.ts.map +1 -1
  395. package/dist/policy-engine.js +26 -9
  396. package/dist/policy-overrides.d.ts.map +1 -1
  397. package/dist/policy-overrides.js +4 -4
  398. package/dist/policy-registry.d.ts +27 -0
  399. package/dist/policy-registry.d.ts.map +1 -1
  400. package/dist/policy-registry.js +87 -20
  401. package/dist/probed-id-fields.d.ts +21 -0
  402. package/dist/probed-id-fields.d.ts.map +1 -0
  403. package/dist/probed-id-fields.js +25 -0
  404. package/dist/probed-id-source.d.ts +11 -0
  405. package/dist/probed-id-source.d.ts.map +1 -0
  406. package/dist/probed-id-source.js +11 -0
  407. package/dist/profile-registry.d.ts +25 -2
  408. package/dist/profile-registry.d.ts.map +1 -1
  409. package/dist/profile-registry.js +59 -6
  410. package/dist/quality-gate-examination.d.ts +15 -0
  411. package/dist/quality-gate-examination.d.ts.map +1 -0
  412. package/dist/quality-gate-examination.js +15 -0
  413. package/dist/quality-gate-row-status.d.ts +19 -0
  414. package/dist/quality-gate-row-status.d.ts.map +1 -0
  415. package/dist/quality-gate-row-status.js +28 -0
  416. package/dist/quality-gate-status.d.ts +16 -0
  417. package/dist/quality-gate-status.d.ts.map +1 -0
  418. package/dist/quality-gate-status.js +16 -0
  419. package/dist/quality-html.d.ts.map +1 -1
  420. package/dist/quality-html.js +14 -3
  421. package/dist/quality-report-coverage.d.ts +26 -0
  422. package/dist/quality-report-coverage.d.ts.map +1 -0
  423. package/dist/quality-report-coverage.js +48 -0
  424. package/dist/quality-report.d.ts +28 -1
  425. package/dist/quality-report.d.ts.map +1 -1
  426. package/dist/quality-report.js +263 -35
  427. package/dist/query-intent-kind.d.ts +18 -0
  428. package/dist/query-intent-kind.d.ts.map +1 -0
  429. package/dist/query-intent-kind.js +18 -0
  430. package/dist/query-intent-result.d.ts +23 -0
  431. package/dist/query-intent-result.d.ts.map +1 -0
  432. package/dist/query-intent-result.js +1 -0
  433. package/dist/query-intent.d.ts +18 -0
  434. package/dist/query-intent.d.ts.map +1 -0
  435. package/dist/query-intent.js +336 -0
  436. package/dist/query-resolver.d.ts +18 -0
  437. package/dist/query-resolver.d.ts.map +1 -1
  438. package/dist/query-resolver.js +7 -4
  439. package/dist/ranked-recommendations.d.ts +36 -0
  440. package/dist/ranked-recommendations.d.ts.map +1 -0
  441. package/dist/ranked-recommendations.js +1 -0
  442. package/dist/ranker-explainability.d.ts.map +1 -1
  443. package/dist/ranker-explainability.js +38 -10
  444. package/dist/recommend-recipe.d.ts +17 -0
  445. package/dist/recommend-recipe.d.ts.map +1 -0
  446. package/dist/recommend-recipe.js +1 -0
  447. package/dist/recommend-recipes.d.ts +9 -0
  448. package/dist/recommend-recipes.d.ts.map +1 -0
  449. package/dist/recommend-recipes.js +106 -0
  450. package/dist/recommendation-candidate.d.ts +30 -0
  451. package/dist/recommendation-candidate.d.ts.map +1 -0
  452. package/dist/recommendation-candidate.js +1 -0
  453. package/dist/recommendation-confidence.d.ts +27 -0
  454. package/dist/recommendation-confidence.d.ts.map +1 -0
  455. package/dist/recommendation-confidence.js +1 -0
  456. package/dist/recommendation-ranking-options.d.ts +24 -0
  457. package/dist/recommendation-ranking-options.d.ts.map +1 -0
  458. package/dist/recommendation-ranking-options.js +1 -0
  459. package/dist/recommendation-ranking.d.ts +50 -0
  460. package/dist/recommendation-ranking.d.ts.map +1 -0
  461. package/dist/recommendation-ranking.js +527 -0
  462. package/dist/recommendation-source.d.ts +23 -0
  463. package/dist/recommendation-source.d.ts.map +1 -0
  464. package/dist/recommendation-source.js +23 -0
  465. package/dist/recommendation-suppression.d.ts +14 -0
  466. package/dist/recommendation-suppression.d.ts.map +1 -0
  467. package/dist/recommendation-suppression.js +14 -0
  468. package/dist/reference-asset-kind.d.ts +14 -0
  469. package/dist/reference-asset-kind.d.ts.map +1 -0
  470. package/dist/reference-asset-kind.js +14 -0
  471. package/dist/reference-content-check.d.ts +32 -0
  472. package/dist/reference-content-check.d.ts.map +1 -0
  473. package/dist/reference-content-check.js +143 -0
  474. package/dist/reference-failure.d.ts +31 -0
  475. package/dist/reference-failure.d.ts.map +1 -0
  476. package/dist/reference-failure.js +31 -0
  477. package/dist/reference-id-status.d.ts +15 -0
  478. package/dist/reference-id-status.d.ts.map +1 -0
  479. package/dist/reference-id-status.js +15 -0
  480. package/dist/reference-kind-declarations.d.ts +42 -0
  481. package/dist/reference-kind-declarations.d.ts.map +1 -0
  482. package/dist/reference-kind-declarations.js +142 -0
  483. package/dist/reference-lookup.d.ts +6 -0
  484. package/dist/reference-lookup.d.ts.map +1 -1
  485. package/dist/reference-lookup.js +13 -5
  486. package/dist/reference-registry.d.ts +109 -11
  487. package/dist/reference-registry.d.ts.map +1 -1
  488. package/dist/reference-registry.js +186 -30
  489. package/dist/reference-subject.d.ts +20 -0
  490. package/dist/reference-subject.d.ts.map +1 -0
  491. package/dist/reference-subject.js +1 -0
  492. package/dist/registration-hint-discovery-status.d.ts +25 -0
  493. package/dist/registration-hint-discovery-status.d.ts.map +1 -0
  494. package/dist/registration-hint-discovery-status.js +25 -0
  495. package/dist/registration-hint-registry.d.ts +80 -0
  496. package/dist/registration-hint-registry.d.ts.map +1 -1
  497. package/dist/registration-hint-registry.js +356 -138
  498. package/dist/registry-lifecycle.d.ts +200 -19
  499. package/dist/registry-lifecycle.d.ts.map +1 -1
  500. package/dist/registry-lifecycle.js +526 -136
  501. package/dist/release-readiness.d.ts.map +1 -1
  502. package/dist/release-readiness.js +10 -7
  503. package/dist/release-smoke.d.ts.map +1 -1
  504. package/dist/release-smoke.js +11 -7
  505. package/dist/report-site.d.ts.map +1 -1
  506. package/dist/report-site.js +25 -7
  507. package/dist/repository-intelligence.d.ts.map +1 -1
  508. package/dist/repository-intelligence.js +3 -2
  509. package/dist/repository-knowledge-model.d.ts.map +1 -1
  510. package/dist/repository-knowledge-model.js +18 -5
  511. package/dist/resolve-project-config.d.ts +64 -0
  512. package/dist/resolve-project-config.d.ts.map +1 -1
  513. package/dist/resolve-project-config.js +240 -32
  514. package/dist/reuse/compute-reuse-coverage.d.ts +29 -0
  515. package/dist/reuse/compute-reuse-coverage.d.ts.map +1 -0
  516. package/dist/reuse/compute-reuse-coverage.js +198 -0
  517. package/dist/reuse/rank-reuse-candidates.d.ts +38 -0
  518. package/dist/reuse/rank-reuse-candidates.d.ts.map +1 -0
  519. package/dist/reuse/rank-reuse-candidates.js +212 -0
  520. package/dist/reuse/rank-reuse-options.d.ts +20 -0
  521. package/dist/reuse/rank-reuse-options.d.ts.map +1 -0
  522. package/dist/reuse/rank-reuse-options.js +1 -0
  523. package/dist/reuse/rank-reuse-suggestions.d.ts +15 -0
  524. package/dist/reuse/rank-reuse-suggestions.d.ts.map +1 -0
  525. package/dist/reuse/rank-reuse-suggestions.js +31 -0
  526. package/dist/reuse/resolve-curated-reuse.d.ts +43 -0
  527. package/dist/reuse/resolve-curated-reuse.d.ts.map +1 -0
  528. package/dist/reuse/resolve-curated-reuse.js +115 -0
  529. package/dist/reuse/reuse-candidate.d.ts +29 -0
  530. package/dist/reuse/reuse-candidate.d.ts.map +1 -0
  531. package/dist/reuse/reuse-candidate.js +1 -0
  532. package/dist/reuse/reuse-coverage-report.d.ts +74 -0
  533. package/dist/reuse/reuse-coverage-report.d.ts.map +1 -0
  534. package/dist/reuse/reuse-coverage-report.js +1 -0
  535. package/dist/reuse/reuse-curated-coverage.d.ts +36 -0
  536. package/dist/reuse/reuse-curated-coverage.d.ts.map +1 -0
  537. package/dist/reuse/reuse-curated-coverage.js +1 -0
  538. package/dist/reuse/reuse-curated-resolution.d.ts +36 -0
  539. package/dist/reuse/reuse-curated-resolution.d.ts.map +1 -0
  540. package/dist/reuse/reuse-curated-resolution.js +1 -0
  541. package/dist/reuse/reuse-curated-status.d.ts +21 -0
  542. package/dist/reuse/reuse-curated-status.d.ts.map +1 -0
  543. package/dist/reuse/reuse-curated-status.js +21 -0
  544. package/dist/reuse/reuse-match-detail.d.ts +15 -0
  545. package/dist/reuse/reuse-match-detail.d.ts.map +1 -0
  546. package/dist/reuse/reuse-match-detail.js +1 -0
  547. package/dist/reuse/reuse-ranking.d.ts +37 -0
  548. package/dist/reuse/reuse-ranking.d.ts.map +1 -0
  549. package/dist/reuse/reuse-ranking.js +1 -0
  550. package/dist/reuse/reuse-suggestion.d.ts +19 -0
  551. package/dist/reuse/reuse-suggestion.d.ts.map +1 -0
  552. package/dist/reuse/reuse-suggestion.js +1 -0
  553. package/dist/reuse/reuse-symbol-lookup.d.ts +28 -0
  554. package/dist/reuse/reuse-symbol-lookup.d.ts.map +1 -0
  555. package/dist/reuse/reuse-symbol-lookup.js +1 -0
  556. package/dist/reuse/reuse-tokenize.d.ts +11 -0
  557. package/dist/reuse/reuse-tokenize.d.ts.map +1 -0
  558. package/dist/reuse/reuse-tokenize.js +26 -0
  559. package/dist/reuse/score-reuse-name.d.ts +16 -0
  560. package/dist/reuse/score-reuse-name.d.ts.map +1 -0
  561. package/dist/reuse/score-reuse-name.js +35 -0
  562. package/dist/reuse/score-reuse-primitive.d.ts +33 -0
  563. package/dist/reuse/score-reuse-primitive.d.ts.map +1 -0
  564. package/dist/reuse/score-reuse-primitive.js +92 -0
  565. package/dist/review-packet.d.ts +2 -0
  566. package/dist/review-packet.d.ts.map +1 -1
  567. package/dist/review-packet.js +13 -6
  568. package/dist/role-views.d.ts.map +1 -1
  569. package/dist/role-views.js +16 -16
  570. package/dist/routing-recommends-channels.d.ts +24 -0
  571. package/dist/routing-recommends-channels.d.ts.map +1 -0
  572. package/dist/routing-recommends-channels.js +19 -0
  573. package/dist/run-boundary-check.d.ts +118 -0
  574. package/dist/run-boundary-check.d.ts.map +1 -0
  575. package/dist/run-boundary-check.js +592 -0
  576. package/dist/safety-audit.js +1 -1
  577. package/dist/scaffold-coverage.js +1 -1
  578. package/dist/scaffold-pattern-doctor-report.d.ts +19 -0
  579. package/dist/scaffold-pattern-doctor-report.d.ts.map +1 -0
  580. package/dist/scaffold-pattern-doctor-report.js +54 -0
  581. package/dist/scaffold-patterns.d.ts +75 -1
  582. package/dist/scaffold-patterns.d.ts.map +1 -1
  583. package/dist/scaffold-patterns.js +375 -84
  584. package/dist/schema-inventory.d.ts.map +1 -1
  585. package/dist/schema-inventory.js +4 -3
  586. package/dist/search-document-id.d.ts +52 -0
  587. package/dist/search-document-id.d.ts.map +1 -0
  588. package/dist/search-document-id.js +72 -0
  589. package/dist/search-document-prefix.d.ts +7 -0
  590. package/dist/search-document-prefix.d.ts.map +1 -0
  591. package/dist/search-document-prefix.js +1 -0
  592. package/dist/search-index.d.ts.map +1 -1
  593. package/dist/search-index.js +20 -23
  594. package/dist/search-tuning-explain.d.ts +6 -0
  595. package/dist/search-tuning-explain.d.ts.map +1 -1
  596. package/dist/search-tuning-explain.js +19 -17
  597. package/dist/search-tuning-key-probes.d.ts +16 -0
  598. package/dist/search-tuning-key-probes.d.ts.map +1 -0
  599. package/dist/search-tuning-key-probes.js +65 -0
  600. package/dist/search-tuning-key-resolution.d.ts +25 -0
  601. package/dist/search-tuning-key-resolution.d.ts.map +1 -0
  602. package/dist/search-tuning-key-resolution.js +1 -0
  603. package/dist/search-tuning-key-resolver.d.ts +4 -0
  604. package/dist/search-tuning-key-resolver.d.ts.map +1 -0
  605. package/dist/search-tuning-key-resolver.js +107 -0
  606. package/dist/search-tuning-key-status.d.ts +24 -0
  607. package/dist/search-tuning-key-status.d.ts.map +1 -0
  608. package/dist/search-tuning-key-status.js +24 -0
  609. package/dist/search-tuning-lint.d.ts +9 -0
  610. package/dist/search-tuning-lint.d.ts.map +1 -0
  611. package/dist/search-tuning-lint.js +468 -0
  612. package/dist/search-tuning-registry.d.ts +43 -0
  613. package/dist/search-tuning-registry.d.ts.map +1 -1
  614. package/dist/search-tuning-registry.js +214 -49
  615. package/dist/self-audit.d.ts +12 -0
  616. package/dist/self-audit.d.ts.map +1 -1
  617. package/dist/self-audit.js +36 -10
  618. package/dist/self-config-doctor-v2.d.ts +145 -3
  619. package/dist/self-config-doctor-v2.d.ts.map +1 -1
  620. package/dist/self-config-doctor-v2.js +1304 -181
  621. package/dist/self-config-doctor.d.ts +20 -1
  622. package/dist/self-config-doctor.d.ts.map +1 -1
  623. package/dist/self-config-doctor.js +53 -280
  624. package/dist/settled-unit-states.d.ts +9 -0
  625. package/dist/settled-unit-states.d.ts.map +1 -0
  626. package/dist/settled-unit-states.js +14 -0
  627. package/dist/sharkcraft-inspector.d.ts +34 -0
  628. package/dist/sharkcraft-inspector.d.ts.map +1 -1
  629. package/dist/sharkcraft-inspector.js +273 -26
  630. package/dist/spec/spec-evidence.d.ts.map +1 -1
  631. package/dist/spec/spec-evidence.js +14 -20
  632. package/dist/split-identifier.d.ts +21 -0
  633. package/dist/split-identifier.d.ts.map +1 -0
  634. package/dist/split-identifier.js +27 -0
  635. package/dist/start-here.d.ts.map +1 -1
  636. package/dist/start-here.js +1 -2
  637. package/dist/substitute-placeholders.d.ts +8 -0
  638. package/dist/substitute-placeholders.d.ts.map +1 -0
  639. package/dist/substitute-placeholders.js +9 -0
  640. package/dist/symbol-index.d.ts +33 -0
  641. package/dist/symbol-index.d.ts.map +1 -1
  642. package/dist/symbol-index.js +241 -3
  643. package/dist/symbol-member-entry.d.ts +26 -0
  644. package/dist/symbol-member-entry.d.ts.map +1 -0
  645. package/dist/symbol-member-entry.js +1 -0
  646. package/dist/symbol-member-kind.d.ts +14 -0
  647. package/dist/symbol-member-kind.d.ts.map +1 -0
  648. package/dist/symbol-member-kind.js +14 -0
  649. package/dist/task-packet.d.ts.map +1 -1
  650. package/dist/task-packet.js +52 -9
  651. package/dist/task-ranker.d.ts +8 -0
  652. package/dist/task-ranker.d.ts.map +1 -1
  653. package/dist/task-ranker.js +25 -13
  654. package/dist/task-risk.js +1 -1
  655. package/dist/task-routing-hint-registry.d.ts +20 -1
  656. package/dist/task-routing-hint-registry.d.ts.map +1 -1
  657. package/dist/task-routing-hint-registry.js +186 -42
  658. package/dist/template-drift.d.ts.map +1 -1
  659. package/dist/template-drift.js +30 -9
  660. package/dist/template-lint.d.ts.map +1 -1
  661. package/dist/template-lint.js +160 -2
  662. package/dist/term-query.d.ts +10 -0
  663. package/dist/term-query.d.ts.map +1 -0
  664. package/dist/term-query.js +1 -0
  665. package/dist/test-definitions.d.ts +6 -3
  666. package/dist/test-definitions.d.ts.map +1 -1
  667. package/dist/test-runner.d.ts +95 -10
  668. package/dist/test-runner.d.ts.map +1 -1
  669. package/dist/test-runner.js +309 -308
  670. package/dist/tuning-query-tokens.d.ts +29 -0
  671. package/dist/tuning-query-tokens.d.ts.map +1 -0
  672. package/dist/tuning-query-tokens.js +51 -0
  673. package/dist/typecheck-files.d.ts +36 -0
  674. package/dist/typecheck-files.d.ts.map +1 -0
  675. package/dist/typecheck-files.js +158 -0
  676. package/dist/uncertainty.js +1 -1
  677. package/dist/universal-search.d.ts.map +1 -1
  678. package/dist/universal-search.js +5 -3
  679. package/dist/unregistered-exports.d.ts +19 -0
  680. package/dist/unregistered-exports.d.ts.map +1 -0
  681. package/dist/unregistered-exports.js +141 -0
  682. package/dist/unresolvable-reason.d.ts +11 -0
  683. package/dist/unresolvable-reason.d.ts.map +1 -0
  684. package/dist/unresolvable-reason.js +11 -0
  685. package/dist/upgrade-advisor.d.ts.map +1 -1
  686. package/dist/upgrade-advisor.js +16 -9
  687. package/dist/validate-contribution-file.d.ts +4 -0
  688. package/dist/validate-contribution-file.d.ts.map +1 -0
  689. package/dist/validate-contribution-file.js +228 -0
  690. package/dist/why-file.d.ts +3 -0
  691. package/dist/why-file.d.ts.map +1 -1
  692. package/dist/why-file.js +7 -3
  693. package/package.json +17 -17
@@ -0,0 +1,19 @@
1
+ /**
2
+ * How one doctor run settles — THE reading of an `IDoctorResult` that every
3
+ * surface shares (`shrk doctor`, `shrk check`, the dashboard, MCP
4
+ * `inspect_sharkcraft_setup`), so none of them can call a setup ready that
5
+ * another calls not verified.
6
+ */
7
+ export var DoctorVerdictKind;
8
+ (function (DoctorVerdictKind) {
9
+ /** No error check, and every scope the doctor was asked to verify was verified. */
10
+ DoctorVerdictKind["Ready"] = "ready";
11
+ /**
12
+ * No error check, but part of the setup could not be verified (today: a
13
+ * compiled pack build with no build record, never compared with its
14
+ * source). Never "ready".
15
+ */
16
+ DoctorVerdictKind["NotVerified"] = "not-verified";
17
+ /** At least one error-severity check. */
18
+ DoctorVerdictKind["Errors"] = "errors";
19
+ })(DoctorVerdictKind || (DoctorVerdictKind = {}));
@@ -0,0 +1,18 @@
1
+ import type { IDoctorResult } from './doctor-result.js';
2
+ import type { IDoctorVerdict } from './i-doctor-verdict.js';
3
+ /**
4
+ * THE settlement of one doctor run.
5
+ *
6
+ * an error-severity check → `errors`
7
+ * else any coverage shortfall → `not-verified` (never ready)
8
+ * else → `ready`
9
+ *
10
+ * `IDoctorResult.passed` stays errors-only (its long-standing meaning); the
11
+ * coverage the doctor could not verify is read here, through core's
12
+ * `coverageShortfall`, the same records `shrk doctor` settles its exit on.
13
+ * `shrk check`, the dashboard and MCP `inspect_sharkcraft_setup` read this
14
+ * instead of `passed`, so none of them calls a setup ready over a compiled
15
+ * pack build the doctor could not compare with its source.
16
+ */
17
+ export declare function doctorVerdict(result: IDoctorResult): IDoctorVerdict;
18
+ //# sourceMappingURL=doctor-verdict.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor-verdict.d.ts","sourceRoot":"","sources":["../src/doctor-verdict.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,cAAc,CAWnE"}
@@ -0,0 +1,28 @@
1
+ import { coverageShortfall } from '@shrkcrft/core';
2
+ import { DoctorVerdictKind } from "./doctor-verdict-kind.js";
3
+ /**
4
+ * THE settlement of one doctor run.
5
+ *
6
+ * an error-severity check → `errors`
7
+ * else any coverage shortfall → `not-verified` (never ready)
8
+ * else → `ready`
9
+ *
10
+ * `IDoctorResult.passed` stays errors-only (its long-standing meaning); the
11
+ * coverage the doctor could not verify is read here, through core's
12
+ * `coverageShortfall`, the same records `shrk doctor` settles its exit on.
13
+ * `shrk check`, the dashboard and MCP `inspect_sharkcraft_setup` read this
14
+ * instead of `passed`, so none of them calls a setup ready over a compiled
15
+ * pack build the doctor could not compare with its source.
16
+ */
17
+ export function doctorVerdict(result) {
18
+ const shortfalls = (result.coverage ?? []).flatMap((c) => {
19
+ const s = coverageShortfall(c);
20
+ return s === undefined ? [] : [s];
21
+ });
22
+ const verdict = !result.passed
23
+ ? DoctorVerdictKind.Errors
24
+ : shortfalls.length > 0
25
+ ? DoctorVerdictKind.NotVerified
26
+ : DoctorVerdictKind.Ready;
27
+ return { verdict, ready: verdict === DoctorVerdictKind.Ready, shortfalls };
28
+ }
package/dist/drift.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { type IVerdictCoverage } from '@shrkcrft/core';
1
2
  import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
2
3
  export type DriftSeverity = 'error' | 'warning' | 'info';
3
4
  export type DriftCategory = 'boundary' | 'preset-reference' | 'preset-composition' | 'missing-pack-asset' | 'config-mismatch' | 'template-relationship' | 'pipeline-template-link';
@@ -19,6 +20,22 @@ export interface IDriftReport {
19
20
  warning: number;
20
21
  info: number;
21
22
  };
23
+ /**
24
+ * What the boundary half examined — THE records `check boundaries` settles
25
+ * on (`boundaryCheckCoverage`). Empty when boundaries were skipped or none
26
+ * is configured.
27
+ */
28
+ coverage: readonly IVerdictCoverage[];
29
+ /** 0 clean · 1 an error finding · 2 part of a boundary rule's scope was never examined. */
30
+ exitCode: number;
31
+ verdict: 'pass' | 'fail' | 'not-verified' | 'usage-error';
32
+ shortfalls: readonly string[];
33
+ /**
34
+ * The settled acceptances (`<rule>: accepted by expectEmpty: …`) — present
35
+ * only at exit 0, like every acceptance (round 13 review: a boundary rule's
36
+ * expectEmpty acceptance reached this settle and was never printed).
37
+ */
38
+ accepted?: readonly string[];
22
39
  }
23
40
  export interface IBuildDriftOptions {
24
41
  /** When true, run the full boundary scan (slow on large repos). Default: true. */
@@ -1 +1 @@
1
- {"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../src/drift.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,kBAAkB,GAClB,oBAAoB,GACpB,oBAAoB,GACpB,iBAAiB,GACjB,uBAAuB,GACvB,wBAAwB,CAAC;AAE7B,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACjG;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1D;AAED,MAAM,WAAW,kBAAkB;IACjC,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,YAAY,CAuGd"}
1
+ {"version":3,"file":"drift.d.ts","sourceRoot":"","sources":["../src/drift.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AACzD,MAAM,MAAM,aAAa,GACrB,UAAU,GACV,kBAAkB,GAClB,oBAAoB,GACpB,oBAAoB,GACpB,iBAAiB,GACjB,uBAAuB,GACvB,wBAAwB,CAAC;AAE7B,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,aAAa,CAAC;IACxB,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACjG;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzD;;;;OAIG;IACH,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACtC,2FAA2F;IAC3F,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;IAC1D,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,kFAAkF;IAClF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,YAAY,CAoId"}
package/dist/drift.js CHANGED
@@ -1,5 +1,6 @@
1
- import { evaluateBoundaries, loadTsconfigPaths, scanImports } from '@shrkcrft/boundaries';
1
+ import { settleVerdict } from '@shrkcrft/core';
2
2
  import { resolvePreset, resolvePresetReferences } from '@shrkcrft/presets';
3
+ import { boundaryCheckCoverage, boundaryLoadIssueLabel, runBoundaryCheck } from "./run-boundary-check.js";
3
4
  import { inspectionReferenceLookup } from "./reference-lookup.js";
4
5
  /**
5
6
  * First-cut drift report. Combines:
@@ -13,14 +14,32 @@ import { inspectionReferenceLookup } from "./reference-lookup.js";
13
14
  */
14
15
  export function buildDriftReport(inspection, options = {}) {
15
16
  const findings = [];
16
- // 1. Boundary violations.
17
- if ((options.runBoundaries ?? true) && inspection.boundaryRegistry.size() > 0) {
18
- const scan = scanImports({ projectRoot: inspection.projectRoot });
19
- const tsconfigPaths = loadTsconfigPaths(inspection.projectRoot);
20
- const evalResult = evaluateBoundaries(scan, inspection.boundaryRegistry.list(), {
21
- ...(tsconfigPaths.aliases.size > 0 ? { tsconfigPaths } : {}),
22
- });
23
- for (const v of evalResult.violations) {
17
+ // 1. Boundary violations — through THE boundary orchestrator, the call
18
+ // `check boundaries` makes (round 11 review R11-GAP-3). Drift ran its own
19
+ // scan + evaluate: an unreadable governed file read `0` here where the gate
20
+ // read 2, and an errored rule or a stale exception was invisible.
21
+ let coverage = [];
22
+ const loadIssues = inspection.boundaryLoadIssues ?? [];
23
+ if ((options.runBoundaries ?? true) && (inspection.boundaryRegistry.size() > 0 || loadIssues.length > 0)) {
24
+ const r = runBoundaryCheck(inspection);
25
+ coverage = boundaryCheckCoverage(r);
26
+ for (const issue of r.loadIssues) {
27
+ findings.push({
28
+ category: 'boundary',
29
+ severity: 'error',
30
+ message: `Boundary rule ${boundaryLoadIssueLabel(issue)} did not load — NOT evaluated: ${issue.issues.join('; ')}`,
31
+ evidence: { file: issue.file, kind: issue.kind, ...(issue.ruleId ? { ruleId: issue.ruleId } : {}) },
32
+ });
33
+ }
34
+ for (const s of r.staleExceptions) {
35
+ findings.push({
36
+ category: 'boundary',
37
+ severity: 'error',
38
+ message: s.message,
39
+ evidence: { ruleId: s.ruleId, file: s.file },
40
+ });
41
+ }
42
+ for (const v of r.violations) {
24
43
  findings.push({
25
44
  category: 'boundary',
26
45
  severity: v.severity,
@@ -103,5 +122,16 @@ export function buildDriftReport(inspection, options = {}) {
103
122
  const counts = { error: 0, warning: 0, info: 0 };
104
123
  for (const f of findings)
105
124
  counts[f.severity] += 1;
106
- return { findings, counts };
125
+ // Settled with core's one fold: a boundary scope that was not fully examined
126
+ // turns a clean drift report into NOT VERIFIED (2), never "No drift".
127
+ const settled = settleVerdict(counts.error > 0 ? 1 : 0, coverage);
128
+ return {
129
+ findings,
130
+ counts,
131
+ coverage,
132
+ exitCode: settled.exit,
133
+ verdict: settled.verdict,
134
+ shortfalls: settled.shortfalls,
135
+ accepted: settled.accepted,
136
+ };
107
137
  }
@@ -1 +1 @@
1
- {"version":3,"file":"entrypoint-matrix.d.ts","sourceRoot":"","sources":["../src/entrypoint-matrix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;AAE1E,oBAAY,eAAe;IACzB,gBAAgB,sBAAsB;IACtC,QAAQ,cAAc;IACtB,WAAW,iBAAiB;IAC5B,mBAAmB,yBAAyB;CAC7C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,GAAG,eAAe,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,wBAAwB,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IACxD;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;QACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;CACJ;AAoJD,wBAAgB,qBAAqB,IAAI,uBAAuB,CAM/D;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,CA2BlF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,GACpE,MAAM,CAeR"}
1
+ {"version":3,"file":"entrypoint-matrix.d.ts","sourceRoot":"","sources":["../src/entrypoint-matrix.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;AAE1E,oBAAY,eAAe;IACzB,gBAAgB,sBAAsB;IACtC,QAAQ,cAAc;IACtB,WAAW,iBAAiB;IAC5B,mBAAmB,yBAAyB;CAC7C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,eAAe,GAAG,eAAe,CAAC;IACjE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,OAAO,wBAAwB,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IACxD;;;OAGG;IACH,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;QACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;CACJ;AAuJD,wBAAgB,qBAAqB,IAAI,uBAAuB,CAM/D;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,CA2BlF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,GACpE,MAAM,CAeR"}
@@ -91,7 +91,10 @@ const MATRIX_ENTRIES = [
91
91
  {
92
92
  id: 'why',
93
93
  class: EntrypointClass.DebugExplainability,
94
- callShape: 'shrk why <id> | shrk why-not <id>',
94
+ // The `shrk why <id>` / `shrk why-not <id>` ranker CLI was removed; the
95
+ // ranker explainers live behind these MCP tools (`shrk why` is now the
96
+ // per-FILE constraint explainer).
97
+ callShape: 'MCP get_ranker_explanation | get_ranker_why_not',
95
98
  whenToUse: 'Debug the ranker — why a registry entry was / was not surfaced for a task.',
96
99
  safety: 'read-only',
97
100
  docs: 'docs/why.md',
@@ -1,3 +1,5 @@
1
+ import { type IRejectedEntry } from '@shrkcrft/core';
2
+ import type { IContributionFileIssue } from './i-contribution-file-issue.js';
1
3
  export declare const FEEDBACK_INGESTION_SCHEMA = "sharkcraft.feedback-ingestion/v1";
2
4
  export declare enum FeedbackBucket {
3
5
  Good = "good",
@@ -80,17 +82,41 @@ export declare function ingestFeedbackFile(projectRoot: string, file: string, op
80
82
  * `sharkcraft/feedback-rules.ts` exporting an `IFeedbackRule[]` default.
81
83
  * Packs contribute via `feedbackRuleFiles[]` in their manifest.
82
84
  */
83
- export declare function loadFeedbackRules(inspection: {
85
+ export declare function loadFeedbackRules(inspection: IFeedbackRuleLoadScope): Promise<readonly IFeedbackRule[]>;
86
+ /** What {@link loadFeedbackRules} reads off an inspection (a structural subset, so a caller need not build one). */
87
+ type IFeedbackRuleLoadScope = {
84
88
  projectRoot: string;
85
89
  sharkcraftDir: string | null;
86
90
  packs?: {
87
91
  validPacks?: readonly {
88
92
  packageRoot: string;
93
+ packageName?: string;
89
94
  manifest?: {
90
95
  contributions?: unknown;
91
96
  } | null;
92
97
  }[];
93
98
  };
94
- }): Promise<readonly IFeedbackRule[]>;
99
+ };
100
+ /**
101
+ * THE feedback-rule acceptance predicate (round 12, 12.1): a non-empty string
102
+ * `id` — `[]` means accepted. An id-less rule used to be dropped with no signal.
103
+ */
104
+ export declare function feedbackRuleRejectionReasons(raw: unknown): readonly string[];
105
+ /**
106
+ * {@link loadFeedbackRules} WITH what did not take effect (round 12, 12.1): a
107
+ * rules file that failed to import (it was swallowed to `[]`), and every
108
+ * declared rule the loader refused — invalid, or a duplicate id.
109
+ */
110
+ export declare function loadFeedbackRulesWithIssues(inspection: IFeedbackRuleLoadScope): Promise<{
111
+ readonly rules: readonly IFeedbackRule[];
112
+ readonly entries: readonly {
113
+ readonly id: string;
114
+ readonly file: string;
115
+ readonly packageName?: string;
116
+ }[];
117
+ readonly issues: readonly IContributionFileIssue[];
118
+ readonly rejected: readonly IRejectedEntry[];
119
+ }>;
95
120
  export declare function renderFeedbackBacklog(report: IFeedbackReport): string;
121
+ export {};
96
122
  //# sourceMappingURL=feedback-ingestion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"feedback-ingestion.d.ts","sourceRoot":"","sources":["../src/feedback-ingestion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feedback-ingestion.d.ts","sourceRoot":"","sources":["../src/feedback-ingestion.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAyC,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAE7E,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,oBAAY,cAAc;IACxB,IAAI,SAAS;IACb,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,SAAS,eAAe;IACxB,KAAK,UAAU;CAChB;AAED,oBAAY,gBAAgB;IAC1B,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,uFAAuF;IACvF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,oCAAoC;IACpC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,yBAAyB,CAAC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACvC,QAAQ,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IAC1C,kBAAkB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC3C;AAUD;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,gCAAgC,CAAC;AAElE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,0BAA0B;IAC1B,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,kDAAkD;IAClD,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC;IAC/D,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IAC5B,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,4CAA4C;IAC5C,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,uEAAuE;IACvE,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAEnE;AAqMD,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,KAAK,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;CAClC;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAiDjB;AAED,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAIjB;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,sBAAsB,GAAG,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAE7G;AAED,oHAAoH;AACpH,KAAK,sBAAsB,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,SAAS;YACpB,WAAW,EAAE,MAAM,CAAC;YACpB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,QAAQ,CAAC,EAAE;gBAAE,aAAa,CAAC,EAAE,OAAO,CAAA;aAAE,GAAG,IAAI,CAAC;SAC/C,EAAE,CAAC;KACL,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAI5E;AAED;;;;GAIG;AACH,wBAAsB,2BAA2B,CAAC,UAAU,EAAE,sBAAsB,GAAG,OAAO,CAAC;IAC7F,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3G,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAC9C,CAAC,CAwDD;AAaD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAmCrE"}
@@ -14,7 +14,7 @@
14
14
  */
15
15
  import { existsSync, readFileSync } from 'node:fs';
16
16
  import * as nodePath from 'node:path';
17
- import { importModuleViaLoader } from '@shrkcrft/core';
17
+ import { importModuleViaLoader, RejectionCause } from '@shrkcrft/core';
18
18
  export const FEEDBACK_INGESTION_SCHEMA = 'sharkcraft.feedback-ingestion/v1';
19
19
  export var FeedbackBucket;
20
20
  (function (FeedbackBucket) {
@@ -141,7 +141,7 @@ const KEYWORD_RULES = [
141
141
  pattern: /\b(mcp|tool[s]?)\b/i,
142
142
  tags: ['mcp'],
143
143
  targetArea: 'mcp',
144
- suggestedCommands: ['shrk commands list --filter mcp'],
144
+ suggestedCommands: ['shrk commands search mcp'],
145
145
  },
146
146
  {
147
147
  pattern: /\b(helper[s]?)\b/i,
@@ -305,41 +305,90 @@ export function ingestFeedbackFile(projectRoot, file, options = {}) {
305
305
  * Packs contribute via `feedbackRuleFiles[]` in their manifest.
306
306
  */
307
307
  export async function loadFeedbackRules(inspection) {
308
+ return (await loadFeedbackRulesWithIssues(inspection)).rules;
309
+ }
310
+ /**
311
+ * THE feedback-rule acceptance predicate (round 12, 12.1): a non-empty string
312
+ * `id` — `[]` means accepted. An id-less rule used to be dropped with no signal.
313
+ */
314
+ export function feedbackRuleRejectionReasons(raw) {
315
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
316
+ return ['(entry): must be an object'];
317
+ const id = raw.id;
318
+ return typeof id === 'string' && id.length > 0 ? [] : ['id: must be a non-empty string'];
319
+ }
320
+ /**
321
+ * {@link loadFeedbackRules} WITH what did not take effect (round 12, 12.1): a
322
+ * rules file that failed to import (it was swallowed to `[]`), and every
323
+ * declared rule the loader refused — invalid, or a duplicate id.
324
+ */
325
+ export async function loadFeedbackRulesWithIssues(inspection) {
308
326
  const out = [];
309
- const seen = new Set();
310
- const add = (r) => {
311
- if (!r?.id || seen.has(r.id))
327
+ const entries = [];
328
+ const issues = [];
329
+ const rejected = [];
330
+ const seen = new Map();
331
+ const readInto = async (file, packageName) => {
332
+ const r = await importDefaultArray(file);
333
+ if (r.error !== undefined) {
334
+ const rel = nodePath.relative(inspection.projectRoot, file) || file;
335
+ issues.push({
336
+ severity: 'warning',
337
+ code: 'load-failed',
338
+ message: `${packageName ? `Pack ${packageName} (${rel})` : `Failed to load ${rel}`}: ${r.error}`,
339
+ source: file,
340
+ ...(packageName ? { packageName } : {}),
341
+ });
312
342
  return;
313
- seen.add(r.id);
314
- out.push(r);
343
+ }
344
+ r.items.forEach((item, index) => {
345
+ const reasons = feedbackRuleRejectionReasons(item);
346
+ if (reasons.length > 0) {
347
+ rejected.push({ file, index, exportName: 'default', reasons, cause: RejectionCause.Invalid });
348
+ return;
349
+ }
350
+ const rule = item;
351
+ const prev = seen.get(rule.id);
352
+ if (prev !== undefined) {
353
+ rejected.push({
354
+ file,
355
+ index,
356
+ exportName: 'default',
357
+ entryId: rule.id,
358
+ reasons: [`id: "${rule.id}" is already declared in ${prev}`],
359
+ cause: RejectionCause.DuplicateId,
360
+ });
361
+ return;
362
+ }
363
+ seen.set(rule.id, nodePath.relative(inspection.projectRoot, file) || file);
364
+ out.push(rule);
365
+ entries.push({ id: rule.id, file, ...(packageName ? { packageName } : {}) });
366
+ });
315
367
  };
316
368
  // Local file.
317
369
  if (inspection.sharkcraftDir) {
318
- const local = nodePath.join(inspection.sharkcraftDir, 'feedback-rules.ts');
319
- for (const r of await importDefaultArray(local))
320
- add(r);
370
+ await readInto(nodePath.join(inspection.sharkcraftDir, 'feedback-rules.ts'));
321
371
  }
322
372
  // Pack contributions.
323
373
  const packs = inspection.packs?.validPacks ?? [];
324
374
  for (const pack of packs) {
325
375
  const c = (pack.manifest?.contributions ?? {});
326
376
  for (const rel of c.feedbackRuleFiles ?? []) {
327
- const full = nodePath.resolve(pack.packageRoot, rel);
328
- for (const r of await importDefaultArray(full))
329
- add(r);
377
+ await readInto(nodePath.resolve(pack.packageRoot, rel), pack.packageName);
330
378
  }
331
379
  }
332
- return out;
380
+ return { rules: out, entries, issues, rejected };
333
381
  }
382
+ /** A rules file's default array; `error` (first line) when the import threw. A missing file is `[]`. */
334
383
  async function importDefaultArray(absPath) {
384
+ if (!existsSync(absPath))
385
+ return { items: [] };
335
386
  try {
336
- if (!existsSync(absPath))
337
- return [];
338
387
  const mod = (await importModuleViaLoader(absPath));
339
- return Array.isArray(mod.default) ? mod.default : [];
388
+ return { items: Array.isArray(mod.default) ? mod.default : [] };
340
389
  }
341
- catch {
342
- return [];
390
+ catch (e) {
391
+ return { items: [], error: (e.message ?? String(e)).split('\n')[0].trim() };
343
392
  }
344
393
  }
345
394
  export function renderFeedbackBacklog(report) {
@@ -1 +1 @@
1
- {"version":3,"file":"fix-preview.d.ts","sourceRoot":"","sources":["../src/fix-preview.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AAE9D,oBAAY,OAAO;IACjB,WAAW,iBAAiB;IAC5B,cAAc,oBAAoB;IAClC,aAAa,mBAAmB;IAChC,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,UAAU,gBAAgB;IAC1B,YAAY,kBAAkB;IAC9B,kBAAkB,yBAAyB;IAC3C,kBAAkB,yBAAyB;IAC3C,0BAA0B,iCAAiC;IAC3D,wBAAwB,+BAA+B;IACvD,uBAAuB,8BAA8B;IACrD,wBAAwB,gCAAgC;IACxD,0BAA0B,kCAAkC;IAC5D,qBAAqB,4BAA4B;CAClD;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,8DAA8D;IAC9D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,kBAAkB,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,SAAS;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClF,OAAO,EAAE,SAAS;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC9D;AAED,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,sBAAsB,CAAC,CAuCjC;AAoCD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAoFnB;AA4CD;;4CAE4C;AAC5C,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAkF5B;AAED,wBAAgB,YAAY,IAAI,SAAS;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,CAkBhF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CA+B1E"}
1
+ {"version":3,"file":"fix-preview.d.ts","sourceRoot":"","sources":["../src/fix-preview.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AAE9D,oBAAY,OAAO;IACjB,WAAW,iBAAiB;IAC5B,cAAc,oBAAoB;IAClC,aAAa,mBAAmB;IAChC,QAAQ,aAAa;IACrB,UAAU,eAAe;IACzB,UAAU,gBAAgB;IAC1B,YAAY,kBAAkB;IAC9B,kBAAkB,yBAAyB;IAC3C,kBAAkB,yBAAyB;IAC3C,0BAA0B,iCAAiC;IAC3D,wBAAwB,+BAA+B;IACvD,uBAAuB,8BAA8B;IACrD,wBAAwB,gCAAgC;IACxD,0BAA0B,kCAAkC;IAC5D,qBAAqB,4BAA4B;CAClD;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,8DAA8D;IAC9D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,UAAU,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oEAAoE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wEAAwE;IACxE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,kBAAkB,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1B,WAAW,EAAE,SAAS,qBAAqB,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,SAAS,OAAO,EAAE,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,SAAS;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClF,OAAO,EAAE,SAAS;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC9D;AAED,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,sBAAsB,CAAC,CAuCjC;AAoCD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAoFnB;AA4CD;;4CAE4C;AAC5C,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAsF5B;AAED,wBAAgB,YAAY,IAAI,SAAS;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,CAkBhF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CA+B1E"}
@@ -237,13 +237,14 @@ export async function buildFixPreviewExtended(inspection, options = {}) {
237
237
  const kinds = new Set(options.kinds ?? sync.kinds);
238
238
  const suggestions = [...sync.suggestions];
239
239
  if (kinds.has(FixKind.SelfConfig)) {
240
- const { buildSelfConfigDoctorReport } = await import("./self-config-doctor.js");
241
- const report = await buildSelfConfigDoctorReport(inspection);
240
+ // THE doctor (v2) — the same checks `shrk self-config doctor` runs.
241
+ const { buildSelfConfigDoctorReportV2 } = await import("./self-config-doctor-v2.js");
242
+ const report = await buildSelfConfigDoctorReportV2(inspection);
242
243
  for (const f of report.findings) {
243
244
  const severity = f.severity === 'error' ? 'error' : f.severity === 'warning' ? 'warning' : 'info';
244
245
  suggestions.push({
245
246
  kind: FixKind.SelfConfig,
246
- targetId: f.referencingId ?? f.referencedId ?? f.code,
247
+ targetId: f.sourceId || f.targetId || f.code,
247
248
  severity,
248
249
  title: `Self-config: ${f.code}`,
249
250
  description: f.message,
@@ -253,8 +254,11 @@ export async function buildFixPreviewExtended(inspection, options = {}) {
253
254
  }
254
255
  }
255
256
  if (kinds.has(FixKind.PackConflict) || kinds.has(FixKind.StalePackSignature)) {
256
- const { buildPackContributionsInventory } = await import("./pack-contributions-inventory.js");
257
- const inv = buildPackContributionsInventory(inspection);
257
+ // The async inventory: loader-backed extraction, so a conflict preview is
258
+ // built from the ids the registries really load (the sync regex scrape
259
+ // marks them unverified).
260
+ const { buildPackContributionsInventoryAsync } = await import("./pack-contributions-inventory.js");
261
+ const inv = await buildPackContributionsInventoryAsync(inspection);
258
262
  for (const c of inv.conflicts) {
259
263
  if (c.kind === 'stale-signature' && kinds.has(FixKind.StalePackSignature)) {
260
264
  suggestions.push({
@@ -0,0 +1,27 @@
1
+ import { type IRejectedEntry } from '@shrkcrft/core';
2
+ import type { IContributionFileIssue } from './i-contribution-file-issue.js';
3
+ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
4
+ /**
5
+ * Every pack `frameworkExtractorFiles` candidate, read through THE shared
6
+ * reading (`frameworkExtractorExports`) and shape predicate
7
+ * (`frameworkExtractorRejectionReasons`, both @shrkcrft/plugin-api) — the
8
+ * same two the runtime loader (`loadPackExtractors`, @shrkcrft/framework-
9
+ * scanners) applies. The inspector cannot import that loader (it sits above
10
+ * this layer via @shrkcrft/graph), so this is how framework extractors join
11
+ * THE rejection channel (round 12, 12.1).
12
+ *
13
+ * A candidate whose `framework` collides with a BUILT-IN extractor (nestjs,
14
+ * react, …) is refused only by the runtime loader, which alone knows the
15
+ * built-in registry; a collision between two contributed extractors is
16
+ * refused here too (the runtime keeps the first).
17
+ */
18
+ export declare function loadFrameworkExtractorOutcomes(inspection: ISharkcraftInspection): Promise<{
19
+ readonly accepted: readonly {
20
+ readonly id: string;
21
+ readonly file: string;
22
+ readonly packageName: string;
23
+ }[];
24
+ readonly rejected: readonly IRejectedEntry[];
25
+ readonly issues: readonly IContributionFileIssue[];
26
+ }>;
27
+ //# sourceMappingURL=framework-extractor-outcomes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"framework-extractor-outcomes.d.ts","sourceRoot":"","sources":["../src/framework-extractor-outcomes.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyC,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAE5F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAC7E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE;;;;;;;;;;;;;GAaG;AACH,wBAAsB,8BAA8B,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC;IAC/F,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3G,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACpD,CAAC,CA+DD"}
@@ -0,0 +1,83 @@
1
+ import { existsSync } from 'node:fs';
2
+ import * as nodePath from 'node:path';
3
+ import { importModuleViaLoader, RejectionCause } from '@shrkcrft/core';
4
+ import { frameworkExtractorExports, frameworkExtractorRejectionReasons } from '@shrkcrft/plugin-api';
5
+ /**
6
+ * Every pack `frameworkExtractorFiles` candidate, read through THE shared
7
+ * reading (`frameworkExtractorExports`) and shape predicate
8
+ * (`frameworkExtractorRejectionReasons`, both @shrkcrft/plugin-api) — the
9
+ * same two the runtime loader (`loadPackExtractors`, @shrkcrft/framework-
10
+ * scanners) applies. The inspector cannot import that loader (it sits above
11
+ * this layer via @shrkcrft/graph), so this is how framework extractors join
12
+ * THE rejection channel (round 12, 12.1).
13
+ *
14
+ * A candidate whose `framework` collides with a BUILT-IN extractor (nestjs,
15
+ * react, …) is refused only by the runtime loader, which alone knows the
16
+ * built-in registry; a collision between two contributed extractors is
17
+ * refused here too (the runtime keeps the first).
18
+ */
19
+ export async function loadFrameworkExtractorOutcomes(inspection) {
20
+ const accepted = [];
21
+ const rejected = [];
22
+ const issues = [];
23
+ const seen = new Map();
24
+ for (const pack of inspection.packs.validPacks ?? []) {
25
+ const files = pack.manifest?.contributions
26
+ ?.frameworkExtractorFiles;
27
+ for (const rel of files ?? []) {
28
+ const file = nodePath.resolve(pack.packageRoot, rel);
29
+ if (!existsSync(file)) {
30
+ issues.push({
31
+ severity: 'warning',
32
+ code: 'missing-file',
33
+ message: `Pack ${pack.packageName} declares ${rel} but the file is missing.`,
34
+ source: file,
35
+ packageName: pack.packageName,
36
+ });
37
+ continue;
38
+ }
39
+ let mod;
40
+ try {
41
+ mod = await importModuleViaLoader(file);
42
+ }
43
+ catch (e) {
44
+ issues.push({
45
+ severity: 'warning',
46
+ code: 'load-failed',
47
+ message: `Pack ${pack.packageName} (${rel}): ${(e.message ?? String(e)).split('\n')[0].trim()}`,
48
+ source: file,
49
+ packageName: pack.packageName,
50
+ });
51
+ continue;
52
+ }
53
+ for (const c of frameworkExtractorExports(mod)) {
54
+ const reasons = frameworkExtractorRejectionReasons(c.value);
55
+ const framework = c.value?.framework;
56
+ const at = { file, index: c.index, exportName: c.exportName };
57
+ if (reasons.length > 0) {
58
+ rejected.push({
59
+ ...at,
60
+ ...(typeof framework === 'string' ? { entryId: framework } : {}),
61
+ reasons,
62
+ cause: RejectionCause.Invalid,
63
+ });
64
+ continue;
65
+ }
66
+ const name = framework;
67
+ const prev = seen.get(name);
68
+ if (prev !== undefined) {
69
+ rejected.push({
70
+ ...at,
71
+ entryId: name,
72
+ reasons: [`framework: "${name}" is already registered by ${prev}`],
73
+ cause: RejectionCause.DuplicateId,
74
+ });
75
+ continue;
76
+ }
77
+ seen.set(name, `${pack.packageName} (${rel})`);
78
+ accepted.push({ id: name, file, packageName: pack.packageName });
79
+ }
80
+ }
81
+ }
82
+ return { accepted, rejected, issues };
83
+ }
@@ -379,7 +379,7 @@ function buildResolution(inspection, query, resolution, opts) {
379
379
  resolvedLabel: best.label,
380
380
  alternatives,
381
381
  shouldRunImpact: false,
382
- followUpCommands: [`shrk commands get ${best.id}`, `shrk ${best.id} --help`],
382
+ followUpCommands: [`shrk help ${best.id}`, `shrk ${best.id} --help`],
383
383
  diagnostics: [
384
384
  `"${best.id}" resolves to a CLI command, not a code construct. Use \`shrk impact <file>\` to analyse files this command would touch.`,
385
385
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"healing-plan.d.ts","sourceRoot":"","sources":["../src/healing-plan.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAGlC,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAEhE,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,mBAAmB,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAoQD,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAMzE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAcvE;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAqB3E;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,YAAY,CAQd;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAsB7D;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAiBjE"}
1
+ {"version":3,"file":"healing-plan.d.ts","sourceRoot":"","sources":["../src/healing-plan.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAGlC,eAAO,MAAM,mBAAmB,+BAA+B,CAAC;AAEhE,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,mBAAmB,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,mBAAmB,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAmQD,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAMzE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,CAcvE;AAED,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAqB3E;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,YAAY,CAQd;AAID,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAsB7D;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAiBjE"}
@@ -15,7 +15,7 @@ export var HealingInputKind;
15
15
  HealingInputKind["Report"] = "report";
16
16
  HealingInputKind["Command"] = "command";
17
17
  })(HealingInputKind || (HealingInputKind = {}));
18
- const GENERIC_NEXT = 'shrk diagnostics suggest "<paste error text here>"';
18
+ const GENERIC_NEXT = 'shrk recommend --from-error <stderr-file>';
19
19
  function inferFromKeywords(text) {
20
20
  const causes = [];
21
21
  const recover = [];
@@ -58,8 +58,7 @@ function inferFromKeywords(text) {
58
58
  if (lower.includes('migration') && (lower.includes('readiness') || lower.includes('blocker'))) {
59
59
  causes.push('Migration readiness gate reported a blocker.');
60
60
  recover.push('Resolve each blocker before re-running the gate.');
61
- cmds.push('shrk migration readiness --profile <id>');
62
- cmds.push('shrk migration profiles');
61
+ cmds.push('shrk migrate plan <id>');
63
62
  docs.push('docs/migration-readiness.md');
64
63
  }
65
64
  // Unknown command.
@@ -202,7 +201,7 @@ function buildPlan(ctx) {
202
201
  const safeRecoverySteps = [
203
202
  'Re-read the failing command output carefully (do not skip).',
204
203
  'Reproduce the failure locally before changing code.',
205
- 'If unsure, run `shrk doctor` and `shrk diagnostics suggest`.',
204
+ 'If unsure, run `shrk doctor` and `shrk recommend --from-error <stderr-file>`.',
206
205
  ];
207
206
  for (const r of inferred.recover)
208
207
  safeRecoverySteps.push(r);
@@ -0,0 +1,25 @@
1
+ import { type IRejectedEntry } from '@shrkcrft/core';
2
+ import type { IHelperView } from './helper-view.js';
3
+ import { type IPackHelperDoctorIssue } from './pack-helper-registry.js';
4
+ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
5
+ export interface IHelperCatalog {
6
+ /** Every helper, deduped by id: built-ins first, then local, then pack (loader order). */
7
+ readonly entries: readonly IHelperView[];
8
+ /** load-failed / missing-file / invalid-helper / duplicate-id / helper-warning issues. */
9
+ readonly issues: readonly IPackHelperDoctorIssue[];
10
+ /** Every helper FILE considered (local `helpers.ts` + pack `helperFiles[]`) and whether it loaded. */
11
+ readonly files: readonly {
12
+ readonly file: string;
13
+ readonly status: 'loaded' | 'failed' | 'missing';
14
+ }[];
15
+ /**
16
+ * Every declared helper that did not make the catalog (round 12, 12.1): the
17
+ * loader's refusals plus a contributed helper shadowed by a built-in id.
18
+ */
19
+ readonly rejected: readonly IRejectedEntry[];
20
+ }
21
+ /** Build the catalog. One pack-helper load per call (it returns entries AND issues). */
22
+ export declare function listAllHelpers(inspection: ISharkcraftInspection): Promise<IHelperCatalog>;
23
+ /** One helper by id, from the same catalog `helper list` prints. */
24
+ export declare function findHelper(inspection: ISharkcraftInspection, id: string): Promise<IHelperView | null>;
25
+ //# sourceMappingURL=helper-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper-catalog.d.ts","sourceRoot":"","sources":["../src/helper-catalog.ts"],"names":[],"mappings":"AAWA,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACzF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,WAAW,cAAc;IAC7B,0FAA0F;IAC1F,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,0FAA0F;IAC1F,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,sGAAsG;IACtG,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAA;KAAE,EAAE,CAAC;IACvG;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CAC9C;AAED,wFAAwF;AACxF,wBAAsB,cAAc,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsE/F;AAED,oEAAoE;AACpE,wBAAsB,UAAU,CAC9B,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAG7B"}