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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (693) hide show
  1. package/dist/acceptance-replay.js +1 -1
  2. package/dist/agent-contract-templates.js +6 -6
  3. package/dist/agent-contract.d.ts.map +1 -1
  4. package/dist/agent-contract.js +13 -8
  5. package/dist/agent-orchestration.js +2 -2
  6. package/dist/agent-task-prep.d.ts +16 -0
  7. package/dist/agent-task-prep.d.ts.map +1 -1
  8. package/dist/agent-task-prep.js +51 -4
  9. package/dist/ai-readiness.d.ts.map +1 -1
  10. package/dist/ai-readiness.js +21 -3
  11. package/dist/architecture-map.d.ts +16 -0
  12. package/dist/architecture-map.d.ts.map +1 -1
  13. package/dist/architecture-map.js +42 -26
  14. package/dist/area-explore.d.ts +2 -2
  15. package/dist/area-explore.d.ts.map +1 -1
  16. package/dist/area-explore.js +36 -16
  17. package/dist/area-map.d.ts +56 -11
  18. package/dist/area-map.d.ts.map +1 -1
  19. package/dist/area-map.js +106 -25
  20. package/dist/asset-doctor-proposed-exit.d.ts +21 -0
  21. package/dist/asset-doctor-proposed-exit.d.ts.map +1 -0
  22. package/dist/asset-doctor-proposed-exit.js +22 -0
  23. package/dist/asset-provenance.js +1 -1
  24. package/dist/boundaries-changed-only.d.ts +24 -1
  25. package/dist/boundaries-changed-only.d.ts.map +1 -1
  26. package/dist/boundaries-changed-only.js +12 -2
  27. package/dist/boundary-check-options.model.d.ts +40 -0
  28. package/dist/boundary-check-options.model.d.ts.map +1 -0
  29. package/dist/boundary-check-options.model.js +1 -0
  30. package/dist/boundary-check-result.model.d.ts +89 -0
  31. package/dist/boundary-check-result.model.d.ts.map +1 -0
  32. package/dist/boundary-check-result.model.js +1 -0
  33. package/dist/boundary-configuration-status.d.ts +38 -0
  34. package/dist/boundary-configuration-status.d.ts.map +1 -0
  35. package/dist/boundary-configuration-status.js +118 -0
  36. package/dist/boundary-configuration-status.model.d.ts +37 -0
  37. package/dist/boundary-configuration-status.model.d.ts.map +1 -0
  38. package/dist/boundary-configuration-status.model.js +1 -0
  39. package/dist/boundary-load-issue.model.d.ts +30 -0
  40. package/dist/boundary-load-issue.model.d.ts.map +1 -0
  41. package/dist/boundary-load-issue.model.js +1 -0
  42. package/dist/boundary-rule-check.model.d.ts +44 -0
  43. package/dist/boundary-rule-check.model.d.ts.map +1 -0
  44. package/dist/boundary-rule-check.model.js +1 -0
  45. package/dist/boundary-rule-invalidation.model.d.ts +31 -0
  46. package/dist/boundary-rule-invalidation.model.d.ts.map +1 -0
  47. package/dist/boundary-rule-invalidation.model.js +1 -0
  48. package/dist/boundary-rule-set-diff.model.d.ts +75 -0
  49. package/dist/boundary-rule-set-diff.model.d.ts.map +1 -0
  50. package/dist/boundary-rule-set-diff.model.js +1 -0
  51. package/dist/boundary-rule-sources.d.ts +28 -0
  52. package/dist/boundary-rule-sources.d.ts.map +1 -0
  53. package/dist/boundary-rule-sources.js +110 -0
  54. package/dist/boundary-stale-exception-finding.model.d.ts +12 -0
  55. package/dist/boundary-stale-exception-finding.model.d.ts.map +1 -0
  56. package/dist/boundary-stale-exception-finding.model.js +1 -0
  57. package/dist/boundary-unit-liveness.d.ts +35 -0
  58. package/dist/boundary-unit-liveness.d.ts.map +1 -0
  59. package/dist/boundary-unit-liveness.js +71 -0
  60. package/dist/change-intent.d.ts +3 -0
  61. package/dist/change-intent.d.ts.map +1 -1
  62. package/dist/change-intent.js +61 -27
  63. package/dist/changes-summary.d.ts.map +1 -1
  64. package/dist/changes-summary.js +19 -9
  65. package/dist/ci-integrity-report.js +1 -1
  66. package/dist/ci-predict.d.ts.map +1 -1
  67. package/dist/ci-predict.js +38 -5
  68. package/dist/code-intelligence-doctor.d.ts +6 -0
  69. package/dist/code-intelligence-doctor.d.ts.map +1 -1
  70. package/dist/code-intelligence-doctor.js +22 -7
  71. package/dist/command-recommender.d.ts +45 -2
  72. package/dist/command-recommender.d.ts.map +1 -1
  73. package/dist/command-recommender.js +41 -263
  74. package/dist/command-resolution-status.d.ts +44 -0
  75. package/dist/command-resolution-status.d.ts.map +1 -0
  76. package/dist/command-resolution-status.js +44 -0
  77. package/dist/command-safety-level.d.ts +15 -0
  78. package/dist/command-safety-level.d.ts.map +1 -0
  79. package/dist/command-safety-level.js +43 -0
  80. package/dist/command-taxonomy.js +1 -1
  81. package/dist/compliance-evidence.js +1 -1
  82. package/dist/compliance-profiles.js +1 -1
  83. package/dist/construct-registry.d.ts +40 -0
  84. package/dist/construct-registry.d.ts.map +1 -1
  85. package/dist/construct-registry.js +186 -82
  86. package/dist/context-tuning.d.ts +4 -0
  87. package/dist/context-tuning.d.ts.map +1 -1
  88. package/dist/context-tuning.js +10 -7
  89. package/dist/contract-template-registry.d.ts +10 -0
  90. package/dist/contract-template-registry.d.ts.map +1 -1
  91. package/dist/contract-template-registry.js +59 -33
  92. package/dist/contribution-kind.d.ts +52 -0
  93. package/dist/contribution-kind.d.ts.map +1 -0
  94. package/dist/contribution-kind.js +52 -0
  95. package/dist/contribution-load-failures.d.ts +106 -0
  96. package/dist/contribution-load-failures.d.ts.map +1 -0
  97. package/dist/contribution-load-failures.js +575 -0
  98. package/dist/contributions-report.d.ts +28 -0
  99. package/dist/contributions-report.d.ts.map +1 -0
  100. package/dist/contributions-report.js +242 -0
  101. package/dist/convention-registry.d.ts +22 -0
  102. package/dist/convention-registry.d.ts.map +1 -1
  103. package/dist/convention-registry.js +79 -39
  104. package/dist/coverage-report.d.ts.map +1 -1
  105. package/dist/coverage-report.js +6 -6
  106. package/dist/custom-checks.d.ts +60 -1
  107. package/dist/custom-checks.d.ts.map +1 -1
  108. package/dist/custom-checks.js +159 -6
  109. package/dist/dashboard/dashboard-data.d.ts +6 -0
  110. package/dist/dashboard/dashboard-data.d.ts.map +1 -1
  111. package/dist/dashboard/dashboard-data.js +99 -8
  112. package/dist/dashboard/dashboard-knowledge.d.ts.map +1 -1
  113. package/dist/dashboard/dashboard-knowledge.js +14 -2
  114. package/dist/decision-records.d.ts +20 -0
  115. package/dist/decision-records.d.ts.map +1 -1
  116. package/dist/decision-records.js +68 -20
  117. package/dist/declared-cross-references.d.ts +61 -0
  118. package/dist/declared-cross-references.d.ts.map +1 -0
  119. package/dist/declared-cross-references.js +550 -0
  120. package/dist/declared-gate-plane-rules.d.ts +24 -0
  121. package/dist/declared-gate-plane-rules.d.ts.map +1 -0
  122. package/dist/declared-gate-plane-rules.js +39 -0
  123. package/dist/declared-reference-coverage.d.ts +27 -0
  124. package/dist/declared-reference-coverage.d.ts.map +1 -0
  125. package/dist/declared-reference-coverage.js +50 -0
  126. package/dist/declared-xref-status.d.ts +19 -0
  127. package/dist/declared-xref-status.d.ts.map +1 -0
  128. package/dist/declared-xref-status.js +19 -0
  129. package/dist/delegate-pack-recipes.d.ts +13 -2
  130. package/dist/delegate-pack-recipes.d.ts.map +1 -1
  131. package/dist/delegate-pack-recipes.js +45 -14
  132. package/dist/demo-package.js +2 -2
  133. package/dist/demo-script.js +2 -2
  134. package/dist/demo-workflow.js +3 -3
  135. package/dist/dev-cycle.js +1 -1
  136. package/dist/dev-session.js +1 -1
  137. package/dist/doc-references.d.ts +23 -2
  138. package/dist/doc-references.d.ts.map +1 -1
  139. package/dist/doc-references.js +96 -17
  140. package/dist/doctor-result.d.ts +8 -0
  141. package/dist/doctor-result.d.ts.map +1 -1
  142. package/dist/doctor-verdict-kind.d.ts +19 -0
  143. package/dist/doctor-verdict-kind.d.ts.map +1 -0
  144. package/dist/doctor-verdict-kind.js +19 -0
  145. package/dist/doctor-verdict.d.ts +18 -0
  146. package/dist/doctor-verdict.d.ts.map +1 -0
  147. package/dist/doctor-verdict.js +28 -0
  148. package/dist/drift.d.ts +17 -0
  149. package/dist/drift.d.ts.map +1 -1
  150. package/dist/drift.js +40 -10
  151. package/dist/entrypoint-matrix.d.ts.map +1 -1
  152. package/dist/entrypoint-matrix.js +4 -1
  153. package/dist/feedback-ingestion.d.ts +28 -2
  154. package/dist/feedback-ingestion.d.ts.map +1 -1
  155. package/dist/feedback-ingestion.js +68 -19
  156. package/dist/fix-preview.d.ts.map +1 -1
  157. package/dist/fix-preview.js +9 -5
  158. package/dist/framework-extractor-outcomes.d.ts +27 -0
  159. package/dist/framework-extractor-outcomes.d.ts.map +1 -0
  160. package/dist/framework-extractor-outcomes.js +83 -0
  161. package/dist/fuzzy-impact.js +1 -1
  162. package/dist/healing-plan.d.ts.map +1 -1
  163. package/dist/healing-plan.js +3 -4
  164. package/dist/helper-catalog.d.ts +25 -0
  165. package/dist/helper-catalog.d.ts.map +1 -0
  166. package/dist/helper-catalog.js +91 -0
  167. package/dist/helper-registry.d.ts.map +1 -1
  168. package/dist/helper-registry.js +17 -1
  169. package/dist/helper-view.d.ts +33 -0
  170. package/dist/helper-view.d.ts.map +1 -0
  171. package/dist/helper-view.js +1 -0
  172. package/dist/i-asset-doctor-flags.d.ts +16 -0
  173. package/dist/i-asset-doctor-flags.d.ts.map +1 -0
  174. package/dist/i-asset-doctor-flags.js +1 -0
  175. package/dist/i-command-resolution.d.ts +22 -0
  176. package/dist/i-command-resolution.d.ts.map +1 -0
  177. package/dist/i-command-resolution.js +1 -0
  178. package/dist/i-command-resolve-options.d.ts +24 -0
  179. package/dist/i-command-resolve-options.d.ts.map +1 -0
  180. package/dist/i-command-resolve-options.js +1 -0
  181. package/dist/i-command-safety.d.ts +13 -0
  182. package/dist/i-command-safety.d.ts.map +1 -0
  183. package/dist/i-command-safety.js +1 -0
  184. package/dist/i-contribution-accepted-entry.d.ts +18 -0
  185. package/dist/i-contribution-accepted-entry.d.ts.map +1 -0
  186. package/dist/i-contribution-accepted-entry.js +1 -0
  187. package/dist/i-contribution-entry-rejection.d.ts +21 -0
  188. package/dist/i-contribution-entry-rejection.d.ts.map +1 -0
  189. package/dist/i-contribution-entry-rejection.js +1 -0
  190. package/dist/i-contribution-file-issue.d.ts +18 -0
  191. package/dist/i-contribution-file-issue.d.ts.map +1 -0
  192. package/dist/i-contribution-file-issue.js +1 -0
  193. package/dist/i-contribution-file-report.d.ts +40 -0
  194. package/dist/i-contribution-file-report.d.ts.map +1 -0
  195. package/dist/i-contribution-file-report.js +1 -0
  196. package/dist/i-contribution-file-validation.d.ts +24 -0
  197. package/dist/i-contribution-file-validation.d.ts.map +1 -0
  198. package/dist/i-contribution-file-validation.js +1 -0
  199. package/dist/i-contributions-report.d.ts +31 -0
  200. package/dist/i-contributions-report.d.ts.map +1 -0
  201. package/dist/i-contributions-report.js +1 -0
  202. package/dist/i-declared-xref-field.d.ts +25 -0
  203. package/dist/i-declared-xref-field.d.ts.map +1 -0
  204. package/dist/i-declared-xref-field.js +1 -0
  205. package/dist/i-declared-xref-issue.d.ts +25 -0
  206. package/dist/i-declared-xref-issue.d.ts.map +1 -0
  207. package/dist/i-declared-xref-issue.js +1 -0
  208. package/dist/i-declared-xref-report.d.ts +48 -0
  209. package/dist/i-declared-xref-report.d.ts.map +1 -0
  210. package/dist/i-declared-xref-report.js +1 -0
  211. package/dist/i-declared-xref-row.d.ts +29 -0
  212. package/dist/i-declared-xref-row.d.ts.map +1 -0
  213. package/dist/i-declared-xref-row.js +1 -0
  214. package/dist/i-doctor-verdict.d.ts +10 -0
  215. package/dist/i-doctor-verdict.d.ts.map +1 -0
  216. package/dist/i-doctor-verdict.js +1 -0
  217. package/dist/i-kind-outcomes.d.ts +13 -0
  218. package/dist/i-kind-outcomes.d.ts.map +1 -0
  219. package/dist/i-kind-outcomes.js +1 -0
  220. package/dist/i-pack-doctor-verdict.d.ts +15 -0
  221. package/dist/i-pack-doctor-verdict.d.ts.map +1 -0
  222. package/dist/i-pack-doctor-verdict.js +1 -0
  223. package/dist/i-probed-id-field.d.ts +17 -0
  224. package/dist/i-probed-id-field.d.ts.map +1 -0
  225. package/dist/i-probed-id-field.js +1 -0
  226. package/dist/i-reference-kind-declaration.d.ts +38 -0
  227. package/dist/i-reference-kind-declaration.d.ts.map +1 -0
  228. package/dist/i-reference-kind-declaration.js +1 -0
  229. package/dist/i-reference-warm-options.d.ts +21 -0
  230. package/dist/i-reference-warm-options.d.ts.map +1 -0
  231. package/dist/i-reference-warm-options.js +1 -0
  232. package/dist/i-registry-outcomes.d.ts +16 -0
  233. package/dist/i-registry-outcomes.d.ts.map +1 -0
  234. package/dist/i-registry-outcomes.js +1 -0
  235. package/dist/i-scaffold-pattern-doctor-report.d.ts +35 -0
  236. package/dist/i-scaffold-pattern-doctor-report.d.ts.map +1 -0
  237. package/dist/i-scaffold-pattern-doctor-report.js +1 -0
  238. package/dist/i-search-tuning-key-probe.d.ts +30 -0
  239. package/dist/i-search-tuning-key-probe.d.ts.map +1 -0
  240. package/dist/i-search-tuning-key-probe.js +1 -0
  241. package/dist/i-search-tuning-lint-issue.d.ts +61 -0
  242. package/dist/i-search-tuning-lint-issue.d.ts.map +1 -0
  243. package/dist/i-search-tuning-lint-issue.js +1 -0
  244. package/dist/i-search-tuning-lint-report.d.ts +38 -0
  245. package/dist/i-search-tuning-lint-report.d.ts.map +1 -0
  246. package/dist/i-search-tuning-lint-report.js +1 -0
  247. package/dist/i-unresolvable-reference-scan.d.ts +14 -0
  248. package/dist/i-unresolvable-reference-scan.d.ts.map +1 -0
  249. package/dist/i-unresolvable-reference-scan.js +1 -0
  250. package/dist/i-unresolvable-reference.d.ts +29 -0
  251. package/dist/i-unresolvable-reference.d.ts.map +1 -0
  252. package/dist/i-unresolvable-reference.js +1 -0
  253. package/dist/i-workspace-profile-payload.d.ts +12 -0
  254. package/dist/i-workspace-profile-payload.d.ts.map +1 -0
  255. package/dist/i-workspace-profile-payload.js +1 -0
  256. package/dist/impact-analysis.d.ts +15 -0
  257. package/dist/impact-analysis.d.ts.map +1 -1
  258. package/dist/impact-analysis.js +58 -13
  259. package/dist/impact-render.d.ts.map +1 -1
  260. package/dist/impact-render.js +22 -0
  261. package/dist/import-hygiene.d.ts +35 -1
  262. package/dist/import-hygiene.d.ts.map +1 -1
  263. package/dist/import-hygiene.js +107 -13
  264. package/dist/index.d.ts +141 -0
  265. package/dist/index.d.ts.map +1 -1
  266. package/dist/index.js +172 -0
  267. package/dist/inspection-discovery.d.ts +45 -0
  268. package/dist/inspection-discovery.d.ts.map +1 -0
  269. package/dist/inspection-discovery.js +70 -0
  270. package/dist/knowledge-advisory-code.d.ts +17 -0
  271. package/dist/knowledge-advisory-code.d.ts.map +1 -0
  272. package/dist/knowledge-advisory-code.js +17 -0
  273. package/dist/knowledge-aged-entry.d.ts +10 -0
  274. package/dist/knowledge-aged-entry.d.ts.map +1 -0
  275. package/dist/knowledge-aged-entry.js +1 -0
  276. package/dist/knowledge-authoring.d.ts +24 -1
  277. package/dist/knowledge-authoring.d.ts.map +1 -1
  278. package/dist/knowledge-authoring.js +46 -7
  279. package/dist/knowledge-entry-verdict-record.d.ts +22 -0
  280. package/dist/knowledge-entry-verdict-record.d.ts.map +1 -0
  281. package/dist/knowledge-entry-verdict-record.js +1 -0
  282. package/dist/knowledge-entry-verdict.d.ts +17 -0
  283. package/dist/knowledge-entry-verdict.d.ts.map +1 -0
  284. package/dist/knowledge-entry-verdict.js +17 -0
  285. package/dist/knowledge-graph.d.ts +6 -0
  286. package/dist/knowledge-graph.d.ts.map +1 -1
  287. package/dist/knowledge-graph.js +18 -7
  288. package/dist/knowledge-kind-bucket.d.ts +19 -0
  289. package/dist/knowledge-kind-bucket.d.ts.map +1 -0
  290. package/dist/knowledge-kind-bucket.js +1 -0
  291. package/dist/knowledge-load-failure.d.ts +23 -0
  292. package/dist/knowledge-load-failure.d.ts.map +1 -0
  293. package/dist/knowledge-load-failure.js +1 -0
  294. package/dist/knowledge-reference-kind-bucket.d.ts +11 -0
  295. package/dist/knowledge-reference-kind-bucket.d.ts.map +1 -0
  296. package/dist/knowledge-reference-kind-bucket.js +1 -0
  297. package/dist/knowledge-stale-advisory.d.ts +14 -0
  298. package/dist/knowledge-stale-advisory.d.ts.map +1 -0
  299. package/dist/knowledge-stale-advisory.js +1 -0
  300. package/dist/knowledge-stale-coverage.d.ts +19 -0
  301. package/dist/knowledge-stale-coverage.d.ts.map +1 -0
  302. package/dist/knowledge-stale-coverage.js +1 -0
  303. package/dist/knowledge-stale-gate-flags.d.ts +33 -0
  304. package/dist/knowledge-stale-gate-flags.d.ts.map +1 -0
  305. package/dist/knowledge-stale-gate-flags.js +1 -0
  306. package/dist/knowledge-stale-gate-input.d.ts +46 -0
  307. package/dist/knowledge-stale-gate-input.d.ts.map +1 -0
  308. package/dist/knowledge-stale-gate-input.js +1 -0
  309. package/dist/knowledge-stale-gate-result.d.ts +33 -0
  310. package/dist/knowledge-stale-gate-result.d.ts.map +1 -0
  311. package/dist/knowledge-stale-gate-result.js +1 -0
  312. package/dist/knowledge-stale-gate-rule.d.ts +33 -0
  313. package/dist/knowledge-stale-gate-rule.d.ts.map +1 -0
  314. package/dist/knowledge-stale-gate-rule.js +1 -0
  315. package/dist/knowledge-stale-gate-violation.d.ts +13 -0
  316. package/dist/knowledge-stale-gate-violation.d.ts.map +1 -0
  317. package/dist/knowledge-stale-gate-violation.js +1 -0
  318. package/dist/knowledge-stale-gate.d.ts +83 -0
  319. package/dist/knowledge-stale-gate.d.ts.map +1 -0
  320. package/dist/knowledge-stale-gate.js +429 -0
  321. package/dist/knowledge-stale-quality-gate.d.ts +26 -0
  322. package/dist/knowledge-stale-quality-gate.d.ts.map +1 -0
  323. package/dist/knowledge-stale-quality-gate.js +110 -0
  324. package/dist/knowledge-stale.d.ts +122 -9
  325. package/dist/knowledge-stale.d.ts.map +1 -1
  326. package/dist/knowledge-stale.js +996 -291
  327. package/dist/knowledge-unverifiable-reason.d.ts +12 -0
  328. package/dist/knowledge-unverifiable-reason.d.ts.map +1 -0
  329. package/dist/knowledge-unverifiable-reason.js +12 -0
  330. package/dist/loader-diagnostics.d.ts +14 -2
  331. package/dist/loader-diagnostics.d.ts.map +1 -1
  332. package/dist/match-terms.d.ts +48 -0
  333. package/dist/match-terms.d.ts.map +1 -0
  334. package/dist/match-terms.js +155 -0
  335. package/dist/migration-profile-registry.d.ts +10 -0
  336. package/dist/migration-profile-registry.d.ts.map +1 -1
  337. package/dist/migration-profile-registry.js +57 -34
  338. package/dist/migration-readiness.d.ts.map +1 -1
  339. package/dist/migration-readiness.js +1 -3
  340. package/dist/nearest-id.d.ts +10 -26
  341. package/dist/nearest-id.d.ts.map +1 -1
  342. package/dist/nearest-id.js +9 -59
  343. package/dist/pack-asset-freshness.d.ts +65 -0
  344. package/dist/pack-asset-freshness.d.ts.map +1 -0
  345. package/dist/pack-asset-freshness.js +340 -0
  346. package/dist/pack-author-ux.d.ts +24 -3
  347. package/dist/pack-author-ux.d.ts.map +1 -1
  348. package/dist/pack-author-ux.js +87 -93
  349. package/dist/pack-contributions-inventory.d.ts +79 -39
  350. package/dist/pack-contributions-inventory.d.ts.map +1 -1
  351. package/dist/pack-contributions-inventory.js +443 -286
  352. package/dist/pack-doctor-verdict.d.ts +29 -0
  353. package/dist/pack-doctor-verdict.d.ts.map +1 -0
  354. package/dist/pack-doctor-verdict.js +45 -0
  355. package/dist/pack-doctor.d.ts +74 -1
  356. package/dist/pack-doctor.d.ts.map +1 -1
  357. package/dist/pack-doctor.js +281 -1
  358. package/dist/pack-helper-plan.d.ts +24 -0
  359. package/dist/pack-helper-plan.d.ts.map +1 -0
  360. package/dist/pack-helper-plan.js +77 -0
  361. package/dist/pack-helper-registry.d.ts +14 -0
  362. package/dist/pack-helper-registry.d.ts.map +1 -1
  363. package/dist/pack-helper-registry.js +76 -37
  364. package/dist/pack-manifest-reader.d.ts +8 -0
  365. package/dist/pack-manifest-reader.d.ts.map +1 -0
  366. package/dist/pack-manifest-reader.js +79 -0
  367. package/dist/pack-release-check.d.ts +14 -1
  368. package/dist/pack-release-check.d.ts.map +1 -1
  369. package/dist/pack-release-check.js +23 -1
  370. package/dist/pack-signature-status.d.ts +18 -6
  371. package/dist/pack-signature-status.d.ts.map +1 -1
  372. package/dist/pack-signature-status.js +59 -105
  373. package/dist/pack-test-runner.d.ts +27 -5
  374. package/dist/pack-test-runner.d.ts.map +1 -1
  375. package/dist/pack-test-runner.js +91 -35
  376. package/dist/pack-typecheck.d.ts +8 -0
  377. package/dist/pack-typecheck.d.ts.map +1 -0
  378. package/dist/pack-typecheck.js +76 -0
  379. package/dist/plan-review.d.ts +2 -0
  380. package/dist/plan-review.d.ts.map +1 -1
  381. package/dist/plan-review.js +17 -5
  382. package/dist/plan-simulation.d.ts.map +1 -1
  383. package/dist/plan-simulation.js +16 -5
  384. package/dist/playbook-load-issue.d.ts +16 -0
  385. package/dist/playbook-load-issue.d.ts.map +1 -0
  386. package/dist/playbook-load-issue.js +1 -0
  387. package/dist/playbook-registry.d.ts +32 -1
  388. package/dist/playbook-registry.d.ts.map +1 -1
  389. package/dist/playbook-registry.js +144 -55
  390. package/dist/policy-declaration.d.ts +18 -0
  391. package/dist/policy-declaration.d.ts.map +1 -0
  392. package/dist/policy-declaration.js +1 -0
  393. package/dist/policy-engine.d.ts +8 -0
  394. package/dist/policy-engine.d.ts.map +1 -1
  395. package/dist/policy-engine.js +26 -9
  396. package/dist/policy-overrides.d.ts.map +1 -1
  397. package/dist/policy-overrides.js +4 -4
  398. package/dist/policy-registry.d.ts +27 -0
  399. package/dist/policy-registry.d.ts.map +1 -1
  400. package/dist/policy-registry.js +87 -20
  401. package/dist/probed-id-fields.d.ts +21 -0
  402. package/dist/probed-id-fields.d.ts.map +1 -0
  403. package/dist/probed-id-fields.js +25 -0
  404. package/dist/probed-id-source.d.ts +11 -0
  405. package/dist/probed-id-source.d.ts.map +1 -0
  406. package/dist/probed-id-source.js +11 -0
  407. package/dist/profile-registry.d.ts +25 -2
  408. package/dist/profile-registry.d.ts.map +1 -1
  409. package/dist/profile-registry.js +59 -6
  410. package/dist/quality-gate-examination.d.ts +15 -0
  411. package/dist/quality-gate-examination.d.ts.map +1 -0
  412. package/dist/quality-gate-examination.js +15 -0
  413. package/dist/quality-gate-row-status.d.ts +19 -0
  414. package/dist/quality-gate-row-status.d.ts.map +1 -0
  415. package/dist/quality-gate-row-status.js +28 -0
  416. package/dist/quality-gate-status.d.ts +16 -0
  417. package/dist/quality-gate-status.d.ts.map +1 -0
  418. package/dist/quality-gate-status.js +16 -0
  419. package/dist/quality-html.d.ts.map +1 -1
  420. package/dist/quality-html.js +14 -3
  421. package/dist/quality-report-coverage.d.ts +26 -0
  422. package/dist/quality-report-coverage.d.ts.map +1 -0
  423. package/dist/quality-report-coverage.js +48 -0
  424. package/dist/quality-report.d.ts +28 -1
  425. package/dist/quality-report.d.ts.map +1 -1
  426. package/dist/quality-report.js +263 -35
  427. package/dist/query-intent-kind.d.ts +18 -0
  428. package/dist/query-intent-kind.d.ts.map +1 -0
  429. package/dist/query-intent-kind.js +18 -0
  430. package/dist/query-intent-result.d.ts +23 -0
  431. package/dist/query-intent-result.d.ts.map +1 -0
  432. package/dist/query-intent-result.js +1 -0
  433. package/dist/query-intent.d.ts +18 -0
  434. package/dist/query-intent.d.ts.map +1 -0
  435. package/dist/query-intent.js +336 -0
  436. package/dist/query-resolver.d.ts +18 -0
  437. package/dist/query-resolver.d.ts.map +1 -1
  438. package/dist/query-resolver.js +7 -4
  439. package/dist/ranked-recommendations.d.ts +36 -0
  440. package/dist/ranked-recommendations.d.ts.map +1 -0
  441. package/dist/ranked-recommendations.js +1 -0
  442. package/dist/ranker-explainability.d.ts.map +1 -1
  443. package/dist/ranker-explainability.js +38 -10
  444. package/dist/recommend-recipe.d.ts +17 -0
  445. package/dist/recommend-recipe.d.ts.map +1 -0
  446. package/dist/recommend-recipe.js +1 -0
  447. package/dist/recommend-recipes.d.ts +9 -0
  448. package/dist/recommend-recipes.d.ts.map +1 -0
  449. package/dist/recommend-recipes.js +106 -0
  450. package/dist/recommendation-candidate.d.ts +30 -0
  451. package/dist/recommendation-candidate.d.ts.map +1 -0
  452. package/dist/recommendation-candidate.js +1 -0
  453. package/dist/recommendation-confidence.d.ts +27 -0
  454. package/dist/recommendation-confidence.d.ts.map +1 -0
  455. package/dist/recommendation-confidence.js +1 -0
  456. package/dist/recommendation-ranking-options.d.ts +24 -0
  457. package/dist/recommendation-ranking-options.d.ts.map +1 -0
  458. package/dist/recommendation-ranking-options.js +1 -0
  459. package/dist/recommendation-ranking.d.ts +50 -0
  460. package/dist/recommendation-ranking.d.ts.map +1 -0
  461. package/dist/recommendation-ranking.js +527 -0
  462. package/dist/recommendation-source.d.ts +23 -0
  463. package/dist/recommendation-source.d.ts.map +1 -0
  464. package/dist/recommendation-source.js +23 -0
  465. package/dist/recommendation-suppression.d.ts +14 -0
  466. package/dist/recommendation-suppression.d.ts.map +1 -0
  467. package/dist/recommendation-suppression.js +14 -0
  468. package/dist/reference-asset-kind.d.ts +14 -0
  469. package/dist/reference-asset-kind.d.ts.map +1 -0
  470. package/dist/reference-asset-kind.js +14 -0
  471. package/dist/reference-content-check.d.ts +32 -0
  472. package/dist/reference-content-check.d.ts.map +1 -0
  473. package/dist/reference-content-check.js +143 -0
  474. package/dist/reference-failure.d.ts +31 -0
  475. package/dist/reference-failure.d.ts.map +1 -0
  476. package/dist/reference-failure.js +31 -0
  477. package/dist/reference-id-status.d.ts +15 -0
  478. package/dist/reference-id-status.d.ts.map +1 -0
  479. package/dist/reference-id-status.js +15 -0
  480. package/dist/reference-kind-declarations.d.ts +42 -0
  481. package/dist/reference-kind-declarations.d.ts.map +1 -0
  482. package/dist/reference-kind-declarations.js +142 -0
  483. package/dist/reference-lookup.d.ts +6 -0
  484. package/dist/reference-lookup.d.ts.map +1 -1
  485. package/dist/reference-lookup.js +13 -5
  486. package/dist/reference-registry.d.ts +109 -11
  487. package/dist/reference-registry.d.ts.map +1 -1
  488. package/dist/reference-registry.js +186 -30
  489. package/dist/reference-subject.d.ts +20 -0
  490. package/dist/reference-subject.d.ts.map +1 -0
  491. package/dist/reference-subject.js +1 -0
  492. package/dist/registration-hint-discovery-status.d.ts +25 -0
  493. package/dist/registration-hint-discovery-status.d.ts.map +1 -0
  494. package/dist/registration-hint-discovery-status.js +25 -0
  495. package/dist/registration-hint-registry.d.ts +80 -0
  496. package/dist/registration-hint-registry.d.ts.map +1 -1
  497. package/dist/registration-hint-registry.js +356 -138
  498. package/dist/registry-lifecycle.d.ts +200 -19
  499. package/dist/registry-lifecycle.d.ts.map +1 -1
  500. package/dist/registry-lifecycle.js +526 -136
  501. package/dist/release-readiness.d.ts.map +1 -1
  502. package/dist/release-readiness.js +10 -7
  503. package/dist/release-smoke.d.ts.map +1 -1
  504. package/dist/release-smoke.js +11 -7
  505. package/dist/report-site.d.ts.map +1 -1
  506. package/dist/report-site.js +25 -7
  507. package/dist/repository-intelligence.d.ts.map +1 -1
  508. package/dist/repository-intelligence.js +3 -2
  509. package/dist/repository-knowledge-model.d.ts.map +1 -1
  510. package/dist/repository-knowledge-model.js +18 -5
  511. package/dist/resolve-project-config.d.ts +64 -0
  512. package/dist/resolve-project-config.d.ts.map +1 -1
  513. package/dist/resolve-project-config.js +240 -32
  514. package/dist/reuse/compute-reuse-coverage.d.ts +29 -0
  515. package/dist/reuse/compute-reuse-coverage.d.ts.map +1 -0
  516. package/dist/reuse/compute-reuse-coverage.js +198 -0
  517. package/dist/reuse/rank-reuse-candidates.d.ts +38 -0
  518. package/dist/reuse/rank-reuse-candidates.d.ts.map +1 -0
  519. package/dist/reuse/rank-reuse-candidates.js +212 -0
  520. package/dist/reuse/rank-reuse-options.d.ts +20 -0
  521. package/dist/reuse/rank-reuse-options.d.ts.map +1 -0
  522. package/dist/reuse/rank-reuse-options.js +1 -0
  523. package/dist/reuse/rank-reuse-suggestions.d.ts +15 -0
  524. package/dist/reuse/rank-reuse-suggestions.d.ts.map +1 -0
  525. package/dist/reuse/rank-reuse-suggestions.js +31 -0
  526. package/dist/reuse/resolve-curated-reuse.d.ts +43 -0
  527. package/dist/reuse/resolve-curated-reuse.d.ts.map +1 -0
  528. package/dist/reuse/resolve-curated-reuse.js +115 -0
  529. package/dist/reuse/reuse-candidate.d.ts +29 -0
  530. package/dist/reuse/reuse-candidate.d.ts.map +1 -0
  531. package/dist/reuse/reuse-candidate.js +1 -0
  532. package/dist/reuse/reuse-coverage-report.d.ts +74 -0
  533. package/dist/reuse/reuse-coverage-report.d.ts.map +1 -0
  534. package/dist/reuse/reuse-coverage-report.js +1 -0
  535. package/dist/reuse/reuse-curated-coverage.d.ts +36 -0
  536. package/dist/reuse/reuse-curated-coverage.d.ts.map +1 -0
  537. package/dist/reuse/reuse-curated-coverage.js +1 -0
  538. package/dist/reuse/reuse-curated-resolution.d.ts +36 -0
  539. package/dist/reuse/reuse-curated-resolution.d.ts.map +1 -0
  540. package/dist/reuse/reuse-curated-resolution.js +1 -0
  541. package/dist/reuse/reuse-curated-status.d.ts +21 -0
  542. package/dist/reuse/reuse-curated-status.d.ts.map +1 -0
  543. package/dist/reuse/reuse-curated-status.js +21 -0
  544. package/dist/reuse/reuse-match-detail.d.ts +15 -0
  545. package/dist/reuse/reuse-match-detail.d.ts.map +1 -0
  546. package/dist/reuse/reuse-match-detail.js +1 -0
  547. package/dist/reuse/reuse-ranking.d.ts +37 -0
  548. package/dist/reuse/reuse-ranking.d.ts.map +1 -0
  549. package/dist/reuse/reuse-ranking.js +1 -0
  550. package/dist/reuse/reuse-suggestion.d.ts +19 -0
  551. package/dist/reuse/reuse-suggestion.d.ts.map +1 -0
  552. package/dist/reuse/reuse-suggestion.js +1 -0
  553. package/dist/reuse/reuse-symbol-lookup.d.ts +28 -0
  554. package/dist/reuse/reuse-symbol-lookup.d.ts.map +1 -0
  555. package/dist/reuse/reuse-symbol-lookup.js +1 -0
  556. package/dist/reuse/reuse-tokenize.d.ts +11 -0
  557. package/dist/reuse/reuse-tokenize.d.ts.map +1 -0
  558. package/dist/reuse/reuse-tokenize.js +26 -0
  559. package/dist/reuse/score-reuse-name.d.ts +16 -0
  560. package/dist/reuse/score-reuse-name.d.ts.map +1 -0
  561. package/dist/reuse/score-reuse-name.js +35 -0
  562. package/dist/reuse/score-reuse-primitive.d.ts +33 -0
  563. package/dist/reuse/score-reuse-primitive.d.ts.map +1 -0
  564. package/dist/reuse/score-reuse-primitive.js +92 -0
  565. package/dist/review-packet.d.ts +2 -0
  566. package/dist/review-packet.d.ts.map +1 -1
  567. package/dist/review-packet.js +13 -6
  568. package/dist/role-views.d.ts.map +1 -1
  569. package/dist/role-views.js +16 -16
  570. package/dist/routing-recommends-channels.d.ts +24 -0
  571. package/dist/routing-recommends-channels.d.ts.map +1 -0
  572. package/dist/routing-recommends-channels.js +19 -0
  573. package/dist/run-boundary-check.d.ts +118 -0
  574. package/dist/run-boundary-check.d.ts.map +1 -0
  575. package/dist/run-boundary-check.js +592 -0
  576. package/dist/safety-audit.js +1 -1
  577. package/dist/scaffold-coverage.js +1 -1
  578. package/dist/scaffold-pattern-doctor-report.d.ts +19 -0
  579. package/dist/scaffold-pattern-doctor-report.d.ts.map +1 -0
  580. package/dist/scaffold-pattern-doctor-report.js +54 -0
  581. package/dist/scaffold-patterns.d.ts +75 -1
  582. package/dist/scaffold-patterns.d.ts.map +1 -1
  583. package/dist/scaffold-patterns.js +375 -84
  584. package/dist/schema-inventory.d.ts.map +1 -1
  585. package/dist/schema-inventory.js +4 -3
  586. package/dist/search-document-id.d.ts +52 -0
  587. package/dist/search-document-id.d.ts.map +1 -0
  588. package/dist/search-document-id.js +72 -0
  589. package/dist/search-document-prefix.d.ts +7 -0
  590. package/dist/search-document-prefix.d.ts.map +1 -0
  591. package/dist/search-document-prefix.js +1 -0
  592. package/dist/search-index.d.ts.map +1 -1
  593. package/dist/search-index.js +20 -23
  594. package/dist/search-tuning-explain.d.ts +6 -0
  595. package/dist/search-tuning-explain.d.ts.map +1 -1
  596. package/dist/search-tuning-explain.js +19 -17
  597. package/dist/search-tuning-key-probes.d.ts +16 -0
  598. package/dist/search-tuning-key-probes.d.ts.map +1 -0
  599. package/dist/search-tuning-key-probes.js +65 -0
  600. package/dist/search-tuning-key-resolution.d.ts +25 -0
  601. package/dist/search-tuning-key-resolution.d.ts.map +1 -0
  602. package/dist/search-tuning-key-resolution.js +1 -0
  603. package/dist/search-tuning-key-resolver.d.ts +4 -0
  604. package/dist/search-tuning-key-resolver.d.ts.map +1 -0
  605. package/dist/search-tuning-key-resolver.js +107 -0
  606. package/dist/search-tuning-key-status.d.ts +24 -0
  607. package/dist/search-tuning-key-status.d.ts.map +1 -0
  608. package/dist/search-tuning-key-status.js +24 -0
  609. package/dist/search-tuning-lint.d.ts +9 -0
  610. package/dist/search-tuning-lint.d.ts.map +1 -0
  611. package/dist/search-tuning-lint.js +468 -0
  612. package/dist/search-tuning-registry.d.ts +43 -0
  613. package/dist/search-tuning-registry.d.ts.map +1 -1
  614. package/dist/search-tuning-registry.js +214 -49
  615. package/dist/self-audit.d.ts +12 -0
  616. package/dist/self-audit.d.ts.map +1 -1
  617. package/dist/self-audit.js +36 -10
  618. package/dist/self-config-doctor-v2.d.ts +145 -3
  619. package/dist/self-config-doctor-v2.d.ts.map +1 -1
  620. package/dist/self-config-doctor-v2.js +1304 -181
  621. package/dist/self-config-doctor.d.ts +20 -1
  622. package/dist/self-config-doctor.d.ts.map +1 -1
  623. package/dist/self-config-doctor.js +53 -280
  624. package/dist/settled-unit-states.d.ts +9 -0
  625. package/dist/settled-unit-states.d.ts.map +1 -0
  626. package/dist/settled-unit-states.js +14 -0
  627. package/dist/sharkcraft-inspector.d.ts +34 -0
  628. package/dist/sharkcraft-inspector.d.ts.map +1 -1
  629. package/dist/sharkcraft-inspector.js +273 -26
  630. package/dist/spec/spec-evidence.d.ts.map +1 -1
  631. package/dist/spec/spec-evidence.js +14 -20
  632. package/dist/split-identifier.d.ts +21 -0
  633. package/dist/split-identifier.d.ts.map +1 -0
  634. package/dist/split-identifier.js +27 -0
  635. package/dist/start-here.d.ts.map +1 -1
  636. package/dist/start-here.js +1 -2
  637. package/dist/substitute-placeholders.d.ts +8 -0
  638. package/dist/substitute-placeholders.d.ts.map +1 -0
  639. package/dist/substitute-placeholders.js +9 -0
  640. package/dist/symbol-index.d.ts +33 -0
  641. package/dist/symbol-index.d.ts.map +1 -1
  642. package/dist/symbol-index.js +241 -3
  643. package/dist/symbol-member-entry.d.ts +26 -0
  644. package/dist/symbol-member-entry.d.ts.map +1 -0
  645. package/dist/symbol-member-entry.js +1 -0
  646. package/dist/symbol-member-kind.d.ts +14 -0
  647. package/dist/symbol-member-kind.d.ts.map +1 -0
  648. package/dist/symbol-member-kind.js +14 -0
  649. package/dist/task-packet.d.ts.map +1 -1
  650. package/dist/task-packet.js +52 -9
  651. package/dist/task-ranker.d.ts +8 -0
  652. package/dist/task-ranker.d.ts.map +1 -1
  653. package/dist/task-ranker.js +25 -13
  654. package/dist/task-risk.js +1 -1
  655. package/dist/task-routing-hint-registry.d.ts +20 -1
  656. package/dist/task-routing-hint-registry.d.ts.map +1 -1
  657. package/dist/task-routing-hint-registry.js +186 -42
  658. package/dist/template-drift.d.ts.map +1 -1
  659. package/dist/template-drift.js +30 -9
  660. package/dist/template-lint.d.ts.map +1 -1
  661. package/dist/template-lint.js +160 -2
  662. package/dist/term-query.d.ts +10 -0
  663. package/dist/term-query.d.ts.map +1 -0
  664. package/dist/term-query.js +1 -0
  665. package/dist/test-definitions.d.ts +6 -3
  666. package/dist/test-definitions.d.ts.map +1 -1
  667. package/dist/test-runner.d.ts +95 -10
  668. package/dist/test-runner.d.ts.map +1 -1
  669. package/dist/test-runner.js +309 -308
  670. package/dist/tuning-query-tokens.d.ts +29 -0
  671. package/dist/tuning-query-tokens.d.ts.map +1 -0
  672. package/dist/tuning-query-tokens.js +51 -0
  673. package/dist/typecheck-files.d.ts +36 -0
  674. package/dist/typecheck-files.d.ts.map +1 -0
  675. package/dist/typecheck-files.js +158 -0
  676. package/dist/uncertainty.js +1 -1
  677. package/dist/universal-search.d.ts.map +1 -1
  678. package/dist/universal-search.js +5 -3
  679. package/dist/unregistered-exports.d.ts +19 -0
  680. package/dist/unregistered-exports.d.ts.map +1 -0
  681. package/dist/unregistered-exports.js +141 -0
  682. package/dist/unresolvable-reason.d.ts +11 -0
  683. package/dist/unresolvable-reason.d.ts.map +1 -0
  684. package/dist/unresolvable-reason.js +11 -0
  685. package/dist/upgrade-advisor.d.ts.map +1 -1
  686. package/dist/upgrade-advisor.js +16 -9
  687. package/dist/validate-contribution-file.d.ts +4 -0
  688. package/dist/validate-contribution-file.d.ts.map +1 -0
  689. package/dist/validate-contribution-file.js +228 -0
  690. package/dist/why-file.d.ts +3 -0
  691. package/dist/why-file.d.ts.map +1 -1
  692. package/dist/why-file.js +7 -3
  693. package/package.json +17 -17
@@ -1,16 +1,10 @@
1
+ import { AreaKind } from '@shrkcrft/core';
2
+ import type { ISharkCraftConfig } from '@shrkcrft/config';
1
3
  import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
4
+ export { AreaKind };
2
5
  export declare const AREA_MAP_SCHEMA = "sharkcraft.area-map/v1";
3
- export declare enum AreaKind {
4
- Core = "core",
5
- Ui = "ui",
6
- App = "app",
7
- Api = "api",
8
- Tests = "tests",
9
- Docs = "docs",
10
- Infra = "infra",
11
- Generated = "generated",
12
- Unknown = "unknown"
13
- }
6
+ /** Below this share of classified files the map reports itself `degraded` (config: `areaMap.minClassificationRate`). */
7
+ export declare const DEFAULT_MIN_CLASSIFICATION_RATE = 0.5;
14
8
  export interface IAreaMapEntry {
15
9
  id: string;
16
10
  kind: AreaKind;
@@ -31,8 +25,59 @@ export interface IAreaMap {
31
25
  projectRoot: string;
32
26
  areas: readonly IAreaMapEntry[];
33
27
  unclassifiedFiles: number;
28
+ /** Files the map walked. `classifiedFiles + unclassifiedFiles === totalFiles`. */
29
+ totalFiles: number;
30
+ classifiedFiles: number;
31
+ /** `classifiedFiles / totalFiles` (0..1; 0 when nothing was walked). */
32
+ classificationRate: number;
33
+ /** The rate `degraded` is judged against. */
34
+ minClassificationRate: number;
35
+ /**
36
+ * True when fewer files classified than `minClassificationRate`. Every view
37
+ * derived from the map (impact, review packets, the report site) inherits
38
+ * the blind spot, so it reports this instead of silently understating.
39
+ */
40
+ degraded: boolean;
41
+ /** The first unclassified paths, sorted — what `areaMap.patterns` should cover. */
42
+ unclassifiedSample: readonly string[];
43
+ /** Which pattern tables classified: the built-in layout table, project config, or both. */
44
+ patternSource: 'built-in' | 'config' | 'config+built-in';
45
+ }
46
+ /** How one file classified, and which table decided. */
47
+ export interface IAreaClassification {
48
+ readonly kind: AreaKind;
49
+ /** The project pattern's `id`, when a config pattern with one matched. */
50
+ readonly id?: string;
51
+ readonly source: 'config' | 'built-in' | 'none';
34
52
  }
53
+ type AreaMapConfig = NonNullable<ISharkCraftConfig['areaMap']>;
54
+ /**
55
+ * THE file → area classifier. The area map, impact's target attribution and
56
+ * the changes summary's project-declared areas all go through it, so a
57
+ * project pattern means the same thing everywhere.
58
+ *
59
+ * Project patterns (`areaMap.patterns`) run FIRST, in declared order; then the
60
+ * built-in layout table, unless `replaceDefaults` (or `builtIns: false`, for a
61
+ * caller that only wants the project's own taxonomy).
62
+ */
63
+ export declare function createAreaClassifier(config?: AreaMapConfig | null, options?: {
64
+ readonly builtIns?: boolean;
65
+ }): (file: string) => IAreaClassification;
66
+ /**
67
+ * THE area id of a classified file: `<kind>:<pattern id | package or top segment>`.
68
+ *
69
+ * `buildAreaMap` keys its entries with it, and every view asking "which area
70
+ * is this file in" (impact's affected areas, `core-area`, boundary risks)
71
+ * classifies the file and looks this id up. A prefix match on an entry's
72
+ * `paths` cannot answer it: `paths` holds only the top segment, so a config
73
+ * pattern for `libs/<group>/core/**` made EVERY `libs/…` file look core.
74
+ */
75
+ export declare function areaIdOf(classification: IAreaClassification, file: string): string;
35
76
  export declare function buildAreaMap(inspection: ISharkcraftInspection): IAreaMap;
77
+ /** `12.5%` — one formatting of a classification rate for every renderer. */
78
+ export declare function formatClassificationRate(rate: number): string;
79
+ /** The loud line a degraded map earns — one wording across text, markdown and HTML. */
80
+ export declare function areaMapDegradedLine(map: IAreaMap): string | undefined;
36
81
  export declare function renderAreaMapText(map: IAreaMap): string;
37
82
  export declare function renderAreaMapMarkdown(map: IAreaMap): string;
38
83
  //# sourceMappingURL=area-map.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"area-map.d.ts","sourceRoot":"","sources":["../src/area-map.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAExD,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;IACf,SAAS,cAAc;IACvB,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAoED,wBAAgB,YAAY,CAAC,UAAU,EAAE,qBAAqB,GAAG,QAAQ,CA4ExE;AA0BD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CASvD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAc3D"}
1
+ {"version":3,"file":"area-map.d.ts","sourceRoot":"","sources":["../src/area-map.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAIvE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAEpB,eAAO,MAAM,eAAe,2BAA2B,CAAC;AAExD,wHAAwH;AACxH,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAKnD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,wEAAwE;IACxE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,6CAA6C;IAC7C,qBAAqB,EAAE,MAAM,CAAC;IAC9B;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,mFAAmF;IACnF,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,2FAA2F;IAC3F,aAAa,EAAE,UAAU,GAAG,QAAQ,GAAG,iBAAiB,CAAC;CAC1D;AAED,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;CACjD;AAED,KAAK,aAAa,GAAG,WAAW,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;AAsD/D;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,EAC7B,OAAO,GAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5C,CAAC,IAAI,EAAE,MAAM,KAAK,mBAAmB,CAoBvC;AASD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,cAAc,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAElF;AAOD,wBAAgB,YAAY,CAAC,UAAU,EAAE,qBAAqB,GAAG,QAAQ,CA0FxE;AA0BD,4EAA4E;AAC5E,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAMrE;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAmBvD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CA0B3D"}
package/dist/area-map.js CHANGED
@@ -1,18 +1,15 @@
1
1
  import { existsSync, readdirSync, statSync } from 'node:fs';
2
2
  import * as nodePath from 'node:path';
3
+ import { AreaKind } from '@shrkcrft/core';
4
+ import { globToRegex } from '@shrkcrft/boundaries';
5
+ // The enum moved to core (so the config schema can validate a pattern's kind
6
+ // against it); re-exported here so every existing import keeps working.
7
+ export { AreaKind };
3
8
  export const AREA_MAP_SCHEMA = 'sharkcraft.area-map/v1';
4
- export var AreaKind;
5
- (function (AreaKind) {
6
- AreaKind["Core"] = "core";
7
- AreaKind["Ui"] = "ui";
8
- AreaKind["App"] = "app";
9
- AreaKind["Api"] = "api";
10
- AreaKind["Tests"] = "tests";
11
- AreaKind["Docs"] = "docs";
12
- AreaKind["Infra"] = "infra";
13
- AreaKind["Generated"] = "generated";
14
- AreaKind["Unknown"] = "unknown";
15
- })(AreaKind || (AreaKind = {}));
9
+ /** Below this share of classified files the map reports itself `degraded` (config: `areaMap.minClassificationRate`). */
10
+ export const DEFAULT_MIN_CLASSIFICATION_RATE = 0.5;
11
+ /** Unclassified paths named in the map — actionable, not a count alone. */
12
+ const UNCLASSIFIED_SAMPLE = 20;
16
13
  const AREA_PATTERNS = [
17
14
  { kind: AreaKind.Core, match: [/^packages\/core(\/|$)/, /^src\/core(\/|$)/], idHint: 'core' },
18
15
  { kind: AreaKind.Ui, match: [/^packages\/(ui|dashboard|web)(\/|$)/, /^(src|app)\/(ui|components|pages|views)(\/|$)/], idHint: 'ui' },
@@ -67,12 +64,36 @@ function walk(root, base = '') {
67
64
  }
68
65
  return out;
69
66
  }
70
- function classify(file) {
71
- for (const p of AREA_PATTERNS) {
72
- if (p.match.some((re) => re.test(file)))
73
- return p.kind;
74
- }
75
- return AreaKind.Unknown;
67
+ /**
68
+ * THE file area classifier. The area map, impact's target attribution and
69
+ * the changes summary's project-declared areas all go through it, so a
70
+ * project pattern means the same thing everywhere.
71
+ *
72
+ * Project patterns (`areaMap.patterns`) run FIRST, in declared order; then the
73
+ * built-in layout table, unless `replaceDefaults` (or `builtIns: false`, for a
74
+ * caller that only wants the project's own taxonomy).
75
+ */
76
+ export function createAreaClassifier(config, options = {}) {
77
+ const project = (config?.patterns ?? []).map((p) => ({
78
+ kind: p.kind,
79
+ ...(p.id ? { id: p.id } : {}),
80
+ matchers: p.match.map((g) => globToRegex(g)),
81
+ }));
82
+ const useBuiltIns = options.builtIns !== false && config?.replaceDefaults !== true;
83
+ return (file) => {
84
+ for (const p of project) {
85
+ if (p.matchers.some((re) => re.test(file))) {
86
+ return { kind: p.kind, ...(p.id ? { id: p.id } : {}), source: 'config' };
87
+ }
88
+ }
89
+ if (useBuiltIns) {
90
+ for (const p of AREA_PATTERNS) {
91
+ if (p.match.some((re) => re.test(file)))
92
+ return { kind: p.kind, source: 'built-in' };
93
+ }
94
+ }
95
+ return { kind: AreaKind.Unknown, source: 'none' };
96
+ };
76
97
  }
77
98
  function packageOrTopSegment(file) {
78
99
  const segs = file.split('/');
@@ -82,20 +103,39 @@ function packageOrTopSegment(file) {
82
103
  return `apps/${segs[1]}`;
83
104
  return segs[0] ?? '';
84
105
  }
106
+ /**
107
+ * THE area id of a classified file: `<kind>:<pattern id | package or top segment>`.
108
+ *
109
+ * `buildAreaMap` keys its entries with it, and every view asking "which area
110
+ * is this file in" (impact's affected areas, `core-area`, boundary risks)
111
+ * classifies the file and looks this id up. A prefix match on an entry's
112
+ * `paths` cannot answer it: `paths` holds only the top segment, so a config
113
+ * pattern for `libs/<group>/core/**` made EVERY `libs/…` file look core.
114
+ */
115
+ export function areaIdOf(classification, file) {
116
+ return `${classification.kind}:${classification.id ?? packageOrTopSegment(file)}`;
117
+ }
118
+ function patternSourceOf(config) {
119
+ if ((config?.patterns?.length ?? 0) === 0)
120
+ return config?.replaceDefaults === true ? 'config' : 'built-in';
121
+ return config?.replaceDefaults === true ? 'config' : 'config+built-in';
122
+ }
85
123
  export function buildAreaMap(inspection) {
86
124
  const root = inspection.projectRoot;
125
+ const config = inspection.config?.areaMap;
126
+ const classify = createAreaClassifier(config);
87
127
  const allFiles = existsSync(root) ? walk(root) : [];
88
128
  const byKey = new Map();
89
- let unclassified = 0;
129
+ const unclassifiedPaths = [];
90
130
  for (const f of allFiles) {
91
- const kind = classify(f);
92
- if (kind === AreaKind.Unknown)
93
- unclassified += 1;
131
+ const c = classify(f);
132
+ if (c.kind === AreaKind.Unknown)
133
+ unclassifiedPaths.push(f);
94
134
  const seg = packageOrTopSegment(f);
95
- const key = `${kind}:${seg}`;
135
+ const key = areaIdOf(c, f);
96
136
  let entry = byKey.get(key);
97
137
  if (!entry) {
98
- entry = { kind, paths: new Set(), fileCount: 0 };
138
+ entry = { kind: c.kind, paths: new Set(), fileCount: 0 };
99
139
  byKey.set(key, entry);
100
140
  }
101
141
  entry.paths.add(seg);
@@ -134,11 +174,23 @@ export function buildAreaMap(inspection) {
134
174
  });
135
175
  }
136
176
  areas.sort((a, b) => b.fileCount - a.fileCount);
177
+ const totalFiles = allFiles.length;
178
+ const unclassifiedFiles = unclassifiedPaths.length;
179
+ const classifiedFiles = totalFiles - unclassifiedFiles;
180
+ const classificationRate = totalFiles === 0 ? 0 : Math.round((classifiedFiles / totalFiles) * 10_000) / 10_000;
181
+ const minClassificationRate = config?.minClassificationRate ?? DEFAULT_MIN_CLASSIFICATION_RATE;
137
182
  return {
138
183
  schema: AREA_MAP_SCHEMA,
139
184
  projectRoot: root,
140
185
  areas,
141
- unclassifiedFiles: unclassified,
186
+ unclassifiedFiles,
187
+ totalFiles,
188
+ classifiedFiles,
189
+ classificationRate,
190
+ minClassificationRate,
191
+ degraded: totalFiles > 0 && classificationRate < minClassificationRate,
192
+ unclassifiedSample: [...unclassifiedPaths].sort().slice(0, UNCLASSIFIED_SAMPLE),
193
+ patternSource: patternSourceOf(config),
142
194
  };
143
195
  }
144
196
  function stripGlob(s) {
@@ -164,9 +216,28 @@ function computeRiskScore(input) {
164
216
  score -= 10;
165
217
  return Math.max(0, Math.min(100, 30 + score));
166
218
  }
219
+ /** `12.5%` — one formatting of a classification rate for every renderer. */
220
+ export function formatClassificationRate(rate) {
221
+ return `${(rate * 100).toFixed(1)}%`;
222
+ }
223
+ /** The loud line a degraded map earns — one wording across text, markdown and HTML. */
224
+ export function areaMapDegradedLine(map) {
225
+ if (!map.degraded)
226
+ return undefined;
227
+ return (`area attribution degraded — ${formatClassificationRate(map.classificationRate)} of files classified ` +
228
+ `(below ${formatClassificationRate(map.minClassificationRate)}); add areaMap.patterns to sharkcraft.config.ts`);
229
+ }
167
230
  export function renderAreaMapText(map) {
168
231
  const lines = [];
169
232
  lines.push(`Area map (${map.areas.length} areas, ${map.unclassifiedFiles} unclassified files)`);
233
+ lines.push(` classified ${map.classifiedFiles}/${map.totalFiles} (${formatClassificationRate(map.classificationRate)}) · patterns: ${map.patternSource}`);
234
+ const degraded = areaMapDegradedLine(map);
235
+ if (degraded) {
236
+ lines.push(` ! ${degraded}`);
237
+ if (map.unclassifiedSample.length > 0) {
238
+ lines.push(` unclassified (first ${map.unclassifiedSample.length}): ${map.unclassifiedSample.join(', ')}`);
239
+ }
240
+ }
170
241
  for (const a of map.areas.slice(0, 50)) {
171
242
  lines.push(` ${a.kind.padEnd(10)} ${String(a.fileCount).padStart(5)} files paths=${a.paths.join(', ')} risk=${a.riskScore}`);
172
243
  }
@@ -178,6 +249,16 @@ export function renderAreaMapMarkdown(map) {
178
249
  lines.push('');
179
250
  lines.push(`Total areas: **${map.areas.length}** — unclassified files: ${map.unclassifiedFiles}.`);
180
251
  lines.push('');
252
+ lines.push(`Classified: **${map.classifiedFiles}/${map.totalFiles}** (${formatClassificationRate(map.classificationRate)}) · patterns: ${map.patternSource}.`);
253
+ const degraded = areaMapDegradedLine(map);
254
+ if (degraded) {
255
+ lines.push('');
256
+ lines.push(`> **Warning:** ${degraded}.`);
257
+ if (map.unclassifiedSample.length > 0) {
258
+ lines.push(`> Unclassified (first ${map.unclassifiedSample.length}): ${map.unclassifiedSample.map((p) => `\`${p}\``).join(', ')}`);
259
+ }
260
+ }
261
+ lines.push('');
181
262
  lines.push('| Kind | Files | Paths | Boundary rules | Risk |');
182
263
  lines.push('| --- | ---: | --- | ---: | ---: |');
183
264
  for (const a of map.areas) {
@@ -0,0 +1,21 @@
1
+ import { type IUnitLiveness } from '@shrkcrft/core';
2
+ import type { IAssetDoctorFlags } from './i-asset-doctor-flags.js';
3
+ /**
4
+ * THE proposal of every asset doctor (round 13): `registrations doctor`,
5
+ * `scaffolds doctor`, `search tuning doctor`, `self-config doctor|report`, and
6
+ * MCP `get_scaffold_pattern_doctor` / `get_self_config_doctor` — so a CLI verb
7
+ * and its MCP twin cannot propose different exits over the same report.
8
+ *
9
+ * 1 on an error, on a warning under `--strict`, or on a selector unit THE
10
+ * `--fail-on-dead-units` predicate (`selectorUnitFails`) fails — an unmarked
11
+ * dead unit, or a stale LOCAL `expectEmpty` marker; a pack's stale marker is
12
+ * INFO and never fails the consumer, and an intended-empty unit never fails.
13
+ * Else 0. Settle the proposal against the doctor's coverage (`settleVerdict`):
14
+ * a Coverage-weight dead or unproven unit turns 0 into 2 whatever the flags.
15
+ */
16
+ export declare function assetDoctorProposedExit(found: {
17
+ readonly errors: number;
18
+ readonly warnings: number;
19
+ readonly units: readonly Pick<IUnitLiveness, 'state' | 'mark'>[];
20
+ }, flags: IAssetDoctorFlags): 0 | 1;
21
+ //# sourceMappingURL=asset-doctor-proposed-exit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-doctor-proposed-exit.d.ts","sourceRoot":"","sources":["../src/asset-doctor-proposed-exit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE;IACL,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;CAClE,EACD,KAAK,EAAE,iBAAiB,GACvB,CAAC,GAAG,CAAC,CAKP"}
@@ -0,0 +1,22 @@
1
+ import { selectorUnitFails } from '@shrkcrft/core';
2
+ /**
3
+ * THE proposal of every asset doctor (round 13): `registrations doctor`,
4
+ * `scaffolds doctor`, `search tuning doctor`, `self-config doctor|report`, and
5
+ * MCP `get_scaffold_pattern_doctor` / `get_self_config_doctor` — so a CLI verb
6
+ * and its MCP twin cannot propose different exits over the same report.
7
+ *
8
+ * 1 on an error, on a warning under `--strict`, or on a selector unit THE
9
+ * `--fail-on-dead-units` predicate (`selectorUnitFails`) fails — an unmarked
10
+ * dead unit, or a stale LOCAL `expectEmpty` marker; a pack's stale marker is
11
+ * INFO and never fails the consumer, and an intended-empty unit never fails.
12
+ * Else 0. Settle the proposal against the doctor's coverage (`settleVerdict`):
13
+ * a Coverage-weight dead or unproven unit turns 0 into 2 whatever the flags.
14
+ */
15
+ export function assetDoctorProposedExit(found, flags) {
16
+ if (found.errors > 0)
17
+ return 1;
18
+ if (flags.strict && found.warnings > 0)
19
+ return 1;
20
+ const unitFlags = { failOnDeadUnits: flags.failOnDeadUnits, strict: flags.strict, strictPromotesWarnings: false };
21
+ return found.units.some((u) => selectorUnitFails(u, unitFlags)) ? 1 : 0;
22
+ }
@@ -187,7 +187,7 @@ export function renderProvenanceMarkdown(report) {
187
187
  lines.push(`Total entries: ${report.total}`);
188
188
  lines.push('');
189
189
  if (!report.ledgerExists) {
190
- lines.push('> No provenance ledger yet. Run any `shrk knowledge author` / `shrk pack author` preview to start one.');
190
+ lines.push('> No provenance ledger yet. Run any `shrk knowledge add --write-preview` (or update / remove) or `shrk pack author preview --write-preview` to start one.');
191
191
  lines.push('');
192
192
  return lines.join('\n');
193
193
  }
@@ -43,12 +43,35 @@ export interface IChangedScopeFilterResult<TViolation extends IBoundaryLikeViola
43
43
  includedViolations: ReadonlyArray<TViolation>;
44
44
  ignoredLegacyCount: number;
45
45
  ignoredLegacyByRule: Readonly<Record<string, number>>;
46
+ /**
47
+ * Violations included because their RULE was escalated — its definition (or
48
+ * the config / alias map it is evaluated under) changed, so every violation
49
+ * it produces is new to this changeset, whatever file it sits in.
50
+ */
51
+ escalatedCount?: number;
52
+ }
53
+ /** Extra inputs to {@link filterViolationsToChangedScope}. */
54
+ export interface IChangedScopeFilterOptions {
55
+ /**
56
+ * Rules whose violations are included regardless of their file (round 11,
57
+ * 6.3 / closing#d). A rule edit can create violations only in UNCHANGED
58
+ * files — the filter used to file every one of them as "legacy", so
59
+ * `--changed-only` and `finish` read green over the violation the edit just
60
+ * introduced. The caller computes the set with
61
+ * `resolveBoundaryRuleInvalidation`.
62
+ */
63
+ readonly escalatedRuleIds?: ReadonlySet<string> | readonly string[];
64
+ /** A changed-file set the caller already resolved — skips a second git call. */
65
+ readonly resolved?: {
66
+ readonly mode: ChangedScopeMode;
67
+ readonly files: readonly string[];
68
+ };
46
69
  }
47
70
  export declare function resolveChangedFiles(opts: IChangedScopeOptions): {
48
71
  mode: ChangedScopeMode;
49
72
  files: string[];
50
73
  };
51
- export declare function filterViolationsToChangedScope<TViolation extends IBoundaryLikeViolation>(violations: ReadonlyArray<TViolation>, opts: IChangedScopeOptions): IChangedScopeFilterResult<TViolation>;
74
+ export declare function filterViolationsToChangedScope<TViolation extends IBoundaryLikeViolation>(violations: ReadonlyArray<TViolation>, opts: IChangedScopeOptions, filterOptions?: IChangedScopeFilterOptions): IChangedScopeFilterResult<TViolation>;
52
75
  export interface IChangedBoundaryReport {
53
76
  schema: 'sharkcraft.changed-boundary-report/v1';
54
77
  mode: ChangedScopeMode;
@@ -1 +1 @@
1
- {"version":3,"file":"boundaries-changed-only.d.ts","sourceRoot":"","sources":["../src/boundaries-changed-only.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,oBAAY,gBAAgB;IAC1B,WAAW,iBAAiB;IAC5B,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B,gEAAgE;IAChE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB,CAAC,UAAU,SAAS,sBAAsB;IAClF,IAAI,EAAE,gBAAgB,CAAC;IACvB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,kBAAkB,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvD;AAWD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG;IAC/D,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAkBA;AAED,wBAAgB,8BAA8B,CAAC,UAAU,SAAS,sBAAsB,EACtF,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,EACrC,IAAI,EAAE,oBAAoB,GACzB,yBAAyB,CAAC,UAAU,CAAC,CAiCvC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,uCAAuC,CAAC;IAChD,IAAI,EAAE,gBAAgB,CAAC;IACvB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAC1D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvD;AAED,wBAAgB,0BAA0B,CAAC,UAAU,SAAS,sBAAsB,EAClF,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,EACrC,IAAI,EAAE,oBAAoB,GACzB,sBAAsB,CAWxB"}
1
+ {"version":3,"file":"boundaries-changed-only.d.ts","sourceRoot":"","sources":["../src/boundaries-changed-only.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,oBAAY,gBAAgB;IAC1B,WAAW,iBAAiB;IAC5B,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9B,gEAAgE;IAChE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,yBAAyB,CAAC,UAAU,SAAS,sBAAsB;IAClF,IAAI,EAAE,gBAAgB,CAAC;IACvB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,kBAAkB,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAC9C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACtD;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,8DAA8D;AAC9D,MAAM,WAAW,0BAA0B;IACzC;;;;;;;OAOG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,MAAM,EAAE,CAAC;IACpE,gFAAgF;IAChF,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;CAC5F;AAWD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG;IAC/D,IAAI,EAAE,gBAAgB,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAkBA;AAED,wBAAgB,8BAA8B,CAAC,UAAU,SAAS,sBAAsB,EACtF,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,EACrC,IAAI,EAAE,oBAAoB,EAC1B,aAAa,GAAE,0BAA+B,GAC7C,yBAAyB,CAAC,UAAU,CAAC,CA2CvC;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,uCAAuC,CAAC;IAChD,IAAI,EAAE,gBAAgB,CAAC;IACvB,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,aAAa,CAAC,sBAAsB,CAAC,CAAC;IAC1D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACvD;AAED,wBAAgB,0BAA0B,CAAC,UAAU,SAAS,sBAAsB,EAClF,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,EACrC,IAAI,EAAE,oBAAoB,GACzB,sBAAsB,CAWxB"}
@@ -50,12 +50,21 @@ export function resolveChangedFiles(opts) {
50
50
  const out = getChangedFiles(opts.projectRoot, { includeWorktree: true });
51
51
  return { mode: ChangedScopeMode.ChangedOnly, files: out };
52
52
  }
53
- export function filterViolationsToChangedScope(violations, opts) {
54
- const { mode, files } = resolveChangedFiles(opts);
53
+ export function filterViolationsToChangedScope(violations, opts, filterOptions = {}) {
54
+ const { mode, files } = filterOptions.resolved ?? resolveChangedFiles(opts);
55
55
  const changedSet = new Set(files.map((f) => f.split(/[\\/]/).join('/')));
56
+ const escalated = new Set(filterOptions.escalatedRuleIds ?? []);
56
57
  const included = [];
57
58
  const ignoredByRule = {};
59
+ let escalatedCount = 0;
58
60
  for (const v of violations) {
61
+ // A rule whose definition changed produced this violation in THIS
62
+ // changeset, whatever file it sits in — never "legacy".
63
+ if (escalated.has(v.ruleId)) {
64
+ included.push(v);
65
+ escalatedCount += 1;
66
+ continue;
67
+ }
59
68
  const candidate = v.file ?? v.fromFile ?? '';
60
69
  const norm = normalisePath(candidate, opts.projectRoot);
61
70
  if (changedSet.has(norm)) {
@@ -81,6 +90,7 @@ export function filterViolationsToChangedScope(violations, opts) {
81
90
  includedViolations: included,
82
91
  ignoredLegacyCount,
83
92
  ignoredLegacyByRule: ignoredByRule,
93
+ ...(escalated.size > 0 ? { escalatedCount } : {}),
84
94
  };
85
95
  }
86
96
  export function buildChangedBoundaryReport(violations, opts) {
@@ -0,0 +1,40 @@
1
+ import type { IBoundaryRule, IImportScanResult } from '@shrkcrft/boundaries';
2
+ import type { ChangedScopeMode, IChangedScopeOptions } from './boundaries-changed-only.js';
3
+ import type { IBoundaryLoadIssue } from './boundary-load-issue.model.js';
4
+ /** Inputs to `runBoundaryCheck` — every boundary surface passes the same ones. */
5
+ export interface IRunBoundaryCheckOptions {
6
+ /** `--rule <id>`: evaluate only this rule. An unknown id is a usage error (exit 3). */
7
+ readonly onlyRuleId?: string;
8
+ /**
9
+ * `--rule-file <path>`: evaluate ONLY these rules (loaded by the CLI through
10
+ * the same loader `boundaryFiles` use). Never reachable from MCP — loading a
11
+ * rule file executes it.
12
+ */
13
+ readonly ruleFile?: {
14
+ readonly path: string;
15
+ readonly rules: readonly IBoundaryRule[];
16
+ readonly loadIssues?: readonly IBoundaryLoadIssue[];
17
+ };
18
+ /** Changed-scope mode: report violations the changeset introduced (plus escalated rules). */
19
+ readonly changedScope?: IChangedScopeOptions;
20
+ /** A changed-file set the caller already resolved (finish). Takes precedence over `changedScope` resolution. */
21
+ readonly changed?: {
22
+ readonly mode: ChangedScopeMode;
23
+ readonly files: readonly string[];
24
+ };
25
+ /** Read imports from raw text, comments included (`--include-comments`). */
26
+ readonly includeComments?: boolean;
27
+ /**
28
+ * Escalate rules whose definition the changeset touched (default `true`).
29
+ * `false` (`--no-rule-escalation`) keeps them out — and the run then reports
30
+ * those rules UNEXAMINED, so it can never read as a pass.
31
+ */
32
+ readonly escalate?: boolean;
33
+ /** `--fail-on-dead-units`: a dead selector unit fails the run (1). */
34
+ readonly failOnDeadUnits?: boolean;
35
+ /** `--strict`: warning-severity violations fail too. */
36
+ readonly strict?: boolean;
37
+ /** Reuse an existing scan (the rule-set diff scans once for both sides). */
38
+ readonly scan?: IImportScanResult;
39
+ }
40
+ //# sourceMappingURL=boundary-check-options.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-check-options.model.d.ts","sourceRoot":"","sources":["../src/boundary-check-options.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAC3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,kFAAkF;AAClF,MAAM,WAAW,wBAAwB;IACvC,uFAAuF;IACvF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;QACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;KACrD,CAAC;IACF,6FAA6F;IAC7F,QAAQ,CAAC,YAAY,CAAC,EAAE,oBAAoB,CAAC;IAC7C,gHAAgH;IAChH,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;IAC1F,4EAA4E;IAC5E,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IACnC,wDAAwD;IACxD,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,IAAI,CAAC,EAAE,iBAAiB,CAAC;CACnC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,89 @@
1
+ import type { IVerdictCoverage } from '@shrkcrft/core';
2
+ import type { IBoundaryDeadUnit, IBoundaryUnitFinding, IBoundarySuppressedViolation, IBoundaryViolation, IEvaluateResult, IImportScanResult } from '@shrkcrft/boundaries';
3
+ import type { ChangedScopeMode } from './boundaries-changed-only.js';
4
+ import type { IBoundaryConfigurationStatus } from './boundary-configuration-status.model.js';
5
+ import type { IBoundaryLoadIssue } from './boundary-load-issue.model.js';
6
+ import type { IBoundaryRuleCheck } from './boundary-rule-check.model.js';
7
+ import type { IBoundaryRuleInvalidation } from './boundary-rule-invalidation.model.js';
8
+ import type { IBoundaryStaleExceptionFinding } from './boundary-stale-exception-finding.model.js';
9
+ /**
10
+ * The ONE boundary-check answer (round 11, C#one-boundary-check-authority):
11
+ * `check boundaries`, finish's boundaries gate, `diff-check` and both MCP
12
+ * boundary tools read this, so the alias map, the escalation, the exemptions
13
+ * and the verdict cannot differ between them.
14
+ */
15
+ export interface IBoundaryCheckResult {
16
+ readonly schema: 'sharkcraft.boundary-check/v1';
17
+ readonly projectRoot: string;
18
+ readonly ruleSource: {
19
+ readonly kind: 'registry';
20
+ } | {
21
+ readonly kind: 'rule-file';
22
+ readonly path: string;
23
+ };
24
+ /** Rules in the source (registry or rule file), before `--rule`. */
25
+ readonly rulesConfigured: number;
26
+ /** Rules this run is accountable for: after `--rule`, and in changed mode the governing + escalated ones. */
27
+ readonly selectedRuleIds: readonly string[];
28
+ readonly scan: IImportScanResult;
29
+ /** The full evaluation over the whole scan (always — escalation and stale exceptions need it). */
30
+ readonly evaluation: IEvaluateResult;
31
+ readonly rules: readonly IBoundaryRuleCheck[];
32
+ /** Reported violations (in changed mode: introduced by the changeset or by an escalated rule). */
33
+ readonly violations: readonly IBoundaryViolation[];
34
+ readonly counts: {
35
+ readonly error: number;
36
+ readonly warning: number;
37
+ readonly info: number;
38
+ };
39
+ readonly suppressed: readonly IBoundarySuppressedViolation[];
40
+ readonly staleExceptions: readonly IBoundaryStaleExceptionFinding[];
41
+ /** The selected rules' UNMARKED dead selector units — each rule's settled `.dead`. */
42
+ readonly deadUnits: readonly IBoundaryDeadUnit[];
43
+ /**
44
+ * Units marked `{ pattern, expectEmpty: true }` whose target does not exist
45
+ * (round 13): accepted — printed `accepted by expectEmpty: …` at exit 0 —
46
+ * and never a failure, under any flag.
47
+ */
48
+ readonly intendedEmpty: readonly IBoundaryUnitFinding[];
49
+ /**
50
+ * Units marked `expectEmpty` whose target now exists (round 13): the fence
51
+ * went live and the marker is stale. ✓ withheld; fails only under
52
+ * `--fail-on-dead-units` / `--strict`, and never for a pack marker (INFO).
53
+ */
54
+ readonly wentLive: readonly IBoundaryUnitFinding[];
55
+ /** The units that fail THIS run — core's `selectorUnitFails` under the run's flags. */
56
+ readonly failingUnits: readonly IBoundaryUnitFinding[];
57
+ readonly loadIssues: readonly IBoundaryLoadIssue[];
58
+ readonly configuration?: IBoundaryConfigurationStatus;
59
+ readonly changed?: {
60
+ readonly mode: ChangedScopeMode;
61
+ readonly changedFiles: readonly string[];
62
+ /** Changed SOURCE files (present in the scan) that at least one rule governs. */
63
+ readonly governedFiles: readonly string[];
64
+ readonly ignoredLegacyCount: number;
65
+ readonly ignoredLegacyByRule: Readonly<Record<string, number>>;
66
+ readonly escalation: IBoundaryRuleInvalidation;
67
+ /** Rules escalated in this run (empty under `--no-rule-escalation`). */
68
+ readonly escalatedRuleIds: readonly string[];
69
+ /** Rules that needed escalation but `--no-rule-escalation` kept out — reported unexamined. */
70
+ readonly escalationSuppressed: readonly string[];
71
+ };
72
+ /** Run coverage: rules examined of rules selected. */
73
+ readonly runCoverage: IVerdictCoverage;
74
+ /** The exit this run proposes before settling on coverage (the CLI envelope takes this). */
75
+ readonly proposedExit: number;
76
+ /** Settled with core's shortfall rule — never 0 over an unexamined scope. */
77
+ readonly exitCode: number;
78
+ readonly verdict: 'pass' | 'fail' | 'not-verified' | 'usage-error';
79
+ readonly shortfalls: readonly string[];
80
+ /**
81
+ * The settled acceptances (`<rule>: accepted by expectEmpty: …`) — present
82
+ * only at exit 0, like every acceptance (core `settleVerdict`). Round 13.
83
+ */
84
+ readonly accepted: readonly string[];
85
+ /** Set when `--rule` named no rule (exit 3). */
86
+ readonly unknownRuleId?: string;
87
+ readonly availableRuleIds?: readonly string[];
88
+ }
89
+ //# sourceMappingURL=boundary-check-result.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-check-result.model.d.ts","sourceRoot":"","sources":["../src/boundary-check-result.model.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,4BAA4B,EAC5B,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AAC7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,6CAA6C,CAAC;AAElG;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,8BAA8B,CAAC;IAChD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3G,oEAAoE;IACpE,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,6GAA6G;IAC7G,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,kGAAkG;IAClG,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAC9C,kGAAkG;IAClG,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7F,QAAQ,CAAC,UAAU,EAAE,SAAS,4BAA4B,EAAE,CAAC;IAC7D,QAAQ,CAAC,eAAe,EAAE,SAAS,8BAA8B,EAAE,CAAC;IACpE,sFAAsF;IACtF,QAAQ,CAAC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACjD;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACxD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACnD,uFAAuF;IACvF,QAAQ,CAAC,YAAY,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACvD,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACnD,QAAQ,CAAC,aAAa,CAAC,EAAE,4BAA4B,CAAC;IACtD,QAAQ,CAAC,OAAO,CAAC,EAAE;QACjB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAChC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;QACzC,iFAAiF;QACjF,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;QAC1C,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;QACpC,QAAQ,CAAC,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC;QAC/C,wEAAwE;QACxE,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;QAC7C,8FAA8F;QAC9F,QAAQ,CAAC,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;KAClD,CAAC;IACF,sDAAsD;IACtD,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,4FAA4F;IAC5F,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;IACnE,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,gDAAgD;IAChD,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,38 @@
1
+ import type { ILoadedBoundaryRulesFile } from '@shrkcrft/boundaries';
2
+ import type { IBoundaryConfigurationStatus } from './boundary-configuration-status.model.js';
3
+ import type { IBoundaryLoadIssue } from './boundary-load-issue.model.js';
4
+ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
5
+ /** The conventional local rule file — loaded ONLY when listed in `boundaryFiles`. */
6
+ export declare const DEFAULT_LOCAL_BOUNDARY_FILE = "boundaries.ts";
7
+ /**
8
+ * Classify the local `boundaryFiles` entries — THE code path both the
9
+ * inspector's load loop and {@link describeBoundaryConfiguration} use, so the
10
+ * loader and the diagnostics cannot disagree about which files exist.
11
+ *
12
+ * `unlistedDefault` is set when `sharkcraft/boundaries.ts` exists but no entry
13
+ * points at it: the file an author naturally creates loads nothing until it is
14
+ * listed. It is reported, never auto-loaded — auto-loading would start
15
+ * enforcing rules silently (new exit 1s).
16
+ */
17
+ export declare function classifyLocalBoundaryFiles(sharkcraftDir: string, boundaryFiles: readonly string[]): {
18
+ readonly listed: readonly {
19
+ readonly rel: string;
20
+ readonly abs: string;
21
+ readonly exists: boolean;
22
+ }[];
23
+ readonly unlistedDefault?: string;
24
+ };
25
+ /** A path relative to the project root (`/`-separated), or the absolute path when outside it. */
26
+ export declare function boundaryFileLabel(projectRoot: string, abs: string): string;
27
+ /**
28
+ * The structured load issues one loaded rule file carries — used by the
29
+ * inspector (local + pack files) and `check boundaries --rule-file`, so every
30
+ * origin reports a dropped rule the same way.
31
+ */
32
+ export declare function boundaryLoadIssuesFromFile(loaded: ILoadedBoundaryRulesFile, projectRoot: string, origin: IBoundaryLoadIssue['origin'], packageName?: string): IBoundaryLoadIssue[];
33
+ /**
34
+ * Are boundary rules configured, and if not, why? The one answer every
35
+ * boundary surface renders (round 11, L-1).
36
+ */
37
+ export declare function describeBoundaryConfiguration(inspection: ISharkcraftInspection): IBoundaryConfigurationStatus;
38
+ //# sourceMappingURL=boundary-configuration-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boundary-configuration-status.d.ts","sourceRoot":"","sources":["../src/boundary-configuration-status.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,0CAA0C,CAAC;AAC7F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,qFAAqF;AACrF,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAE3D;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B;IACD,QAAQ,CAAC,MAAM,EAAE,SAAS;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;IACrG,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC,CAQA;AAED,iGAAiG;AACjG,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAI1E;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,wBAAwB,EAChC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC,EACpC,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB,EAAE,CAoBtB;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,UAAU,EAAE,qBAAqB,GAAG,4BAA4B,CA8D7G"}