@shrkcrft/inspector 0.1.0-alpha.2

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 (705) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/dist/acceptance-replay.d.ts +63 -0
  4. package/dist/acceptance-replay.d.ts.map +1 -0
  5. package/dist/acceptance-replay.js +240 -0
  6. package/dist/action-hint-diagnostics.d.ts +32 -0
  7. package/dist/action-hint-diagnostics.d.ts.map +1 -0
  8. package/dist/action-hint-diagnostics.js +133 -0
  9. package/dist/adoption-check.d.ts +28 -0
  10. package/dist/adoption-check.d.ts.map +1 -0
  11. package/dist/adoption-check.js +181 -0
  12. package/dist/adoption-checkpoint.d.ts +97 -0
  13. package/dist/adoption-checkpoint.d.ts.map +1 -0
  14. package/dist/adoption-checkpoint.js +209 -0
  15. package/dist/adoption-merge-preview.d.ts +28 -0
  16. package/dist/adoption-merge-preview.d.ts.map +1 -0
  17. package/dist/adoption-merge-preview.js +254 -0
  18. package/dist/adoption-report-renderer.d.ts +33 -0
  19. package/dist/adoption-report-renderer.d.ts.map +1 -0
  20. package/dist/adoption-report-renderer.js +257 -0
  21. package/dist/adoption-state.d.ts +100 -0
  22. package/dist/adoption-state.d.ts.map +1 -0
  23. package/dist/adoption-state.js +296 -0
  24. package/dist/adoption-three-way.d.ts +46 -0
  25. package/dist/adoption-three-way.d.ts.map +1 -0
  26. package/dist/adoption-three-way.js +181 -0
  27. package/dist/agent-brief.d.ts +77 -0
  28. package/dist/agent-brief.d.ts.map +1 -0
  29. package/dist/agent-brief.js +490 -0
  30. package/dist/agent-contract-gate.d.ts +108 -0
  31. package/dist/agent-contract-gate.d.ts.map +1 -0
  32. package/dist/agent-contract-gate.js +412 -0
  33. package/dist/agent-contract-templates.d.ts +63 -0
  34. package/dist/agent-contract-templates.d.ts.map +1 -0
  35. package/dist/agent-contract-templates.js +346 -0
  36. package/dist/agent-contract.d.ts +65 -0
  37. package/dist/agent-contract.d.ts.map +1 -0
  38. package/dist/agent-contract.js +555 -0
  39. package/dist/agent-handoff.d.ts +123 -0
  40. package/dist/agent-handoff.d.ts.map +1 -0
  41. package/dist/agent-handoff.js +470 -0
  42. package/dist/agent-instructions.d.ts +2 -0
  43. package/dist/agent-instructions.d.ts.map +1 -0
  44. package/dist/agent-instructions.js +21 -0
  45. package/dist/agent-orchestration.d.ts +61 -0
  46. package/dist/agent-orchestration.d.ts.map +1 -0
  47. package/dist/agent-orchestration.js +285 -0
  48. package/dist/agent-task-prep.d.ts +31 -0
  49. package/dist/agent-task-prep.d.ts.map +1 -0
  50. package/dist/agent-task-prep.js +73 -0
  51. package/dist/ai-readiness.d.ts +30 -0
  52. package/dist/ai-readiness.d.ts.map +1 -0
  53. package/dist/ai-readiness.js +279 -0
  54. package/dist/api-report.d.ts +51 -0
  55. package/dist/api-report.d.ts.map +1 -0
  56. package/dist/api-report.js +254 -0
  57. package/dist/apply-dispatch-trace.d.ts +93 -0
  58. package/dist/apply-dispatch-trace.d.ts.map +1 -0
  59. package/dist/apply-dispatch-trace.js +283 -0
  60. package/dist/apply-gate-result.d.ts +52 -0
  61. package/dist/apply-gate-result.d.ts.map +1 -0
  62. package/dist/apply-gate-result.js +44 -0
  63. package/dist/architecture-map.d.ts +118 -0
  64. package/dist/architecture-map.d.ts.map +1 -0
  65. package/dist/architecture-map.js +543 -0
  66. package/dist/area-explore.d.ts +75 -0
  67. package/dist/area-explore.d.ts.map +1 -0
  68. package/dist/area-explore.js +438 -0
  69. package/dist/area-map.d.ts +43 -0
  70. package/dist/area-map.d.ts.map +1 -0
  71. package/dist/area-map.js +197 -0
  72. package/dist/asset-provenance.d.ts +123 -0
  73. package/dist/asset-provenance.d.ts.map +1 -0
  74. package/dist/asset-provenance.js +209 -0
  75. package/dist/barrel-operations.d.ts +45 -0
  76. package/dist/barrel-operations.d.ts.map +1 -0
  77. package/dist/barrel-operations.js +159 -0
  78. package/dist/boundaries-changed-only.d.ts +62 -0
  79. package/dist/boundaries-changed-only.d.ts.map +1 -0
  80. package/dist/boundaries-changed-only.js +97 -0
  81. package/dist/boundary-suggestions.d.ts +20 -0
  82. package/dist/boundary-suggestions.d.ts.map +1 -0
  83. package/dist/boundary-suggestions.js +51 -0
  84. package/dist/bundle-diff.d.ts +98 -0
  85. package/dist/bundle-diff.d.ts.map +1 -0
  86. package/dist/bundle-diff.js +531 -0
  87. package/dist/bundle-replay.d.ts +68 -0
  88. package/dist/bundle-replay.d.ts.map +1 -0
  89. package/dist/bundle-replay.js +273 -0
  90. package/dist/bundle-validate-html.d.ts +11 -0
  91. package/dist/bundle-validate-html.d.ts.map +1 -0
  92. package/dist/bundle-validate-html.js +60 -0
  93. package/dist/change-intent.d.ts +36 -0
  94. package/dist/change-intent.d.ts.map +1 -0
  95. package/dist/change-intent.js +259 -0
  96. package/dist/changed-preflight.d.ts +59 -0
  97. package/dist/changed-preflight.d.ts.map +1 -0
  98. package/dist/changed-preflight.js +358 -0
  99. package/dist/changed-scope.d.ts +112 -0
  100. package/dist/changed-scope.d.ts.map +1 -0
  101. package/dist/changed-scope.js +172 -0
  102. package/dist/changes-summary.d.ts +87 -0
  103. package/dist/changes-summary.d.ts.map +1 -0
  104. package/dist/changes-summary.js +323 -0
  105. package/dist/check-result-v1.d.ts +90 -0
  106. package/dist/check-result-v1.d.ts.map +1 -0
  107. package/dist/check-result-v1.js +335 -0
  108. package/dist/ci-integrity-report.d.ts +38 -0
  109. package/dist/ci-integrity-report.d.ts.map +1 -0
  110. package/dist/ci-integrity-report.js +324 -0
  111. package/dist/ci-permissions-fix.d.ts +38 -0
  112. package/dist/ci-permissions-fix.d.ts.map +1 -0
  113. package/dist/ci-permissions-fix.js +201 -0
  114. package/dist/ci-permissions.d.ts +51 -0
  115. package/dist/ci-permissions.d.ts.map +1 -0
  116. package/dist/ci-permissions.js +431 -0
  117. package/dist/ci-predict.d.ts +42 -0
  118. package/dist/ci-predict.d.ts.map +1 -0
  119. package/dist/ci-predict.js +300 -0
  120. package/dist/ci-scaffold.d.ts +47 -0
  121. package/dist/ci-scaffold.d.ts.map +1 -0
  122. package/dist/ci-scaffold.js +638 -0
  123. package/dist/codemod-assist.d.ts +97 -0
  124. package/dist/codemod-assist.d.ts.map +1 -0
  125. package/dist/codemod-assist.js +261 -0
  126. package/dist/command-recommender.d.ts +25 -0
  127. package/dist/command-recommender.d.ts.map +1 -0
  128. package/dist/command-recommender.js +145 -0
  129. package/dist/command-suggester.d.ts +61 -0
  130. package/dist/command-suggester.d.ts.map +1 -0
  131. package/dist/command-suggester.js +159 -0
  132. package/dist/command-taxonomy.d.ts +38 -0
  133. package/dist/command-taxonomy.d.ts.map +1 -0
  134. package/dist/command-taxonomy.js +164 -0
  135. package/dist/compliance-evidence.d.ts +58 -0
  136. package/dist/compliance-evidence.d.ts.map +1 -0
  137. package/dist/compliance-evidence.js +260 -0
  138. package/dist/compliance-profiles.d.ts +42 -0
  139. package/dist/compliance-profiles.d.ts.map +1 -0
  140. package/dist/compliance-profiles.js +171 -0
  141. package/dist/construct-adoption-diff.d.ts +55 -0
  142. package/dist/construct-adoption-diff.d.ts.map +1 -0
  143. package/dist/construct-adoption-diff.js +331 -0
  144. package/dist/construct-adoption.d.ts +71 -0
  145. package/dist/construct-adoption.d.ts.map +1 -0
  146. package/dist/construct-adoption.js +331 -0
  147. package/dist/construct-inference.d.ts +44 -0
  148. package/dist/construct-inference.d.ts.map +1 -0
  149. package/dist/construct-inference.js +391 -0
  150. package/dist/construct-registry.d.ts +32 -0
  151. package/dist/construct-registry.d.ts.map +1 -0
  152. package/dist/construct-registry.js +198 -0
  153. package/dist/contract-file-rule.d.ts +37 -0
  154. package/dist/contract-file-rule.d.ts.map +1 -0
  155. package/dist/contract-file-rule.js +99 -0
  156. package/dist/contract-template-registry.d.ts +28 -0
  157. package/dist/contract-template-registry.d.ts.map +1 -0
  158. package/dist/contract-template-registry.js +161 -0
  159. package/dist/contradictions.d.ts +52 -0
  160. package/dist/contradictions.d.ts.map +1 -0
  161. package/dist/contradictions.js +391 -0
  162. package/dist/convention-registry.d.ts +44 -0
  163. package/dist/convention-registry.d.ts.map +1 -0
  164. package/dist/convention-registry.js +195 -0
  165. package/dist/coverage-report.d.ts +25 -0
  166. package/dist/coverage-report.d.ts.map +1 -0
  167. package/dist/coverage-report.js +190 -0
  168. package/dist/custom-checks.d.ts +146 -0
  169. package/dist/custom-checks.d.ts.map +1 -0
  170. package/dist/custom-checks.js +260 -0
  171. package/dist/dashboard/dashboard-data.d.ts +59 -0
  172. package/dist/dashboard/dashboard-data.d.ts.map +1 -0
  173. package/dist/dashboard/dashboard-data.js +653 -0
  174. package/dist/dashboard-export.d.ts +67 -0
  175. package/dist/dashboard-export.d.ts.map +1 -0
  176. package/dist/dashboard-export.js +203 -0
  177. package/dist/decision-records.d.ts +47 -0
  178. package/dist/decision-records.d.ts.map +1 -0
  179. package/dist/decision-records.js +255 -0
  180. package/dist/demo-package.d.ts +49 -0
  181. package/dist/demo-package.d.ts.map +1 -0
  182. package/dist/demo-package.js +305 -0
  183. package/dist/demo-script.d.ts +25 -0
  184. package/dist/demo-script.d.ts.map +1 -0
  185. package/dist/demo-script.js +198 -0
  186. package/dist/demo-workflow.d.ts +28 -0
  187. package/dist/demo-workflow.d.ts.map +1 -0
  188. package/dist/demo-workflow.js +178 -0
  189. package/dist/dev-cycle.d.ts +41 -0
  190. package/dist/dev-cycle.d.ts.map +1 -0
  191. package/dist/dev-cycle.js +94 -0
  192. package/dist/dev-session-html.d.ts +13 -0
  193. package/dist/dev-session-html.d.ts.map +1 -0
  194. package/dist/dev-session-html.js +223 -0
  195. package/dist/dev-session-report.d.ts +11 -0
  196. package/dist/dev-session-report.d.ts.map +1 -0
  197. package/dist/dev-session-report.js +206 -0
  198. package/dist/dev-session.d.ts +257 -0
  199. package/dist/dev-session.d.ts.map +1 -0
  200. package/dist/dev-session.js +568 -0
  201. package/dist/diagnostics-suggest.d.ts +17 -0
  202. package/dist/diagnostics-suggest.d.ts.map +1 -0
  203. package/dist/diagnostics-suggest.js +69 -0
  204. package/dist/docs-check.d.ts +40 -0
  205. package/dist/docs-check.d.ts.map +1 -0
  206. package/dist/docs-check.js +221 -0
  207. package/dist/doctor-acknowledgements.d.ts +69 -0
  208. package/dist/doctor-acknowledgements.d.ts.map +1 -0
  209. package/dist/doctor-acknowledgements.js +150 -0
  210. package/dist/doctor-result.d.ts +51 -0
  211. package/dist/doctor-result.d.ts.map +1 -0
  212. package/dist/doctor-result.js +7 -0
  213. package/dist/doctor-suppressions.d.ts +91 -0
  214. package/dist/doctor-suppressions.d.ts.map +1 -0
  215. package/dist/doctor-suppressions.js +238 -0
  216. package/dist/drift-baseline.d.ts +29 -0
  217. package/dist/drift-baseline.d.ts.map +1 -0
  218. package/dist/drift-baseline.js +80 -0
  219. package/dist/drift.d.ts +38 -0
  220. package/dist/drift.d.ts.map +1 -0
  221. package/dist/drift.js +107 -0
  222. package/dist/entrypoint-matrix.d.ts +61 -0
  223. package/dist/entrypoint-matrix.d.ts.map +1 -0
  224. package/dist/entrypoint-matrix.js +221 -0
  225. package/dist/examples-check.d.ts +36 -0
  226. package/dist/examples-check.d.ts.map +1 -0
  227. package/dist/examples-check.js +168 -0
  228. package/dist/execution-graph.d.ts +98 -0
  229. package/dist/execution-graph.d.ts.map +1 -0
  230. package/dist/execution-graph.js +484 -0
  231. package/dist/export-bundle.d.ts +10 -0
  232. package/dist/export-bundle.d.ts.map +1 -0
  233. package/dist/export-bundle.js +90 -0
  234. package/dist/failure-diagnostics.d.ts +63 -0
  235. package/dist/failure-diagnostics.d.ts.map +1 -0
  236. package/dist/failure-diagnostics.js +243 -0
  237. package/dist/feature-bundle.d.ts +111 -0
  238. package/dist/feature-bundle.d.ts.map +1 -0
  239. package/dist/feature-bundle.js +211 -0
  240. package/dist/feedback-actions-v2.d.ts +65 -0
  241. package/dist/feedback-actions-v2.d.ts.map +1 -0
  242. package/dist/feedback-actions-v2.js +183 -0
  243. package/dist/feedback-ingestion.d.ts +96 -0
  244. package/dist/feedback-ingestion.d.ts.map +1 -0
  245. package/dist/feedback-ingestion.js +400 -0
  246. package/dist/fix-preview.d.ts +82 -0
  247. package/dist/fix-preview.d.ts.map +1 -0
  248. package/dist/fix-preview.js +365 -0
  249. package/dist/fuzzy-impact.d.ts +50 -0
  250. package/dist/fuzzy-impact.d.ts.map +1 -0
  251. package/dist/fuzzy-impact.js +446 -0
  252. package/dist/generated-code.d.ts +97 -0
  253. package/dist/generated-code.d.ts.map +1 -0
  254. package/dist/generated-code.js +395 -0
  255. package/dist/git-helpers.d.ts +26 -0
  256. package/dist/git-helpers.d.ts.map +1 -0
  257. package/dist/git-helpers.js +110 -0
  258. package/dist/golden-output.d.ts +33 -0
  259. package/dist/golden-output.d.ts.map +1 -0
  260. package/dist/golden-output.js +92 -0
  261. package/dist/grounding/build-grounding.d.ts +53 -0
  262. package/dist/grounding/build-grounding.d.ts.map +1 -0
  263. package/dist/grounding/build-grounding.js +51 -0
  264. package/dist/grounding/nx-projects.d.ts +29 -0
  265. package/dist/grounding/nx-projects.d.ts.map +1 -0
  266. package/dist/grounding/nx-projects.js +109 -0
  267. package/dist/grounding/validate-extracted-plan.d.ts +20 -0
  268. package/dist/grounding/validate-extracted-plan.d.ts.map +1 -0
  269. package/dist/grounding/validate-extracted-plan.js +127 -0
  270. package/dist/healing-plan.d.ts +33 -0
  271. package/dist/healing-plan.d.ts.map +1 -0
  272. package/dist/healing-plan.js +346 -0
  273. package/dist/helper-registry.d.ts +90 -0
  274. package/dist/helper-registry.d.ts.map +1 -0
  275. package/dist/helper-registry.js +529 -0
  276. package/dist/impact-analysis.d.ts +150 -0
  277. package/dist/impact-analysis.d.ts.map +1 -0
  278. package/dist/impact-analysis.js +697 -0
  279. package/dist/impact-graph-render.d.ts +51 -0
  280. package/dist/impact-graph-render.d.ts.map +1 -0
  281. package/dist/impact-graph-render.js +139 -0
  282. package/dist/impact-graph.d.ts +17 -0
  283. package/dist/impact-graph.d.ts.map +1 -0
  284. package/dist/impact-graph.js +119 -0
  285. package/dist/impact-render.d.ts +22 -0
  286. package/dist/impact-render.d.ts.map +1 -0
  287. package/dist/impact-render.js +413 -0
  288. package/dist/import-graph-analysis.d.ts +28 -0
  289. package/dist/import-graph-analysis.d.ts.map +1 -0
  290. package/dist/import-graph-analysis.js +193 -0
  291. package/dist/import-hygiene.d.ts +93 -0
  292. package/dist/import-hygiene.d.ts.map +1 -0
  293. package/dist/import-hygiene.js +366 -0
  294. package/dist/index.d.ts +223 -0
  295. package/dist/index.d.ts.map +1 -0
  296. package/dist/index.js +233 -0
  297. package/dist/ingest-adoption.d.ts +50 -0
  298. package/dist/ingest-adoption.d.ts.map +1 -0
  299. package/dist/ingest-adoption.js +183 -0
  300. package/dist/ingest-apply.d.ts +80 -0
  301. package/dist/ingest-apply.d.ts.map +1 -0
  302. package/dist/ingest-apply.js +227 -0
  303. package/dist/ingest-body-extractor.d.ts +28 -0
  304. package/dist/ingest-body-extractor.d.ts.map +1 -0
  305. package/dist/ingest-body-extractor.js +129 -0
  306. package/dist/ingest-drafts.d.ts +16 -0
  307. package/dist/ingest-drafts.d.ts.map +1 -0
  308. package/dist/ingest-drafts.js +482 -0
  309. package/dist/inspector-cache.d.ts +41 -0
  310. package/dist/inspector-cache.d.ts.map +1 -0
  311. package/dist/inspector-cache.js +104 -0
  312. package/dist/install-smoke.d.ts +44 -0
  313. package/dist/install-smoke.d.ts.map +1 -0
  314. package/dist/install-smoke.js +31 -0
  315. package/dist/knowledge-authoring.d.ts +151 -0
  316. package/dist/knowledge-authoring.d.ts.map +1 -0
  317. package/dist/knowledge-authoring.js +586 -0
  318. package/dist/knowledge-graph.d.ts +76 -0
  319. package/dist/knowledge-graph.d.ts.map +1 -0
  320. package/dist/knowledge-graph.js +336 -0
  321. package/dist/knowledge-lint.d.ts +97 -0
  322. package/dist/knowledge-lint.d.ts.map +1 -0
  323. package/dist/knowledge-lint.js +302 -0
  324. package/dist/knowledge-rename.d.ts +38 -0
  325. package/dist/knowledge-rename.d.ts.map +1 -0
  326. package/dist/knowledge-rename.js +88 -0
  327. package/dist/knowledge-stale.d.ts +124 -0
  328. package/dist/knowledge-stale.d.ts.map +1 -0
  329. package/dist/knowledge-stale.js +892 -0
  330. package/dist/languages/command-inference.d.ts +27 -0
  331. package/dist/languages/command-inference.d.ts.map +1 -0
  332. package/dist/languages/command-inference.js +214 -0
  333. package/dist/languages/dependency-scan.d.ts +33 -0
  334. package/dist/languages/dependency-scan.d.ts.map +1 -0
  335. package/dist/languages/dependency-scan.js +343 -0
  336. package/dist/languages/index.d.ts +14 -0
  337. package/dist/languages/index.d.ts.map +1 -0
  338. package/dist/languages/index.js +13 -0
  339. package/dist/languages/language-boundaries.d.ts +30 -0
  340. package/dist/languages/language-boundaries.d.ts.map +1 -0
  341. package/dist/languages/language-boundaries.js +176 -0
  342. package/dist/languages/language-cache.d.ts +54 -0
  343. package/dist/languages/language-cache.d.ts.map +1 -0
  344. package/dist/languages/language-cache.js +236 -0
  345. package/dist/languages/language-detection.d.ts +30 -0
  346. package/dist/languages/language-detection.d.ts.map +1 -0
  347. package/dist/languages/language-detection.js +584 -0
  348. package/dist/languages/language-id.d.ts +15 -0
  349. package/dist/languages/language-id.d.ts.map +1 -0
  350. package/dist/languages/language-id.js +15 -0
  351. package/dist/languages/language-runner.d.ts +90 -0
  352. package/dist/languages/language-runner.d.ts.map +1 -0
  353. package/dist/languages/language-runner.js +346 -0
  354. package/dist/languages/polyglot-boundary.d.ts +80 -0
  355. package/dist/languages/polyglot-boundary.d.ts.map +1 -0
  356. package/dist/languages/polyglot-boundary.js +373 -0
  357. package/dist/languages/polyglot-ci.d.ts +25 -0
  358. package/dist/languages/polyglot-ci.d.ts.map +1 -0
  359. package/dist/languages/polyglot-ci.js +278 -0
  360. package/dist/languages/test-impact.d.ts +19 -0
  361. package/dist/languages/test-impact.d.ts.map +1 -0
  362. package/dist/languages/test-impact.js +157 -0
  363. package/dist/loader-diagnostics.d.ts +40 -0
  364. package/dist/loader-diagnostics.d.ts.map +1 -0
  365. package/dist/loader-diagnostics.js +49 -0
  366. package/dist/memory-diff.d.ts +60 -0
  367. package/dist/memory-diff.d.ts.map +1 -0
  368. package/dist/memory-diff.js +302 -0
  369. package/dist/migration-profile-registry.d.ts +26 -0
  370. package/dist/migration-profile-registry.d.ts.map +1 -0
  371. package/dist/migration-profile-registry.js +135 -0
  372. package/dist/migration-readiness.d.ts +101 -0
  373. package/dist/migration-readiness.d.ts.map +1 -0
  374. package/dist/migration-readiness.js +253 -0
  375. package/dist/monorepo-onboarding.d.ts +51 -0
  376. package/dist/monorepo-onboarding.d.ts.map +1 -0
  377. package/dist/monorepo-onboarding.js +235 -0
  378. package/dist/onboarding-adoption-diff.d.ts +53 -0
  379. package/dist/onboarding-adoption-diff.d.ts.map +1 -0
  380. package/dist/onboarding-adoption-diff.js +285 -0
  381. package/dist/onboarding-adoption.d.ts +136 -0
  382. package/dist/onboarding-adoption.d.ts.map +1 -0
  383. package/dist/onboarding-adoption.js +702 -0
  384. package/dist/onboarding-agent-import.d.ts +40 -0
  385. package/dist/onboarding-agent-import.d.ts.map +1 -0
  386. package/dist/onboarding-agent-import.js +114 -0
  387. package/dist/onboarding-diff.d.ts +39 -0
  388. package/dist/onboarding-diff.d.ts.map +1 -0
  389. package/dist/onboarding-diff.js +240 -0
  390. package/dist/onboarding-drafts.d.ts +28 -0
  391. package/dist/onboarding-drafts.d.ts.map +1 -0
  392. package/dist/onboarding-drafts.js +234 -0
  393. package/dist/onboarding-report.d.ts +8 -0
  394. package/dist/onboarding-report.d.ts.map +1 -0
  395. package/dist/onboarding-report.js +239 -0
  396. package/dist/onboarding.d.ts +134 -0
  397. package/dist/onboarding.d.ts.map +1 -0
  398. package/dist/onboarding.js +729 -0
  399. package/dist/ownership.d.ts +38 -0
  400. package/dist/ownership.d.ts.map +1 -0
  401. package/dist/ownership.js +102 -0
  402. package/dist/pack-author-ux.d.ts +58 -0
  403. package/dist/pack-author-ux.d.ts.map +1 -0
  404. package/dist/pack-author-ux.js +219 -0
  405. package/dist/pack-author.d.ts +94 -0
  406. package/dist/pack-author.d.ts.map +1 -0
  407. package/dist/pack-author.js +208 -0
  408. package/dist/pack-compatibility.d.ts +21 -0
  409. package/dist/pack-compatibility.d.ts.map +1 -0
  410. package/dist/pack-compatibility.js +114 -0
  411. package/dist/pack-contributions-inventory.d.ts +121 -0
  412. package/dist/pack-contributions-inventory.d.ts.map +1 -0
  413. package/dist/pack-contributions-inventory.js +732 -0
  414. package/dist/pack-docs.d.ts +11 -0
  415. package/dist/pack-docs.d.ts.map +1 -0
  416. package/dist/pack-docs.js +101 -0
  417. package/dist/pack-doctor.d.ts +50 -0
  418. package/dist/pack-doctor.d.ts.map +1 -0
  419. package/dist/pack-doctor.js +302 -0
  420. package/dist/pack-helper-registry.d.ts +29 -0
  421. package/dist/pack-helper-registry.d.ts.map +1 -0
  422. package/dist/pack-helper-registry.js +144 -0
  423. package/dist/pack-pending.d.ts +68 -0
  424. package/dist/pack-pending.d.ts.map +1 -0
  425. package/dist/pack-pending.js +189 -0
  426. package/dist/pack-quality-score.d.ts +44 -0
  427. package/dist/pack-quality-score.d.ts.map +1 -0
  428. package/dist/pack-quality-score.js +155 -0
  429. package/dist/pack-release-check.d.ts +24 -0
  430. package/dist/pack-release-check.d.ts.map +1 -0
  431. package/dist/pack-release-check.js +258 -0
  432. package/dist/pack-signature-status.d.ts +72 -0
  433. package/dist/pack-signature-status.d.ts.map +1 -0
  434. package/dist/pack-signature-status.js +222 -0
  435. package/dist/pack-symbol-compat.d.ts +60 -0
  436. package/dist/pack-symbol-compat.d.ts.map +1 -0
  437. package/dist/pack-symbol-compat.js +371 -0
  438. package/dist/pack-test-runner.d.ts +59 -0
  439. package/dist/pack-test-runner.d.ts.map +1 -0
  440. package/dist/pack-test-runner.js +211 -0
  441. package/dist/pipeline-command-dictionary.d.ts +2 -0
  442. package/dist/pipeline-command-dictionary.d.ts.map +1 -0
  443. package/dist/pipeline-command-dictionary.js +20 -0
  444. package/dist/pipeline-lint.d.ts +30 -0
  445. package/dist/pipeline-lint.d.ts.map +1 -0
  446. package/dist/pipeline-lint.js +134 -0
  447. package/dist/plan-dependency-graph.d.ts +25 -0
  448. package/dist/plan-dependency-graph.d.ts.map +1 -0
  449. package/dist/plan-dependency-graph.js +195 -0
  450. package/dist/plan-review.d.ts +64 -0
  451. package/dist/plan-review.d.ts.map +1 -0
  452. package/dist/plan-review.js +242 -0
  453. package/dist/plan-simulation.d.ts +108 -0
  454. package/dist/plan-simulation.d.ts.map +1 -0
  455. package/dist/plan-simulation.js +767 -0
  456. package/dist/playbook-registry.d.ts +25 -0
  457. package/dist/playbook-registry.d.ts.map +1 -0
  458. package/dist/playbook-registry.js +148 -0
  459. package/dist/playbook-script.d.ts +60 -0
  460. package/dist/playbook-script.d.ts.map +1 -0
  461. package/dist/playbook-script.js +161 -0
  462. package/dist/plugin-lifecycle-profile-registry.d.ts +52 -0
  463. package/dist/plugin-lifecycle-profile-registry.d.ts.map +1 -0
  464. package/dist/plugin-lifecycle-profile-registry.js +202 -0
  465. package/dist/plugin-lifecycle.d.ts +132 -0
  466. package/dist/plugin-lifecycle.d.ts.map +1 -0
  467. package/dist/plugin-lifecycle.js +477 -0
  468. package/dist/policy-engine.d.ts +101 -0
  469. package/dist/policy-engine.d.ts.map +1 -0
  470. package/dist/policy-engine.js +321 -0
  471. package/dist/policy-override-audit.d.ts +18 -0
  472. package/dist/policy-override-audit.d.ts.map +1 -0
  473. package/dist/policy-override-audit.js +54 -0
  474. package/dist/policy-overrides.d.ts +35 -0
  475. package/dist/policy-overrides.d.ts.map +1 -0
  476. package/dist/policy-overrides.js +84 -0
  477. package/dist/policy-test.d.ts +83 -0
  478. package/dist/policy-test.d.ts.map +1 -0
  479. package/dist/policy-test.js +342 -0
  480. package/dist/pr-summary.d.ts +34 -0
  481. package/dist/pr-summary.d.ts.map +1 -0
  482. package/dist/pr-summary.js +220 -0
  483. package/dist/product-coherence.d.ts +21 -0
  484. package/dist/product-coherence.d.ts.map +1 -0
  485. package/dist/product-coherence.js +158 -0
  486. package/dist/profile-registry.d.ts +42 -0
  487. package/dist/profile-registry.d.ts.map +1 -0
  488. package/dist/profile-registry.js +104 -0
  489. package/dist/project-coupling-audit.d.ts +64 -0
  490. package/dist/project-coupling-audit.d.ts.map +1 -0
  491. package/dist/project-coupling-audit.js +282 -0
  492. package/dist/project-overview.d.ts +14 -0
  493. package/dist/project-overview.d.ts.map +1 -0
  494. package/dist/project-overview.js +27 -0
  495. package/dist/propose-knowledge.d.ts +64 -0
  496. package/dist/propose-knowledge.d.ts.map +1 -0
  497. package/dist/propose-knowledge.js +367 -0
  498. package/dist/quality-baseline.d.ts +123 -0
  499. package/dist/quality-baseline.d.ts.map +1 -0
  500. package/dist/quality-baseline.js +433 -0
  501. package/dist/quality-html.d.ts +7 -0
  502. package/dist/quality-html.d.ts.map +1 -0
  503. package/dist/quality-html.js +64 -0
  504. package/dist/quality-report.d.ts +49 -0
  505. package/dist/quality-report.d.ts.map +1 -0
  506. package/dist/quality-report.js +296 -0
  507. package/dist/query-resolver.d.ts +38 -0
  508. package/dist/query-resolver.d.ts.map +1 -0
  509. package/dist/query-resolver.js +163 -0
  510. package/dist/ranker-explainability.d.ts +91 -0
  511. package/dist/ranker-explainability.d.ts.map +1 -0
  512. package/dist/ranker-explainability.js +550 -0
  513. package/dist/reference-lookup.d.ts +8 -0
  514. package/dist/reference-lookup.d.ts.map +1 -0
  515. package/dist/reference-lookup.js +18 -0
  516. package/dist/registration-hint-registry.d.ts +55 -0
  517. package/dist/registration-hint-registry.d.ts.map +1 -0
  518. package/dist/registration-hint-registry.js +327 -0
  519. package/dist/registry-lifecycle.d.ts +47 -0
  520. package/dist/registry-lifecycle.d.ts.map +1 -0
  521. package/dist/registry-lifecycle.js +214 -0
  522. package/dist/release-readiness.d.ts +64 -0
  523. package/dist/release-readiness.d.ts.map +1 -0
  524. package/dist/release-readiness.js +456 -0
  525. package/dist/release-smoke.d.ts +138 -0
  526. package/dist/release-smoke.d.ts.map +1 -0
  527. package/dist/release-smoke.js +459 -0
  528. package/dist/release-train.d.ts +33 -0
  529. package/dist/release-train.d.ts.map +1 -0
  530. package/dist/release-train.js +104 -0
  531. package/dist/repo-memory.d.ts +95 -0
  532. package/dist/repo-memory.d.ts.map +1 -0
  533. package/dist/repo-memory.js +614 -0
  534. package/dist/report-site.d.ts +92 -0
  535. package/dist/report-site.d.ts.map +1 -0
  536. package/dist/report-site.js +658 -0
  537. package/dist/reposet.d.ts +56 -0
  538. package/dist/reposet.d.ts.map +1 -0
  539. package/dist/reposet.js +160 -0
  540. package/dist/repository-intelligence.d.ts +145 -0
  541. package/dist/repository-intelligence.d.ts.map +1 -0
  542. package/dist/repository-intelligence.js +729 -0
  543. package/dist/repository-knowledge-model.d.ts +218 -0
  544. package/dist/repository-knowledge-model.d.ts.map +1 -0
  545. package/dist/repository-knowledge-model.js +939 -0
  546. package/dist/repository-map.d.ts +72 -0
  547. package/dist/repository-map.d.ts.map +1 -0
  548. package/dist/repository-map.js +332 -0
  549. package/dist/repository-stats.d.ts +66 -0
  550. package/dist/repository-stats.d.ts.map +1 -0
  551. package/dist/repository-stats.js +329 -0
  552. package/dist/review-comment-renderer.d.ts +59 -0
  553. package/dist/review-comment-renderer.d.ts.map +1 -0
  554. package/dist/review-comment-renderer.js +181 -0
  555. package/dist/review-comment-v2.d.ts +9 -0
  556. package/dist/review-comment-v2.d.ts.map +1 -0
  557. package/dist/review-comment-v2.js +178 -0
  558. package/dist/review-html.d.ts +13 -0
  559. package/dist/review-html.d.ts.map +1 -0
  560. package/dist/review-html.js +79 -0
  561. package/dist/review-packet-v2.d.ts +29 -0
  562. package/dist/review-packet-v2.d.ts.map +1 -0
  563. package/dist/review-packet-v2.js +71 -0
  564. package/dist/review-packet-v3.d.ts +22 -0
  565. package/dist/review-packet-v3.d.ts.map +1 -0
  566. package/dist/review-packet-v3.js +181 -0
  567. package/dist/review-packet.d.ts +49 -0
  568. package/dist/review-packet.d.ts.map +1 -0
  569. package/dist/review-packet.js +129 -0
  570. package/dist/risk-signals.d.ts +28 -0
  571. package/dist/risk-signals.d.ts.map +1 -0
  572. package/dist/risk-signals.js +68 -0
  573. package/dist/role-views.d.ts +50 -0
  574. package/dist/role-views.d.ts.map +1 -0
  575. package/dist/role-views.js +334 -0
  576. package/dist/rounds.d.ts +52 -0
  577. package/dist/rounds.d.ts.map +1 -0
  578. package/dist/rounds.js +172 -0
  579. package/dist/rule-drift.d.ts +42 -0
  580. package/dist/rule-drift.d.ts.map +1 -0
  581. package/dist/rule-drift.js +148 -0
  582. package/dist/rule-quality.d.ts +73 -0
  583. package/dist/rule-quality.d.ts.map +1 -0
  584. package/dist/rule-quality.js +356 -0
  585. package/dist/rule-scaffold.d.ts +71 -0
  586. package/dist/rule-scaffold.d.ts.map +1 -0
  587. package/dist/rule-scaffold.js +258 -0
  588. package/dist/safety-audit-deep.d.ts +38 -0
  589. package/dist/safety-audit-deep.d.ts.map +1 -0
  590. package/dist/safety-audit-deep.js +162 -0
  591. package/dist/safety-audit.d.ts +91 -0
  592. package/dist/safety-audit.d.ts.map +1 -0
  593. package/dist/safety-audit.js +138 -0
  594. package/dist/safety-html.d.ts +7 -0
  595. package/dist/safety-html.d.ts.map +1 -0
  596. package/dist/safety-html.js +70 -0
  597. package/dist/scaffold-coverage.d.ts +46 -0
  598. package/dist/scaffold-coverage.d.ts.map +1 -0
  599. package/dist/scaffold-coverage.js +273 -0
  600. package/dist/scaffold-patterns.d.ts +38 -0
  601. package/dist/scaffold-patterns.d.ts.map +1 -0
  602. package/dist/scaffold-patterns.js +282 -0
  603. package/dist/schema-inventory.d.ts +55 -0
  604. package/dist/schema-inventory.d.ts.map +1 -0
  605. package/dist/schema-inventory.js +301 -0
  606. package/dist/search-index.d.ts +75 -0
  607. package/dist/search-index.d.ts.map +1 -0
  608. package/dist/search-index.js +531 -0
  609. package/dist/search-tuning-explain.d.ts +68 -0
  610. package/dist/search-tuning-explain.d.ts.map +1 -0
  611. package/dist/search-tuning-explain.js +207 -0
  612. package/dist/search-tuning-registry.d.ts +54 -0
  613. package/dist/search-tuning-registry.d.ts.map +1 -0
  614. package/dist/search-tuning-registry.js +303 -0
  615. package/dist/self-audit.d.ts +59 -0
  616. package/dist/self-audit.d.ts.map +1 -0
  617. package/dist/self-audit.js +192 -0
  618. package/dist/self-config-doctor-v2.d.ts +57 -0
  619. package/dist/self-config-doctor-v2.d.ts.map +1 -0
  620. package/dist/self-config-doctor-v2.js +653 -0
  621. package/dist/self-config-doctor.d.ts +47 -0
  622. package/dist/self-config-doctor.d.ts.map +1 -0
  623. package/dist/self-config-doctor.js +432 -0
  624. package/dist/sharkcraft-inspector.d.ts +73 -0
  625. package/dist/sharkcraft-inspector.d.ts.map +1 -0
  626. package/dist/sharkcraft-inspector.js +745 -0
  627. package/dist/spec/spec-cross-validate.d.ts +17 -0
  628. package/dist/spec/spec-cross-validate.d.ts.map +1 -0
  629. package/dist/spec/spec-cross-validate.js +53 -0
  630. package/dist/spec/spec-discovery.d.ts +27 -0
  631. package/dist/spec/spec-discovery.d.ts.map +1 -0
  632. package/dist/spec/spec-discovery.js +78 -0
  633. package/dist/spec/spec-review.d.ts +36 -0
  634. package/dist/spec/spec-review.d.ts.map +1 -0
  635. package/dist/spec/spec-review.js +37 -0
  636. package/dist/stability-map.d.ts +62 -0
  637. package/dist/stability-map.d.ts.map +1 -0
  638. package/dist/stability-map.js +404 -0
  639. package/dist/start-here.d.ts +49 -0
  640. package/dist/start-here.d.ts.map +1 -0
  641. package/dist/start-here.js +259 -0
  642. package/dist/surface-profile-detect.d.ts +42 -0
  643. package/dist/surface-profile-detect.d.ts.map +1 -0
  644. package/dist/surface-profile-detect.js +76 -0
  645. package/dist/symbol-index.d.ts +108 -0
  646. package/dist/symbol-index.d.ts.map +1 -0
  647. package/dist/symbol-index.js +483 -0
  648. package/dist/task-decompose.d.ts +38 -0
  649. package/dist/task-decompose.d.ts.map +1 -0
  650. package/dist/task-decompose.js +154 -0
  651. package/dist/task-packet.d.ts +104 -0
  652. package/dist/task-packet.d.ts.map +1 -0
  653. package/dist/task-packet.js +156 -0
  654. package/dist/task-ranker.d.ts +51 -0
  655. package/dist/task-ranker.d.ts.map +1 -0
  656. package/dist/task-ranker.js +410 -0
  657. package/dist/task-risk.d.ts +84 -0
  658. package/dist/task-risk.d.ts.map +1 -0
  659. package/dist/task-risk.js +731 -0
  660. package/dist/task-routing-hint-registry.d.ts +36 -0
  661. package/dist/task-routing-hint-registry.d.ts.map +1 -0
  662. package/dist/task-routing-hint-registry.js +186 -0
  663. package/dist/template-authoring.d.ts +113 -0
  664. package/dist/template-authoring.d.ts.map +1 -0
  665. package/dist/template-authoring.js +521 -0
  666. package/dist/template-body-inference-v2.d.ts +19 -0
  667. package/dist/template-body-inference-v2.d.ts.map +1 -0
  668. package/dist/template-body-inference-v2.js +468 -0
  669. package/dist/template-body-inference.d.ts +59 -0
  670. package/dist/template-body-inference.d.ts.map +1 -0
  671. package/dist/template-body-inference.js +277 -0
  672. package/dist/template-drift.d.ts +39 -0
  673. package/dist/template-drift.d.ts.map +1 -0
  674. package/dist/template-drift.js +353 -0
  675. package/dist/template-lint.d.ts +31 -0
  676. package/dist/template-lint.d.ts.map +1 -0
  677. package/dist/template-lint.js +113 -0
  678. package/dist/test-definitions.d.ts +41 -0
  679. package/dist/test-definitions.d.ts.map +1 -0
  680. package/dist/test-definitions.js +6 -0
  681. package/dist/test-impact.d.ts +30 -0
  682. package/dist/test-impact.d.ts.map +1 -0
  683. package/dist/test-impact.js +173 -0
  684. package/dist/test-runner.d.ts +87 -0
  685. package/dist/test-runner.d.ts.map +1 -0
  686. package/dist/test-runner.js +560 -0
  687. package/dist/uncertainty-report.d.ts +46 -0
  688. package/dist/uncertainty-report.d.ts.map +1 -0
  689. package/dist/uncertainty-report.js +108 -0
  690. package/dist/uncertainty.d.ts +38 -0
  691. package/dist/uncertainty.d.ts.map +1 -0
  692. package/dist/uncertainty.js +115 -0
  693. package/dist/universal-search.d.ts +64 -0
  694. package/dist/universal-search.d.ts.map +1 -0
  695. package/dist/universal-search.js +347 -0
  696. package/dist/upgrade-advisor.d.ts +22 -0
  697. package/dist/upgrade-advisor.d.ts.map +1 -0
  698. package/dist/upgrade-advisor.js +109 -0
  699. package/dist/why-file.d.ts +75 -0
  700. package/dist/why-file.d.ts.map +1 -0
  701. package/dist/why-file.js +202 -0
  702. package/dist/workflow-simulation.d.ts +46 -0
  703. package/dist/workflow-simulation.d.ts.map +1 -0
  704. package/dist/workflow-simulation.js +154 -0
  705. package/package.json +66 -0
@@ -0,0 +1,391 @@
1
+ import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
2
+ import * as nodePath from 'node:path';
3
+ import { scanImports } from '@shrkcrft/boundaries';
4
+ import { listConstructs } from "./construct-registry.js";
5
+ export const CONSTRUCT_INFERENCE_SCHEMA = 'sharkcraft.construct-inference/v1';
6
+ export var InferredConstructConfidence;
7
+ (function (InferredConstructConfidence) {
8
+ InferredConstructConfidence["High"] = "high";
9
+ InferredConstructConfidence["Medium"] = "medium";
10
+ InferredConstructConfidence["Low"] = "low";
11
+ })(InferredConstructConfidence || (InferredConstructConfidence = {}));
12
+ const FOLDER_HINTS = [
13
+ { match: /(^|\/)services?($|\/)/, type: 'service', title: (_r, n) => `${n} service`, confidence: InferredConstructConfidence.High },
14
+ { match: /(^|\/)plugins?($|\/)/, type: 'plugin', title: (_r, n) => `${n} plugin`, confidence: InferredConstructConfidence.High },
15
+ { match: /(^|\/)policies?($|\/)/, type: 'policy', title: (_r, n) => `${n} policy`, confidence: InferredConstructConfidence.High },
16
+ { match: /(^|\/)capabilities?($|\/)/, type: 'capability', title: (_r, n) => `${n} capability`, confidence: InferredConstructConfidence.High },
17
+ { match: /(^|\/)adapters?($|\/)/, type: 'adapter', title: (_r, n) => `${n} adapter`, confidence: InferredConstructConfidence.Medium },
18
+ { match: /(^|\/)(routes?|controllers?)($|\/)/, type: 'route', title: (_r, n) => `${n} route`, confidence: InferredConstructConfidence.Medium },
19
+ { match: /(^|\/)components?($|\/)/, type: 'component', title: (_r, n) => `${n} component`, confidence: InferredConstructConfidence.Medium },
20
+ { match: /(^|\/)features?($|\/)/, type: 'feature', title: (_r, n) => `${n} feature`, confidence: InferredConstructConfidence.Medium },
21
+ { match: /(^|\/)modules?($|\/)/, type: 'module', title: (_r, n) => `${n} module`, confidence: InferredConstructConfidence.Low },
22
+ ];
23
+ const FILE_SUFFIX_HINTS = [
24
+ { suffix: /\.service\.(ts|tsx|js)$/, type: 'service', title: (n) => `${n} service`, confidence: InferredConstructConfidence.High },
25
+ { suffix: /\.plugin\.(ts|tsx|js)$/, type: 'plugin', title: (n) => `${n} plugin`, confidence: InferredConstructConfidence.High },
26
+ { suffix: /\.policy\.(ts|tsx|js)$/, type: 'policy', title: (n) => `${n} policy`, confidence: InferredConstructConfidence.High },
27
+ { suffix: /\.controller\.(ts|tsx|js)$/, type: 'controller', title: (n) => `${n} controller`, confidence: InferredConstructConfidence.Medium },
28
+ { suffix: /\.adapter\.(ts|tsx|js)$/, type: 'adapter', title: (n) => `${n} adapter`, confidence: InferredConstructConfidence.Medium },
29
+ ];
30
+ const IGNORE_DIRS = new Set([
31
+ 'node_modules',
32
+ '.git',
33
+ '.sharkcraft',
34
+ 'dist',
35
+ 'build',
36
+ '.cache',
37
+ '.turbo',
38
+ '.nx',
39
+ '.next',
40
+ 'coverage',
41
+ ]);
42
+ function walk(root, current = '') {
43
+ const out = [];
44
+ const dir = current ? nodePath.join(root, current) : root;
45
+ let entries;
46
+ try {
47
+ entries = readdirSync(dir);
48
+ }
49
+ catch {
50
+ return out;
51
+ }
52
+ for (const name of entries) {
53
+ if (name.startsWith('.') && name !== '.github')
54
+ continue;
55
+ if (IGNORE_DIRS.has(name))
56
+ continue;
57
+ const rel = current ? `${current}/${name}` : name;
58
+ let stat;
59
+ try {
60
+ stat = statSync(nodePath.join(root, rel));
61
+ }
62
+ catch {
63
+ continue;
64
+ }
65
+ if (stat.isDirectory())
66
+ out.push(...walk(root, rel));
67
+ else if (stat.isFile())
68
+ out.push(rel);
69
+ }
70
+ return out;
71
+ }
72
+ function basenameNoExt(file) {
73
+ const base = file.split('/').pop() ?? file;
74
+ const dotIdx = base.indexOf('.');
75
+ return dotIdx >= 0 ? base.slice(0, dotIdx) : base;
76
+ }
77
+ function kebabize(s) {
78
+ return s
79
+ .replace(/([a-z])([A-Z])/g, '$1-$2')
80
+ .replace(/[_\s]+/g, '-')
81
+ .toLowerCase();
82
+ }
83
+ function newBuilder(type, baseId, title, confidence) {
84
+ return {
85
+ type,
86
+ baseId,
87
+ title,
88
+ files: new Set(),
89
+ publicApi: new Set(),
90
+ evidence: new Set(),
91
+ events: new Set(),
92
+ tokens: new Set(),
93
+ confidence,
94
+ };
95
+ }
96
+ function safeId(s) {
97
+ return s.replace(/[^a-z0-9-]+/gi, '-').replace(/-+/g, '-').replace(/^-|-$/g, '').toLowerCase();
98
+ }
99
+ /** Extract simple string-constant style events/tokens from a file. */
100
+ function scanFacets(absPath) {
101
+ const events = [];
102
+ const tokens = [];
103
+ let text;
104
+ try {
105
+ text = readFileSync(absPath, 'utf8');
106
+ }
107
+ catch {
108
+ return { events, tokens };
109
+ }
110
+ // Event-like: 'foo.bar' / "foo.bar" with a dot in the middle.
111
+ const evRe = /['"`]([a-z0-9_-]+(?:\.[a-z0-9_-]+){1,3})['"`]/gi;
112
+ let m;
113
+ while ((m = evRe.exec(text)) !== null) {
114
+ const val = m[1];
115
+ if (/^[a-z0-9_-]+\.[a-z0-9_-]+/i.test(val) && val.length < 60) {
116
+ events.push(val);
117
+ }
118
+ }
119
+ // Token-like: UPPER_SNAKE_CASE identifiers exported or referenced.
120
+ const tokRe = /\b([A-Z][A-Z0-9_]{3,})\b/g;
121
+ while ((m = tokRe.exec(text)) !== null) {
122
+ tokens.push(m[1]);
123
+ }
124
+ return {
125
+ events: [...new Set(events)].slice(0, 6),
126
+ tokens: [...new Set(tokens)].slice(0, 6),
127
+ };
128
+ }
129
+ function buildPublicApi(files) {
130
+ const out = [];
131
+ for (const f of files) {
132
+ const base = f.split('/').pop() ?? '';
133
+ if (base === 'index.ts' || base === 'index.tsx' || base === 'index.js') {
134
+ out.push(f);
135
+ }
136
+ if (/\.public\.(ts|tsx|js)$/.test(base))
137
+ out.push(f);
138
+ }
139
+ return [...new Set(out)];
140
+ }
141
+ function relatedAssets(inspection, files) {
142
+ const templates = new Set();
143
+ const pipelines = new Set();
144
+ const paths = new Set();
145
+ // Templates with targetPath overlap.
146
+ for (const t of inspection.templateRegistry.list()) {
147
+ const tp = t.targetPath;
148
+ const pathLike = typeof tp === 'string' ? tp : '';
149
+ if (!pathLike)
150
+ continue;
151
+ if (files.some((f) => f.includes(pathLike) || pathLike.includes(f.split('/').pop() ?? ''))) {
152
+ templates.add(t.id);
153
+ }
154
+ }
155
+ // Pipelines that mention these files (heuristic).
156
+ for (const p of inspection.pipelineRegistry.list()) {
157
+ const blob = JSON.stringify(p.steps ?? []).toLowerCase();
158
+ if (files.some((f) => blob.includes(f.toLowerCase())))
159
+ pipelines.add(p.id);
160
+ }
161
+ // Path conventions covering folders.
162
+ for (const p of inspection.pathService.list()) {
163
+ const meta = (p.metadata ?? {});
164
+ const segment = (meta.path ?? '').replace(/\*+/g, '');
165
+ if (!segment)
166
+ continue;
167
+ if (files.some((f) => f.includes(segment)))
168
+ paths.add(p.id);
169
+ }
170
+ return {
171
+ templates: [...templates].sort(),
172
+ pipelines: [...pipelines].sort(),
173
+ pathConventions: [...paths].sort(),
174
+ };
175
+ }
176
+ function buildDraft(c) {
177
+ const lines = [];
178
+ lines.push(`defineConstruct({`);
179
+ lines.push(` id: '${c.id}',`);
180
+ lines.push(` type: '${c.type}',`);
181
+ lines.push(` title: '${c.title.replace(/'/g, "\\'")}',`);
182
+ lines.push(` description: 'Inferred (${c.confidence} confidence). Replace with a real description.',`);
183
+ if (c.files.length) {
184
+ lines.push(' files: [');
185
+ for (const f of c.files.slice(0, 12))
186
+ lines.push(` '${f}',`);
187
+ lines.push(' ],');
188
+ }
189
+ if (c.publicApi.length) {
190
+ lines.push(' publicApi: [');
191
+ for (const a of c.publicApi.slice(0, 8))
192
+ lines.push(` '${a}',`);
193
+ lines.push(' ],');
194
+ }
195
+ if (c.events?.length) {
196
+ lines.push(` events: [${c.events.map((e) => `'${e}'`).join(', ')}],`);
197
+ }
198
+ if (c.tokens?.length) {
199
+ lines.push(` tokens: [${c.tokens.map((e) => `'${e}'`).join(', ')}],`);
200
+ }
201
+ if (c.relatedTemplates?.length) {
202
+ lines.push(` relatedTemplates: [${c.relatedTemplates.map((e) => `'${e}'`).join(', ')}],`);
203
+ }
204
+ if (c.relatedPipelines?.length) {
205
+ lines.push(` relatedPipelines: [${c.relatedPipelines.map((e) => `'${e}'`).join(', ')}],`);
206
+ }
207
+ if (c.relatedPathConventions?.length) {
208
+ lines.push(` relatedPathConventions: [${c.relatedPathConventions.map((e) => `'${e}'`).join(', ')}],`);
209
+ }
210
+ lines.push(`}),`);
211
+ return lines.join('\n');
212
+ }
213
+ function confidenceRank(c) {
214
+ if (c === InferredConstructConfidence.High)
215
+ return 3;
216
+ if (c === InferredConstructConfidence.Medium)
217
+ return 2;
218
+ return 1;
219
+ }
220
+ export async function inferConstructs(inspection, input = {}) {
221
+ const warnings = [];
222
+ const builders = new Map();
223
+ const projectRoot = inspection.projectRoot;
224
+ const allFiles = existsSync(projectRoot) ? walk(projectRoot) : [];
225
+ // Pass 1: folder + filename hints.
226
+ for (const file of allFiles) {
227
+ if (!/\.(ts|tsx|js|jsx)$/.test(file))
228
+ continue;
229
+ if (file.includes('.spec.') || file.includes('.test.') || file.includes('__tests__/')) {
230
+ continue;
231
+ }
232
+ // Filename suffix hints (e.g. user.service.ts).
233
+ const base = file.split('/').pop() ?? '';
234
+ let matched = false;
235
+ for (const fh of FILE_SUFFIX_HINTS) {
236
+ if (fh.suffix.test(base)) {
237
+ const name = base.replace(fh.suffix, '');
238
+ const id = `${fh.type}.${safeId(kebabize(name))}`;
239
+ let b = builders.get(id);
240
+ if (!b) {
241
+ b = newBuilder(fh.type, id, fh.title(name), fh.confidence);
242
+ builders.set(id, b);
243
+ }
244
+ b.files.add(file);
245
+ b.evidence.add(`filename matches /${fh.suffix.source}/`);
246
+ matched = true;
247
+ }
248
+ }
249
+ if (matched)
250
+ continue;
251
+ // Folder hints.
252
+ for (const fh of FOLDER_HINTS) {
253
+ if (!fh.match.test(file))
254
+ continue;
255
+ // Group by parent folder under the matched segment.
256
+ const segments = file.split('/');
257
+ const matchIdx = segments.findIndex((s) => fh.match.test('/' + s + '/'));
258
+ if (matchIdx < 0 || matchIdx + 1 >= segments.length)
259
+ continue;
260
+ const next = segments[matchIdx + 1];
261
+ // If `next` is also the filename, use the bare name; otherwise treat the folder as the group.
262
+ const group = next.includes('.') ? basenameNoExt(next) : next;
263
+ const id = `${fh.type}.${safeId(kebabize(group))}`;
264
+ let b = builders.get(id);
265
+ if (!b) {
266
+ b = newBuilder(fh.type, id, fh.title(projectRoot, group), fh.confidence);
267
+ builders.set(id, b);
268
+ }
269
+ b.files.add(file);
270
+ b.evidence.add(`folder matches ${fh.match.source}`);
271
+ break;
272
+ }
273
+ }
274
+ // Pass 2: aggregate by import-graph clusters around publicApi candidates.
275
+ try {
276
+ const scan = scanImports({ projectRoot });
277
+ const importsByTarget = new Map();
278
+ for (const e of scan.edges) {
279
+ if (e.kind !== 'internal')
280
+ continue;
281
+ if (!e.importSpecifier.startsWith('.'))
282
+ continue;
283
+ const target = nodePath.posix.normalize(nodePath.posix.join(nodePath.posix.dirname(e.from), e.importSpecifier));
284
+ const set = importsByTarget.get(target) ?? new Set();
285
+ set.add(e.from);
286
+ importsByTarget.set(target, set);
287
+ }
288
+ for (const b of builders.values()) {
289
+ // Add files that import any of the builder's files as "publicApi" hints.
290
+ for (const f of [...b.files]) {
291
+ const target = f.replace(/\.(ts|tsx|js|jsx)$/, '');
292
+ for (const t of [target, target + '.ts', target + '.tsx', target + '/index.ts']) {
293
+ const importers = importsByTarget.get(t);
294
+ if (!importers)
295
+ continue;
296
+ if (importers.size > 0) {
297
+ b.publicApi.add(f);
298
+ b.evidence.add(`imported by ${importers.size} file(s)`);
299
+ }
300
+ }
301
+ }
302
+ }
303
+ }
304
+ catch {
305
+ warnings.push('Import graph scan failed; some confidence hints unavailable.');
306
+ }
307
+ // Pass 3: facet detection (events/tokens).
308
+ for (const b of builders.values()) {
309
+ for (const f of [...b.files].slice(0, 8)) {
310
+ const abs = nodePath.join(projectRoot, f);
311
+ const facets = scanFacets(abs);
312
+ for (const e of facets.events)
313
+ b.events.add(e);
314
+ for (const t of facets.tokens)
315
+ b.tokens.add(t);
316
+ }
317
+ }
318
+ // Drop builders without files.
319
+ const existingIds = new Set(listConstructs(inspection).map((c) => c.id));
320
+ const candidatesAll = [];
321
+ for (const b of builders.values()) {
322
+ if (b.files.size === 0)
323
+ continue;
324
+ if (existingIds.has(b.baseId)) {
325
+ // Skip if construct is already defined locally; still allow drafts via --include-existing.
326
+ continue;
327
+ }
328
+ const relAssets = relatedAssets(inspection, [...b.files]);
329
+ const publicApi = b.publicApi.size > 0 ? [...b.publicApi] : buildPublicApi([...b.files]);
330
+ const c = {
331
+ id: b.baseId,
332
+ type: b.type,
333
+ title: b.title,
334
+ confidence: b.confidence,
335
+ evidence: [...b.evidence].sort(),
336
+ files: [...b.files].sort(),
337
+ publicApi: publicApi.sort(),
338
+ events: [...b.events].slice(0, 6),
339
+ tokens: [...b.tokens].slice(0, 6),
340
+ ...(relAssets.templates.length ? { relatedTemplates: relAssets.templates } : {}),
341
+ ...(relAssets.pipelines.length ? { relatedPipelines: relAssets.pipelines } : {}),
342
+ ...(relAssets.pathConventions.length
343
+ ? { relatedPathConventions: relAssets.pathConventions }
344
+ : {}),
345
+ draft: '',
346
+ };
347
+ c.draft = buildDraft(c);
348
+ candidatesAll.push(c);
349
+ }
350
+ // Sort by confidence desc then file count desc.
351
+ candidatesAll.sort((a, b) => confidenceRank(b.confidence) - confidenceRank(a.confidence) ||
352
+ b.files.length - a.files.length ||
353
+ a.id.localeCompare(b.id));
354
+ let candidates = candidatesAll;
355
+ if (input.type)
356
+ candidates = candidates.filter((c) => c.type === input.type);
357
+ if (input.minConfidence) {
358
+ const min = confidenceRank(input.minConfidence);
359
+ candidates = candidates.filter((c) => confidenceRank(c.confidence) >= min);
360
+ }
361
+ if (input.limit && input.limit > 0) {
362
+ candidates = candidates.slice(0, input.limit);
363
+ }
364
+ return {
365
+ schema: CONSTRUCT_INFERENCE_SCHEMA,
366
+ generatedAt: new Date().toISOString(),
367
+ projectRoot,
368
+ candidates,
369
+ warnings,
370
+ };
371
+ }
372
+ export function renderConstructDraftsModule(result) {
373
+ const lines = [];
374
+ lines.push("/**");
375
+ lines.push(" * Inferred SharkCraft construct drafts.");
376
+ lines.push(" *");
377
+ lines.push(" * This file is written by `shrk constructs infer --write-drafts`.");
378
+ lines.push(" * Review carefully and copy the bits you want into `sharkcraft/constructs.ts`.");
379
+ lines.push(" * SharkCraft does NOT load this file automatically.");
380
+ lines.push(` * Generated: ${result.generatedAt}`);
381
+ lines.push(" */");
382
+ lines.push("import { defineConstruct } from '@shrkcrft/plugin-api';");
383
+ lines.push('');
384
+ lines.push('export default [');
385
+ for (const c of result.candidates) {
386
+ for (const line of c.draft.split('\n'))
387
+ lines.push(' ' + line);
388
+ }
389
+ lines.push('];');
390
+ return lines.join('\n') + '\n';
391
+ }
@@ -0,0 +1,32 @@
1
+ import type { IConstructFacetInput, IConstructFacetValue, IConstructInput } from '@shrkcrft/plugin-api';
2
+ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
3
+ export declare const CONSTRUCT_REGISTRY_SCHEMA = "sharkcraft.construct-registry/v1";
4
+ export interface IConstruct extends IConstructInput {
5
+ source: 'local' | 'pack';
6
+ packageName?: string;
7
+ sourceFile?: string;
8
+ }
9
+ export interface IConstructFacet extends IConstructFacetInput {
10
+ }
11
+ export declare function loadConstructs(inspection: ISharkcraftInspection): Promise<readonly IConstruct[]>;
12
+ /** Synchronous accessor — falls back to a snapshot cached from the last
13
+ * async load. Used by search-index which needs to be sync-friendly. */
14
+ export declare function listConstructs(inspection: ISharkcraftInspection): readonly IConstruct[];
15
+ /** Pre-warm the cache so subsequent sync reads see a populated list. */
16
+ export declare function warmConstructCache(inspection: ISharkcraftInspection): Promise<void>;
17
+ export interface IConstructTrace {
18
+ construct: IConstruct;
19
+ files: readonly string[];
20
+ publicApi: readonly string[];
21
+ events: readonly string[];
22
+ tokens: readonly string[];
23
+ commands: readonly string[];
24
+ relatedKnowledge: readonly string[];
25
+ relatedRules: readonly string[];
26
+ relatedTemplates: readonly string[];
27
+ relatedPipelines: readonly string[];
28
+ facets: Record<string, readonly IConstructFacetValue[]>;
29
+ warnings: readonly string[];
30
+ }
31
+ export declare function traceConstruct(construct: IConstruct): IConstructTrace;
32
+ //# sourceMappingURL=construct-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"construct-registry.d.ts","sourceRoot":"","sources":["../src/construct-registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EAChB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,yBAAyB,qCAAqC,CAAC;AAE5E,MAAM,WAAW,UAAW,SAAQ,eAAe;IACjD,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAgB,SAAQ,oBAAoB;CAAG;AA+DhE,wBAAsB,cAAc,CAClC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAwFhC;AAED;wEACwE;AACxE,wBAAgB,cAAc,CAAC,UAAU,EAAE,qBAAqB,GAAG,SAAS,UAAU,EAAE,CAGvF;AAED,wEAAwE;AACxE,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzF;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,UAAU,CAAC;IACtB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC,CAAC;IACxD,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,UAAU,GAAG,eAAe,CAmBrE"}
@@ -0,0 +1,198 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ import { existsSync, readFileSync } from 'node:fs';
10
+ import * as nodePath from 'node:path';
11
+ import { pathToFileURL } from 'node:url';
12
+ export const CONSTRUCT_REGISTRY_SCHEMA = 'sharkcraft.construct-registry/v1';
13
+ const CACHE = new Map();
14
+ function readJsonOrEmpty(file) {
15
+ if (!existsSync(file))
16
+ return null;
17
+ try {
18
+ return JSON.parse(readFileSync(file, 'utf8'));
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ }
24
+ async function importDefault(file) {
25
+ const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
26
+ const def = mod.default;
27
+ if (Array.isArray(def))
28
+ return def;
29
+ if (def && typeof def === 'object')
30
+ return [def];
31
+ if (Array.isArray(mod.constructs))
32
+ return mod.constructs;
33
+ return [];
34
+ }
35
+ function localConstructFiles(inspection) {
36
+ const out = [];
37
+ const dir = inspection.sharkcraftDir;
38
+ if (!dir)
39
+ return [];
40
+ const defaults = ['constructs.ts', 'constructs.js', 'constructs/index.ts'];
41
+ for (const f of defaults) {
42
+ const full = nodePath.join(dir, f);
43
+ if (existsSync(full))
44
+ out.push(full);
45
+ }
46
+ const cfg = inspection.config;
47
+ if (cfg?.constructFiles) {
48
+ for (const rel of cfg.constructFiles)
49
+ out.push(nodePath.join(dir, rel));
50
+ }
51
+ return out;
52
+ }
53
+ function localFacetFiles(inspection) {
54
+ const out = [];
55
+ const dir = inspection.sharkcraftDir;
56
+ if (!dir)
57
+ return [];
58
+ const defaults = ['construct-facets.ts', 'construct-facets/index.ts'];
59
+ for (const f of defaults) {
60
+ const full = nodePath.join(dir, f);
61
+ if (existsSync(full))
62
+ out.push(full);
63
+ }
64
+ const cfg = inspection.config;
65
+ if (cfg?.constructFacetFiles) {
66
+ for (const rel of cfg.constructFacetFiles)
67
+ out.push(nodePath.join(dir, rel));
68
+ }
69
+ return out;
70
+ }
71
+ export async function loadConstructs(inspection) {
72
+ const cacheKey = `${inspection.projectRoot}:${inspection.packs.validPacks
73
+ .map((p) => p.packageName + '@' + p.packageVersion)
74
+ .join(',')}`;
75
+ const cached = CACHE.get(inspection.projectRoot);
76
+ if (cached && cached.cacheKey === cacheKey)
77
+ return cached.list;
78
+ const out = [];
79
+ // Local definitions.
80
+ for (const file of localConstructFiles(inspection)) {
81
+ try {
82
+ const list = await importDefault(file);
83
+ for (const c of list) {
84
+ if (!c?.id)
85
+ continue;
86
+ const entry = { ...c, source: 'local' };
87
+ entry.sourceFile = nodePath.relative(inspection.projectRoot, file);
88
+ out.push(entry);
89
+ }
90
+ }
91
+ catch {
92
+ /* ignore — packs are best-effort */
93
+ }
94
+ }
95
+ // Standalone facet files (folded into matching constructs).
96
+ const looseFacets = [];
97
+ for (const file of localFacetFiles(inspection)) {
98
+ try {
99
+ const list = await importDefault(file);
100
+ for (const f of list) {
101
+ looseFacets.push(f);
102
+ }
103
+ }
104
+ catch {
105
+ /* ignore */
106
+ }
107
+ }
108
+ // Pack contributions.
109
+ for (const pack of inspection.packs.validPacks ?? []) {
110
+ const contributions = (pack.manifest?.contributions ?? {});
111
+ const packRoot = pack.packageRoot;
112
+ if (!packRoot)
113
+ continue;
114
+ for (const rel of contributions.constructFiles ?? []) {
115
+ const file = nodePath.resolve(packRoot, rel);
116
+ if (!existsSync(file))
117
+ continue;
118
+ try {
119
+ const list = await importDefault(file);
120
+ for (const c of list) {
121
+ if (!c?.id)
122
+ continue;
123
+ out.push({
124
+ ...c,
125
+ source: 'pack',
126
+ packageName: pack.packageName,
127
+ sourceFile: rel,
128
+ });
129
+ }
130
+ }
131
+ catch {
132
+ /* ignore */
133
+ }
134
+ }
135
+ for (const rel of contributions.constructFacetFiles ?? []) {
136
+ const file = nodePath.resolve(packRoot, rel);
137
+ if (!existsSync(file))
138
+ continue;
139
+ try {
140
+ const list = await importDefault(file);
141
+ for (const f of list)
142
+ looseFacets.push(f);
143
+ }
144
+ catch {
145
+ /* ignore */
146
+ }
147
+ }
148
+ }
149
+ // Fold loose facets into their target construct.
150
+ for (const f of looseFacets) {
151
+ const target = out.find((c) => c.id === f.constructId);
152
+ if (!target)
153
+ continue;
154
+ const facets = (target.facets ?? {});
155
+ const list = facets[f.kind] ?? [];
156
+ list.push({
157
+ id: f.id,
158
+ value: f.value,
159
+ ...(f.description ? { description: f.description } : {}),
160
+ ...(f.source ? { source: f.source } : {}),
161
+ });
162
+ facets[f.kind] = list;
163
+ target.facets = facets;
164
+ }
165
+ CACHE.set(inspection.projectRoot, { cacheKey, list: out });
166
+ return out;
167
+ }
168
+ /** Synchronous accessor — falls back to a snapshot cached from the last
169
+ * async load. Used by search-index which needs to be sync-friendly. */
170
+ export function listConstructs(inspection) {
171
+ const cached = CACHE.get(inspection.projectRoot);
172
+ return cached?.list ?? [];
173
+ }
174
+ /** Pre-warm the cache so subsequent sync reads see a populated list. */
175
+ export async function warmConstructCache(inspection) {
176
+ await loadConstructs(inspection);
177
+ }
178
+ export function traceConstruct(construct) {
179
+ const warnings = [];
180
+ if ((construct.publicApi ?? []).length === 0) {
181
+ warnings.push('No publicApi entries declared — `shrk constructs api` will be empty.');
182
+ }
183
+ return {
184
+ construct,
185
+ files: construct.files ?? [],
186
+ publicApi: construct.publicApi ?? [],
187
+ events: construct.events ?? [],
188
+ tokens: construct.tokens ?? [],
189
+ commands: construct.commands ?? [],
190
+ relatedKnowledge: construct.relatedKnowledge ?? [],
191
+ relatedRules: construct.relatedRules ?? [],
192
+ relatedTemplates: construct.relatedTemplates ?? [],
193
+ relatedPipelines: construct.relatedPipelines ?? [],
194
+ facets: (construct.facets ?? {}),
195
+ warnings,
196
+ };
197
+ }
198
+ void readJsonOrEmpty;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * `IContractFileRule` lets contracts express precise scope: glob,
3
+ * path-prefix, exact, contains. The legacy `forbiddenFiles: string[]`
4
+ * field is kept and treated as `kind: 'contains'` for back-compat.
5
+ */
6
+ export declare enum ContractFileRuleKind {
7
+ Glob = "glob",
8
+ PathPrefix = "path-prefix",
9
+ Exact = "exact",
10
+ Contains = "contains"
11
+ }
12
+ export declare enum ContractFileRuleSeverity {
13
+ Error = "error",
14
+ Warning = "warning"
15
+ }
16
+ export interface IContractFileRule {
17
+ pattern: string;
18
+ kind: ContractFileRuleKind;
19
+ reason?: string;
20
+ severity?: ContractFileRuleSeverity;
21
+ }
22
+ /** Pure matcher — returns true when `file` is covered by `rule`. */
23
+ export declare function matchContractFileRule(rule: IContractFileRule, file: string): boolean;
24
+ export interface IContractFileRuleMatch {
25
+ file: string;
26
+ rule: IContractFileRule;
27
+ }
28
+ /** Returns every (file, rule) pair where the rule covers the file. */
29
+ export declare function matchContractFileRules(rules: readonly IContractFileRule[], files: readonly string[]): readonly IContractFileRuleMatch[];
30
+ /**
31
+ * Compatibility helper: legacy `forbiddenFiles: string[]` is wrapped as
32
+ * `kind: 'contains'` rules so the two pathways evaluate identically.
33
+ */
34
+ export declare function rulesFromLegacyStrings(patterns: readonly string[]): readonly IContractFileRule[];
35
+ /** Detect intended `kind` for a free-text legacy pattern. */
36
+ export declare function inferContractFileRule(pattern: string): IContractFileRule;
37
+ //# sourceMappingURL=contract-file-rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-file-rule.d.ts","sourceRoot":"","sources":["../src/contract-file-rule.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,oBAAY,oBAAoB;IAC9B,IAAI,SAAS;IACb,UAAU,gBAAgB;IAC1B,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB;AAED,oBAAY,wBAAwB;IAClC,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,oBAAoB,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,wBAAwB,CAAC;CACrC;AAyCD,oEAAoE;AACpE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAapF;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,sEAAsE;AACtE,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,iBAAiB,EAAE,EACnC,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB,SAAS,sBAAsB,EAAE,CAQnC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,SAAS,iBAAiB,EAAE,CAE9B;AAED,6DAA6D;AAC7D,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAQxE"}