@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,29 @@
1
+ /**
2
+ * THE tokenizer for search-tuning TRIGGERS — the `tokens` a query/task yields
3
+ * for `tuningBoostFor`, which a `taskHints[].whenTokens` entry must appear in.
4
+ *
5
+ * Five call sites used to tokenize for the same matcher five ways:
6
+ *
7
+ * - `shrk search` and `search tuning explain`: split on whitespace and
8
+ * `, . ; : /` — keeps `changed-only`, `c#`, `foo_bar` whole;
9
+ * - the task ranker and the context re-ranker: split on `[^a-z0-9]` —
10
+ * `changed-only` became `changed`, `only`;
11
+ * - ranker explain: `[^a-z0-9]` AND dropped tokens shorter than 3 — `go`,
12
+ * `pr`, `ci` vanished.
13
+ *
14
+ * So a hyphenated trigger fired in `shrk search` and never in `shrk task` /
15
+ * `shrk context`, and `shrk why` reported a tuning trace the rankers did not
16
+ * apply. This returns the UNION: each whitespace/punctuation token whole, plus
17
+ * its alphanumeric pieces (from THE identifier splitter), dropping tokens
18
+ * shorter than 2. It is a superset of every former variant, so no trigger that
19
+ * fired anywhere stops firing; one that fired in only one ranker now fires in
20
+ * all of them. Order is first-seen; duplicates are dropped.
21
+ */
22
+ export declare function tuningQueryTokens(text: string): string[];
23
+ /**
24
+ * Can a query ever produce `whenToken`? A trigger with whitespace, a separator
25
+ * (`, . ; : /`) or fewer than 2 characters never appears in
26
+ * {@link tuningQueryTokens}' output, so its task hint can never apply.
27
+ */
28
+ export declare function isReachableTuningTrigger(whenToken: string): boolean;
29
+ //# sourceMappingURL=tuning-query-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tuning-query-tokens.d.ts","sourceRoot":"","sources":["../src/tuning-query-tokens.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBxD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAGnE"}
@@ -0,0 +1,51 @@
1
+ import { splitIdentifierTokens } from "./split-identifier.js";
2
+ /**
3
+ * THE tokenizer for search-tuning TRIGGERS — the `tokens` a query/task yields
4
+ * for `tuningBoostFor`, which a `taskHints[].whenTokens` entry must appear in.
5
+ *
6
+ * Five call sites used to tokenize for the same matcher five ways:
7
+ *
8
+ * - `shrk search` and `search tuning explain`: split on whitespace and
9
+ * `, . ; : /` — keeps `changed-only`, `c#`, `foo_bar` whole;
10
+ * - the task ranker and the context re-ranker: split on `[^a-z0-9]` —
11
+ * `changed-only` became `changed`, `only`;
12
+ * - ranker explain: `[^a-z0-9]` AND dropped tokens shorter than 3 — `go`,
13
+ * `pr`, `ci` vanished.
14
+ *
15
+ * So a hyphenated trigger fired in `shrk search` and never in `shrk task` /
16
+ * `shrk context`, and `shrk why` reported a tuning trace the rankers did not
17
+ * apply. This returns the UNION: each whitespace/punctuation token whole, plus
18
+ * its alphanumeric pieces (from THE identifier splitter), dropping tokens
19
+ * shorter than 2. It is a superset of every former variant, so no trigger that
20
+ * fired anywhere stops firing; one that fired in only one ranker now fires in
21
+ * all of them. Order is first-seen; duplicates are dropped.
22
+ */
23
+ export function tuningQueryTokens(text) {
24
+ const out = [];
25
+ const seen = new Set();
26
+ const add = (token) => {
27
+ if (token.length < 2 || seen.has(token))
28
+ return;
29
+ seen.add(token);
30
+ out.push(token);
31
+ };
32
+ for (const raw of text.toLowerCase().split(/[\s,.;:/]+/)) {
33
+ const token = raw.trim();
34
+ add(token);
35
+ // The input is already lowercase, so the splitter's camelCase rules are
36
+ // inert here: this is exactly the old `[^a-z0-9]+` split, from the one
37
+ // identifier tokenizer.
38
+ for (const piece of splitIdentifierTokens(token))
39
+ add(piece);
40
+ }
41
+ return out;
42
+ }
43
+ /**
44
+ * Can a query ever produce `whenToken`? A trigger with whitespace, a separator
45
+ * (`, . ; : /`) or fewer than 2 characters never appears in
46
+ * {@link tuningQueryTokens}' output, so its task hint can never apply.
47
+ */
48
+ export function isReachableTuningTrigger(whenToken) {
49
+ const lower = whenToken.toLowerCase();
50
+ return tuningQueryTokens(lower).includes(lower);
51
+ }
@@ -0,0 +1,36 @@
1
+ export interface ITypecheckFilesResult {
2
+ /** False when there was nothing to check, or TypeScript could not run. */
3
+ readonly ran: boolean;
4
+ readonly errors: readonly {
5
+ readonly file: string;
6
+ readonly line: number;
7
+ readonly column: number;
8
+ readonly code: number;
9
+ readonly message: string;
10
+ }[];
11
+ /** Absolute paths of the root files the program was built from. */
12
+ readonly checkedFiles: readonly string[];
13
+ /** The tsconfig whose options were applied, or null for the built-in defaults. */
14
+ readonly tsconfigPath: string | null;
15
+ /** Human note (why it did not run, or which tsconfig it used). */
16
+ readonly note?: string;
17
+ }
18
+ /**
19
+ * Type-check `rootNames` (absolute or `root`-relative) against `root`'s
20
+ * tsconfig (auto-detected unless `tsconfigPath` is given; `null` forces the
21
+ * strict defaults). `overlay` supplies in-memory contents for paths that are
22
+ * not on disk yet. By default only diagnostics IN the root files are reported;
23
+ * `reportOnlyUnder` widens that to every program file under a directory (so a
24
+ * group module an aggregator imports is checked too), excluding node_modules.
25
+ */
26
+ export declare function typecheckFiles(root: string, options: {
27
+ readonly rootNames: readonly string[];
28
+ readonly overlay?: ReadonlyMap<string, string>;
29
+ readonly tsconfigPath?: string | null;
30
+ readonly reportOnlyUnder?: string;
31
+ /** With no tsconfig, allow `.ts` import specifiers (Bun-loaded pack assets use them). */
32
+ readonly allowTsExtensionsByDefault?: boolean;
33
+ /** Report options/global diagnostics (e.g. a broken tsconfig) as errors too. */
34
+ readonly includeGlobalDiagnostics?: boolean;
35
+ }): ITypecheckFilesResult;
36
+ //# sourceMappingURL=typecheck-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typecheck-files.d.ts","sourceRoot":"","sources":["../src/typecheck-files.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,qBAAqB;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,SAAS;QACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,EAAE,CAAC;IACJ,mEAAmE;IACnE,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,kFAAkF;IAClF,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,kEAAkE;IAClE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAmCD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,yFAAyF;IACzF,QAAQ,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IAC9C,gFAAgF;IAChF,QAAQ,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC;CAC7C,GACA,qBAAqB,CAyGvB"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * THE in-process TypeScript check — one `ts.Program` builder shared by
3
+ * `gen --typecheck` (emitted, not-yet-written files over an overlay) and
4
+ * `packs test|doctor|release-check --typecheck` (a pack's own assets).
5
+ *
6
+ * It used to live in the CLI layer only, so nothing below the CLI could
7
+ * type-check a pack; pack loading is transpile-only (Bun), and an asset with an
8
+ * implicit-any parameter or a misspelled field loaded with every signal green.
9
+ *
10
+ * Deterministic, read-only, never emits. Only errors (not warnings) are
11
+ * reported, and only for the files the caller scoped the check to.
12
+ */
13
+ import * as ts from 'typescript';
14
+ import { existsSync, readFileSync } from 'node:fs';
15
+ import { dirname, resolve, sep } from 'node:path';
16
+ const TSCONFIG_NAMES = ['tsconfig.json', 'tsconfig.base.json'];
17
+ const TS_SOURCE = /\.(?:[cm]?ts|tsx)$/;
18
+ function findTsconfig(root) {
19
+ for (const name of TSCONFIG_NAMES) {
20
+ const p = resolve(root, name);
21
+ if (existsSync(p))
22
+ return p;
23
+ }
24
+ return null;
25
+ }
26
+ function pushDiagnostic(out, d, fallbackFile) {
27
+ if (d.category !== ts.DiagnosticCategory.Error)
28
+ return;
29
+ let line = 0;
30
+ let column = 0;
31
+ if (d.file && typeof d.start === 'number') {
32
+ const lc = d.file.getLineAndCharacterOfPosition(d.start);
33
+ line = lc.line + 1;
34
+ column = lc.character + 1;
35
+ }
36
+ out.push({
37
+ file: resolve(d.file?.fileName ?? fallbackFile),
38
+ line,
39
+ column,
40
+ code: d.code,
41
+ message: ts.flattenDiagnosticMessageText(d.messageText, '\n'),
42
+ });
43
+ }
44
+ /**
45
+ * Type-check `rootNames` (absolute or `root`-relative) against `root`'s
46
+ * tsconfig (auto-detected unless `tsconfigPath` is given; `null` forces the
47
+ * strict defaults). `overlay` supplies in-memory contents for paths that are
48
+ * not on disk yet. By default only diagnostics IN the root files are reported;
49
+ * `reportOnlyUnder` widens that to every program file under a directory (so a
50
+ * group module an aggregator imports is checked too), excluding node_modules.
51
+ */
52
+ export function typecheckFiles(root, options) {
53
+ const rootNames = options.rootNames.map((p) => resolve(root, p)).filter((p) => TS_SOURCE.test(p));
54
+ if (rootNames.length === 0) {
55
+ return { ran: false, errors: [], checkedFiles: [], tsconfigPath: null, note: 'no TS/TSX files to check' };
56
+ }
57
+ let compilerOptions = {
58
+ target: ts.ScriptTarget.ES2022,
59
+ module: ts.ModuleKind.ESNext,
60
+ moduleResolution: ts.ModuleResolutionKind.Bundler,
61
+ strict: true,
62
+ esModuleInterop: true,
63
+ ...(options.allowTsExtensionsByDefault ? { allowImportingTsExtensions: true } : {}),
64
+ };
65
+ const tsconfigPath = options.tsconfigPath === null
66
+ ? null
67
+ : options.tsconfigPath !== undefined
68
+ ? resolve(root, options.tsconfigPath)
69
+ : findTsconfig(root);
70
+ if (tsconfigPath) {
71
+ const read = ts.readConfigFile(tsconfigPath, (p) => {
72
+ try {
73
+ return readFileSync(p, 'utf8');
74
+ }
75
+ catch {
76
+ return undefined;
77
+ }
78
+ });
79
+ if (!read.error) {
80
+ const parsed = ts.parseJsonConfigFileContent(read.config, ts.sys, dirname(tsconfigPath));
81
+ compilerOptions = parsed.options;
82
+ }
83
+ }
84
+ // Force a non-emitting, lib-skipping check regardless of the project's config.
85
+ compilerOptions.noEmit = true;
86
+ compilerOptions.skipLibCheck = true;
87
+ compilerOptions.incremental = false;
88
+ delete compilerOptions.composite;
89
+ delete compilerOptions.outDir;
90
+ delete compilerOptions.declaration;
91
+ const overlay = new Map();
92
+ for (const [k, v] of options.overlay ?? [])
93
+ overlay.set(resolve(k), v);
94
+ const errors = [];
95
+ try {
96
+ const host = ts.createCompilerHost(compilerOptions, true);
97
+ const origGetSourceFile = host.getSourceFile.bind(host);
98
+ const origReadFile = host.readFile.bind(host);
99
+ const origFileExists = host.fileExists.bind(host);
100
+ host.readFile = (fileName) => {
101
+ const k = resolve(fileName);
102
+ return overlay.has(k) ? overlay.get(k) : origReadFile(fileName);
103
+ };
104
+ host.fileExists = (fileName) => overlay.has(resolve(fileName)) || origFileExists(fileName);
105
+ host.getSourceFile = (fileName, languageVersionOrOptions, onError, shouldCreate) => {
106
+ const body = overlay.get(resolve(fileName));
107
+ if (body !== undefined)
108
+ return ts.createSourceFile(fileName, body, languageVersionOrOptions, true);
109
+ return origGetSourceFile(fileName, languageVersionOrOptions, onError, shouldCreate);
110
+ };
111
+ const program = ts.createProgram({ rootNames, options: compilerOptions, host });
112
+ if (options.includeGlobalDiagnostics) {
113
+ for (const d of [...program.getOptionsDiagnostics(), ...program.getGlobalDiagnostics()]) {
114
+ pushDiagnostic(errors, d, tsconfigPath ?? root);
115
+ }
116
+ }
117
+ const scoped = [];
118
+ if (options.reportOnlyUnder) {
119
+ const under = resolve(options.reportOnlyUnder) + sep;
120
+ const roots = new Set(rootNames);
121
+ for (const sf of program.getSourceFiles()) {
122
+ const f = resolve(sf.fileName);
123
+ if (!roots.has(f) && (!f.startsWith(under) || f.includes(`${sep}node_modules${sep}`) || sf.isDeclarationFile)) {
124
+ continue;
125
+ }
126
+ scoped.push(sf);
127
+ }
128
+ }
129
+ else {
130
+ for (const rn of rootNames) {
131
+ const sf = program.getSourceFile(rn);
132
+ if (sf)
133
+ scoped.push(sf);
134
+ }
135
+ }
136
+ for (const sf of scoped) {
137
+ for (const d of [...program.getSyntacticDiagnostics(sf), ...program.getSemanticDiagnostics(sf)]) {
138
+ pushDiagnostic(errors, d, sf.fileName);
139
+ }
140
+ }
141
+ }
142
+ catch (e) {
143
+ return {
144
+ ran: false,
145
+ errors: [],
146
+ checkedFiles: rootNames,
147
+ tsconfigPath,
148
+ note: `TypeScript could not run: ${e.message}`,
149
+ };
150
+ }
151
+ return {
152
+ ran: true,
153
+ errors,
154
+ checkedFiles: rootNames,
155
+ tsconfigPath,
156
+ note: tsconfigPath ? `checked against ${tsconfigPath}` : 'no tsconfig found — used defaults',
157
+ };
158
+ }
@@ -85,7 +85,7 @@ function buildSuggestedCommands(task, signals) {
85
85
  out.push(`shrk coverage scaffolds --task "${task}"`);
86
86
  }
87
87
  if (signals.some((s) => s.code === 'weak-knowledge-matches' || s.code === 'low-ranker-confidence')) {
88
- out.push(`shrk why-not <id> --for-task "${task}"`);
88
+ out.push(`shrk task "${task}" --explain-ranking`);
89
89
  out.push(`shrk search tuning explain "${task}"`);
90
90
  out.push(`shrk search "${task}" --explain`);
91
91
  }
@@ -1 +1 @@
1
- {"version":3,"file":"universal-search.d.ts","sourceRoot":"","sources":["../src/universal-search.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAgC,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGhG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AAExE,oBAAY,gBAAgB;IAC1B,OAAO,YAAY;IACnB,OAAO,aAAa;IACpB,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,eAAe,qBAAqB;IACpC,gBAAgB,sBAAsB;IACtC,gBAAgB,sBAAsB;IACtC,YAAY,kBAAkB;IAC9B,eAAe,sBAAsB;IACrC,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACrD,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,QAAQ,CAAC,aAAa,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACrD;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,OAAO,uBAAuB,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AA+CD,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,qBAAqB,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,sBAAsB,CAAC,CA4NjC;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAmDhF;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CA8BpF"}
1
+ {"version":3,"file":"universal-search.d.ts","sourceRoot":"","sources":["../src/universal-search.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAgC,KAAK,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAGhG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,uBAAuB,mCAAmC,CAAC;AAExE,oBAAY,gBAAgB;IAC1B,OAAO,YAAY;IACnB,OAAO,aAAa;IACpB,SAAS,cAAc;IACvB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,eAAe,qBAAqB;IACpC,gBAAgB,sBAAsB;IACtC,gBAAgB,sBAAsB;IACtC,YAAY,kBAAkB;IAC9B,eAAe,sBAAsB;IACrC,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACrD,QAAQ,CAAC,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAClD,QAAQ,CAAC,aAAa,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACrD;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,OAAO,uBAAuB,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AA+CD,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,qBAAqB,EACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,sBAAsB,CAAC,CA8NjC;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAmDhF;AAED,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CA8BpF"}
@@ -13,7 +13,7 @@
13
13
  * 6. Uncertainty / no-match explanation
14
14
  * 7. Why these ranked
15
15
  */
16
- import { buildPackContributionsInventory } from "./pack-contributions-inventory.js";
16
+ import { buildPackContributionsInventoryAsync } from "./pack-contributions-inventory.js";
17
17
  import { listConventions } from "./convention-registry.js";
18
18
  import { listPackHelpers } from "./pack-helper-registry.js";
19
19
  import { explainTaskRouting } from "./task-routing-hint-registry.js";
@@ -83,7 +83,9 @@ export async function buildUniversalSearch(inspection, query, options = {}) {
83
83
  const q = query.trim();
84
84
  const limit = options.limit ?? 8;
85
85
  // Pull pieces we'll rank against.
86
- const inv = buildPackContributionsInventory(inspection);
86
+ // The async inventory: loader-backed ids (never the sync regex scrape's
87
+ // "unverified" guesses), so a search hit is an id the registry really holds.
88
+ const inv = await buildPackContributionsInventoryAsync(inspection);
87
89
  const conventions = await listConventions(inspection);
88
90
  const helpers = await listPackHelpers(inspection);
89
91
  const routing = await explainTaskRouting(inspection, q);
@@ -230,7 +232,7 @@ export async function buildUniversalSearch(inspection, query, options = {}) {
230
232
  sections.validation.length;
231
233
  const nextSuggestions = [];
232
234
  if (totalHits === 0) {
233
- nextSuggestions.push(`shrk coverage scaffolds --task "${q}"`, `shrk feedback ingest <file>`, `shrk why <id> --for-task "${q}"`, `shrk commands suggest "${q}"`);
235
+ nextSuggestions.push(`shrk coverage scaffolds --task "${q}"`, `shrk feedback ingest <file>`, `shrk why <id> --for-task "${q}"`, `shrk commands search "${q}"`);
234
236
  }
235
237
  const whyTheseRanked = [
236
238
  'Scoring: exact match +20, substring +10, token ≥3 chars +3 per match.',
@@ -0,0 +1,19 @@
1
+ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
2
+ export interface IUnregisteredExport {
3
+ /** `knowledge` covers knowledge / rule / path entries; `template` covers templates. */
4
+ readonly kind: 'knowledge' | 'template';
5
+ /** Project-relative path of the aggregator (the loaded contribution file). */
6
+ readonly aggregator: string;
7
+ /** Project-relative path of the group module that exports the entry. */
8
+ readonly group: string;
9
+ readonly exportName: string;
10
+ readonly id: string;
11
+ /** 1-based line of the export in the group module (0 when not located). */
12
+ readonly line: number;
13
+ /** Owning pack when the aggregator is a pack contribution. */
14
+ readonly packageName?: string;
15
+ readonly message: string;
16
+ }
17
+ /** Every unregistered entry export, sorted by group then line. */
18
+ export declare function detectUnregisteredExports(inspection: ISharkcraftInspection): Promise<readonly IUnregisteredExport[]>;
19
+ //# sourceMappingURL=unregistered-exports.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unregistered-exports.d.ts","sourceRoot":"","sources":["../src/unregistered-exports.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,uFAAuF;IACvF,QAAQ,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,CAAC;IACxC,8EAA8E;IAC9E,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAgCD,kEAAkE;AAClE,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,mBAAmB,EAAE,CAAC,CA2EzC"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Entries exported by a GROUP module that the AGGREGATOR registering it never
3
+ * registers — "added an entry to a group file, and it is silently invisible".
4
+ *
5
+ * A contribution file (the aggregator) imports named entries from group
6
+ * modules and lists them in its default array. An entry added to a group and
7
+ * not to that list compiles, ships, and is unknown to every lookup, with no
8
+ * warning. This check diffs, one level deep and deterministically:
9
+ *
10
+ * - aggregators = the contribution files the inspection's loaders actually
11
+ * imported cleanly (knowledge / rules / paths / templates — the kinds whose
12
+ * loader collects entry-shaped exports);
13
+ * - groups = each aggregator's RELATIVE imports (parsed by the one import
14
+ * parser, `parseImportStatements`) that resolve to a file under the same
15
+ * sharkcraft dir / pack root and are not themselves loaded;
16
+ * - an entry-shaped export of a group (the loader's OWN predicate:
17
+ * `isLikelyEntry` / `isTemplate`) whose id no registry holds is a finding.
18
+ *
19
+ * No directory globbing, and nothing is flagged for a file the aggregator
20
+ * never references. `export * from './group'` registers the whole group
21
+ * implicitly, so it yields zero findings by construction.
22
+ */
23
+ import { existsSync, readFileSync, statSync } from 'node:fs';
24
+ import * as nodePath from 'node:path';
25
+ import { safeImport } from '@shrkcrft/core';
26
+ import { parseImportStatements } from '@shrkcrft/boundaries';
27
+ import { isLikelyEntry } from '@shrkcrft/knowledge';
28
+ import { isTemplate } from '@shrkcrft/templates';
29
+ const PROBES = ['', '.ts', '.tsx', '.mts', '.js', '.mjs', '/index.ts', '/index.tsx', '/index.js'];
30
+ const AGGREGATOR_KINDS = new Set(['knowledge', 'rules', 'paths', 'templates']);
31
+ function isFile(p) {
32
+ try {
33
+ return statSync(p).isFile();
34
+ }
35
+ catch {
36
+ return false;
37
+ }
38
+ }
39
+ function resolveRelativeImport(fromFile, specifier) {
40
+ const base = nodePath.resolve(nodePath.dirname(fromFile), specifier);
41
+ const candidates = PROBES.map((ext) => base + ext);
42
+ // TS ESM style: `./group.js` written for `./group.ts`.
43
+ if (/\.m?js$/.test(specifier))
44
+ candidates.push(base.replace(/\.js$/, '.ts'), base.replace(/\.mjs$/, '.mts'));
45
+ for (const c of candidates)
46
+ if (isFile(c))
47
+ return c;
48
+ return null;
49
+ }
50
+ function exportLine(content, name) {
51
+ const re = name === 'default'
52
+ ? /^[ \t]*export[ \t]+default\b/m
53
+ : new RegExp(`^[ \\t]*export[ \\t]+(?:const|let|var|function|class)[ \\t]+${name.replace(/[$]/g, '\\$')}\\b`, 'm');
54
+ const m = re.exec(content);
55
+ if (!m)
56
+ return 0;
57
+ return content.slice(0, m.index).split('\n').length;
58
+ }
59
+ /** Every unregistered entry export, sorted by group then line. */
60
+ export async function detectUnregisteredExports(inspection) {
61
+ const out = [];
62
+ const projectRoot = inspection.projectRoot;
63
+ const rel = (abs) => nodePath.relative(projectRoot, abs) || abs;
64
+ const loaded = new Set((inspection.loaderDiagnostics ?? []).map((d) => nodePath.resolve(d.filePath)));
65
+ const packRoots = new Map();
66
+ for (const p of inspection.packs.validPacks ?? [])
67
+ packRoots.set(p.packageName, nodePath.resolve(p.packageRoot));
68
+ // What the registries hold — the same sets `knowledge list` / `templates list` print.
69
+ const registered = {
70
+ knowledge: new Set(inspection.knowledgeEntries.map((e) => e.id)),
71
+ template: new Set(inspection.templateRegistry.list().map((t) => t.id)),
72
+ };
73
+ const seen = new Set();
74
+ const aggregators = (inspection.loaderDiagnostics ?? []).filter((d) => d.status === 'ok' && AGGREGATOR_KINDS.has(d.kind) && /\.(?:[cm]?[jt]s|tsx)$/.test(d.filePath));
75
+ for (const d of aggregators) {
76
+ const aggregator = nodePath.resolve(d.filePath);
77
+ const kind = d.kind === 'templates' ? 'template' : 'knowledge';
78
+ const root = d.packName ? packRoots.get(d.packName) : inspection.sharkcraftDir ? nodePath.resolve(inspection.sharkcraftDir) : undefined;
79
+ if (!root || !existsSync(aggregator))
80
+ continue;
81
+ let content;
82
+ try {
83
+ content = readFileSync(aggregator, 'utf8');
84
+ }
85
+ catch {
86
+ continue;
87
+ }
88
+ for (const imp of parseImportStatements(content)) {
89
+ if (imp.typeOnly || !imp.specifier.startsWith('.'))
90
+ continue;
91
+ const group = resolveRelativeImport(aggregator, imp.specifier);
92
+ if (!group || !group.startsWith(root + nodePath.sep) || loaded.has(group))
93
+ continue;
94
+ const imported = await safeImport(group);
95
+ // A group that cannot be imported breaks its aggregator too — that is the
96
+ // loader's failure to report, not an unregistered export.
97
+ if (!imported.ok)
98
+ continue;
99
+ let groupContent = '';
100
+ try {
101
+ groupContent = readFileSync(group, 'utf8');
102
+ }
103
+ catch {
104
+ /* line stays 0 */
105
+ }
106
+ const predicate = kind === 'template' ? isTemplate : isLikelyEntry;
107
+ for (const exportName of Object.keys(imported.module)) {
108
+ let value;
109
+ try {
110
+ value = imported.module[exportName];
111
+ }
112
+ catch {
113
+ continue;
114
+ }
115
+ const items = predicate(value) ? [value] : Array.isArray(value) ? value.filter((v) => predicate(v)) : [];
116
+ for (const item of items) {
117
+ if (registered[kind].has(item.id))
118
+ continue;
119
+ const key = `${kind}\0${group}\0${exportName}\0${item.id}`;
120
+ if (seen.has(key))
121
+ continue;
122
+ seen.add(key);
123
+ const groupRel = rel(group);
124
+ const aggregatorRel = rel(aggregator);
125
+ out.push({
126
+ kind,
127
+ aggregator: aggregatorRel,
128
+ group: groupRel,
129
+ exportName,
130
+ id: item.id,
131
+ line: exportLine(groupContent, exportName),
132
+ ...(d.packName ? { packageName: d.packName } : {}),
133
+ message: `export '${exportName}' (id '${item.id}') in ${groupRel} is not registered by ${aggregatorRel} — ` +
134
+ `add it to the aggregator's array, or re-export the group with \`export * from './${nodePath.basename(group)}'\``,
135
+ });
136
+ }
137
+ }
138
+ }
139
+ }
140
+ return out.sort((a, b) => a.group.localeCompare(b.group) || a.line - b.line || a.id.localeCompare(b.id));
141
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Why a declared reference could not be resolved — as opposed to resolving
3
+ * NOWHERE (a `*-missing` finding) (round 12, ONE-CHANGE).
4
+ */
5
+ export declare enum UnresolvableReason {
6
+ /** Its kind's registry is empty in this workspace — declare one (the declaration table names how). */
7
+ RegistryEmpty = "registry-empty",
8
+ /** No builtin, config key, local file or pack key can EVER fill its kind (THE declarability authority). */
9
+ UndeclarableKind = "undeclarable-kind"
10
+ }
11
+ //# sourceMappingURL=unresolvable-reason.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unresolvable-reason.d.ts","sourceRoot":"","sources":["../src/unresolvable-reason.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,oBAAY,kBAAkB;IAC5B,sGAAsG;IACtG,aAAa,mBAAmB;IAChC,2GAA2G;IAC3G,gBAAgB,sBAAsB;CACvC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Why a declared reference could not be resolved — as opposed to resolving
3
+ * NOWHERE (a `*-missing` finding) (round 12, ONE-CHANGE).
4
+ */
5
+ export var UnresolvableReason;
6
+ (function (UnresolvableReason) {
7
+ /** Its kind's registry is empty in this workspace — declare one (the declaration table names how). */
8
+ UnresolvableReason["RegistryEmpty"] = "registry-empty";
9
+ /** No builtin, config key, local file or pack key can EVER fill its kind (THE declarability authority). */
10
+ UnresolvableReason["UndeclarableKind"] = "undeclarable-kind";
11
+ })(UnresolvableReason || (UnresolvableReason = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"upgrade-advisor.d.ts","sourceRoot":"","sources":["../src/upgrade-advisor.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,sBAAsB,kCAAkC,CAAC;AAEtE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,sBAAsB,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAiDD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C,oBAAoB,CAwDtB"}
1
+ {"version":3,"file":"upgrade-advisor.d.ts","sourceRoot":"","sources":["../src/upgrade-advisor.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAGvE,eAAO,MAAM,sBAAsB,kCAAkC,CAAC;AAEtE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,sBAAsB,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,EAAE,SAAS,eAAe,EAAE,CAAC;IACrC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAiDD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C,oBAAoB,CA8DtB"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
8
8
  import * as nodePath from 'node:path';
9
+ import { detectSharkcraftRepo } from "./self-audit.js";
9
10
  export const UPGRADE_ADVISOR_SCHEMA = 'sharkcraft.upgrade-advisor/v1';
10
11
  function detectSchemaVersion(text) {
11
12
  const m = /"schema"\s*:\s*"([^"]+)"/.exec(text);
@@ -68,7 +69,7 @@ export function buildUpgradeAdvice(inspection, options = {}) {
68
69
  id: 'repository-map-v1-present',
69
70
  severity: 'info',
70
71
  message: 'sharkcraft.repository-map/v1 artefacts found. sharkcraft.repository-intelligence/v1 ships alongside it.',
71
- suggestedAction: 'No action required; run `shrk intelligence graph` for the new surface.',
72
+ suggestedAction: 'No action required; run `shrk graph hubs` for the new surface.',
72
73
  });
73
74
  }
74
75
  if (detected['sharkcraft.feature-bundle/v1']) {
@@ -89,14 +90,20 @@ export function buildUpgradeAdvice(inspection, options = {}) {
89
90
  suggestedAction: 'After upgrade, re-run adoption with `--record-checkpoint` if hashes diverge.',
90
91
  });
91
92
  }
92
- const recommendedSteps = [
93
- 'shrk doctor',
94
- 'shrk commands doctor',
95
- 'shrk safety audit',
96
- 'shrk release readiness',
97
- 'bun x tsc -p tsconfig.base.json --noEmit',
98
- 'bun test',
99
- ];
93
+ // `commands doctor` / `release readiness` (and the tool's own tsc / test
94
+ // scripts) maintain SharkCraft itself: outside its repository they exit 78
95
+ // through the surface gate (THE host authority, `detectSharkcraftRepo`), so a
96
+ // consumer is pointed at the aggregate gate instead.
97
+ const recommendedSteps = detectSharkcraftRepo(inspection.projectRoot)
98
+ ? [
99
+ 'shrk doctor',
100
+ 'shrk commands doctor',
101
+ 'shrk safety audit',
102
+ 'shrk release readiness',
103
+ 'bun x tsc -p tsconfig.base.json --noEmit',
104
+ 'bun test',
105
+ ]
106
+ : ['shrk doctor', 'shrk safety audit', 'shrk quality'];
100
107
  return {
101
108
  schema: UPGRADE_ADVISOR_SCHEMA,
102
109
  generatedAt: new Date().toISOString(),
@@ -0,0 +1,4 @@
1
+ import type { IContributionFileValidation } from './i-contribution-file-validation.js';
2
+ /** Validate `file`, declared under manifest `slot`. */
3
+ export declare function validateContributionFile(slot: string, file: string): Promise<IContributionFileValidation>;
4
+ //# sourceMappingURL=validate-contribution-file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-contribution-file.d.ts","sourceRoot":"","sources":["../src/validate-contribution-file.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAsEvF,uDAAuD;AACvD,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAyI/G"}