@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,12 @@
1
+ /** Why an entry landed in the `unverifiable` bucket. */
2
+ export declare enum KnowledgeUnverifiableReason {
3
+ /** It declares no `references[]` and no `anchors[]`. */
4
+ NoReferences = "no-references",
5
+ /**
6
+ * It declares some, but none can be checked: every one is a `url`, an
7
+ * unpinned symbol, a reference missing its required field, or an id whose
8
+ * registry is empty / was not loaded.
9
+ */
10
+ OnlyUnverifiableReferences = "only-unverifiable-references"
11
+ }
12
+ //# sourceMappingURL=knowledge-unverifiable-reason.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-unverifiable-reason.d.ts","sourceRoot":"","sources":["../src/knowledge-unverifiable-reason.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,oBAAY,2BAA2B;IACrC,wDAAwD;IACxD,YAAY,kBAAkB;IAC9B;;;;OAIG;IACH,0BAA0B,iCAAiC;CAC5D"}
@@ -0,0 +1,12 @@
1
+ /** Why an entry landed in the `unverifiable` bucket. */
2
+ export var KnowledgeUnverifiableReason;
3
+ (function (KnowledgeUnverifiableReason) {
4
+ /** It declares no `references[]` and no `anchors[]`. */
5
+ KnowledgeUnverifiableReason["NoReferences"] = "no-references";
6
+ /**
7
+ * It declares some, but none can be checked: every one is a `url`, an
8
+ * unpinned symbol, a reference missing its required field, or an id whose
9
+ * registry is empty / was not loaded.
10
+ */
11
+ KnowledgeUnverifiableReason["OnlyUnverifiableReferences"] = "only-unverifiable-references";
12
+ })(KnowledgeUnverifiableReason || (KnowledgeUnverifiableReason = {}));
@@ -1,3 +1,4 @@
1
+ import type { IRejectedEntry } from '@shrkcrft/core';
1
2
  import type { LoaderAssetKind, LoaderAssetStatus } from './inspector-cache.js';
2
3
  export type LoaderOrigin = 'local-config' | 'pack-manifest';
3
4
  export interface ILoaderDiagnostic {
@@ -6,9 +7,20 @@ export interface ILoaderDiagnostic {
6
7
  origin: LoaderOrigin;
7
8
  packName?: string;
8
9
  elapsedMs: number;
9
- status: LoaderAssetStatus | 'cached-skip';
10
- /** Number of items extracted (entries/templates/etc). */
10
+ /**
11
+ * `missing` — a file the local config DECLARES (e.g. `knowledgeFiles`) does
12
+ * not exist, so nothing was loaded from it. Recorded so a corpus check can
13
+ * refuse to pass over a source it was told about and never read.
14
+ */
15
+ status: LoaderAssetStatus | 'cached-skip' | 'missing';
16
+ /** Number of items extracted (entries/templates/etc) — the loader's ACCEPTED count. */
11
17
  count: number;
18
+ /**
19
+ * Entries the file declared that the loader refused (round 12, 12.1), so
20
+ * `count + rejected.length === declared`. Absent when none were refused.
21
+ * Lifted into THE rejection channel by `collectContributionRejections`.
22
+ */
23
+ rejected?: readonly IRejectedEntry[];
12
24
  warningCount: number;
13
25
  errorMessage?: string;
14
26
  /** When status === 'cached-skip', this is the cached pre-existing status. */
@@ -1 +1 @@
1
- {"version":3,"file":"loader-diagnostics.d.ts","sourceRoot":"","sources":["../src/loader-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,iBAAiB,GAAG,aAAa,CAAC;IAC1C,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,wDAAwD;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,IAAI,EAAE,OAAO,CAAC;IACd,yDAAyD;IACzD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,gCAAgC,OAAO,CAAC;AACrD,eAAO,MAAM,0BAA0B,QAAa,CAAC;AAErD,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAQvE;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,GAAG;IACrF,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CA2BA"}
1
+ {"version":3,"file":"loader-diagnostics.d.ts","sourceRoot":"","sources":["../src/loader-diagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE/E,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC;AAE5D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,MAAM,EAAE,iBAAiB,GAAG,aAAa,GAAG,SAAS,CAAC;IACtD,uFAAuF;IACvF,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IACrC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,iBAAiB,CAAC;IACjC,wDAAwD;IACxD,OAAO,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,SAAS,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,IAAI,EAAE,OAAO,CAAC;IACd,yDAAyD;IACzD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,gCAAgC,OAAO,CAAC;AACrD,eAAO,MAAM,0BAA0B,QAAa,CAAC;AAErD,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAQvE;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,SAAS,iBAAiB,EAAE,GAAG;IACrF,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CA2BA"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * THE term matcher — the one answer to "does this trigger word appear in this
3
+ * task?" for routing hints, playbooks, the recommender's built-in recipes, the
4
+ * change-intent domain keywords and the ranker's distinct-term evidence.
5
+ *
6
+ * Every one of those used raw `task.toLowerCase().includes(needle)`, so a
7
+ * two-letter keyword fired inside unrelated words (`ci` in `pricing`, `pr` in
8
+ * `pricing`, `gate` in `investigate`, `pack` in `package`) and a hyphenated
9
+ * tag could never match the same words typed with spaces (`capability-pack`
10
+ * vs "capability pack").
11
+ *
12
+ * Terms come from THE identifier tokenizer (`split-identifier.ts`) over the
13
+ * LOWERCASED text — so camelCase splitting is inert and both sides split the
14
+ * same way on hyphens, underscores, whitespace and punctuation. Never write a
15
+ * second tokenizer.
16
+ */
17
+ import { TermMatchMode } from '@shrkcrft/plugin-api';
18
+ import type { ITermQuery } from './term-query.js';
19
+ /** Function words dropped by {@link contentTerms}. Small and fixed on purpose. */
20
+ export declare const TERM_STOPWORDS: ReadonlySet<string>;
21
+ /** Lowercase, then split with THE identifier tokenizer. Order and duplicates are kept. */
22
+ export declare function normaliseTerms(text: string): string[];
23
+ /** {@link normaliseTerms} minus {@link TERM_STOPWORDS}, distinct, first-seen order. */
24
+ export declare function contentTerms(text: string): string[];
25
+ /** Prepare a task once for any number of {@link matchTerm} calls. */
26
+ export declare function prepareTermQuery(text: string): ITermQuery;
27
+ /** Two terms agree when equal, or one plain inflection apart (either direction). */
28
+ export declare function termsAgree(a: string, b: string): boolean;
29
+ /**
30
+ * Does `needle` occur in the query?
31
+ *
32
+ * - {@link TermMatchMode.Tokens} (default): the needle's terms must appear
33
+ * contiguously in the query's terms, each agreeing ({@link termsAgree}). A
34
+ * needle with no terms (empty, or punctuation only) never matches.
35
+ * - {@link TermMatchMode.Substring}: the legacy `lower.includes(needle)`,
36
+ * reproduced exactly (an empty needle matches everything — the routing-hint
37
+ * load lint errors on it).
38
+ */
39
+ export declare function matchTerm(query: ITermQuery, needle: string, mode?: TermMatchMode | `${TermMatchMode}`): boolean;
40
+ /**
41
+ * The DISTINCT `queryTerms` that agree with some term of `corpus` — the
42
+ * evidence count "how many different words of the task does this item
43
+ * mention?". Repeats inside the corpus never count twice.
44
+ */
45
+ export declare function matchedQueryTerms(queryTerms: readonly string[], corpus: readonly (string | undefined)[]): string[];
46
+ /** Jaccard similarity of two term lists, as sets (0 when both are empty). */
47
+ export declare function termJaccard(a: readonly string[], b: readonly string[]): number;
48
+ //# sourceMappingURL=match-terms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match-terms.d.ts","sourceRoot":"","sources":["../src/match-terms.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,kFAAkF;AAClF,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,MAAM,CAmB7C,CAAC;AAgBH,0FAA0F;AAC1F,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAErD;AAED,uFAAuF;AACvF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CASnD;AAED,qEAAqE;AACrE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAEzD;AAaD,oFAAoF;AACpF,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CACvB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,aAAa,GAAG,GAAG,aAAa,EAAyB,GAC9D,OAAO,CAeT;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GACtC,MAAM,EAAE,CAcV;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAO9E"}
@@ -0,0 +1,155 @@
1
+ /**
2
+ * THE term matcher — the one answer to "does this trigger word appear in this
3
+ * task?" for routing hints, playbooks, the recommender's built-in recipes, the
4
+ * change-intent domain keywords and the ranker's distinct-term evidence.
5
+ *
6
+ * Every one of those used raw `task.toLowerCase().includes(needle)`, so a
7
+ * two-letter keyword fired inside unrelated words (`ci` in `pricing`, `pr` in
8
+ * `pricing`, `gate` in `investigate`, `pack` in `package`) and a hyphenated
9
+ * tag could never match the same words typed with spaces (`capability-pack`
10
+ * vs "capability pack").
11
+ *
12
+ * Terms come from THE identifier tokenizer (`split-identifier.ts`) over the
13
+ * LOWERCASED text — so camelCase splitting is inert and both sides split the
14
+ * same way on hyphens, underscores, whitespace and punctuation. Never write a
15
+ * second tokenizer.
16
+ */
17
+ import { TermMatchMode } from '@shrkcrft/plugin-api';
18
+ import { splitIdentifierTokens } from "./split-identifier.js";
19
+ /** Function words dropped by {@link contentTerms}. Small and fixed on purpose. */
20
+ export const TERM_STOPWORDS = new Set([
21
+ 'a',
22
+ 'an',
23
+ 'the',
24
+ 'to',
25
+ 'for',
26
+ 'of',
27
+ 'in',
28
+ 'on',
29
+ 'and',
30
+ 'or',
31
+ 'with',
32
+ 'my',
33
+ 'our',
34
+ 'please',
35
+ 'i',
36
+ 'we',
37
+ 'it',
38
+ 'is',
39
+ ]);
40
+ /**
41
+ * Plain inflections one term may differ by. Agent-noun suffixes (`er`, `ers`)
42
+ * are deliberately absent: `block` → `blocker`, `build` → `builder` change the
43
+ * meaning, and `block` firing on "the blocker in billing" was one of the
44
+ * reproduced false positives.
45
+ */
46
+ const INFLECTION_SUFFIXES = ['s', 'es', 'ed', 'ing'];
47
+ /** A term shorter than this matches only itself — `ci`, `pr`, `go` never inflect. */
48
+ const MIN_INFLECTABLE_LENGTH = 3;
49
+ /** Final consonants that double before `-ing` / `-ed` (`plan` → `planning`). */
50
+ const DOUBLING_CONSONANT = /[bdgklmnprtz]$/;
51
+ /** Lowercase, then split with THE identifier tokenizer. Order and duplicates are kept. */
52
+ export function normaliseTerms(text) {
53
+ return splitIdentifierTokens(text.toLowerCase());
54
+ }
55
+ /** {@link normaliseTerms} minus {@link TERM_STOPWORDS}, distinct, first-seen order. */
56
+ export function contentTerms(text) {
57
+ const out = [];
58
+ const seen = new Set();
59
+ for (const t of normaliseTerms(text)) {
60
+ if (TERM_STOPWORDS.has(t) || seen.has(t))
61
+ continue;
62
+ seen.add(t);
63
+ out.push(t);
64
+ }
65
+ return out;
66
+ }
67
+ /** Prepare a task once for any number of {@link matchTerm} calls. */
68
+ export function prepareTermQuery(text) {
69
+ return { lower: text.toLowerCase(), terms: normaliseTerms(text) };
70
+ }
71
+ function inflects(base, word) {
72
+ if (base.length < MIN_INFLECTABLE_LENGTH || word.length <= base.length)
73
+ return false;
74
+ for (const suffix of INFLECTION_SUFFIXES)
75
+ if (word === base + suffix)
76
+ return true;
77
+ const last = base[base.length - 1];
78
+ const stem = base.slice(0, -1);
79
+ if (last === 'e' && (word === `${base}d` || word === `${stem}ing`))
80
+ return true;
81
+ if (last === 'y' && (word === `${stem}ies` || word === `${stem}ied`))
82
+ return true;
83
+ if (DOUBLING_CONSONANT.test(base) && (word === `${base}${last}ing` || word === `${base}${last}ed`))
84
+ return true;
85
+ return false;
86
+ }
87
+ /** Two terms agree when equal, or one plain inflection apart (either direction). */
88
+ export function termsAgree(a, b) {
89
+ return a === b || inflects(a, b) || inflects(b, a);
90
+ }
91
+ /**
92
+ * Does `needle` occur in the query?
93
+ *
94
+ * - {@link TermMatchMode.Tokens} (default): the needle's terms must appear
95
+ * contiguously in the query's terms, each agreeing ({@link termsAgree}). A
96
+ * needle with no terms (empty, or punctuation only) never matches.
97
+ * - {@link TermMatchMode.Substring}: the legacy `lower.includes(needle)`,
98
+ * reproduced exactly (an empty needle matches everything — the routing-hint
99
+ * load lint errors on it).
100
+ */
101
+ export function matchTerm(query, needle, mode = TermMatchMode.Tokens) {
102
+ if (mode === TermMatchMode.Substring)
103
+ return query.lower.includes(needle.toLowerCase());
104
+ const seq = normaliseTerms(needle);
105
+ if (seq.length === 0 || seq.length > query.terms.length)
106
+ return false;
107
+ for (let i = 0; i + seq.length <= query.terms.length; i++) {
108
+ let all = true;
109
+ for (let j = 0; j < seq.length; j++) {
110
+ if (!termsAgree(seq[j], query.terms[i + j])) {
111
+ all = false;
112
+ break;
113
+ }
114
+ }
115
+ if (all)
116
+ return true;
117
+ }
118
+ return false;
119
+ }
120
+ /**
121
+ * The DISTINCT `queryTerms` that agree with some term of `corpus` — the
122
+ * evidence count "how many different words of the task does this item
123
+ * mention?". Repeats inside the corpus never count twice.
124
+ */
125
+ export function matchedQueryTerms(queryTerms, corpus) {
126
+ const corpusTerms = new Set();
127
+ for (const c of corpus)
128
+ if (c)
129
+ for (const t of normaliseTerms(c))
130
+ corpusTerms.add(t);
131
+ const out = [];
132
+ for (const q of queryTerms) {
133
+ if (out.includes(q))
134
+ continue;
135
+ for (const t of corpusTerms) {
136
+ if (termsAgree(q, t)) {
137
+ out.push(q);
138
+ break;
139
+ }
140
+ }
141
+ }
142
+ return out;
143
+ }
144
+ /** Jaccard similarity of two term lists, as sets (0 when both are empty). */
145
+ export function termJaccard(a, b) {
146
+ const sa = new Set(a);
147
+ const sb = new Set(b);
148
+ if (sa.size === 0 && sb.size === 0)
149
+ return 0;
150
+ let inter = 0;
151
+ for (const t of sa)
152
+ if (sb.has(t))
153
+ inter += 1;
154
+ return inter / (sa.size + sb.size - inter);
155
+ }
@@ -1,5 +1,6 @@
1
1
  import { type IMigrationProfile } from './migration-readiness.js';
2
2
  import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
3
+ import { type IRejectedEntry } from '@shrkcrft/core';
3
4
  export declare const MIGRATION_PROFILE_REGISTRY_SCHEMA = "sharkcraft.migration-profile-registry/v1";
4
5
  export declare enum MigrationProfileSource {
5
6
  Local = "local",
@@ -18,9 +19,18 @@ export interface IMigrationProfileRegistryIssue {
18
19
  readonly profileId?: string;
19
20
  readonly source?: string;
20
21
  }
22
+ /**
23
+ * THE migration-profile acceptance predicate (round 12, 12.1): one
24
+ * `<field>: <message>` per failing field — `[]` means accepted. A refused
25
+ * profile used to read `Invalid migration profile at <file>; skipped.`
26
+ * with no id and no field.
27
+ */
28
+ export declare function migrationProfileRejectionReasons(raw: unknown): readonly string[];
21
29
  export declare function loadMigrationProfiles(inspection: ISharkcraftInspection): Promise<{
22
30
  entries: readonly IMigrationProfileEntry[];
23
31
  issues: readonly IMigrationProfileRegistryIssue[];
32
+ /** Every declared profile the loader refused — invalid or a duplicate id (round 12, 12.1). */
33
+ rejected: readonly IRejectedEntry[];
24
34
  }>;
25
35
  export declare function listMigrationProfilesFromPacks(inspection: ISharkcraftInspection): Promise<readonly IMigrationProfile[]>;
26
36
  //# sourceMappingURL=migration-profile-registry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"migration-profile-registry.d.ts","sourceRoot":"","sources":["../src/migration-profile-registry.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,eAAO,MAAM,iCAAiC,6CAA6C,CAAC;AAE5F,oBAAY,sBAAsB;IAChC,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAkCD,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC;IACT,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC3C,MAAM,EAAE,SAAS,8BAA8B,EAAE,CAAC;CACnD,CAAC,CAkFD;AAED,wBAAsB,8BAA8B,CAClD,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAGvC"}
1
+ {"version":3,"file":"migration-profile-registry.d.ts","sourceRoot":"","sources":["../src/migration-profile-registry.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,iCAAiC,6CAA6C,CAAC;AAE5F,oBAAY,sBAAsB;IAChC,KAAK,UAAU;IACf,IAAI,SAAS;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAoBD;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,MAAM,EAAE,CAQhF;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC;IACT,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC3C,MAAM,EAAE,SAAS,8BAA8B,EAAE,CAAC;IAClD,8FAA8F;IAC9F,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;CACrC,CAAC,CA+GD;AAED,wBAAsB,8BAA8B,CAClD,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC,CAGvC"}
@@ -4,22 +4,15 @@
4
4
  */
5
5
  import { existsSync } from 'node:fs';
6
6
  import * as nodePath from 'node:path';
7
- import { importModuleViaLoader } from '@shrkcrft/core';
7
+ import { importModuleViaLoader, readContributionExport, RejectionCause, } from '@shrkcrft/core';
8
8
  export const MIGRATION_PROFILE_REGISTRY_SCHEMA = 'sharkcraft.migration-profile-registry/v1';
9
9
  export var MigrationProfileSource;
10
10
  (function (MigrationProfileSource) {
11
11
  MigrationProfileSource["Local"] = "local";
12
12
  MigrationProfileSource["Pack"] = "pack";
13
13
  })(MigrationProfileSource || (MigrationProfileSource = {}));
14
- async function importDefault(file) {
15
- const mod = (await importModuleViaLoader(file));
16
- if (Array.isArray(mod.default))
17
- return mod.default;
18
- if (mod.default && typeof mod.default === 'object')
19
- return [mod.default];
20
- if (Array.isArray(mod.migrationProfiles))
21
- return mod.migrationProfiles;
22
- return [];
14
+ async function importProfiles(file) {
15
+ return readContributionExport(await importModuleViaLoader(file), { namedKeys: ['migrationProfiles'] });
23
16
  }
24
17
  function localFiles(inspection) {
25
18
  const out = [];
@@ -31,56 +24,88 @@ function localFiles(inspection) {
31
24
  if (existsSync(full))
32
25
  out.push(full);
33
26
  }
34
- const cfg = inspection.config;
35
- for (const rel of cfg?.migrationProfileFiles ?? []) {
36
- out.push(nodePath.isAbsolute(rel) ? rel : nodePath.join(dir, rel));
37
- }
27
+ // More profile files come from pack manifests (`migrationProfileFiles`,
28
+ // loaded below) — there is no local-config key for them; the strict config
29
+ // schema rejects one, so a local read here could never be reached.
38
30
  return out;
39
31
  }
40
- function looksValid(raw) {
41
- if (!raw || typeof raw !== 'object')
42
- return false;
32
+ /**
33
+ * THE migration-profile acceptance predicate (round 12, 12.1): one
34
+ * `<field>: <message>` per failing field — `[]` means accepted. A refused
35
+ * profile used to read `Invalid migration profile at <file>; skipped.`
36
+ * with no id and no field.
37
+ */
38
+ export function migrationProfileRejectionReasons(raw) {
39
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
40
+ return ['(entry): must be an object'];
43
41
  const o = raw;
44
- return typeof o.id === 'string' && typeof o.title === 'string' && Array.isArray(o.checks);
42
+ const out = [];
43
+ if (typeof o.id !== 'string')
44
+ out.push('id: must be a string');
45
+ if (typeof o.title !== 'string')
46
+ out.push('title: must be a string');
47
+ if (!Array.isArray(o.checks))
48
+ out.push('checks: must be an array');
49
+ return out;
45
50
  }
46
51
  export async function loadMigrationProfiles(inspection) {
47
52
  const entries = [];
48
53
  const issues = [];
49
- const seen = new Set();
50
- const ingest = (raw, source, packageName, sourceFile) => {
51
- if (!looksValid(raw)) {
54
+ const rejected = [];
55
+ const seen = new Map();
56
+ const ingest = (raw, source, packageName, sourceFile, at) => {
57
+ const rawId = raw && typeof raw === 'object' ? raw.id : undefined;
58
+ const id = typeof rawId === 'string' ? rawId : undefined;
59
+ const reasons = migrationProfileRejectionReasons(raw);
60
+ if (reasons.length > 0) {
52
61
  issues.push({
53
62
  severity: 'warning',
54
63
  code: 'invalid-profile',
55
- message: `Invalid migration profile at ${sourceFile}; skipped.`,
64
+ message: `Invalid migration profile${id ? ` "${id}"` : ''} at ${sourceFile} (${at.exportName ?? 'default'}[${at.index}]); skipped — ${reasons.join('; ')}.`,
65
+ ...(id ? { profileId: id } : {}),
56
66
  source: sourceFile,
57
67
  });
68
+ rejected.push({ ...at, ...(id ? { entryId: id } : {}), reasons, cause: RejectionCause.Invalid });
58
69
  return;
59
70
  }
60
- if (seen.has(raw.id)) {
71
+ const profile = raw;
72
+ const prev = seen.get(profile.id);
73
+ if (prev !== undefined) {
61
74
  issues.push({
62
75
  severity: 'error',
63
76
  code: 'duplicate-id',
64
- message: `Migration profile id "${raw.id}" already loaded; skipping ${sourceFile}.`,
65
- profileId: raw.id,
77
+ message: `Migration profile id "${profile.id}" already loaded; skipping ${sourceFile}.`,
78
+ profileId: profile.id,
66
79
  source: sourceFile,
67
80
  });
81
+ rejected.push({
82
+ ...at,
83
+ entryId: profile.id,
84
+ reasons: [`id: "${profile.id}" is already declared in ${prev}`],
85
+ cause: RejectionCause.DuplicateId,
86
+ });
68
87
  return;
69
88
  }
70
- seen.add(raw.id);
89
+ seen.set(profile.id, sourceFile);
71
90
  entries.push({
72
- profile: raw,
91
+ profile,
73
92
  source,
74
93
  ...(packageName ? { packageName } : {}),
75
94
  sourceFile,
76
95
  });
77
96
  };
97
+ const ingestAll = (exp, file, source, packageName, sourceFile) => {
98
+ exp.items.forEach((raw, i) => ingest(raw, source, packageName, sourceFile, {
99
+ file,
100
+ index: exp.single ? -1 : i,
101
+ ...(exp.exportName ? { exportName: exp.exportName } : {}),
102
+ }));
103
+ };
78
104
  for (const file of localFiles(inspection)) {
79
105
  try {
80
- const list = await importDefault(file);
106
+ const exp = await importProfiles(file);
81
107
  const rel = nodePath.relative(inspection.projectRoot, file) || file;
82
- for (const raw of list)
83
- ingest(raw, MigrationProfileSource.Local, undefined, rel);
108
+ ingestAll(exp, file, MigrationProfileSource.Local, undefined, rel);
84
109
  }
85
110
  catch (e) {
86
111
  issues.push({
@@ -105,9 +130,7 @@ export async function loadMigrationProfiles(inspection) {
105
130
  continue;
106
131
  }
107
132
  try {
108
- const list = await importDefault(file);
109
- for (const raw of list)
110
- ingest(raw, MigrationProfileSource.Pack, pack.packageName, rel);
133
+ ingestAll(await importProfiles(file), file, MigrationProfileSource.Pack, pack.packageName, rel);
111
134
  }
112
135
  catch (e) {
113
136
  issues.push({
@@ -119,7 +142,7 @@ export async function loadMigrationProfiles(inspection) {
119
142
  }
120
143
  }
121
144
  }
122
- return { entries, issues };
145
+ return { entries, issues, rejected };
123
146
  }
124
147
  export async function listMigrationProfilesFromPacks(inspection) {
125
148
  const { entries } = await loadMigrationProfiles(inspection);
@@ -1 +1 @@
1
- {"version":3,"file":"migration-readiness.d.ts","sourceRoot":"","sources":["../src/migration-readiness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"migration-readiness.d.ts","sourceRoot":"","sources":["../src/migration-readiness.ts"],"names":[],"mappings":"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"}
@@ -159,9 +159,7 @@ export function buildMigrationReadiness(options) {
159
159
  `Profile: ${profile.title} (${profile.id})`,
160
160
  `Verdict: ${verdict}`,
161
161
  `Passed: ${passed.length}, Warnings: ${warnings.length}, Blockers: ${blockers.length}`,
162
- 'Next: review blockers (if any), then re-run `shrk migration readiness --profile ' +
163
- profile.id +
164
- '`.',
162
+ `Next: review blockers (if any), then re-run the readiness check for ${profile.id}.`,
165
163
  ];
166
164
  return {
167
165
  schema: 'sharkcraft.migration-readiness/v1',
@@ -1,30 +1,14 @@
1
1
  /**
2
- * Nearest-id "did you mean" over an arbitrary id set.
2
+ * Nearest-id "did you mean" over an arbitrary id set — `levenshtein` (THE edit
3
+ * distance) and `nearestIds` (the length-scaled, affinity-aware cutoff).
3
4
  *
4
- * The command suggester already had a Levenshtein and a fuzzy ranker, but both
5
- * were shaped around a command CATALOG (command paths, aliases, descriptions).
6
- * A stale `nge.angular-renderer` in a doc needs the same help against a flat
7
- * list of template ids, so the distance function moves here and both consume
8
- * it — a second implementation would drift, and then two surfaces would
9
- * disagree about what "close" means.
10
- *
11
- * A suggestion is only offered when it is actually close. Printing the
12
- * alphabetically-first id next to every typo trains people to ignore the line.
13
- */
14
- /** Levenshtein edit distance. Iterative, one row of state. */
15
- export declare function levenshtein(a: string, b: string): number;
16
- /** One candidate the query might have meant. */
17
- export interface INearestId {
18
- readonly id: string;
19
- readonly distance: number;
20
- }
21
- /**
22
- * The closest ids to `query`, nearest first.
23
- *
24
- * The cutoff scales with the query's length — one edit is a lot in `foo` and
25
- * very little in `nge.angular-renderer` — and is capped so a long id cannot
26
- * drag in something unrelated. Ties break lexically so the output is stable
27
- * across runs, which matters when it lands in a committed diff.
5
+ * Round 13: both moved to `@shrkcrft/core` so the lowest layer — the
6
+ * `expectEmpty` marker parser (`normalizeUnitList`) — can offer a did-you-mean
7
+ * for a misspelled marker key without importing upward. This module re-exports
8
+ * them unchanged, so every existing `@shrkcrft/inspector` import keeps working
9
+ * and there is still ONE scorer: the CLI's `editDistance` IS this `levenshtein`
10
+ * (r75-did-you-mean-one-scorer), and a second implementation would drift.
28
11
  */
29
- export declare function nearestIds(query: string, candidates: readonly string[], limit?: number): readonly INearestId[];
12
+ export { levenshtein, nearestIds } from '@shrkcrft/core';
13
+ export type { INearestId } from '@shrkcrft/core';
30
14
  //# sourceMappingURL=nearest-id.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"nearest-id.d.ts","sourceRoot":"","sources":["../src/nearest-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,8DAA8D;AAC9D,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAiBxD;AAED,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,SAAS,MAAM,EAAE,EAC7B,KAAK,SAAI,GACR,SAAS,UAAU,EAAE,CAiBvB"}
1
+ {"version":3,"file":"nearest-id.d.ts","sourceRoot":"","sources":["../src/nearest-id.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACzD,YAAY,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,62 +1,12 @@
1
1
  /**
2
- * Nearest-id "did you mean" over an arbitrary id set.
2
+ * Nearest-id "did you mean" over an arbitrary id set — `levenshtein` (THE edit
3
+ * distance) and `nearestIds` (the length-scaled, affinity-aware cutoff).
3
4
  *
4
- * The command suggester already had a Levenshtein and a fuzzy ranker, but both
5
- * were shaped around a command CATALOG (command paths, aliases, descriptions).
6
- * A stale `nge.angular-renderer` in a doc needs the same help against a flat
7
- * list of template ids, so the distance function moves here and both consume
8
- * it — a second implementation would drift, and then two surfaces would
9
- * disagree about what "close" means.
10
- *
11
- * A suggestion is only offered when it is actually close. Printing the
12
- * alphabetically-first id next to every typo trains people to ignore the line.
13
- */
14
- /** Levenshtein edit distance. Iterative, one row of state. */
15
- export function levenshtein(a, b) {
16
- const m = a.length;
17
- const n = b.length;
18
- if (m === 0)
19
- return n;
20
- if (n === 0)
21
- return m;
22
- const dp = Array.from({ length: n + 1 }, (_, j) => j);
23
- for (let i = 1; i <= m; i += 1) {
24
- let prev = dp[0];
25
- dp[0] = i;
26
- for (let j = 1; j <= n; j += 1) {
27
- const tmp = dp[j];
28
- const cost = a[i - 1] === b[j - 1] ? 0 : 1;
29
- dp[j] = Math.min(dp[j] + 1, dp[j - 1] + 1, prev + cost);
30
- prev = tmp;
31
- }
32
- }
33
- return dp[n];
34
- }
35
- /**
36
- * The closest ids to `query`, nearest first.
37
- *
38
- * The cutoff scales with the query's length — one edit is a lot in `foo` and
39
- * very little in `nge.angular-renderer` — and is capped so a long id cannot
40
- * drag in something unrelated. Ties break lexically so the output is stable
41
- * across runs, which matters when it lands in a committed diff.
5
+ * Round 13: both moved to `@shrkcrft/core` so the lowest layer — the
6
+ * `expectEmpty` marker parser (`normalizeUnitList`) — can offer a did-you-mean
7
+ * for a misspelled marker key without importing upward. This module re-exports
8
+ * them unchanged, so every existing `@shrkcrft/inspector` import keeps working
9
+ * and there is still ONE scorer: the CLI's `editDistance` IS this `levenshtein`
10
+ * (r75-did-you-mean-one-scorer), and a second implementation would drift.
42
11
  */
43
- export function nearestIds(query, candidates, limit = 3) {
44
- const q = query.toLowerCase();
45
- const cutoff = Math.min(6, Math.max(2, Math.floor(q.length * 0.4)));
46
- const scored = [];
47
- for (const candidate of candidates) {
48
- const c = candidate.toLowerCase();
49
- if (c === q)
50
- continue;
51
- // A shared prefix or suffix is the common real-world shape (`nge.foo-view`
52
- // vs `nge.foo-viewer`), and raw edit distance under-rates it.
53
- const affinity = c.startsWith(q) || q.startsWith(c) || c.includes(q) || q.includes(c) ? 0 : 1;
54
- const distance = affinity === 0 ? 0 : levenshtein(q, c);
55
- if (distance > cutoff)
56
- continue;
57
- scored.push({ id: candidate, distance });
58
- }
59
- return scored
60
- .sort((x, y) => x.distance - y.distance || x.id.localeCompare(y.id))
61
- .slice(0, limit);
62
- }
12
+ export { levenshtein, nearestIds } from '@shrkcrft/core';