@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,356 @@
1
+ /**
2
+ * Rule quality doctor.
3
+ *
4
+ * Per-rule quality findings. Reuses `diagnoseActionHints` for the
5
+ * "missing-hints / missing-verification / missing-write-policy" axis,
6
+ * adds findings for:
7
+ * - vague rules (very short content + no forbiddenActions + no examples)
8
+ * - missing examples on style/architecture rules
9
+ * - verificationCommands referencing scripts we cannot resolve
10
+ * - rules tagged advisory but still missing the `metadata.advisory: true` marker
11
+ *
12
+ * Advisory rules (`metadata.advisory: true`) skip the
13
+ * "missing-verification" warning by design — that is the whole point.
14
+ */
15
+ import { hasActionHints } from '@shrkcrft/knowledge';
16
+ import { diagnoseActionHints } from "./action-hint-diagnostics.js";
17
+ export const RULE_QUALITY_SCHEMA = 'sharkcraft.rule-quality/v1';
18
+ export var RuleQualityCode;
19
+ (function (RuleQualityCode) {
20
+ RuleQualityCode["MissingHints"] = "missing-hints";
21
+ RuleQualityCode["MissingCommandsOrMcp"] = "missing-commands-or-mcp";
22
+ RuleQualityCode["MissingForbiddenActions"] = "missing-forbidden-actions";
23
+ RuleQualityCode["MissingVerification"] = "missing-verification";
24
+ RuleQualityCode["MissingWritePolicy"] = "missing-write-policy";
25
+ RuleQualityCode["MissingExamples"] = "missing-examples";
26
+ RuleQualityCode["MissingOwner"] = "missing-owner";
27
+ RuleQualityCode["Vague"] = "vague-rule";
28
+ RuleQualityCode["AdvisoryNotMarked"] = "advisory-not-marked";
29
+ RuleQualityCode["AdvisoryHasUnusedVerification"] = "advisory-has-unused-verification";
30
+ RuleQualityCode["VerificationReferencesUnknown"] = "verification-references-unknown-script";
31
+ })(RuleQualityCode || (RuleQualityCode = {}));
32
+ const VAGUE_CONTENT_THRESHOLD = 80;
33
+ function isAdvisory(rule, opts) {
34
+ if (opts.advisoryRuleIds?.includes(rule.id))
35
+ return true;
36
+ const md = rule.metadata;
37
+ return md?.['advisory'] === true;
38
+ }
39
+ function looksAdvisoryByTag(rule) {
40
+ return rule.tags.map((t) => t.toLowerCase()).includes('advisory');
41
+ }
42
+ function isShapeOrStyleRule(rule) {
43
+ const tags = new Set(rule.tags.map((t) => t.toLowerCase()));
44
+ return (tags.has('style') ||
45
+ tags.has('shape') ||
46
+ tags.has('architecture') ||
47
+ tags.has('boundaries') ||
48
+ tags.has('imports'));
49
+ }
50
+ function isWriteRelated(rule) {
51
+ const tags = new Set(rule.tags.map((t) => t.toLowerCase()));
52
+ return (tags.has('safety') ||
53
+ tags.has('generator') ||
54
+ rule.appliesWhen.some((a) => /write|apply|generate/i.test(a)));
55
+ }
56
+ function isCriticalOrHigh(rule) {
57
+ const p = String(rule.priority);
58
+ return p === 'critical' || p === 'high';
59
+ }
60
+ function fromActionHintCode(code) {
61
+ switch (code) {
62
+ case 'missing-hints':
63
+ return RuleQualityCode.MissingHints;
64
+ case 'missing-commands-or-mcp':
65
+ return RuleQualityCode.MissingCommandsOrMcp;
66
+ case 'missing-forbidden-actions':
67
+ return RuleQualityCode.MissingForbiddenActions;
68
+ case 'missing-verification':
69
+ return RuleQualityCode.MissingVerification;
70
+ case 'missing-write-policy':
71
+ return RuleQualityCode.MissingWritePolicy;
72
+ case 'missing-related-templates':
73
+ return RuleQualityCode.MissingExamples;
74
+ case 'missing-related-path-conventions':
75
+ return RuleQualityCode.MissingExamples;
76
+ }
77
+ }
78
+ function whyThisMatters(code) {
79
+ switch (code) {
80
+ case RuleQualityCode.MissingHints:
81
+ return 'Without actionHints the agent has to guess what to run; the rule cannot drive a deterministic flow.';
82
+ case RuleQualityCode.MissingCommandsOrMcp:
83
+ return 'A high-priority rule with no commands/mcpTools cannot be acted on automatically.';
84
+ case RuleQualityCode.MissingForbiddenActions:
85
+ return 'Rules that ban behaviour need an explicit forbiddenActions list so reviewers know what to look for.';
86
+ case RuleQualityCode.MissingVerification:
87
+ return 'Enforceable rules need a verificationCommands string so `shrk apply --validate` and the agent can check the result.';
88
+ case RuleQualityCode.MissingWritePolicy:
89
+ return 'Write-related rules must declare writePolicy so agents know whether mutation is allowed via MCP/CLI.';
90
+ case RuleQualityCode.MissingExamples:
91
+ return 'Style/shape rules need at least one good or bad example so reviewers and agents understand the pattern.';
92
+ case RuleQualityCode.MissingOwner:
93
+ return 'Long-lived rules without an owner go stale; ownership unblocks future review.';
94
+ case RuleQualityCode.Vague:
95
+ return 'A rule with very short content and no forbiddenActions cannot be enforced or reviewed consistently.';
96
+ case RuleQualityCode.AdvisoryNotMarked:
97
+ return 'Rules tagged "advisory" should set `metadata.advisory: true` so the rule doctor stops asking for verificationCommands.';
98
+ case RuleQualityCode.AdvisoryHasUnusedVerification:
99
+ return 'Advisory rules ship verificationCommands they intend to be aspirational. Mark the rule advisory or move the commands into a real check.';
100
+ case RuleQualityCode.VerificationReferencesUnknown:
101
+ return 'verificationCommands strings should be either standard project scripts (`bun test`, `shrk …`) or live in `sharkcraft.config.ts` — otherwise they bit-rot.';
102
+ }
103
+ }
104
+ function recommendedFix(code, ruleId) {
105
+ switch (code) {
106
+ case RuleQualityCode.MissingHints:
107
+ case RuleQualityCode.MissingCommandsOrMcp:
108
+ case RuleQualityCode.MissingForbiddenActions:
109
+ case RuleQualityCode.MissingVerification:
110
+ case RuleQualityCode.MissingWritePolicy:
111
+ return `shrk fix preview --action-hints --target ${ruleId}`;
112
+ case RuleQualityCode.MissingExamples:
113
+ return `Add at least one IKnowledgeExample (good and/or bad) to "${ruleId}".`;
114
+ case RuleQualityCode.MissingOwner:
115
+ return `Set source.origin on rule "${ruleId}" so it has a clear owner.`;
116
+ case RuleQualityCode.Vague:
117
+ return `Expand the content of "${ruleId}" with rationale + at least one forbiddenActions entry.`;
118
+ case RuleQualityCode.AdvisoryNotMarked:
119
+ return `Add metadata.advisory = true to "${ruleId}" or remove the "advisory" tag.`;
120
+ case RuleQualityCode.AdvisoryHasUnusedVerification:
121
+ return `Either drop the verificationCommands on "${ruleId}" or move the rule out of advisory.`;
122
+ case RuleQualityCode.VerificationReferencesUnknown:
123
+ return `Reference a project script declared in sharkcraft.config.ts verificationCommands[] from "${ruleId}".`;
124
+ }
125
+ }
126
+ function commandLooksKnown(cmd, knownVerificationIds, knownPrefixes) {
127
+ const trimmed = cmd.trim();
128
+ if (trimmed.length === 0)
129
+ return true; // ignore empty
130
+ if (knownVerificationIds.has(trimmed))
131
+ return true;
132
+ for (const p of knownPrefixes)
133
+ if (trimmed.startsWith(p))
134
+ return true;
135
+ return false;
136
+ }
137
+ const BUILTIN_KNOWN_PREFIXES = [
138
+ 'shrk ',
139
+ 'bun ',
140
+ 'npm ',
141
+ 'pnpm ',
142
+ 'yarn ',
143
+ 'node ',
144
+ 'tsc ',
145
+ 'tsc',
146
+ ];
147
+ export function diagnoseRuleQuality(rules, options = {}, context = { knownVerificationIds: new Set() }) {
148
+ const findings = [];
149
+ let evaluated = 0;
150
+ const targetRules = options.ruleId ? rules.filter((r) => r.id === options.ruleId) : rules;
151
+ const ruleIdsWithFindings = new Set();
152
+ for (const rule of targetRules) {
153
+ evaluated += 1;
154
+ const advisory = isAdvisory(rule, options);
155
+ // Vague rule: very short content + no examples + no forbidden actions.
156
+ const hasExamples = (rule.examples?.length ?? 0) > 0;
157
+ const hasForbidden = (rule.actionHints?.forbiddenActions?.length ?? 0) > 0;
158
+ if (rule.content.trim().length < VAGUE_CONTENT_THRESHOLD && !hasExamples && !hasForbidden) {
159
+ const code = RuleQualityCode.Vague;
160
+ findings.push({
161
+ ruleId: rule.id,
162
+ code,
163
+ severity: 'warning',
164
+ message: `"${rule.id}" content is short (${rule.content.trim().length} chars) and has no examples or forbiddenActions.`,
165
+ recommendedFix: recommendedFix(code, rule.id),
166
+ whyThisMatters: whyThisMatters(code),
167
+ category: 'rule-quality',
168
+ advisory,
169
+ });
170
+ ruleIdsWithFindings.add(rule.id);
171
+ }
172
+ // Style/shape/architecture rules need at least one example.
173
+ if (isShapeOrStyleRule(rule) && !hasExamples) {
174
+ const code = RuleQualityCode.MissingExamples;
175
+ findings.push({
176
+ ruleId: rule.id,
177
+ code,
178
+ severity: advisory ? 'info' : 'warning',
179
+ message: `"${rule.id}" describes a code shape/style but has no examples.`,
180
+ recommendedFix: recommendedFix(code, rule.id),
181
+ whyThisMatters: whyThisMatters(code),
182
+ category: 'rule-quality',
183
+ advisory,
184
+ });
185
+ ruleIdsWithFindings.add(rule.id);
186
+ }
187
+ // Owner.
188
+ if (isCriticalOrHigh(rule) && !rule.source?.origin) {
189
+ const code = RuleQualityCode.MissingOwner;
190
+ findings.push({
191
+ ruleId: rule.id,
192
+ code,
193
+ severity: 'info',
194
+ message: `"${rule.id}" is high/critical and has no source.origin (owner).`,
195
+ recommendedFix: recommendedFix(code, rule.id),
196
+ whyThisMatters: whyThisMatters(code),
197
+ category: 'rule-quality',
198
+ advisory,
199
+ });
200
+ ruleIdsWithFindings.add(rule.id);
201
+ }
202
+ // Advisory marker mismatch.
203
+ const md = rule.metadata;
204
+ const explicitAdvisory = md?.['advisory'] === true;
205
+ if (looksAdvisoryByTag(rule) && !explicitAdvisory) {
206
+ const code = RuleQualityCode.AdvisoryNotMarked;
207
+ findings.push({
208
+ ruleId: rule.id,
209
+ code,
210
+ severity: 'warning',
211
+ message: `"${rule.id}" is tagged "advisory" but does not set metadata.advisory = true.`,
212
+ recommendedFix: recommendedFix(code, rule.id),
213
+ whyThisMatters: whyThisMatters(code),
214
+ category: 'rule-quality',
215
+ advisory: false,
216
+ });
217
+ ruleIdsWithFindings.add(rule.id);
218
+ }
219
+ if (advisory && (rule.actionHints?.verificationCommands?.length ?? 0) > 0) {
220
+ const code = RuleQualityCode.AdvisoryHasUnusedVerification;
221
+ findings.push({
222
+ ruleId: rule.id,
223
+ code,
224
+ severity: 'info',
225
+ message: `"${rule.id}" is advisory but ships verificationCommands; agents will not auto-run them.`,
226
+ recommendedFix: recommendedFix(code, rule.id),
227
+ whyThisMatters: whyThisMatters(code),
228
+ category: 'rule-quality',
229
+ advisory: true,
230
+ });
231
+ ruleIdsWithFindings.add(rule.id);
232
+ }
233
+ // verificationCommands references unknown scripts.
234
+ const verificationCmds = rule.actionHints?.verificationCommands ?? [];
235
+ for (const cmd of verificationCmds) {
236
+ if (!commandLooksKnown(cmd, context.knownVerificationIds, BUILTIN_KNOWN_PREFIXES)) {
237
+ const code = RuleQualityCode.VerificationReferencesUnknown;
238
+ findings.push({
239
+ ruleId: rule.id,
240
+ code,
241
+ severity: 'info',
242
+ message: `"${rule.id}" references unknown verification command "${cmd}".`,
243
+ recommendedFix: recommendedFix(code, rule.id),
244
+ whyThisMatters: whyThisMatters(code),
245
+ category: 'rule-quality',
246
+ advisory,
247
+ });
248
+ ruleIdsWithFindings.add(rule.id);
249
+ }
250
+ }
251
+ // Defer the actionHints axis to the existing diagnostic engine for the
252
+ // overlapping codes. We don't double-report: only emit if not vague AND
253
+ // not advisory (advisory rules opt out of verificationCommands by
254
+ // design). For non-write-related rules we skip missing-write-policy.
255
+ const hintReport = diagnoseActionHints([rule]);
256
+ const writeRelated = isWriteRelated(rule);
257
+ for (const issue of hintReport.issues) {
258
+ // Skip write-policy when the rule isn't actually write-related — the
259
+ // upstream diagnostic is permissive about tag matching, but we want
260
+ // the rule doctor to be precise.
261
+ if (issue.code === 'missing-write-policy' && !writeRelated)
262
+ continue;
263
+ // Advisory rules opt out of verification / commands / forbidden axes.
264
+ if (advisory && (issue.code === 'missing-verification' || issue.code === 'missing-commands-or-mcp' || issue.code === 'missing-forbidden-actions' || issue.code === 'missing-hints')) {
265
+ continue;
266
+ }
267
+ const code = fromActionHintCode(issue.code);
268
+ // Avoid duplicating "missing-examples" coming from action-hints
269
+ // (related-templates / related-path-conventions); only keep the
270
+ // explicit one we already emitted above.
271
+ if (code === RuleQualityCode.MissingExamples)
272
+ continue;
273
+ findings.push({
274
+ ruleId: rule.id,
275
+ code,
276
+ severity: 'warning',
277
+ message: issue.message,
278
+ recommendedFix: recommendedFix(code, rule.id),
279
+ whyThisMatters: whyThisMatters(code),
280
+ category: 'rule-quality',
281
+ advisory,
282
+ });
283
+ ruleIdsWithFindings.add(rule.id);
284
+ }
285
+ // Hint that high-priority rules without any actionHints are still
286
+ // a problem even when they don't match the writeRelated heuristic.
287
+ if (!advisory && isCriticalOrHigh(rule) && !hasActionHints(rule)) {
288
+ // already covered by diagnoseActionHints, but defensive:
289
+ const alreadyHas = findings.some((f) => f.ruleId === rule.id && f.code === RuleQualityCode.MissingHints);
290
+ if (!alreadyHas) {
291
+ const code = RuleQualityCode.MissingHints;
292
+ findings.push({
293
+ ruleId: rule.id,
294
+ code,
295
+ severity: 'warning',
296
+ message: `"${rule.id}" is high/critical but has no actionHints at all.`,
297
+ recommendedFix: recommendedFix(code, rule.id),
298
+ whyThisMatters: whyThisMatters(code),
299
+ category: 'rule-quality',
300
+ advisory,
301
+ });
302
+ ruleIdsWithFindings.add(rule.id);
303
+ }
304
+ }
305
+ }
306
+ const summary = {
307
+ errors: findings.filter((f) => f.severity === 'error').length,
308
+ warnings: findings.filter((f) => f.severity === 'warning').length,
309
+ info: findings.filter((f) => f.severity === 'info').length,
310
+ };
311
+ const cleanRules = targetRules.filter((r) => !ruleIdsWithFindings.has(r.id)).map((r) => r.id);
312
+ return {
313
+ schema: RULE_QUALITY_SCHEMA,
314
+ generatedAt: new Date().toISOString(),
315
+ ruleCount: rules.length,
316
+ evaluated,
317
+ findings,
318
+ cleanRules,
319
+ summary,
320
+ };
321
+ }
322
+ export function renderRuleQualityText(report) {
323
+ const lines = [];
324
+ lines.push('=== Rule quality doctor ===');
325
+ lines.push(` rules ${report.ruleCount}`);
326
+ lines.push(` evaluated ${report.evaluated}`);
327
+ lines.push(` errors ${report.summary.errors}`);
328
+ lines.push(` warnings ${report.summary.warnings}`);
329
+ lines.push(` info ${report.summary.info}`);
330
+ lines.push('');
331
+ if (report.findings.length === 0) {
332
+ lines.push('No rule-quality issues. ✓');
333
+ return lines.join('\n') + '\n';
334
+ }
335
+ const byRule = new Map();
336
+ for (const f of report.findings) {
337
+ const list = byRule.get(f.ruleId) ?? [];
338
+ list.push(f);
339
+ byRule.set(f.ruleId, list);
340
+ }
341
+ for (const [ruleId, list] of byRule) {
342
+ const advisoryTag = list[0]?.advisory ? ' [advisory]' : '';
343
+ lines.push(`• ${ruleId}${advisoryTag}`);
344
+ for (const f of list) {
345
+ lines.push(` ${f.severity.padEnd(7)} ${f.code} — ${f.message}`);
346
+ lines.push(` why: ${f.whyThisMatters}`);
347
+ if (f.recommendedFix)
348
+ lines.push(` fix: ${f.recommendedFix}`);
349
+ }
350
+ lines.push('');
351
+ }
352
+ if (report.cleanRules.length > 0) {
353
+ lines.push(`Clean rules (${report.cleanRules.length}): ${report.cleanRules.slice(0, 8).join(', ')}${report.cleanRules.length > 8 ? ' …' : ''}`);
354
+ }
355
+ return lines.join('\n') + '\n';
356
+ }
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Rule authoring scaffold.
3
+ *
4
+ * Pure, deterministic generator that returns a rule scaffold (TS source +
5
+ * JSON manifest + a markdown explainer) so an agent does not have to
6
+ * guess the schema fields. Preview-only: this module never writes — the
7
+ * CLI adapter materialises the preview under `.sharkcraft/fixes/`.
8
+ *
9
+ * Hard rules:
10
+ * - No mutation of `sharkcraft/rules.ts`.
11
+ * - Generated content must reference real, deterministic schema fields.
12
+ * - Advisory rules opt out of `verificationCommands` requirements via
13
+ * `metadata: { advisory: true }`.
14
+ */
15
+ export declare const RULE_SCAFFOLD_SCHEMA = "sharkcraft.rule-scaffold/v1";
16
+ export declare enum RuleScaffoldKind {
17
+ Architecture = "architecture",
18
+ Safety = "safety",
19
+ Style = "style",
20
+ Governance = "governance",
21
+ Migration = "migration",
22
+ Testing = "testing",
23
+ Advisory = "advisory"
24
+ }
25
+ export interface IRuleScaffoldInput {
26
+ /** Kebab-cased id, e.g. `architecture.no-reexport-proxy`. */
27
+ id: string;
28
+ /** Kind drives default tags / appliesWhen / advisory marker. */
29
+ kind: RuleScaffoldKind;
30
+ /** Optional one-line title — defaults to a derivation of `id`. */
31
+ title?: string;
32
+ /** Optional rationale — used as the rule body. */
33
+ rationale?: string;
34
+ /** Optional owner string copied into `source.origin`. */
35
+ owner?: string;
36
+ /** Optional priority — defaults to medium for advisory, high otherwise. */
37
+ priority?: 'critical' | 'high' | 'medium' | 'low';
38
+ /** Optional verification commands — strings copied verbatim. */
39
+ verificationCommands?: readonly string[];
40
+ /** Optional forbidden actions list. */
41
+ forbiddenActions?: readonly string[];
42
+ /** Optional examples (good/bad). */
43
+ goodExample?: string;
44
+ badExample?: string;
45
+ }
46
+ export interface IRuleScaffoldFile {
47
+ /** Project-relative path the file should be written to. */
48
+ path: string;
49
+ /** Raw file contents. */
50
+ body: string;
51
+ /** Hint to the renderer / docs. */
52
+ language: 'typescript' | 'json' | 'markdown';
53
+ }
54
+ export interface IRuleScaffoldResult {
55
+ schema: typeof RULE_SCAFFOLD_SCHEMA;
56
+ generatedAt: string;
57
+ ruleId: string;
58
+ kind: RuleScaffoldKind;
59
+ /** The TS define-rule scaffold the agent can copy into `rules.ts`. */
60
+ tsScaffold: IRuleScaffoldFile;
61
+ /** A JSON manifest of the rule (machine-readable summary). */
62
+ jsonManifest: IRuleScaffoldFile;
63
+ /** Markdown explainer with the next commands the agent should run. */
64
+ explainer: IRuleScaffoldFile;
65
+ /** Sanity-check warnings (does NOT fail generation). */
66
+ warnings: readonly string[];
67
+ /** Suggested next commands for the agent. */
68
+ nextCommands: readonly string[];
69
+ }
70
+ export declare function buildRuleScaffold(input: IRuleScaffoldInput): IRuleScaffoldResult;
71
+ //# sourceMappingURL=rule-scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-scaffold.d.ts","sourceRoot":"","sources":["../src/rule-scaffold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,eAAO,MAAM,oBAAoB,gCAAgC,CAAC;AAElE,oBAAY,gBAAgB;IAC1B,YAAY,iBAAiB;IAC7B,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,OAAO,YAAY;IACnB,QAAQ,aAAa;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,6DAA6D;IAC7D,EAAE,EAAE,MAAM,CAAC;IACX,gEAAgE;IAChE,IAAI,EAAE,gBAAgB,CAAC;IACvB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClD,gEAAgE;IAChE,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,uCAAuC;IACvC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,oCAAoC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,QAAQ,EAAE,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;CAC9C;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,oBAAoB,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,gBAAgB,CAAC;IACvB,sEAAsE;IACtE,UAAU,EAAE,iBAAiB,CAAC;IAC9B,8DAA8D;IAC9D,YAAY,EAAE,iBAAiB,CAAC;IAChC,sEAAsE;IACtE,SAAS,EAAE,iBAAiB,CAAC;IAC7B,wDAAwD;IACxD,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,6CAA6C;IAC7C,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AA0ND,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,GAAG,mBAAmB,CA+ChF"}