@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,11 @@
1
+ export declare const PACK_DOCS_SCHEMA = "sharkcraft.pack-docs/v1";
2
+ export interface IPackDocsPreview {
3
+ schema: typeof PACK_DOCS_SCHEMA;
4
+ packPath: string;
5
+ packName: string;
6
+ packVersion: string;
7
+ body: string;
8
+ files: readonly string[];
9
+ }
10
+ export declare function generatePackDocs(packPath: string): IPackDocsPreview;
11
+ //# sourceMappingURL=pack-docs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack-docs.d.ts","sourceRoot":"","sources":["../src/pack-docs.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,gBAAgB,4BAA4B,CAAC;AAE1D,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,gBAAgB,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAkCD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAiFnE"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Pack docs generator.
3
+ *
4
+ * Generates a self-contained README-style markdown for a pack: manifest
5
+ * summary, contributions table, install/verify commands, safety notes,
6
+ * compatibility notes, release-check result.
7
+ *
8
+ * Read-only — produces a body string (the caller decides where to write).
9
+ */
10
+ import { readFileSync, existsSync } from 'node:fs';
11
+ import * as nodePath from 'node:path';
12
+ export const PACK_DOCS_SCHEMA = 'sharkcraft.pack-docs/v1';
13
+ function loadManifest(packPath) {
14
+ const pkgJsonPath = nodePath.join(packPath, 'package.json');
15
+ if (!existsSync(pkgJsonPath))
16
+ return null;
17
+ try {
18
+ return JSON.parse(readFileSync(pkgJsonPath, 'utf8'));
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ }
24
+ export function generatePackDocs(packPath) {
25
+ const m = loadManifest(packPath) ?? {};
26
+ const sk = m.sharkcraft ?? {};
27
+ const name = m.name ?? nodePath.basename(packPath);
28
+ const version = m.version ?? '0.0.0';
29
+ const lines = [];
30
+ lines.push(`# ${name}`);
31
+ lines.push('');
32
+ if (m.description) {
33
+ lines.push(m.description);
34
+ lines.push('');
35
+ }
36
+ lines.push(`> Pack manifest: \`sharkcraft.pack/${sk.manifestVersion ?? 'v1'}\` · version **${version}**`);
37
+ lines.push('');
38
+ lines.push('## Contributions');
39
+ lines.push('');
40
+ lines.push('| kind | files |');
41
+ lines.push('|---|---|');
42
+ const rows = [
43
+ { kind: 'knowledge', files: sk.knowledgeFiles },
44
+ { kind: 'rules', files: sk.ruleFiles },
45
+ { kind: 'paths', files: sk.pathFiles },
46
+ { kind: 'templates', files: sk.templateFiles },
47
+ { kind: 'pipelines', files: sk.pipelineFiles },
48
+ { kind: 'docs', files: sk.docsFiles },
49
+ { kind: 'presets', files: sk.presetFiles },
50
+ { kind: 'scaffold patterns', files: sk.scaffoldPatternFiles },
51
+ { kind: 'policy checks', files: sk.policyCheckFiles },
52
+ { kind: 'constructs', files: sk.constructFiles },
53
+ { kind: 'construct facets', files: sk.constructFacetFiles },
54
+ { kind: 'playbooks', files: sk.playbookFiles },
55
+ ];
56
+ let totalFiles = 0;
57
+ const allFiles = [];
58
+ for (const r of rows) {
59
+ const count = r.files?.length ?? 0;
60
+ if (count === 0)
61
+ continue;
62
+ totalFiles += count;
63
+ lines.push(`| ${r.kind} | ${count} |`);
64
+ if (r.files)
65
+ allFiles.push(...r.files);
66
+ }
67
+ if (totalFiles === 0)
68
+ lines.push('| (none) | 0 |');
69
+ lines.push('');
70
+ lines.push('## Install + verify');
71
+ lines.push('');
72
+ lines.push('```bash');
73
+ lines.push(`bun add ${name}`);
74
+ lines.push('shrk packs doctor --require-signatures');
75
+ lines.push(`shrk packs release-check ${name}`);
76
+ lines.push('```');
77
+ lines.push('');
78
+ lines.push('## Safety notes');
79
+ lines.push('');
80
+ lines.push('- SharkCraft never auto-runs pack-contributed verification commands. Only commands listed in your local `sharkcraft.config.ts verificationCommands[]` are eligible for `shrk apply --validate`.');
81
+ lines.push(`- The pack manifest can be HMAC-signed; verify with \`shrk packs verify ${name}\` after install.`);
82
+ if (sk.signature) {
83
+ lines.push('- This pack ships a signed manifest.');
84
+ }
85
+ else {
86
+ lines.push('- This pack does **not** ship a signed manifest. Sign it before publishing: `shrk packs sign <path> --verify-after-sign`.');
87
+ }
88
+ lines.push('');
89
+ lines.push('## Compatibility');
90
+ lines.push('');
91
+ lines.push('- Run `shrk packs compat <pack-path> --consumer-root <repo> --dist-aware` to detect helper-missing or symbol-missing issues against your installed `@shrkcrft/plugin-api`.');
92
+ lines.push('');
93
+ return {
94
+ schema: PACK_DOCS_SCHEMA,
95
+ packPath,
96
+ packName: name,
97
+ packVersion: version,
98
+ body: lines.join('\n') + '\n',
99
+ files: allFiles,
100
+ };
101
+ }
@@ -0,0 +1,50 @@
1
+ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
2
+ import { type IPackReleaseCheck } from './pack-release-check.js';
3
+ export interface IPackDoctorIssue {
4
+ severity: 'error' | 'warning' | 'info';
5
+ packageName: string;
6
+ code: 'invalid-manifest' | 'missing-contribution-file' | 'empty-resolved-contributions' | 'duplicate-id-local' | 'duplicate-id-pack-internal' | 'template-no-description' | 'pipeline-no-steps' | 'critical-rule-no-hints' | 'docs-file-missing' | 'unsigned-pack' | 'tampered-pack' | 'preset-composition-cycle' | 'preset-composed-not-found' | 'preset-missing-ref' | 'preset-no-includes' | 'release-manifest-issue' | 'release-contribution-issue' | 'release-signature-issue' | 'release-files-issue' | 'release-readiness-issue';
7
+ message: string;
8
+ /** Free-form suggestion. */
9
+ suggestion?: string;
10
+ /** Optional copy-pasteable shell command for the human reviewer. */
11
+ suggestedCommand?: string;
12
+ }
13
+ export interface IPackDoctorReport {
14
+ passed: boolean;
15
+ packsChecked: number;
16
+ issues: IPackDoctorIssue[];
17
+ summary: {
18
+ errors: number;
19
+ warnings: number;
20
+ info: number;
21
+ };
22
+ /** Optional release-check payload per pack (populated when --release was passed). */
23
+ releaseChecks?: readonly IPackReleaseCheck[];
24
+ }
25
+ export interface IPackDoctorOptions {
26
+ /** When true, unsigned packs surface as `unsigned-pack` warnings. */
27
+ requireSignatures?: boolean;
28
+ /** When true, also run pack-release-check per pack and fold findings into issues. */
29
+ release?: boolean;
30
+ /** When true, release-check warnings escalate to errors. */
31
+ strict?: boolean;
32
+ }
33
+ /**
34
+ * Full structural + quality audit of every discovered pack. Returns a list of
35
+ * issues (error / warning / info) plus an aggregated pass flag.
36
+ *
37
+ * "Errors" mean the pack should not be trusted: invalid manifest, tampered
38
+ * signature, missing contribution files, fully empty contributions. Everything
39
+ * else is a warning — useful for pack authors, not fatal.
40
+ */
41
+ export declare function buildPackDoctorReport(inspection: ISharkcraftInspection, options?: IPackDoctorOptions): IPackDoctorReport;
42
+ /** Run pack-release-check for every valid discovered pack and return the
43
+ * results. Async because contribution loading uses dynamic imports. */
44
+ export declare function runPackReleaseChecksForReport(inspection: ISharkcraftInspection): Promise<IPackReleaseCheck[]>;
45
+ /** Fold a list of release-check results into a doctor report. Mutates and
46
+ * returns the same report for ergonomics. */
47
+ export declare function mergePackReleaseChecks(inspection: ISharkcraftInspection, report: IPackDoctorReport, releaseChecks: readonly IPackReleaseCheck[], options?: {
48
+ strict?: boolean;
49
+ }): IPackDoctorReport;
50
+ //# sourceMappingURL=pack-doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack-doctor.d.ts","sourceRoot":"","sources":["../src/pack-doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAIvE,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEtF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EACA,kBAAkB,GAClB,2BAA2B,GAC3B,8BAA8B,GAC9B,oBAAoB,GACpB,4BAA4B,GAC5B,yBAAyB,GACzB,mBAAmB,GACnB,wBAAwB,GACxB,mBAAmB,GACnB,eAAe,GACf,eAAe,GACf,0BAA0B,GAC1B,2BAA2B,GAC3B,oBAAoB,GACpB,oBAAoB,GACpB,wBAAwB,GACxB,4BAA4B,GAC5B,yBAAyB,GACzB,qBAAqB,GACrB,yBAAyB,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,OAAO,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,qFAAqF;IACrF,aAAa,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,kBAAkB;IACjC,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4DAA4D;IAC5D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAeD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,kBAAuB,GAC/B,iBAAiB,CAqNnB;AAgBD;wEACwE;AACxE,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAa9B;AAED;8CAC8C;AAC9C,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,qBAAqB,EACjC,MAAM,EAAE,iBAAiB,EACzB,aAAa,EAAE,SAAS,iBAAiB,EAAE,EAC3C,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,iBAAiB,CAoCnB"}
@@ -0,0 +1,302 @@
1
+ import { hasActionHints } from '@shrkcrft/knowledge';
2
+ import { resolvePreset, resolvePresetReferences } from '@shrkcrft/presets';
3
+ import { inspectionReferenceLookup } from "./reference-lookup.js";
4
+ import { runPackReleaseCheck } from "./pack-release-check.js";
5
+ const GEN_KEYWORDS = ['generate', 'create', 'add', 'refactor', 'test', 'review'];
6
+ function appliesToGeneration(e) {
7
+ for (const a of e.appliesWhen ?? []) {
8
+ const lower = a.toLowerCase();
9
+ if (GEN_KEYWORDS.some((k) => lower.includes(k)))
10
+ return true;
11
+ }
12
+ return false;
13
+ }
14
+ function isCriticalOrHigh(e) {
15
+ const p = String(e.priority);
16
+ return p === 'critical' || p === 'high';
17
+ }
18
+ /**
19
+ * Full structural + quality audit of every discovered pack. Returns a list of
20
+ * issues (error / warning / info) plus an aggregated pass flag.
21
+ *
22
+ * "Errors" mean the pack should not be trusted: invalid manifest, tampered
23
+ * signature, missing contribution files, fully empty contributions. Everything
24
+ * else is a warning — useful for pack authors, not fatal.
25
+ */
26
+ export function buildPackDoctorReport(inspection, options = {}) {
27
+ const issues = [];
28
+ const localKnowledgeIds = new Set(inspection.knowledgeEntries
29
+ .filter((e) => inspection.entrySources.get(e.id)?.type === 'local')
30
+ .map((e) => e.id));
31
+ for (const pack of inspection.packs.invalidPacks) {
32
+ issues.push({
33
+ severity: 'error',
34
+ packageName: pack.packageName,
35
+ code: 'invalid-manifest',
36
+ message: pack.loadError ??
37
+ `Manifest validation failed: ${pack.validationIssues.map((i) => i.field).join(', ')}`,
38
+ suggestion: 'Verify the manifest exports a definePackManifest({...}) default export.',
39
+ });
40
+ }
41
+ for (const pack of inspection.packs.discoveredPacks) {
42
+ if (!pack.valid)
43
+ continue; // already covered by invalid-manifest above
44
+ const manifest = pack.manifest;
45
+ const resolved = pack.resolvedCounts;
46
+ const declaredAny = manifest.contributions.knowledgeFiles?.length ||
47
+ manifest.contributions.ruleFiles?.length ||
48
+ manifest.contributions.pathFiles?.length ||
49
+ manifest.contributions.templateFiles?.length ||
50
+ manifest.contributions.pipelineFiles?.length ||
51
+ manifest.contributions.docsFiles?.length;
52
+ const resolvedAny = !!resolved &&
53
+ (resolved.knowledgeEntries +
54
+ resolved.rules +
55
+ resolved.pathConventions +
56
+ resolved.templates +
57
+ resolved.pipelines +
58
+ resolved.docs >
59
+ 0);
60
+ if (declaredAny && !resolvedAny) {
61
+ issues.push({
62
+ severity: 'error',
63
+ packageName: pack.packageName,
64
+ code: 'empty-resolved-contributions',
65
+ message: 'Pack declared contribution files but nothing loaded — every file is missing, empty, or duplicates local entries.',
66
+ suggestion: 'Run `shrk packs get <pack>` and check the listed contribution files.',
67
+ });
68
+ }
69
+ // Templates contributed by this pack — require a non-trivial description.
70
+ for (const t of inspection.templates) {
71
+ const src = inspection.templateSources.get(t.id);
72
+ if (src?.type !== 'pack' || src.packageName !== pack.packageName)
73
+ continue;
74
+ const description = t.description;
75
+ if (typeof description !== 'string' || description.trim().length < 5) {
76
+ issues.push({
77
+ severity: 'warning',
78
+ packageName: pack.packageName,
79
+ code: 'template-no-description',
80
+ message: `Template "${t.id}" lacks a meaningful description.`,
81
+ suggestion: 'Add a description so agents can pick the right generator for a task.',
82
+ });
83
+ }
84
+ }
85
+ // Pipelines contributed by this pack — require at least one step.
86
+ for (const p of inspection.pipelines) {
87
+ const src = inspection.pipelineSources.get(p.id);
88
+ if (src?.type !== 'pack' || src.packageName !== pack.packageName)
89
+ continue;
90
+ if (!Array.isArray(p.steps) || p.steps.length === 0) {
91
+ issues.push({
92
+ severity: 'warning',
93
+ packageName: pack.packageName,
94
+ code: 'pipeline-no-steps',
95
+ message: `Pipeline "${p.id}" has no steps.`,
96
+ });
97
+ }
98
+ }
99
+ // Critical/high workflow rules contributed by this pack should carry hints.
100
+ for (const entry of inspection.knowledgeEntries) {
101
+ const src = inspection.entrySources.get(entry.id);
102
+ if (src?.type !== 'pack' || src.packageName !== pack.packageName)
103
+ continue;
104
+ if (!isCriticalOrHigh(entry))
105
+ continue;
106
+ if (!appliesToGeneration(entry))
107
+ continue;
108
+ if (String(entry.type) === 'path')
109
+ continue;
110
+ if (!hasActionHints(entry)) {
111
+ issues.push({
112
+ severity: 'warning',
113
+ packageName: pack.packageName,
114
+ code: 'critical-rule-no-hints',
115
+ message: `Rule "${entry.id}" is high/critical and applies to generation but ships no actionHints.`,
116
+ });
117
+ }
118
+ }
119
+ // Local-vs-pack duplicate ids.
120
+ for (const entry of inspection.knowledgeEntries) {
121
+ const src = inspection.entrySources.get(entry.id);
122
+ if (src?.type !== 'pack' || src.packageName !== pack.packageName)
123
+ continue;
124
+ if (localKnowledgeIds.has(entry.id)) {
125
+ issues.push({
126
+ severity: 'info',
127
+ packageName: pack.packageName,
128
+ code: 'duplicate-id-local',
129
+ message: `Pack entry "${entry.id}" duplicates a local id — local wins.`,
130
+ });
131
+ }
132
+ }
133
+ // Signature gating.
134
+ if (options.requireSignatures) {
135
+ const status = pack.signatureStatus;
136
+ if (!status || status === 'missing-signature' || status === 'not-checked') {
137
+ issues.push({
138
+ severity: 'warning',
139
+ packageName: pack.packageName,
140
+ code: 'unsigned-pack',
141
+ message: 'Pack has no signature; --require-signatures was set.',
142
+ suggestion: 'Run `shrk packs sign <pack-dir>` and ship the signed manifest.',
143
+ });
144
+ }
145
+ }
146
+ if (pack.signatureStatus === 'invalid-signature') {
147
+ issues.push({
148
+ severity: 'error',
149
+ packageName: pack.packageName,
150
+ code: 'tampered-pack',
151
+ message: pack.signatureMessage ?? 'Pack signature does not match.',
152
+ suggestion: 'Do not trust this pack — re-fetch from a known-good source.',
153
+ });
154
+ }
155
+ // Docs files: surface inspector-side "missing contribution file" warnings.
156
+ // Those already land in inspection.warnings; we re-surface them here so the
157
+ // doctor view is self-contained.
158
+ // Preset composition / references for presets contributed by this pack.
159
+ const refLookup = inspectionReferenceLookup(inspection);
160
+ for (const preset of inspection.presetRegistry.list()) {
161
+ const src = inspection.presetSources.get(preset.id);
162
+ if (src?.type !== 'pack' || src.packageName !== pack.packageName)
163
+ continue;
164
+ const resolved = resolvePreset(inspection.presetRegistry, preset.id);
165
+ for (const i of resolved.issues) {
166
+ issues.push({
167
+ severity: 'error',
168
+ packageName: pack.packageName,
169
+ code: i.code === 'composition-cycle'
170
+ ? 'preset-composition-cycle'
171
+ : 'preset-composed-not-found',
172
+ message: `Preset "${preset.id}": ${i.message}`,
173
+ });
174
+ }
175
+ const refs = resolvePresetReferences(resolved, refLookup);
176
+ for (const m of refs.missing) {
177
+ issues.push({
178
+ severity: 'warning',
179
+ packageName: pack.packageName,
180
+ code: 'preset-missing-ref',
181
+ message: `Preset "${preset.id}" references missing ${m.kind} id "${m.id}".`,
182
+ suggestion: 'Install the pack that provides the referenced asset, or add it locally.',
183
+ });
184
+ }
185
+ const includesAny = (resolved.includes.knowledge?.length ?? 0) +
186
+ (resolved.includes.rules?.length ?? 0) +
187
+ (resolved.includes.paths?.length ?? 0) +
188
+ (resolved.includes.templates?.length ?? 0) +
189
+ (resolved.includes.pipelines?.length ?? 0) +
190
+ (resolved.includes.knowledgeIds?.length ?? 0) +
191
+ (resolved.includes.ruleIds?.length ?? 0) +
192
+ (resolved.includes.pathConventionIds?.length ?? 0) +
193
+ (resolved.includes.templateIds?.length ?? 0) +
194
+ (resolved.includes.pipelineIds?.length ?? 0) >
195
+ 0;
196
+ if (!includesAny) {
197
+ issues.push({
198
+ severity: 'warning',
199
+ packageName: pack.packageName,
200
+ code: 'preset-no-includes',
201
+ message: `Preset "${preset.id}" contributes no includes (no embedded entries and no reference ids).`,
202
+ });
203
+ }
204
+ }
205
+ const prefix = `pack ${pack.packageName}: missing contribution file `;
206
+ for (const w of inspection.warnings) {
207
+ if (!w.startsWith(prefix))
208
+ continue;
209
+ const rel = w.slice(prefix.length);
210
+ issues.push({
211
+ severity: 'error',
212
+ packageName: pack.packageName,
213
+ code: 'missing-contribution-file',
214
+ message: `Contribution file is missing on disk: ${rel}`,
215
+ suggestion: 'Update the manifest paths or restore the file under the package root.',
216
+ });
217
+ }
218
+ }
219
+ const summary = {
220
+ errors: issues.filter((i) => i.severity === 'error').length,
221
+ warnings: issues.filter((i) => i.severity === 'warning').length,
222
+ info: issues.filter((i) => i.severity === 'info').length,
223
+ };
224
+ return {
225
+ passed: summary.errors === 0,
226
+ packsChecked: inspection.packs.discoveredPacks.length,
227
+ issues,
228
+ summary,
229
+ };
230
+ }
231
+ /** Map a single release-check finding code to one of the four IPackDoctorIssue
232
+ * release-* bucket codes. */
233
+ function releaseFindingBucket(code) {
234
+ if (code.startsWith('manifest-'))
235
+ return 'release-manifest-issue';
236
+ if (code === 'no-manifest' || code === 'no-package-json')
237
+ return 'release-manifest-issue';
238
+ if (code === 'contribution-missing' || code === 'contribution-load-failed' || code === 'contribution-helper-missing')
239
+ return 'release-contribution-issue';
240
+ if (code === 'unsigned-manifest')
241
+ return 'release-signature-issue';
242
+ if (code === 'no-files-whitelist' || code === 'manifest-not-in-files')
243
+ return 'release-files-issue';
244
+ return 'release-readiness-issue';
245
+ }
246
+ /** Run pack-release-check for every valid discovered pack and return the
247
+ * results. Async because contribution loading uses dynamic imports. */
248
+ export async function runPackReleaseChecksForReport(inspection) {
249
+ const results = [];
250
+ for (const pack of inspection.packs.discoveredPacks) {
251
+ if (!pack.valid)
252
+ continue;
253
+ try {
254
+ const check = await runPackReleaseCheck(pack.packageRoot);
255
+ results.push(check);
256
+ }
257
+ catch (e) {
258
+ // Swallow per-pack errors so the doctor report stays best-effort.
259
+ void e;
260
+ }
261
+ }
262
+ return results;
263
+ }
264
+ /** Fold a list of release-check results into a doctor report. Mutates and
265
+ * returns the same report for ergonomics. */
266
+ export function mergePackReleaseChecks(inspection, report, releaseChecks, options = {}) {
267
+ // Build a path -> packageName index so we can map check paths back to packs.
268
+ const pathToName = new Map();
269
+ for (const pack of inspection.packs.discoveredPacks) {
270
+ if (pack.valid)
271
+ pathToName.set(pack.packageRoot, pack.packageName);
272
+ }
273
+ for (const check of releaseChecks) {
274
+ const packageName = pathToName.get(check.packPath) ?? check.packPath;
275
+ for (const f of check.findings) {
276
+ const code = releaseFindingBucket(f.code);
277
+ const severity = f.severity === 'error'
278
+ ? 'error'
279
+ : f.severity === 'warning' && options.strict
280
+ ? 'error'
281
+ : f.severity === 'warning'
282
+ ? 'warning'
283
+ : 'info';
284
+ report.issues.push({
285
+ packageName,
286
+ severity,
287
+ code,
288
+ message: `[release/${f.code}] ${f.message}`,
289
+ ...(f.suggestedFix ? { suggestion: f.suggestedFix } : {}),
290
+ ...(f.suggestedCommand ? { suggestedCommand: f.suggestedCommand } : {}),
291
+ });
292
+ }
293
+ }
294
+ report.summary = {
295
+ errors: report.issues.filter((i) => i.severity === 'error').length,
296
+ warnings: report.issues.filter((i) => i.severity === 'warning').length,
297
+ info: report.issues.filter((i) => i.severity === 'info').length,
298
+ };
299
+ report.passed = report.summary.errors === 0;
300
+ report.releaseChecks = releaseChecks;
301
+ return report;
302
+ }
@@ -0,0 +1,29 @@
1
+ import { type IPackHelper } from '@shrkcrft/plugin-api';
2
+ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
3
+ export declare const PACK_HELPER_REGISTRY_SCHEMA = "sharkcraft.pack-helper-registry/v1";
4
+ export declare enum PackHelperSource {
5
+ Local = "local",
6
+ Pack = "pack",
7
+ Fixture = "fixture"
8
+ }
9
+ export interface IPackHelperEntry {
10
+ readonly helper: IPackHelper;
11
+ readonly source: PackHelperSource;
12
+ readonly packageName?: string;
13
+ readonly sourceFile: string;
14
+ }
15
+ export interface IPackHelperDoctorIssue {
16
+ readonly severity: 'info' | 'warning' | 'error';
17
+ readonly code: string;
18
+ readonly message: string;
19
+ readonly helperId?: string;
20
+ readonly source?: string;
21
+ }
22
+ export declare function loadPackHelpers(inspection: ISharkcraftInspection): Promise<{
23
+ entries: readonly IPackHelperEntry[];
24
+ issues: readonly IPackHelperDoctorIssue[];
25
+ }>;
26
+ export declare function listPackHelpers(inspection: ISharkcraftInspection): Promise<readonly IPackHelperEntry[]>;
27
+ export declare function findPackHelper(inspection: ISharkcraftInspection, id: string): Promise<IPackHelperEntry | null>;
28
+ export declare function listPackHelperIssues(inspection: ISharkcraftInspection): Promise<readonly IPackHelperDoctorIssue[]>;
29
+ //# sourceMappingURL=pack-helper-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack-helper-registry.d.ts","sourceRoot":"","sources":["../src/pack-helper-registry.ts"],"names":[],"mappings":"AAQA,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,2BAA2B,uCAAuC,CAAC;AAEhF,oBAAY,gBAAgB;IAC1B,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AA4BD,wBAAsB,eAAe,CACnC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC;IAAE,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAA;CAAE,CAAC,CAoF9F;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAGtC;AAED,wBAAsB,cAAc,CAClC,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAGlC;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,sBAAsB,EAAE,CAAC,CAG5C"}
@@ -0,0 +1,144 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ /**
10
+ * Pack helper registry. Loads pack-contributed and locally-configured
11
+ * helpers via `helperFiles[]`. Engine still ships its profile-driven generic
12
+ * helpers (HelperId/core.*) — this registry is purely additive.
13
+ */
14
+ import { existsSync } from 'node:fs';
15
+ import * as nodePath from 'node:path';
16
+ import { pathToFileURL } from 'node:url';
17
+ import { validatePackHelper } from '@shrkcrft/plugin-api';
18
+ export const PACK_HELPER_REGISTRY_SCHEMA = 'sharkcraft.pack-helper-registry/v1';
19
+ export var PackHelperSource;
20
+ (function (PackHelperSource) {
21
+ PackHelperSource["Local"] = "local";
22
+ PackHelperSource["Pack"] = "pack";
23
+ PackHelperSource["Fixture"] = "fixture";
24
+ })(PackHelperSource || (PackHelperSource = {}));
25
+ async function importDefault(file) {
26
+ const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
27
+ if (Array.isArray(mod.default))
28
+ return mod.default;
29
+ if (mod.default && typeof mod.default === 'object')
30
+ return [mod.default];
31
+ if (Array.isArray(mod.helpers))
32
+ return mod.helpers;
33
+ return [];
34
+ }
35
+ function localFiles(inspection) {
36
+ const out = [];
37
+ const dir = inspection.sharkcraftDir;
38
+ if (!dir)
39
+ return [];
40
+ for (const name of ['helpers.ts', 'helpers/index.ts']) {
41
+ const abs = nodePath.join(dir, name);
42
+ if (existsSync(abs))
43
+ out.push(abs);
44
+ }
45
+ const cfg = inspection.config;
46
+ for (const rel of cfg?.helperFiles ?? []) {
47
+ out.push(nodePath.isAbsolute(rel) ? rel : nodePath.join(dir, rel));
48
+ }
49
+ return out;
50
+ }
51
+ export async function loadPackHelpers(inspection) {
52
+ const entries = [];
53
+ const issues = [];
54
+ const seen = new Set();
55
+ const ingest = (raw, source, packageName, sourceFile) => {
56
+ const v = validatePackHelper(raw);
57
+ if (!v.valid) {
58
+ for (const i of v.issues) {
59
+ issues.push({
60
+ severity: 'error',
61
+ code: 'invalid-helper',
62
+ message: `${i.field}: ${i.message}`,
63
+ helperId: typeof raw.id === 'string' ? raw.id : undefined,
64
+ source: sourceFile,
65
+ });
66
+ }
67
+ return;
68
+ }
69
+ if (seen.has(raw.id)) {
70
+ issues.push({
71
+ severity: 'error',
72
+ code: 'duplicate-id',
73
+ message: `Helper "${raw.id}" already loaded; skipping ${sourceFile}.`,
74
+ helperId: raw.id,
75
+ source: sourceFile,
76
+ });
77
+ return;
78
+ }
79
+ seen.add(raw.id);
80
+ entries.push({
81
+ helper: raw,
82
+ source,
83
+ ...(packageName ? { packageName } : {}),
84
+ sourceFile,
85
+ });
86
+ };
87
+ for (const file of localFiles(inspection)) {
88
+ try {
89
+ const list = await importDefault(file);
90
+ const rel = nodePath.relative(inspection.projectRoot, file) || file;
91
+ for (const h of list)
92
+ ingest(h, PackHelperSource.Local, undefined, rel);
93
+ }
94
+ catch (e) {
95
+ issues.push({
96
+ severity: 'warning',
97
+ code: 'load-failed',
98
+ message: `Failed to load ${file}: ${e.message}`,
99
+ source: file,
100
+ });
101
+ }
102
+ }
103
+ for (const pack of inspection.packs.validPacks ?? []) {
104
+ const contributions = (pack.manifest?.contributions ?? {});
105
+ for (const rel of contributions.helperFiles ?? []) {
106
+ const file = nodePath.resolve(pack.packageRoot, rel);
107
+ if (!existsSync(file)) {
108
+ issues.push({
109
+ severity: 'warning',
110
+ code: 'missing-file',
111
+ message: `Pack ${pack.packageName} declares ${rel} but file is missing.`,
112
+ source: file,
113
+ });
114
+ continue;
115
+ }
116
+ try {
117
+ const list = await importDefault(file);
118
+ for (const h of list)
119
+ ingest(h, PackHelperSource.Pack, pack.packageName, rel);
120
+ }
121
+ catch (e) {
122
+ issues.push({
123
+ severity: 'warning',
124
+ code: 'load-failed',
125
+ message: `Pack ${pack.packageName} (${rel}): ${e.message}`,
126
+ source: file,
127
+ });
128
+ }
129
+ }
130
+ }
131
+ return { entries, issues };
132
+ }
133
+ export async function listPackHelpers(inspection) {
134
+ const { entries } = await loadPackHelpers(inspection);
135
+ return entries;
136
+ }
137
+ export async function findPackHelper(inspection, id) {
138
+ const entries = await listPackHelpers(inspection);
139
+ return entries.find((e) => e.helper.id === id) ?? null;
140
+ }
141
+ export async function listPackHelperIssues(inspection) {
142
+ const { issues } = await loadPackHelpers(inspection);
143
+ return issues;
144
+ }