@shrkcrft/inspector 0.1.0-alpha.1

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 (708) 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 +57 -0
  70. package/dist/area-map.d.ts.map +1 -0
  71. package/dist/area-map.js +214 -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 +382 -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 +38 -0
  256. package/dist/git-helpers.d.ts.map +1 -0
  257. package/dist/git-helpers.js +173 -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 +422 -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 +224 -0
  295. package/dist/index.d.ts.map +1 -0
  296. package/dist/index.js +234 -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-merge.d.ts +71 -0
  391. package/dist/onboarding-drafts-merge.d.ts.map +1 -0
  392. package/dist/onboarding-drafts-merge.js +174 -0
  393. package/dist/onboarding-drafts.d.ts +42 -0
  394. package/dist/onboarding-drafts.d.ts.map +1 -0
  395. package/dist/onboarding-drafts.js +268 -0
  396. package/dist/onboarding-report.d.ts +8 -0
  397. package/dist/onboarding-report.d.ts.map +1 -0
  398. package/dist/onboarding-report.js +239 -0
  399. package/dist/onboarding.d.ts +134 -0
  400. package/dist/onboarding.d.ts.map +1 -0
  401. package/dist/onboarding.js +729 -0
  402. package/dist/ownership.d.ts +38 -0
  403. package/dist/ownership.d.ts.map +1 -0
  404. package/dist/ownership.js +102 -0
  405. package/dist/pack-author-ux.d.ts +58 -0
  406. package/dist/pack-author-ux.d.ts.map +1 -0
  407. package/dist/pack-author-ux.js +219 -0
  408. package/dist/pack-author.d.ts +94 -0
  409. package/dist/pack-author.d.ts.map +1 -0
  410. package/dist/pack-author.js +208 -0
  411. package/dist/pack-compatibility.d.ts +21 -0
  412. package/dist/pack-compatibility.d.ts.map +1 -0
  413. package/dist/pack-compatibility.js +114 -0
  414. package/dist/pack-contributions-inventory.d.ts +121 -0
  415. package/dist/pack-contributions-inventory.d.ts.map +1 -0
  416. package/dist/pack-contributions-inventory.js +732 -0
  417. package/dist/pack-docs.d.ts +11 -0
  418. package/dist/pack-docs.d.ts.map +1 -0
  419. package/dist/pack-docs.js +101 -0
  420. package/dist/pack-doctor.d.ts +50 -0
  421. package/dist/pack-doctor.d.ts.map +1 -0
  422. package/dist/pack-doctor.js +302 -0
  423. package/dist/pack-helper-registry.d.ts +29 -0
  424. package/dist/pack-helper-registry.d.ts.map +1 -0
  425. package/dist/pack-helper-registry.js +144 -0
  426. package/dist/pack-pending.d.ts +68 -0
  427. package/dist/pack-pending.d.ts.map +1 -0
  428. package/dist/pack-pending.js +189 -0
  429. package/dist/pack-quality-score.d.ts +44 -0
  430. package/dist/pack-quality-score.d.ts.map +1 -0
  431. package/dist/pack-quality-score.js +155 -0
  432. package/dist/pack-release-check.d.ts +24 -0
  433. package/dist/pack-release-check.d.ts.map +1 -0
  434. package/dist/pack-release-check.js +258 -0
  435. package/dist/pack-signature-status.d.ts +72 -0
  436. package/dist/pack-signature-status.d.ts.map +1 -0
  437. package/dist/pack-signature-status.js +222 -0
  438. package/dist/pack-symbol-compat.d.ts +73 -0
  439. package/dist/pack-symbol-compat.d.ts.map +1 -0
  440. package/dist/pack-symbol-compat.js +519 -0
  441. package/dist/pack-test-runner.d.ts +59 -0
  442. package/dist/pack-test-runner.d.ts.map +1 -0
  443. package/dist/pack-test-runner.js +211 -0
  444. package/dist/pipeline-command-dictionary.d.ts +2 -0
  445. package/dist/pipeline-command-dictionary.d.ts.map +1 -0
  446. package/dist/pipeline-command-dictionary.js +20 -0
  447. package/dist/pipeline-lint.d.ts +30 -0
  448. package/dist/pipeline-lint.d.ts.map +1 -0
  449. package/dist/pipeline-lint.js +134 -0
  450. package/dist/plan-dependency-graph.d.ts +25 -0
  451. package/dist/plan-dependency-graph.d.ts.map +1 -0
  452. package/dist/plan-dependency-graph.js +195 -0
  453. package/dist/plan-review.d.ts +64 -0
  454. package/dist/plan-review.d.ts.map +1 -0
  455. package/dist/plan-review.js +242 -0
  456. package/dist/plan-simulation.d.ts +108 -0
  457. package/dist/plan-simulation.d.ts.map +1 -0
  458. package/dist/plan-simulation.js +767 -0
  459. package/dist/playbook-registry.d.ts +25 -0
  460. package/dist/playbook-registry.d.ts.map +1 -0
  461. package/dist/playbook-registry.js +148 -0
  462. package/dist/playbook-script.d.ts +60 -0
  463. package/dist/playbook-script.d.ts.map +1 -0
  464. package/dist/playbook-script.js +161 -0
  465. package/dist/plugin-lifecycle-profile-registry.d.ts +52 -0
  466. package/dist/plugin-lifecycle-profile-registry.d.ts.map +1 -0
  467. package/dist/plugin-lifecycle-profile-registry.js +202 -0
  468. package/dist/plugin-lifecycle.d.ts +132 -0
  469. package/dist/plugin-lifecycle.d.ts.map +1 -0
  470. package/dist/plugin-lifecycle.js +477 -0
  471. package/dist/policy-engine.d.ts +101 -0
  472. package/dist/policy-engine.d.ts.map +1 -0
  473. package/dist/policy-engine.js +321 -0
  474. package/dist/policy-override-audit.d.ts +18 -0
  475. package/dist/policy-override-audit.d.ts.map +1 -0
  476. package/dist/policy-override-audit.js +54 -0
  477. package/dist/policy-overrides.d.ts +35 -0
  478. package/dist/policy-overrides.d.ts.map +1 -0
  479. package/dist/policy-overrides.js +84 -0
  480. package/dist/policy-test.d.ts +83 -0
  481. package/dist/policy-test.d.ts.map +1 -0
  482. package/dist/policy-test.js +342 -0
  483. package/dist/pr-summary.d.ts +34 -0
  484. package/dist/pr-summary.d.ts.map +1 -0
  485. package/dist/pr-summary.js +220 -0
  486. package/dist/product-coherence.d.ts +21 -0
  487. package/dist/product-coherence.d.ts.map +1 -0
  488. package/dist/product-coherence.js +158 -0
  489. package/dist/profile-registry.d.ts +42 -0
  490. package/dist/profile-registry.d.ts.map +1 -0
  491. package/dist/profile-registry.js +104 -0
  492. package/dist/project-coupling-audit.d.ts +64 -0
  493. package/dist/project-coupling-audit.d.ts.map +1 -0
  494. package/dist/project-coupling-audit.js +282 -0
  495. package/dist/project-overview.d.ts +14 -0
  496. package/dist/project-overview.d.ts.map +1 -0
  497. package/dist/project-overview.js +27 -0
  498. package/dist/propose-knowledge.d.ts +64 -0
  499. package/dist/propose-knowledge.d.ts.map +1 -0
  500. package/dist/propose-knowledge.js +367 -0
  501. package/dist/quality-baseline.d.ts +123 -0
  502. package/dist/quality-baseline.d.ts.map +1 -0
  503. package/dist/quality-baseline.js +433 -0
  504. package/dist/quality-html.d.ts +7 -0
  505. package/dist/quality-html.d.ts.map +1 -0
  506. package/dist/quality-html.js +64 -0
  507. package/dist/quality-report.d.ts +49 -0
  508. package/dist/quality-report.d.ts.map +1 -0
  509. package/dist/quality-report.js +296 -0
  510. package/dist/query-resolver.d.ts +38 -0
  511. package/dist/query-resolver.d.ts.map +1 -0
  512. package/dist/query-resolver.js +163 -0
  513. package/dist/ranker-explainability.d.ts +91 -0
  514. package/dist/ranker-explainability.d.ts.map +1 -0
  515. package/dist/ranker-explainability.js +550 -0
  516. package/dist/reference-lookup.d.ts +8 -0
  517. package/dist/reference-lookup.d.ts.map +1 -0
  518. package/dist/reference-lookup.js +18 -0
  519. package/dist/registration-hint-registry.d.ts +55 -0
  520. package/dist/registration-hint-registry.d.ts.map +1 -0
  521. package/dist/registration-hint-registry.js +327 -0
  522. package/dist/registry-lifecycle.d.ts +47 -0
  523. package/dist/registry-lifecycle.d.ts.map +1 -0
  524. package/dist/registry-lifecycle.js +214 -0
  525. package/dist/release-readiness.d.ts +64 -0
  526. package/dist/release-readiness.d.ts.map +1 -0
  527. package/dist/release-readiness.js +456 -0
  528. package/dist/release-smoke.d.ts +138 -0
  529. package/dist/release-smoke.d.ts.map +1 -0
  530. package/dist/release-smoke.js +459 -0
  531. package/dist/release-train.d.ts +33 -0
  532. package/dist/release-train.d.ts.map +1 -0
  533. package/dist/release-train.js +104 -0
  534. package/dist/repo-memory.d.ts +95 -0
  535. package/dist/repo-memory.d.ts.map +1 -0
  536. package/dist/repo-memory.js +614 -0
  537. package/dist/report-site.d.ts +92 -0
  538. package/dist/report-site.d.ts.map +1 -0
  539. package/dist/report-site.js +658 -0
  540. package/dist/reposet.d.ts +56 -0
  541. package/dist/reposet.d.ts.map +1 -0
  542. package/dist/reposet.js +160 -0
  543. package/dist/repository-intelligence.d.ts +145 -0
  544. package/dist/repository-intelligence.d.ts.map +1 -0
  545. package/dist/repository-intelligence.js +729 -0
  546. package/dist/repository-knowledge-model.d.ts +218 -0
  547. package/dist/repository-knowledge-model.d.ts.map +1 -0
  548. package/dist/repository-knowledge-model.js +939 -0
  549. package/dist/repository-map.d.ts +72 -0
  550. package/dist/repository-map.d.ts.map +1 -0
  551. package/dist/repository-map.js +332 -0
  552. package/dist/repository-stats.d.ts +66 -0
  553. package/dist/repository-stats.d.ts.map +1 -0
  554. package/dist/repository-stats.js +329 -0
  555. package/dist/review-comment-renderer.d.ts +59 -0
  556. package/dist/review-comment-renderer.d.ts.map +1 -0
  557. package/dist/review-comment-renderer.js +181 -0
  558. package/dist/review-comment-v2.d.ts +9 -0
  559. package/dist/review-comment-v2.d.ts.map +1 -0
  560. package/dist/review-comment-v2.js +178 -0
  561. package/dist/review-html.d.ts +13 -0
  562. package/dist/review-html.d.ts.map +1 -0
  563. package/dist/review-html.js +79 -0
  564. package/dist/review-packet-v2.d.ts +29 -0
  565. package/dist/review-packet-v2.d.ts.map +1 -0
  566. package/dist/review-packet-v2.js +81 -0
  567. package/dist/review-packet-v3.d.ts +22 -0
  568. package/dist/review-packet-v3.d.ts.map +1 -0
  569. package/dist/review-packet-v3.js +181 -0
  570. package/dist/review-packet.d.ts +49 -0
  571. package/dist/review-packet.d.ts.map +1 -0
  572. package/dist/review-packet.js +129 -0
  573. package/dist/risk-signals.d.ts +28 -0
  574. package/dist/risk-signals.d.ts.map +1 -0
  575. package/dist/risk-signals.js +68 -0
  576. package/dist/role-views.d.ts +50 -0
  577. package/dist/role-views.d.ts.map +1 -0
  578. package/dist/role-views.js +334 -0
  579. package/dist/rounds.d.ts +52 -0
  580. package/dist/rounds.d.ts.map +1 -0
  581. package/dist/rounds.js +172 -0
  582. package/dist/rule-drift.d.ts +42 -0
  583. package/dist/rule-drift.d.ts.map +1 -0
  584. package/dist/rule-drift.js +148 -0
  585. package/dist/rule-quality.d.ts +73 -0
  586. package/dist/rule-quality.d.ts.map +1 -0
  587. package/dist/rule-quality.js +356 -0
  588. package/dist/rule-scaffold.d.ts +71 -0
  589. package/dist/rule-scaffold.d.ts.map +1 -0
  590. package/dist/rule-scaffold.js +258 -0
  591. package/dist/safety-audit-deep.d.ts +38 -0
  592. package/dist/safety-audit-deep.d.ts.map +1 -0
  593. package/dist/safety-audit-deep.js +162 -0
  594. package/dist/safety-audit.d.ts +91 -0
  595. package/dist/safety-audit.d.ts.map +1 -0
  596. package/dist/safety-audit.js +138 -0
  597. package/dist/safety-html.d.ts +7 -0
  598. package/dist/safety-html.d.ts.map +1 -0
  599. package/dist/safety-html.js +70 -0
  600. package/dist/scaffold-coverage.d.ts +46 -0
  601. package/dist/scaffold-coverage.d.ts.map +1 -0
  602. package/dist/scaffold-coverage.js +273 -0
  603. package/dist/scaffold-patterns.d.ts +38 -0
  604. package/dist/scaffold-patterns.d.ts.map +1 -0
  605. package/dist/scaffold-patterns.js +282 -0
  606. package/dist/schema-inventory.d.ts +55 -0
  607. package/dist/schema-inventory.d.ts.map +1 -0
  608. package/dist/schema-inventory.js +301 -0
  609. package/dist/search-index.d.ts +75 -0
  610. package/dist/search-index.d.ts.map +1 -0
  611. package/dist/search-index.js +531 -0
  612. package/dist/search-tuning-explain.d.ts +68 -0
  613. package/dist/search-tuning-explain.d.ts.map +1 -0
  614. package/dist/search-tuning-explain.js +207 -0
  615. package/dist/search-tuning-registry.d.ts +54 -0
  616. package/dist/search-tuning-registry.d.ts.map +1 -0
  617. package/dist/search-tuning-registry.js +303 -0
  618. package/dist/self-audit.d.ts +59 -0
  619. package/dist/self-audit.d.ts.map +1 -0
  620. package/dist/self-audit.js +192 -0
  621. package/dist/self-config-doctor-v2.d.ts +57 -0
  622. package/dist/self-config-doctor-v2.d.ts.map +1 -0
  623. package/dist/self-config-doctor-v2.js +653 -0
  624. package/dist/self-config-doctor.d.ts +47 -0
  625. package/dist/self-config-doctor.d.ts.map +1 -0
  626. package/dist/self-config-doctor.js +432 -0
  627. package/dist/sharkcraft-inspector.d.ts +73 -0
  628. package/dist/sharkcraft-inspector.d.ts.map +1 -0
  629. package/dist/sharkcraft-inspector.js +745 -0
  630. package/dist/spec/spec-cross-validate.d.ts +17 -0
  631. package/dist/spec/spec-cross-validate.d.ts.map +1 -0
  632. package/dist/spec/spec-cross-validate.js +53 -0
  633. package/dist/spec/spec-discovery.d.ts +27 -0
  634. package/dist/spec/spec-discovery.d.ts.map +1 -0
  635. package/dist/spec/spec-discovery.js +78 -0
  636. package/dist/spec/spec-review.d.ts +36 -0
  637. package/dist/spec/spec-review.d.ts.map +1 -0
  638. package/dist/spec/spec-review.js +37 -0
  639. package/dist/stability-map.d.ts +62 -0
  640. package/dist/stability-map.d.ts.map +1 -0
  641. package/dist/stability-map.js +404 -0
  642. package/dist/start-here.d.ts +49 -0
  643. package/dist/start-here.d.ts.map +1 -0
  644. package/dist/start-here.js +259 -0
  645. package/dist/surface-profile-detect.d.ts +42 -0
  646. package/dist/surface-profile-detect.d.ts.map +1 -0
  647. package/dist/surface-profile-detect.js +76 -0
  648. package/dist/symbol-index.d.ts +108 -0
  649. package/dist/symbol-index.d.ts.map +1 -0
  650. package/dist/symbol-index.js +483 -0
  651. package/dist/task-decompose.d.ts +38 -0
  652. package/dist/task-decompose.d.ts.map +1 -0
  653. package/dist/task-decompose.js +154 -0
  654. package/dist/task-packet.d.ts +104 -0
  655. package/dist/task-packet.d.ts.map +1 -0
  656. package/dist/task-packet.js +156 -0
  657. package/dist/task-ranker.d.ts +51 -0
  658. package/dist/task-ranker.d.ts.map +1 -0
  659. package/dist/task-ranker.js +410 -0
  660. package/dist/task-risk.d.ts +84 -0
  661. package/dist/task-risk.d.ts.map +1 -0
  662. package/dist/task-risk.js +731 -0
  663. package/dist/task-routing-hint-registry.d.ts +36 -0
  664. package/dist/task-routing-hint-registry.d.ts.map +1 -0
  665. package/dist/task-routing-hint-registry.js +186 -0
  666. package/dist/template-authoring.d.ts +113 -0
  667. package/dist/template-authoring.d.ts.map +1 -0
  668. package/dist/template-authoring.js +521 -0
  669. package/dist/template-body-inference-v2.d.ts +19 -0
  670. package/dist/template-body-inference-v2.d.ts.map +1 -0
  671. package/dist/template-body-inference-v2.js +468 -0
  672. package/dist/template-body-inference.d.ts +59 -0
  673. package/dist/template-body-inference.d.ts.map +1 -0
  674. package/dist/template-body-inference.js +277 -0
  675. package/dist/template-drift.d.ts +39 -0
  676. package/dist/template-drift.d.ts.map +1 -0
  677. package/dist/template-drift.js +353 -0
  678. package/dist/template-lint.d.ts +31 -0
  679. package/dist/template-lint.d.ts.map +1 -0
  680. package/dist/template-lint.js +113 -0
  681. package/dist/test-definitions.d.ts +41 -0
  682. package/dist/test-definitions.d.ts.map +1 -0
  683. package/dist/test-definitions.js +6 -0
  684. package/dist/test-impact.d.ts +30 -0
  685. package/dist/test-impact.d.ts.map +1 -0
  686. package/dist/test-impact.js +173 -0
  687. package/dist/test-runner.d.ts +87 -0
  688. package/dist/test-runner.d.ts.map +1 -0
  689. package/dist/test-runner.js +560 -0
  690. package/dist/uncertainty-report.d.ts +46 -0
  691. package/dist/uncertainty-report.d.ts.map +1 -0
  692. package/dist/uncertainty-report.js +108 -0
  693. package/dist/uncertainty.d.ts +38 -0
  694. package/dist/uncertainty.d.ts.map +1 -0
  695. package/dist/uncertainty.js +115 -0
  696. package/dist/universal-search.d.ts +64 -0
  697. package/dist/universal-search.d.ts.map +1 -0
  698. package/dist/universal-search.js +347 -0
  699. package/dist/upgrade-advisor.d.ts +22 -0
  700. package/dist/upgrade-advisor.d.ts.map +1 -0
  701. package/dist/upgrade-advisor.js +109 -0
  702. package/dist/why-file.d.ts +75 -0
  703. package/dist/why-file.d.ts.map +1 -0
  704. package/dist/why-file.js +202 -0
  705. package/dist/workflow-simulation.d.ts +46 -0
  706. package/dist/workflow-simulation.d.ts.map +1 -0
  707. package/dist/workflow-simulation.js +154 -0
  708. package/package.json +65 -0
@@ -0,0 +1,190 @@
1
+ import { hasActionHints } from '@shrkcrft/knowledge';
2
+ import { resolvePreset, resolvePresetReferences } from '@shrkcrft/presets';
3
+ import { inspectionReferenceLookup } from "./reference-lookup.js";
4
+ function pct(covered, total) {
5
+ if (total === 0)
6
+ return 100;
7
+ return Math.round((covered / total) * 100);
8
+ }
9
+ /**
10
+ * Deterministic coverage report. Different from AI-readiness — focuses on
11
+ * **relationships**: do entries link to each other in a way that lets an
12
+ * agent traverse the project intelligence?
13
+ */
14
+ export function buildCoverageReport(inspection) {
15
+ const suggestions = [];
16
+ const categories = [];
17
+ // 1. Templates with description ≥ 5 chars.
18
+ {
19
+ const total = inspection.templates.length;
20
+ const missing = [];
21
+ let covered = 0;
22
+ for (const t of inspection.templates) {
23
+ if (typeof t.description === 'string' && t.description.trim().length >= 5) {
24
+ covered += 1;
25
+ }
26
+ else {
27
+ missing.push(`${t.id} — description missing or too short`);
28
+ }
29
+ }
30
+ categories.push({
31
+ id: 'template-descriptions',
32
+ title: 'Templates have a meaningful description',
33
+ total,
34
+ covered,
35
+ score: pct(covered, total),
36
+ missing,
37
+ });
38
+ }
39
+ // 2. Templates with related rules / paths.
40
+ {
41
+ const total = inspection.templates.length;
42
+ const missing = [];
43
+ let covered = 0;
44
+ for (const t of inspection.templates) {
45
+ const related = t.related ?? [];
46
+ if (related.length > 0)
47
+ covered += 1;
48
+ else
49
+ missing.push(`${t.id} — no related rules/paths declared`);
50
+ }
51
+ categories.push({
52
+ id: 'template-related',
53
+ title: 'Templates declare related rules/paths',
54
+ total,
55
+ covered,
56
+ score: pct(covered, total),
57
+ missing,
58
+ });
59
+ }
60
+ // 3. Critical/high knowledge entries with action hints.
61
+ {
62
+ const eligible = inspection.knowledgeEntries.filter((e) => {
63
+ const p = String(e.priority);
64
+ return p === 'critical' || p === 'high';
65
+ });
66
+ const total = eligible.length;
67
+ const missing = [];
68
+ let covered = 0;
69
+ for (const e of eligible) {
70
+ if (hasActionHints(e))
71
+ covered += 1;
72
+ else
73
+ missing.push(`${e.id} — no actionHints`);
74
+ }
75
+ categories.push({
76
+ id: 'hint-coverage',
77
+ title: 'Critical/high entries carry actionHints',
78
+ total,
79
+ covered,
80
+ score: pct(covered, total),
81
+ missing,
82
+ });
83
+ }
84
+ // 4. Pipelines whose steps reference existing templates/rules/paths.
85
+ {
86
+ const total = inspection.pipelines.length;
87
+ const missing = [];
88
+ let covered = 0;
89
+ for (const p of inspection.pipelines) {
90
+ const refs = [];
91
+ for (const step of p.steps ?? []) {
92
+ for (const ref of step.references ?? [])
93
+ refs.push(ref);
94
+ }
95
+ if (refs.length === 0) {
96
+ missing.push(`${p.id} — no step references`);
97
+ continue;
98
+ }
99
+ const allResolve = refs.every((id) => inspection.templates.some((t) => t.id === id) ||
100
+ inspection.knowledgeEntries.some((e) => e.id === id));
101
+ if (allResolve)
102
+ covered += 1;
103
+ else
104
+ missing.push(`${p.id} — some step references unknown ids`);
105
+ }
106
+ categories.push({
107
+ id: 'pipeline-step-refs',
108
+ title: 'Pipelines reference resolvable templates/rules',
109
+ total,
110
+ covered,
111
+ score: pct(covered, total),
112
+ missing,
113
+ });
114
+ }
115
+ // 5. Presets — references resolve.
116
+ {
117
+ const refLookup = inspectionReferenceLookup(inspection);
118
+ const presets = inspection.presetRegistry.list();
119
+ const total = presets.length;
120
+ const missing = [];
121
+ let covered = 0;
122
+ for (const p of presets) {
123
+ const resolved = resolvePreset(inspection.presetRegistry, p.id);
124
+ const refs = resolvePresetReferences(resolved, refLookup);
125
+ if (refs.totalMissing === 0 && resolved.issues.length === 0) {
126
+ covered += 1;
127
+ }
128
+ else {
129
+ missing.push(`${p.id} — ${resolved.issues.length} composition issues, ${refs.totalMissing} missing refs`);
130
+ }
131
+ }
132
+ categories.push({
133
+ id: 'preset-references',
134
+ title: 'Presets compose + reference assets that resolve',
135
+ total,
136
+ covered,
137
+ score: pct(covered, total),
138
+ missing,
139
+ });
140
+ }
141
+ // 6. Boundary rules — suggested fix present.
142
+ {
143
+ const rules = inspection.boundaryRegistry.list();
144
+ const total = rules.length;
145
+ const missing = [];
146
+ let covered = 0;
147
+ for (const r of rules) {
148
+ if (typeof r.suggestedFix === 'string' && r.suggestedFix.trim().length > 0)
149
+ covered += 1;
150
+ else
151
+ missing.push(`${r.id} — no suggestedFix`);
152
+ }
153
+ categories.push({
154
+ id: 'boundary-fixes',
155
+ title: 'Boundary rules ship a suggestedFix',
156
+ total,
157
+ covered,
158
+ score: pct(covered, total),
159
+ missing,
160
+ });
161
+ }
162
+ // 7. Packs — at least one doc.
163
+ {
164
+ const packs = inspection.packs.discoveredPacks.filter((p) => p.valid);
165
+ const total = packs.length;
166
+ const missing = [];
167
+ let covered = 0;
168
+ for (const p of packs) {
169
+ const docs = p.manifest?.contributions.docsFiles ?? [];
170
+ if (docs.length > 0)
171
+ covered += 1;
172
+ else
173
+ missing.push(`${p.packageName} — no docsFiles`);
174
+ }
175
+ categories.push({
176
+ id: 'pack-docs',
177
+ title: 'Packs ship at least one doc',
178
+ total,
179
+ covered,
180
+ score: pct(covered, total),
181
+ missing,
182
+ });
183
+ }
184
+ const overall = Math.round(categories.reduce((s, c) => s + c.score, 0) / Math.max(categories.length, 1));
185
+ if (overall < 60)
186
+ suggestions.push('Pair every critical rule with action hints + verification commands.');
187
+ if (overall < 80)
188
+ suggestions.push('Make templates declare related rules/paths (`template.related`).');
189
+ return { categories, overall, suggestions };
190
+ }
@@ -0,0 +1,146 @@
1
+ import { type IKnowledgeEntry } from '@shrkcrft/knowledge';
2
+ export declare const CUSTOM_CHECK_REPORT_SCHEMA = "sharkcraft.custom-check/v1";
3
+ export declare const CUSTOM_CHECKS_REGISTRY_SCHEMA = "sharkcraft.custom-checks-registry/v1";
4
+ export declare enum CustomCheckScope {
5
+ ChangedOnly = "changed-only",
6
+ Staged = "staged",
7
+ All = "all"
8
+ }
9
+ export declare enum CustomCheckKind {
10
+ ImportGraph = "import-graph",
11
+ AstShape = "ast-shape",
12
+ TextShape = "text-shape",
13
+ ProjectScript = "project-script",
14
+ ExternalTool = "external-tool"
15
+ }
16
+ export declare enum CustomCheckSafety {
17
+ ReadOnly = "read-only",
18
+ WritesReport = "writes-report",
19
+ WritesPreview = "writes-preview"
20
+ }
21
+ export declare enum CustomCheckOutput {
22
+ Json = "json",
23
+ Text = "text",
24
+ ExitCode = "exit-code"
25
+ }
26
+ export declare enum CustomCheckStatus {
27
+ Pass = "pass",
28
+ Warn = "warn",
29
+ Fail = "fail",
30
+ Skipped = "skipped"
31
+ }
32
+ export interface ICustomCheckDescriptor {
33
+ /** Stable id (must be unique across the registry). */
34
+ id: string;
35
+ /** The rule that owns this check. The engine fills this in from context. */
36
+ ownerRuleId?: string;
37
+ /** Shell command to run (never executed unless --execute). */
38
+ command: string;
39
+ /** Where the script writes its report (relative to repo root). */
40
+ reportPath?: string;
41
+ /** Optional human description. */
42
+ description?: string;
43
+ scope?: CustomCheckScope;
44
+ kind?: CustomCheckKind;
45
+ safety?: CustomCheckSafety;
46
+ output?: CustomCheckOutput;
47
+ /** Tags for filtering. */
48
+ tags?: readonly string[];
49
+ }
50
+ export interface ICustomCheckFinding {
51
+ severity: 'error' | 'warning' | 'info';
52
+ file?: string;
53
+ message: string;
54
+ suggestedAction?: string;
55
+ safeToAutoFix?: boolean;
56
+ }
57
+ export interface ICustomCheckReport {
58
+ schema: typeof CUSTOM_CHECK_REPORT_SCHEMA;
59
+ checkId: string;
60
+ ruleId?: string;
61
+ generatedAt: string;
62
+ status: CustomCheckStatus;
63
+ findings: readonly ICustomCheckFinding[];
64
+ /** Free-form metadata copied verbatim from the script. */
65
+ metadata?: Readonly<Record<string, unknown>>;
66
+ }
67
+ export interface ICustomCheckRegistryEntry {
68
+ descriptor: ICustomCheckDescriptor;
69
+ ruleId: string;
70
+ /** Validation findings about the descriptor itself. */
71
+ warnings: readonly string[];
72
+ }
73
+ export interface ICustomCheckRegistry {
74
+ schema: typeof CUSTOM_CHECKS_REGISTRY_SCHEMA;
75
+ generatedAt: string;
76
+ entries: readonly ICustomCheckRegistryEntry[];
77
+ duplicates: readonly {
78
+ id: string;
79
+ ruleIds: readonly string[];
80
+ }[];
81
+ invalid: readonly {
82
+ ruleId: string;
83
+ reason: string;
84
+ }[];
85
+ }
86
+ /** Read the descriptors a rule declares under `metadata.checks`. */
87
+ export declare function readDescriptorsFromRule(rule: IKnowledgeEntry): readonly ICustomCheckDescriptor[];
88
+ export declare function buildCustomChecksRegistry(entries: readonly IKnowledgeEntry[]): ICustomCheckRegistry;
89
+ export interface ICustomCheckDoctorReport {
90
+ schema: 'sharkcraft.custom-checks-doctor/v1';
91
+ generatedAt: string;
92
+ totalChecks: number;
93
+ warnings: number;
94
+ errors: number;
95
+ details: readonly {
96
+ ruleId: string;
97
+ checkId: string;
98
+ severity: 'error' | 'warning' | 'info';
99
+ message: string;
100
+ }[];
101
+ }
102
+ export declare function doctorCustomChecks(registry: ICustomCheckRegistry): ICustomCheckDoctorReport;
103
+ /**
104
+ * Parse a custom-check report from a known location. Supports the JSON
105
+ * convention (preferred), and a text fallback that turns each line into
106
+ * a `severity:warning, message: line` finding.
107
+ */
108
+ export declare function parseCustomCheckReportFromFile(filePath: string, expectedCheckId?: string): {
109
+ ok: true;
110
+ report: ICustomCheckReport;
111
+ } | {
112
+ ok: false;
113
+ reason: string;
114
+ };
115
+ export declare function parseCustomCheckReport(raw: string, expectedCheckId?: string): {
116
+ ok: true;
117
+ report: ICustomCheckReport;
118
+ } | {
119
+ ok: false;
120
+ reason: string;
121
+ };
122
+ export interface IRunCustomCheckOptions {
123
+ cwd: string;
124
+ /** When false (default) the runner prints the command and exits without spawning. */
125
+ execute?: boolean;
126
+ /** Override the descriptor reportPath. */
127
+ reportPath?: string;
128
+ /** Optional environment additions. */
129
+ env?: Record<string, string>;
130
+ /** Maximum runtime in ms. */
131
+ timeoutMs?: number;
132
+ }
133
+ export interface IRunCustomCheckResult {
134
+ schema: 'sharkcraft.custom-check-run/v1';
135
+ checkId: string;
136
+ ownerRuleId?: string;
137
+ command: string;
138
+ executed: boolean;
139
+ exitCode: number | null;
140
+ stderr?: string;
141
+ stdoutSummary?: string;
142
+ report?: ICustomCheckReport;
143
+ reason?: string;
144
+ }
145
+ export declare function runCustomCheck(descriptor: ICustomCheckDescriptor, options: IRunCustomCheckOptions): IRunCustomCheckResult;
146
+ //# sourceMappingURL=custom-checks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-checks.d.ts","sourceRoot":"","sources":["../src/custom-checks.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,qBAAqB,CAAC;AAE1E,eAAO,MAAM,0BAA0B,+BAA+B,CAAC;AACvE,eAAO,MAAM,6BAA6B,yCAAyC,CAAC;AAEpF,oBAAY,gBAAgB;IAC1B,WAAW,iBAAiB;IAC5B,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ;AAED,oBAAY,eAAe;IACzB,WAAW,iBAAiB;IAC5B,QAAQ,cAAc;IACtB,SAAS,eAAe;IACxB,aAAa,mBAAmB;IAChC,YAAY,kBAAkB;CAC/B;AAED,oBAAY,iBAAiB;IAC3B,QAAQ,cAAc;IACtB,YAAY,kBAAkB;IAC9B,aAAa,mBAAmB;CACjC;AAED,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,IAAI,SAAS;IACb,QAAQ,cAAc;CACvB;AAED,oBAAY,iBAAiB;IAC3B,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,sDAAsD;IACtD,EAAE,EAAE,MAAM,CAAC;IACX,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,0BAA0B;IAC1B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,OAAO,0BAA0B,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzC,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,yBAAyB;IACxC,UAAU,EAAE,sBAAsB,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,6BAA6B,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC9C,UAAU,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IAClE,OAAO,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACxD;AAID,oEAAoE;AACpE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,eAAe,GAAG,SAAS,sBAAsB,EAAE,CAKhG;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,SAAS,eAAe,EAAE,GAClC,oBAAoB,CA8CtB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,oCAAoC,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,SAAS;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;QACvC,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;CACL;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,oBAAoB,GAC7B,wBAAwB,CA+B1B;AAED;;;;GAIG;AACH,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,eAAe,CAAC,EAAE,MAAM,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAM1E;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,eAAe,CAAC,EAAE,MAAM,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,kBAAkB,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAgE1E;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,0CAA0C;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,gCAAgC,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,cAAc,CAC5B,UAAU,EAAE,sBAAsB,EAClC,OAAO,EAAE,sBAAsB,GAC9B,qBAAqB,CAiCvB"}
@@ -0,0 +1,260 @@
1
+ /**
2
+ * Custom checks registry and report convention.
3
+ *
4
+ * A "custom check" is a deterministic, project-script-style validation a
5
+ * rule wants attached to it. The engine never executes the script unless
6
+ * the user explicitly opts in (`shrk checks run --execute`). The report
7
+ * convention is `sharkcraft.custom-check/v1`.
8
+ *
9
+ * Custom-check metadata lives on the rule entry under
10
+ * `metadata.checks: ICustomCheckDescriptor[]`. The engine never invents
11
+ * a check; we only inventory what authors declare.
12
+ *
13
+ * Hard rules:
14
+ * - No spawning a process by default.
15
+ * - Read-only inventory unless `--execute` is set explicitly.
16
+ * - Three input formats supported: JSON-report (preferred), text
17
+ * output, command-only (exit-code = signal).
18
+ */
19
+ import { spawnSync } from 'node:child_process';
20
+ import { existsSync, readFileSync } from 'node:fs';
21
+ import * as nodePath from 'node:path';
22
+ import { KnowledgeType } from '@shrkcrft/knowledge';
23
+ export const CUSTOM_CHECK_REPORT_SCHEMA = 'sharkcraft.custom-check/v1';
24
+ export const CUSTOM_CHECKS_REGISTRY_SCHEMA = 'sharkcraft.custom-checks-registry/v1';
25
+ export var CustomCheckScope;
26
+ (function (CustomCheckScope) {
27
+ CustomCheckScope["ChangedOnly"] = "changed-only";
28
+ CustomCheckScope["Staged"] = "staged";
29
+ CustomCheckScope["All"] = "all";
30
+ })(CustomCheckScope || (CustomCheckScope = {}));
31
+ export var CustomCheckKind;
32
+ (function (CustomCheckKind) {
33
+ CustomCheckKind["ImportGraph"] = "import-graph";
34
+ CustomCheckKind["AstShape"] = "ast-shape";
35
+ CustomCheckKind["TextShape"] = "text-shape";
36
+ CustomCheckKind["ProjectScript"] = "project-script";
37
+ CustomCheckKind["ExternalTool"] = "external-tool";
38
+ })(CustomCheckKind || (CustomCheckKind = {}));
39
+ export var CustomCheckSafety;
40
+ (function (CustomCheckSafety) {
41
+ CustomCheckSafety["ReadOnly"] = "read-only";
42
+ CustomCheckSafety["WritesReport"] = "writes-report";
43
+ CustomCheckSafety["WritesPreview"] = "writes-preview";
44
+ })(CustomCheckSafety || (CustomCheckSafety = {}));
45
+ export var CustomCheckOutput;
46
+ (function (CustomCheckOutput) {
47
+ CustomCheckOutput["Json"] = "json";
48
+ CustomCheckOutput["Text"] = "text";
49
+ CustomCheckOutput["ExitCode"] = "exit-code";
50
+ })(CustomCheckOutput || (CustomCheckOutput = {}));
51
+ export var CustomCheckStatus;
52
+ (function (CustomCheckStatus) {
53
+ CustomCheckStatus["Pass"] = "pass";
54
+ CustomCheckStatus["Warn"] = "warn";
55
+ CustomCheckStatus["Fail"] = "fail";
56
+ CustomCheckStatus["Skipped"] = "skipped";
57
+ })(CustomCheckStatus || (CustomCheckStatus = {}));
58
+ const ID_RE = /^[a-z][a-z0-9.-]+$/;
59
+ /** Read the descriptors a rule declares under `metadata.checks`. */
60
+ export function readDescriptorsFromRule(rule) {
61
+ const md = rule.metadata;
62
+ const raw = md?.['checks'];
63
+ if (!Array.isArray(raw))
64
+ return [];
65
+ return raw.map((r) => ({ ...r, ownerRuleId: rule.id }));
66
+ }
67
+ export function buildCustomChecksRegistry(entries) {
68
+ const out = [];
69
+ const idIndex = new Map();
70
+ const invalid = [];
71
+ for (const e of entries) {
72
+ if (String(e.type) !== KnowledgeType.Rule)
73
+ continue;
74
+ const descriptors = readDescriptorsFromRule(e);
75
+ for (const d of descriptors) {
76
+ const warnings = [];
77
+ if (!d.id || typeof d.id !== 'string') {
78
+ invalid.push({ ruleId: e.id, reason: 'check entry missing string id' });
79
+ continue;
80
+ }
81
+ if (!ID_RE.test(d.id)) {
82
+ warnings.push(`id "${d.id}" should match ${ID_RE.source}`);
83
+ }
84
+ if (!d.command || typeof d.command !== 'string') {
85
+ invalid.push({ ruleId: e.id, reason: `check "${d.id}" missing command` });
86
+ continue;
87
+ }
88
+ if (d.output === CustomCheckOutput.Json && !d.reportPath) {
89
+ warnings.push(`check "${d.id}" declares JSON output but has no reportPath`);
90
+ }
91
+ if (d.safety === undefined) {
92
+ warnings.push(`check "${d.id}" did not declare safety; defaulting to read-only`);
93
+ }
94
+ const list = idIndex.get(d.id) ?? [];
95
+ list.push(e.id);
96
+ idIndex.set(d.id, list);
97
+ out.push({ descriptor: d, ruleId: e.id, warnings });
98
+ }
99
+ }
100
+ const duplicates = [];
101
+ for (const [id, ruleIds] of idIndex) {
102
+ if (ruleIds.length > 1)
103
+ duplicates.push({ id, ruleIds });
104
+ }
105
+ return {
106
+ schema: CUSTOM_CHECKS_REGISTRY_SCHEMA,
107
+ generatedAt: new Date().toISOString(),
108
+ entries: out,
109
+ duplicates,
110
+ invalid,
111
+ };
112
+ }
113
+ export function doctorCustomChecks(registry) {
114
+ const details = [];
115
+ for (const inv of registry.invalid) {
116
+ details.push({ ruleId: inv.ruleId, checkId: '(invalid)', severity: 'error', message: inv.reason });
117
+ }
118
+ for (const dup of registry.duplicates) {
119
+ details.push({
120
+ ruleId: dup.ruleIds.join(','),
121
+ checkId: dup.id,
122
+ severity: 'error',
123
+ message: `duplicate check id "${dup.id}" declared by rules ${dup.ruleIds.join(', ')}`,
124
+ });
125
+ }
126
+ for (const e of registry.entries) {
127
+ for (const w of e.warnings) {
128
+ details.push({
129
+ ruleId: e.ruleId,
130
+ checkId: e.descriptor.id,
131
+ severity: 'warning',
132
+ message: w,
133
+ });
134
+ }
135
+ }
136
+ return {
137
+ schema: 'sharkcraft.custom-checks-doctor/v1',
138
+ generatedAt: new Date().toISOString(),
139
+ totalChecks: registry.entries.length,
140
+ warnings: details.filter((d) => d.severity === 'warning').length,
141
+ errors: details.filter((d) => d.severity === 'error').length,
142
+ details,
143
+ };
144
+ }
145
+ /**
146
+ * Parse a custom-check report from a known location. Supports the JSON
147
+ * convention (preferred), and a text fallback that turns each line into
148
+ * a `severity:warning, message: line` finding.
149
+ */
150
+ export function parseCustomCheckReportFromFile(filePath, expectedCheckId) {
151
+ if (!existsSync(filePath)) {
152
+ return { ok: false, reason: `report file does not exist: ${filePath}` };
153
+ }
154
+ const raw = readFileSync(filePath, 'utf8');
155
+ return parseCustomCheckReport(raw, expectedCheckId);
156
+ }
157
+ export function parseCustomCheckReport(raw, expectedCheckId) {
158
+ const trimmed = raw.trim();
159
+ if (trimmed.length === 0)
160
+ return { ok: false, reason: 'empty report' };
161
+ if (trimmed.startsWith('{')) {
162
+ let parsed;
163
+ try {
164
+ parsed = JSON.parse(trimmed);
165
+ }
166
+ catch (e) {
167
+ return { ok: false, reason: `JSON parse failed: ${e.message}` };
168
+ }
169
+ if (parsed['schema'] !== CUSTOM_CHECK_REPORT_SCHEMA) {
170
+ return {
171
+ ok: false,
172
+ reason: `report schema mismatch — got "${String(parsed['schema'])}" expected "${CUSTOM_CHECK_REPORT_SCHEMA}"`,
173
+ };
174
+ }
175
+ if (typeof parsed['checkId'] !== 'string') {
176
+ return { ok: false, reason: 'report missing checkId' };
177
+ }
178
+ if (expectedCheckId && parsed['checkId'] !== expectedCheckId) {
179
+ return {
180
+ ok: false,
181
+ reason: `report checkId "${String(parsed['checkId'])}" does not match expected "${expectedCheckId}"`,
182
+ };
183
+ }
184
+ const findingsRaw = Array.isArray(parsed['findings']) ? parsed['findings'] : [];
185
+ const findings = findingsRaw.map((f) => ({
186
+ severity: f['severity'] ?? 'warning',
187
+ file: typeof f['file'] === 'string' ? f['file'] : undefined,
188
+ message: typeof f['message'] === 'string' ? f['message'] : '(no message)',
189
+ suggestedAction: typeof f['suggestedAction'] === 'string' ? f['suggestedAction'] : undefined,
190
+ safeToAutoFix: typeof f['safeToAutoFix'] === 'boolean' ? f['safeToAutoFix'] : false,
191
+ }));
192
+ const status = parsed['status'] ?? CustomCheckStatus.Pass;
193
+ return {
194
+ ok: true,
195
+ report: {
196
+ schema: CUSTOM_CHECK_REPORT_SCHEMA,
197
+ checkId: parsed['checkId'],
198
+ ruleId: typeof parsed['ruleId'] === 'string' ? parsed['ruleId'] : undefined,
199
+ generatedAt: typeof parsed['generatedAt'] === 'string' ? parsed['generatedAt'] : new Date().toISOString(),
200
+ status,
201
+ findings,
202
+ metadata: parsed['metadata'] ?? undefined,
203
+ },
204
+ };
205
+ }
206
+ // Text fallback: every non-empty line becomes a finding.
207
+ const findings = trimmed
208
+ .split('\n')
209
+ .map((l) => l.trim())
210
+ .filter((l) => l.length > 0)
211
+ .map((l) => ({ severity: 'warning', message: l }));
212
+ return {
213
+ ok: true,
214
+ report: {
215
+ schema: CUSTOM_CHECK_REPORT_SCHEMA,
216
+ checkId: expectedCheckId ?? '(text)',
217
+ generatedAt: new Date().toISOString(),
218
+ status: findings.length > 0 ? CustomCheckStatus.Warn : CustomCheckStatus.Pass,
219
+ findings,
220
+ },
221
+ };
222
+ }
223
+ export function runCustomCheck(descriptor, options) {
224
+ const result = {
225
+ schema: 'sharkcraft.custom-check-run/v1',
226
+ checkId: descriptor.id,
227
+ ownerRuleId: descriptor.ownerRuleId,
228
+ command: descriptor.command,
229
+ executed: false,
230
+ exitCode: null,
231
+ };
232
+ if (!options.execute) {
233
+ result.reason = 'execute flag not set; printing command only';
234
+ return result;
235
+ }
236
+ const child = spawnSync(descriptor.command, {
237
+ cwd: options.cwd,
238
+ shell: true,
239
+ encoding: 'utf8',
240
+ env: { ...process.env, ...(options.env ?? {}) },
241
+ timeout: options.timeoutMs ?? 60_000,
242
+ maxBuffer: 8 * 1024 * 1024,
243
+ });
244
+ result.executed = true;
245
+ result.exitCode = child.status ?? null;
246
+ if (child.stderr)
247
+ result.stderr = String(child.stderr).slice(0, 4_000);
248
+ if (child.stdout)
249
+ result.stdoutSummary = String(child.stdout).slice(0, 4_000);
250
+ const reportPath = options.reportPath ?? descriptor.reportPath;
251
+ if (reportPath) {
252
+ const abs = nodePath.isAbsolute(reportPath) ? reportPath : nodePath.resolve(options.cwd, reportPath);
253
+ const parsed = parseCustomCheckReportFromFile(abs, descriptor.id);
254
+ if (parsed.ok)
255
+ result.report = parsed.report;
256
+ else
257
+ result.reason = `parse failed: ${parsed.reason}`;
258
+ }
259
+ return result;
260
+ }
@@ -0,0 +1,59 @@
1
+ import type { IDashboardAdoptionResponse, IDashboardArchitectureResponse, IDashboardBoundaryResponse, IDashboardCapabilitiesResponse, IDashboardCommandsResponse, IDashboardCoverageResponse, IDashboardDoctorResponse, IDashboardDriftResponse, IDashboardGraphNodeResponse, IDashboardGraphPathResponse, IDashboardGraphResponse, IDashboardHealthResponse, IDashboardMcpResponse, IDashboardOnboardingResponse, IDashboardOverviewResponse, IDashboardPacksResponse, IDashboardPipelinesResponse, IDashboardPresetsResponse, IDashboardQualityResponse, IDashboardReportsResponse, IDashboardReviewResponse, IDashboardSafetyResponse, IDashboardScaffoldsResponse, IDashboardSchemasResponse, IDashboardSessionDetailResponse, IDashboardSessionsResponse, IDashboardStatsResponse } from '@shrkcrft/dashboard-api';
2
+ import type { ISharkcraftInspection } from '../sharkcraft-inspector.js';
3
+ import { type IQualityConfig } from '../quality-report.js';
4
+ export declare function buildDashboardOverview(inspection: ISharkcraftInspection): Promise<IDashboardOverviewResponse>;
5
+ export declare function buildDashboardDoctor(inspection: ISharkcraftInspection): IDashboardDoctorResponse;
6
+ export declare function buildDashboardQuality(inspection: ISharkcraftInspection, options?: {
7
+ qualityConfig?: IQualityConfig;
8
+ }): Promise<IDashboardQualityResponse>;
9
+ export declare function buildDashboardSafety(inspection: ISharkcraftInspection, catalog: ReadonlyArray<{
10
+ command: string;
11
+ description: string;
12
+ category: string;
13
+ safetyLevel: string;
14
+ writesFiles: boolean;
15
+ writesSource: boolean;
16
+ runsShell: boolean;
17
+ requiresReview: boolean;
18
+ mcpAvailable: boolean;
19
+ }>, mcpTools: ReadonlyArray<{
20
+ name: string;
21
+ description: string;
22
+ }>): IDashboardSafetyResponse;
23
+ export declare function buildDashboardCommands(catalog: ReadonlyArray<{
24
+ command: string;
25
+ description: string;
26
+ category: string;
27
+ safetyLevel: string;
28
+ }>): IDashboardCommandsResponse;
29
+ export declare function buildDashboardPacks(inspection: ISharkcraftInspection): IDashboardPacksResponse;
30
+ export declare function buildDashboardPresets(inspection: ISharkcraftInspection): IDashboardPresetsResponse;
31
+ export declare function buildDashboardPipelines(inspection: ISharkcraftInspection): IDashboardPipelinesResponse;
32
+ export declare function buildDashboardSessions(projectRoot: string): IDashboardSessionsResponse;
33
+ export declare function buildDashboardSessionDetail(projectRoot: string, sessionId: string): IDashboardSessionDetailResponse;
34
+ export declare function buildDashboardArchitecture(inspection: ISharkcraftInspection): IDashboardArchitectureResponse;
35
+ export declare function buildDashboardBoundaries(inspection: ISharkcraftInspection): IDashboardBoundaryResponse;
36
+ export declare function buildDashboardDrift(inspection: ISharkcraftInspection): IDashboardDriftResponse;
37
+ export declare function buildDashboardCoverage(inspection: ISharkcraftInspection): IDashboardCoverageResponse;
38
+ export declare function buildDashboardGraph(inspection: ISharkcraftInspection): IDashboardGraphResponse;
39
+ export declare function buildDashboardGraphNode(inspection: ISharkcraftInspection, id: string): IDashboardGraphNodeResponse;
40
+ export declare function buildDashboardGraphPath(inspection: ISharkcraftInspection, from: string, to: string): IDashboardGraphPathResponse;
41
+ export declare function buildDashboardOnboarding(inspection: ISharkcraftInspection): IDashboardOnboardingResponse;
42
+ export declare function buildDashboardAdoption(inspection: ISharkcraftInspection): IDashboardAdoptionResponse;
43
+ export declare function buildDashboardReports(inspection: ISharkcraftInspection): IDashboardReportsResponse;
44
+ export declare function buildDashboardReview(_inspection: ISharkcraftInspection, options?: {
45
+ packetPath?: string;
46
+ }): IDashboardReviewResponse;
47
+ export declare function buildDashboardScaffolds(inspection: ISharkcraftInspection): Promise<IDashboardScaffoldsResponse>;
48
+ export declare function buildDashboardSchemas(): IDashboardSchemasResponse;
49
+ export declare function buildDashboardMcpSummary(toolNames: ReadonlyArray<{
50
+ name: string;
51
+ description?: string;
52
+ }>): IDashboardMcpResponse;
53
+ export declare function buildDashboardHealth(uptimeSeconds: number): IDashboardHealthResponse;
54
+ export declare function buildDashboardStats(cwd: string, opts?: {
55
+ maxTopFiles?: number;
56
+ language?: string;
57
+ }): Promise<IDashboardStatsResponse>;
58
+ export declare function buildDashboardCapabilities(availability?: Partial<IDashboardCapabilitiesResponse>): IDashboardCapabilitiesResponse;
59
+ //# sourceMappingURL=dashboard-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dashboard-data.d.ts","sourceRoot":"","sources":["../../src/dashboard/dashboard-data.ts"],"names":[],"mappings":"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"}