@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,25 @@
1
+ import type { IPlaybookInput, IPlaybookStep } from '@shrkcrft/plugin-api';
2
+ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
3
+ export declare const PLAYBOOK_REGISTRY_SCHEMA = "sharkcraft.playbook-registry/v1";
4
+ export interface IPlaybook extends IPlaybookInput {
5
+ source: 'local' | 'pack';
6
+ packageName?: string;
7
+ sourceFile?: string;
8
+ }
9
+ export declare function loadPlaybooks(inspection: ISharkcraftInspection): Promise<readonly IPlaybook[]>;
10
+ export declare function listPlaybooks(inspection: ISharkcraftInspection): readonly IPlaybook[];
11
+ export declare function warmPlaybookCache(inspection: ISharkcraftInspection): Promise<void>;
12
+ export interface IPlaybookRunbook {
13
+ playbookId: string;
14
+ title: string;
15
+ steps: readonly IPlaybookStep[];
16
+ notes: readonly string[];
17
+ }
18
+ export declare function buildRunbook(playbook: IPlaybook): IPlaybookRunbook;
19
+ export interface IPlaybookRecommendation {
20
+ playbook: IPlaybook;
21
+ score: number;
22
+ reasons: readonly string[];
23
+ }
24
+ export declare function recommendPlaybooks(playbooks: readonly IPlaybook[], task: string): readonly IPlaybookRecommendation[];
25
+ //# sourceMappingURL=playbook-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playbook-registry.d.ts","sourceRoot":"","sources":["../src/playbook-registry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;AAE1E,MAAM,WAAW,SAAU,SAAQ,cAAc;IAC/C,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAmCD,wBAAsB,aAAa,CACjC,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CAiD/B;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,qBAAqB,GAAG,SAAS,SAAS,EAAE,CAGrF;AAED,wBAAsB,iBAAiB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IAChC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,GAAG,gBAAgB,CAWlE;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,SAAS,EAAE,EAC/B,IAAI,EAAE,MAAM,GACX,SAAS,uBAAuB,EAAE,CA+BpC"}
@@ -0,0 +1,148 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ import { existsSync, readFileSync } from 'node:fs';
10
+ import * as nodePath from 'node:path';
11
+ import { pathToFileURL } from 'node:url';
12
+ export const PLAYBOOK_REGISTRY_SCHEMA = 'sharkcraft.playbook-registry/v1';
13
+ const CACHE = new Map();
14
+ async function importDefault(file) {
15
+ const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
16
+ if (Array.isArray(mod.default))
17
+ return mod.default;
18
+ if (mod.default && typeof mod.default === 'object')
19
+ return [mod.default];
20
+ if (Array.isArray(mod.playbooks))
21
+ return mod.playbooks;
22
+ return [];
23
+ }
24
+ function localPlaybookFiles(inspection) {
25
+ const out = [];
26
+ const dir = inspection.sharkcraftDir;
27
+ if (!dir)
28
+ return [];
29
+ for (const f of ['playbooks.ts', 'playbooks/index.ts']) {
30
+ const full = nodePath.join(dir, f);
31
+ if (existsSync(full))
32
+ out.push(full);
33
+ }
34
+ const cfg = inspection.config;
35
+ if (cfg?.playbookFiles) {
36
+ for (const rel of cfg.playbookFiles)
37
+ out.push(nodePath.join(dir, rel));
38
+ }
39
+ return out;
40
+ }
41
+ export async function loadPlaybooks(inspection) {
42
+ const cacheKey = `${inspection.projectRoot}:${inspection.packs.validPacks
43
+ .map((p) => p.packageName + '@' + p.packageVersion)
44
+ .join(',')}`;
45
+ const cached = CACHE.get(inspection.projectRoot);
46
+ if (cached && cached.cacheKey === cacheKey)
47
+ return cached.list;
48
+ const out = [];
49
+ for (const file of localPlaybookFiles(inspection)) {
50
+ try {
51
+ const list = await importDefault(file);
52
+ for (const p of list) {
53
+ if (!p?.id)
54
+ continue;
55
+ out.push({
56
+ ...p,
57
+ source: 'local',
58
+ sourceFile: nodePath.relative(inspection.projectRoot, file),
59
+ });
60
+ }
61
+ }
62
+ catch {
63
+ /* ignore */
64
+ }
65
+ }
66
+ for (const pack of inspection.packs.validPacks ?? []) {
67
+ const contributions = (pack.manifest?.contributions ?? {});
68
+ const packRoot = pack.packageRoot;
69
+ if (!packRoot)
70
+ continue;
71
+ for (const rel of contributions.playbookFiles ?? []) {
72
+ const file = nodePath.resolve(packRoot, rel);
73
+ if (!existsSync(file))
74
+ continue;
75
+ try {
76
+ const list = await importDefault(file);
77
+ for (const p of list) {
78
+ if (!p?.id)
79
+ continue;
80
+ out.push({
81
+ ...p,
82
+ source: 'pack',
83
+ packageName: pack.packageName,
84
+ sourceFile: rel,
85
+ });
86
+ }
87
+ }
88
+ catch {
89
+ /* ignore */
90
+ }
91
+ }
92
+ }
93
+ CACHE.set(inspection.projectRoot, { cacheKey, list: out });
94
+ return out;
95
+ }
96
+ export function listPlaybooks(inspection) {
97
+ const cached = CACHE.get(inspection.projectRoot);
98
+ return cached?.list ?? [];
99
+ }
100
+ export async function warmPlaybookCache(inspection) {
101
+ await loadPlaybooks(inspection);
102
+ }
103
+ export function buildRunbook(playbook) {
104
+ const notes = [];
105
+ if (playbook.steps.length === 0) {
106
+ notes.push('Playbook has no steps — add at least one in `definePlaybook`.');
107
+ }
108
+ return {
109
+ playbookId: playbook.id,
110
+ title: playbook.title ?? playbook.id,
111
+ steps: playbook.steps,
112
+ notes,
113
+ };
114
+ }
115
+ export function recommendPlaybooks(playbooks, task) {
116
+ const lower = task.toLowerCase();
117
+ const out = [];
118
+ for (const p of playbooks) {
119
+ let score = 0;
120
+ const reasons = [];
121
+ if ((p.title ?? p.id).toLowerCase().includes(lower)) {
122
+ score += 10;
123
+ reasons.push('title matches task');
124
+ }
125
+ for (const t of p.tags ?? []) {
126
+ if (lower.includes(t.toLowerCase())) {
127
+ score += 3;
128
+ reasons.push(`tag ${t}`);
129
+ }
130
+ }
131
+ for (const k of p.taskKinds ?? []) {
132
+ if (lower.includes(k.toLowerCase())) {
133
+ score += 4;
134
+ reasons.push(`taskKind ${k}`);
135
+ }
136
+ }
137
+ for (const ex of p.examples ?? []) {
138
+ if (lower.includes(ex.toLowerCase()) || ex.toLowerCase().includes(lower)) {
139
+ score += 3;
140
+ reasons.push('example matches');
141
+ }
142
+ }
143
+ if (score > 0)
144
+ out.push({ playbook: p, score, reasons });
145
+ }
146
+ return out.sort((a, b) => b.score - a.score);
147
+ }
148
+ void readFileSync;
@@ -0,0 +1,60 @@
1
+ import type { IPlaybook } from './playbook-registry.js';
2
+ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
3
+ export declare const PLAYBOOK_SCRIPT_SCHEMA = "sharkcraft.playbook-script/v1";
4
+ export declare const PLAYBOOK_VALIDATION_SCHEMA = "sharkcraft.playbook-validation/v1";
5
+ export interface IPlaybookScriptInput {
6
+ /** Optional task description to render in the script header. */
7
+ task?: string;
8
+ }
9
+ export interface IPlaybookScript {
10
+ schema: typeof PLAYBOOK_SCRIPT_SCHEMA;
11
+ playbookId: string;
12
+ title: string;
13
+ task: string | null;
14
+ /** Bash-like preview. */
15
+ script: string;
16
+ /** Step ids → commands actually rendered. */
17
+ steps: readonly {
18
+ id: string;
19
+ title: string;
20
+ humanReview: boolean;
21
+ commands: readonly string[];
22
+ }[];
23
+ /** Aggregated verification commands collected across steps. */
24
+ verificationCommands: readonly string[];
25
+ }
26
+ export interface IPlaybookValidationIssue {
27
+ severity: 'info' | 'warning' | 'error';
28
+ code: string;
29
+ message: string;
30
+ stepId?: string;
31
+ }
32
+ export interface IPlaybookValidation {
33
+ schema: typeof PLAYBOOK_VALIDATION_SCHEMA;
34
+ playbookId: string;
35
+ issues: readonly IPlaybookValidationIssue[];
36
+ passed: boolean;
37
+ }
38
+ export declare function buildPlaybookScript(playbook: IPlaybook, input?: IPlaybookScriptInput): IPlaybookScript;
39
+ export interface IPlaybookPreview {
40
+ playbookId: string;
41
+ title: string;
42
+ description: string | null;
43
+ steps: readonly {
44
+ id: string;
45
+ title: string;
46
+ description?: string;
47
+ commands: readonly string[];
48
+ mcpTools: readonly string[];
49
+ humanReview: boolean;
50
+ verificationCommands: readonly string[];
51
+ safetyNotes: readonly string[];
52
+ }[];
53
+ recommendedPresetIds: readonly string[];
54
+ recommendedPipelineIds: readonly string[];
55
+ recommendedTemplateIds: readonly string[];
56
+ outputs: readonly string[];
57
+ }
58
+ export declare function buildPlaybookPreview(playbook: IPlaybook): IPlaybookPreview;
59
+ export declare function validatePlaybook(playbook: IPlaybook, inspection: ISharkcraftInspection): IPlaybookValidation;
60
+ //# sourceMappingURL=playbook-script.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playbook-script.d.ts","sourceRoot":"","sources":["../src/playbook-script.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,sBAAsB,kCAAkC,CAAC;AACtE,eAAO,MAAM,0BAA0B,sCAAsC,CAAC;AAE9E,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,OAAO,sBAAsB,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,KAAK,EAAE,SAAS;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;IACnG,+DAA+D;IAC/D,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,0BAA0B,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC5C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,EACnB,KAAK,GAAE,oBAAyB,GAC/B,eAAe,CA4DjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,EAAE,SAAS;QACd,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;QAC5B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;QAC5B,WAAW,EAAE,OAAO,CAAC;QACrB,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;QACxC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;KAChC,EAAE,CAAC;IACJ,oBAAoB,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,sBAAsB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,GAAG,gBAAgB,CAoB1E;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,SAAS,EACnB,UAAU,EAAE,qBAAqB,GAChC,mBAAmB,CA0ErB"}
@@ -0,0 +1,161 @@
1
+ export const PLAYBOOK_SCRIPT_SCHEMA = 'sharkcraft.playbook-script/v1';
2
+ export const PLAYBOOK_VALIDATION_SCHEMA = 'sharkcraft.playbook-validation/v1';
3
+ export function buildPlaybookScript(playbook, input = {}) {
4
+ const lines = [];
5
+ const verification = new Set();
6
+ const steps = [];
7
+ lines.push('#!/usr/bin/env bash');
8
+ lines.push('# Playbook script preview — generated by `shrk playbooks script`.');
9
+ lines.push('# This script is NEVER executed by SharkCraft. Review and run manually.');
10
+ lines.push('# set -euo pipefail is intentionally omitted; uncomment if you want to run it.');
11
+ lines.push(`# playbook: ${playbook.id}`);
12
+ if (input.task)
13
+ lines.push(`# task: ${input.task}`);
14
+ lines.push('');
15
+ lines.push(`echo "Playbook: ${playbook.title.replace(/"/g, '\\"')}"`);
16
+ if (playbook.description)
17
+ lines.push(`echo "${playbook.description.replace(/"/g, '\\"')}"`);
18
+ lines.push('');
19
+ for (const step of playbook.steps) {
20
+ lines.push(`# === step ${step.id} — ${step.title} ===`);
21
+ if (step.description)
22
+ lines.push(`# ${step.description}`);
23
+ if (step.humanReview) {
24
+ lines.push('# ⚠ HUMAN REVIEW REQUIRED before running the commands below.');
25
+ }
26
+ for (const tool of step.mcpTools ?? []) {
27
+ lines.push(`# MCP tool suggestion: ${tool}`);
28
+ }
29
+ const cmds = step.commands ?? [];
30
+ if (cmds.length === 0) {
31
+ lines.push(`# (no commands; manual step)`);
32
+ }
33
+ else {
34
+ for (const c of cmds) {
35
+ lines.push(c);
36
+ }
37
+ }
38
+ if (step.safetyNotes?.length) {
39
+ for (const n of step.safetyNotes)
40
+ lines.push(`# safety: ${n}`);
41
+ }
42
+ if (step.verificationCommands?.length) {
43
+ lines.push('# verify:');
44
+ for (const v of step.verificationCommands) {
45
+ lines.push(`# $ ${v}`);
46
+ verification.add(v);
47
+ }
48
+ }
49
+ lines.push('');
50
+ steps.push({
51
+ id: step.id,
52
+ title: step.title,
53
+ humanReview: Boolean(step.humanReview),
54
+ commands: cmds,
55
+ });
56
+ }
57
+ lines.push('echo "Playbook complete. Run any verification commands listed above."');
58
+ return {
59
+ schema: PLAYBOOK_SCRIPT_SCHEMA,
60
+ playbookId: playbook.id,
61
+ title: playbook.title,
62
+ task: input.task ?? null,
63
+ script: lines.join('\n') + '\n',
64
+ steps,
65
+ verificationCommands: [...verification],
66
+ };
67
+ }
68
+ export function buildPlaybookPreview(playbook) {
69
+ return {
70
+ playbookId: playbook.id,
71
+ title: playbook.title ?? playbook.id,
72
+ description: playbook.description ?? null,
73
+ steps: playbook.steps.map((s) => ({
74
+ id: s.id,
75
+ title: s.title,
76
+ ...(s.description ? { description: s.description } : {}),
77
+ commands: s.commands ?? [],
78
+ mcpTools: s.mcpTools ?? [],
79
+ humanReview: Boolean(s.humanReview),
80
+ verificationCommands: s.verificationCommands ?? [],
81
+ safetyNotes: s.safetyNotes ?? [],
82
+ })),
83
+ recommendedPresetIds: playbook.recommendedPresetIds ?? [],
84
+ recommendedPipelineIds: playbook.recommendedPipelineIds ?? [],
85
+ recommendedTemplateIds: playbook.recommendedTemplateIds ?? [],
86
+ outputs: playbook.outputs ?? [],
87
+ };
88
+ }
89
+ export function validatePlaybook(playbook, inspection) {
90
+ const issues = [];
91
+ if (!playbook.steps || playbook.steps.length === 0) {
92
+ issues.push({
93
+ severity: 'error',
94
+ code: 'no-steps',
95
+ message: 'Playbook has no steps.',
96
+ });
97
+ }
98
+ const seenSteps = new Set();
99
+ for (const s of playbook.steps ?? []) {
100
+ if (!s.id) {
101
+ issues.push({
102
+ severity: 'error',
103
+ code: 'step-missing-id',
104
+ message: `Step is missing an id (title="${s.title ?? ''}")`,
105
+ });
106
+ continue;
107
+ }
108
+ if (seenSteps.has(s.id)) {
109
+ issues.push({
110
+ severity: 'error',
111
+ code: 'duplicate-step-id',
112
+ message: `Duplicate step id "${s.id}"`,
113
+ stepId: s.id,
114
+ });
115
+ }
116
+ seenSteps.add(s.id);
117
+ if (!s.title) {
118
+ issues.push({
119
+ severity: 'warning',
120
+ code: 'step-missing-title',
121
+ message: `Step "${s.id}" has no title.`,
122
+ stepId: s.id,
123
+ });
124
+ }
125
+ const hasAction = (s.commands && s.commands.length > 0) || (s.mcpTools && s.mcpTools.length > 0);
126
+ if (!hasAction && !s.humanReview) {
127
+ issues.push({
128
+ severity: 'warning',
129
+ code: 'step-empty',
130
+ message: `Step "${s.id}" has no commands, MCP tools, or humanReview marker.`,
131
+ stepId: s.id,
132
+ });
133
+ }
134
+ }
135
+ // Cross-reference recommended templates / pipelines / presets against the registries.
136
+ for (const t of playbook.recommendedTemplateIds ?? []) {
137
+ if (!inspection.templateRegistry.get(t)) {
138
+ issues.push({
139
+ severity: 'warning',
140
+ code: 'missing-template',
141
+ message: `recommendedTemplateIds references template "${t}" that is not registered.`,
142
+ });
143
+ }
144
+ }
145
+ for (const p of playbook.recommendedPipelineIds ?? []) {
146
+ if (!inspection.pipelineRegistry.get(p)) {
147
+ issues.push({
148
+ severity: 'warning',
149
+ code: 'missing-pipeline',
150
+ message: `recommendedPipelineIds references pipeline "${p}" that is not registered.`,
151
+ });
152
+ }
153
+ }
154
+ const passed = issues.filter((i) => i.severity === 'error').length === 0;
155
+ return {
156
+ schema: PLAYBOOK_VALIDATION_SCHEMA,
157
+ playbookId: playbook.id,
158
+ issues,
159
+ passed,
160
+ };
161
+ }
@@ -0,0 +1,52 @@
1
+ import { type IPluginLifecycleProfile } from '@shrkcrft/plugin-api';
2
+ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
3
+ export declare const PLUGIN_LIFECYCLE_PROFILE_REGISTRY_SCHEMA = "sharkcraft.plugin-lifecycle-profile-registry/v1";
4
+ export declare enum PluginLifecycleProfileSource {
5
+ Local = "local",
6
+ Pack = "pack",
7
+ Fixture = "fixture"
8
+ }
9
+ export interface IPluginLifecycleProfileEntry {
10
+ readonly profile: IPluginLifecycleProfile;
11
+ readonly source: PluginLifecycleProfileSource;
12
+ readonly packageName?: string;
13
+ readonly sourceFile: string;
14
+ }
15
+ export declare enum ProfileDoctorSeverity {
16
+ Info = "info",
17
+ Warning = "warning",
18
+ Error = "error"
19
+ }
20
+ export interface IPluginLifecycleProfileDoctorIssue {
21
+ readonly severity: ProfileDoctorSeverity;
22
+ readonly code: string;
23
+ readonly message: string;
24
+ readonly profileId?: string;
25
+ readonly source?: string;
26
+ }
27
+ export declare function loadPluginLifecycleProfiles(inspection: ISharkcraftInspection): Promise<{
28
+ entries: readonly IPluginLifecycleProfileEntry[];
29
+ issues: readonly IPluginLifecycleProfileDoctorIssue[];
30
+ }>;
31
+ export declare function listPluginLifecycleProfiles(inspection: ISharkcraftInspection): Promise<readonly IPluginLifecycleProfileEntry[]>;
32
+ export declare function findPluginLifecycleProfile(inspection: ISharkcraftInspection, id: string): Promise<IPluginLifecycleProfileEntry | null>;
33
+ export declare function listPluginLifecycleProfileIssues(inspection: ISharkcraftInspection): Promise<readonly IPluginLifecycleProfileDoctorIssue[]>;
34
+ export declare function clearPluginLifecycleProfileCache(projectRoot?: string): void;
35
+ export interface IResolveProfileOptions {
36
+ /** Explicit profile id (e.g. from --profile). */
37
+ readonly profileId?: string;
38
+ /** If true and there is exactly one profile, return it implicitly. */
39
+ readonly allowSingleDefault?: boolean;
40
+ }
41
+ export interface IResolveProfileResult {
42
+ readonly entry?: IPluginLifecycleProfileEntry;
43
+ readonly error?: string;
44
+ readonly availableIds: readonly string[];
45
+ }
46
+ /**
47
+ * Pick a profile from the registry. If `profileId` is supplied, look it up.
48
+ * If not and exactly one profile is registered and `allowSingleDefault` is
49
+ * true, return it. Otherwise emit an explanatory error string and list ids.
50
+ */
51
+ export declare function resolvePluginLifecycleProfile(inspection: ISharkcraftInspection, options?: IResolveProfileOptions): Promise<IResolveProfileResult>;
52
+ //# sourceMappingURL=plugin-lifecycle-profile-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-lifecycle-profile-registry.d.ts","sourceRoot":"","sources":["../src/plugin-lifecycle-profile-registry.ts"],"names":[],"mappings":"AAUA,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,eAAO,MAAM,wCAAwC,oDACF,CAAC;AAEpD,oBAAY,4BAA4B;IACtC,KAAK,UAAU;IACf,IAAI,SAAS;IACb,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,oBAAY,qBAAqB;IAC/B,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IACzC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAsCD,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC;IACT,OAAO,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACjD,MAAM,EAAE,SAAS,kCAAkC,EAAE,CAAC;CACvD,CAAC,CAoGD;AAED,wBAAsB,2BAA2B,CAC/C,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,4BAA4B,EAAE,CAAC,CAGlD;AAED,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,qBAAqB,EACjC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAG9C;AAED,wBAAsB,gCAAgC,CACpD,UAAU,EAAE,qBAAqB,GAChC,OAAO,CAAC,SAAS,kCAAkC,EAAE,CAAC,CAGxD;AAED,wBAAgB,gCAAgC,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAG3E;AAED,MAAM,WAAW,sBAAsB;IACrC,iDAAiD;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,4BAA4B,CAAC;IAC9C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1C;AAED;;;;GAIG;AACH,wBAAsB,6BAA6B,CACjD,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,qBAAqB,CAAC,CAyBhC"}
@@ -0,0 +1,202 @@
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
+ * Plugin lifecycle profile registry.
11
+ *
12
+ * Loads pack-contributed and locally configured `IPluginLifecycleProfile`
13
+ * entries. Duplicate ids and invalid profiles surface as doctor issues.
14
+ * Source attribution lets the CLI tell the user where a profile came from.
15
+ */
16
+ import { existsSync } from 'node:fs';
17
+ import * as nodePath from 'node:path';
18
+ import { pathToFileURL } from 'node:url';
19
+ import { validatePluginLifecycleProfile, } from '@shrkcrft/plugin-api';
20
+ export const PLUGIN_LIFECYCLE_PROFILE_REGISTRY_SCHEMA = 'sharkcraft.plugin-lifecycle-profile-registry/v1';
21
+ export var PluginLifecycleProfileSource;
22
+ (function (PluginLifecycleProfileSource) {
23
+ PluginLifecycleProfileSource["Local"] = "local";
24
+ PluginLifecycleProfileSource["Pack"] = "pack";
25
+ PluginLifecycleProfileSource["Fixture"] = "fixture";
26
+ })(PluginLifecycleProfileSource || (PluginLifecycleProfileSource = {}));
27
+ export var ProfileDoctorSeverity;
28
+ (function (ProfileDoctorSeverity) {
29
+ ProfileDoctorSeverity["Info"] = "info";
30
+ ProfileDoctorSeverity["Warning"] = "warning";
31
+ ProfileDoctorSeverity["Error"] = "error";
32
+ })(ProfileDoctorSeverity || (ProfileDoctorSeverity = {}));
33
+ const CACHE = new Map();
34
+ async function importDefaultProfiles(file) {
35
+ const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
36
+ if (Array.isArray(mod.default))
37
+ return mod.default;
38
+ if (mod.default && typeof mod.default === 'object')
39
+ return [mod.default];
40
+ if (Array.isArray(mod.pluginLifecycleProfiles))
41
+ return mod.pluginLifecycleProfiles;
42
+ return [];
43
+ }
44
+ function localProfileFiles(inspection) {
45
+ const out = [];
46
+ const dir = inspection.sharkcraftDir;
47
+ if (!dir)
48
+ return [];
49
+ for (const name of ['plugin-lifecycle-profiles.ts', 'plugin-lifecycle-profiles/index.ts']) {
50
+ const full = nodePath.join(dir, name);
51
+ if (existsSync(full))
52
+ out.push(full);
53
+ }
54
+ const cfg = inspection.config;
55
+ for (const rel of cfg?.pluginLifecycleProfileFiles ?? []) {
56
+ out.push(nodePath.isAbsolute(rel) ? rel : nodePath.join(dir, rel));
57
+ }
58
+ return out;
59
+ }
60
+ export async function loadPluginLifecycleProfiles(inspection) {
61
+ const cacheKey = `${inspection.projectRoot}:${(inspection.packs.validPacks ?? [])
62
+ .map((p) => p.packageName + '@' + p.packageVersion)
63
+ .join(',')}`;
64
+ const cached = CACHE.get(inspection.projectRoot);
65
+ if (cached && cached.cacheKey === cacheKey) {
66
+ return { entries: cached.entries, issues: cached.issues };
67
+ }
68
+ const seen = new Map();
69
+ const entries = [];
70
+ const issues = [];
71
+ const ingest = (profile, source, packageName, sourceFile) => {
72
+ const validation = validatePluginLifecycleProfile(profile);
73
+ if (!validation.valid) {
74
+ for (const issue of validation.issues) {
75
+ issues.push({
76
+ severity: ProfileDoctorSeverity.Error,
77
+ code: 'invalid-profile',
78
+ message: `${issue.field}: ${issue.message}`,
79
+ profileId: typeof profile.id === 'string' ? profile.id : undefined,
80
+ source: sourceFile,
81
+ });
82
+ }
83
+ return;
84
+ }
85
+ const existing = seen.get(profile.id);
86
+ if (existing) {
87
+ issues.push({
88
+ severity: ProfileDoctorSeverity.Error,
89
+ code: 'duplicate-id',
90
+ message: `Profile id "${profile.id}" already loaded from ${existing.sourceFile} (source=${existing.source}); skipping duplicate from ${sourceFile} (source=${source}).`,
91
+ profileId: profile.id,
92
+ source: sourceFile,
93
+ });
94
+ return;
95
+ }
96
+ const entry = {
97
+ profile,
98
+ source,
99
+ ...(packageName ? { packageName } : {}),
100
+ sourceFile,
101
+ };
102
+ seen.set(profile.id, entry);
103
+ entries.push(entry);
104
+ };
105
+ for (const file of localProfileFiles(inspection)) {
106
+ try {
107
+ const list = await importDefaultProfiles(file);
108
+ const rel = nodePath.relative(inspection.projectRoot, file) || file;
109
+ for (const raw of list) {
110
+ ingest(raw, PluginLifecycleProfileSource.Local, undefined, rel);
111
+ }
112
+ }
113
+ catch (e) {
114
+ issues.push({
115
+ severity: ProfileDoctorSeverity.Warning,
116
+ code: 'load-failed',
117
+ message: `Failed to load ${file}: ${e.message}`,
118
+ source: file,
119
+ });
120
+ }
121
+ }
122
+ for (const pack of inspection.packs.validPacks ?? []) {
123
+ const contributions = (pack.manifest?.contributions ?? {});
124
+ for (const rel of contributions.pluginLifecycleProfileFiles ?? []) {
125
+ const file = nodePath.resolve(pack.packageRoot, rel);
126
+ if (!existsSync(file)) {
127
+ issues.push({
128
+ severity: ProfileDoctorSeverity.Warning,
129
+ code: 'missing-file',
130
+ message: `Pack ${pack.packageName} declares profile file ${rel} but it is missing.`,
131
+ source: file,
132
+ });
133
+ continue;
134
+ }
135
+ try {
136
+ const list = await importDefaultProfiles(file);
137
+ for (const raw of list) {
138
+ ingest(raw, PluginLifecycleProfileSource.Pack, pack.packageName, rel);
139
+ }
140
+ }
141
+ catch (e) {
142
+ issues.push({
143
+ severity: ProfileDoctorSeverity.Warning,
144
+ code: 'load-failed',
145
+ message: `Pack ${pack.packageName} (${rel}): ${e.message}`,
146
+ source: file,
147
+ });
148
+ }
149
+ }
150
+ }
151
+ CACHE.set(inspection.projectRoot, { cacheKey, entries, issues });
152
+ return { entries, issues };
153
+ }
154
+ export async function listPluginLifecycleProfiles(inspection) {
155
+ const { entries } = await loadPluginLifecycleProfiles(inspection);
156
+ return entries;
157
+ }
158
+ export async function findPluginLifecycleProfile(inspection, id) {
159
+ const entries = await listPluginLifecycleProfiles(inspection);
160
+ return entries.find((e) => e.profile.id === id) ?? null;
161
+ }
162
+ export async function listPluginLifecycleProfileIssues(inspection) {
163
+ const { issues } = await loadPluginLifecycleProfiles(inspection);
164
+ return issues;
165
+ }
166
+ export function clearPluginLifecycleProfileCache(projectRoot) {
167
+ if (projectRoot)
168
+ CACHE.delete(projectRoot);
169
+ else
170
+ CACHE.clear();
171
+ }
172
+ /**
173
+ * Pick a profile from the registry. If `profileId` is supplied, look it up.
174
+ * If not and exactly one profile is registered and `allowSingleDefault` is
175
+ * true, return it. Otherwise emit an explanatory error string and list ids.
176
+ */
177
+ export async function resolvePluginLifecycleProfile(inspection, options = {}) {
178
+ const entries = await listPluginLifecycleProfiles(inspection);
179
+ const availableIds = entries.map((e) => e.profile.id);
180
+ if (options.profileId) {
181
+ const found = entries.find((e) => e.profile.id === options.profileId);
182
+ if (found)
183
+ return { entry: found, availableIds };
184
+ return {
185
+ error: `Unknown plugin lifecycle profile "${options.profileId}". Available: ${availableIds.length === 0 ? '(none registered)' : availableIds.join(', ')}. Contribute one via a pack manifest "pluginLifecycleProfileFiles" entry or sharkcraft/plugin-lifecycle-profiles.ts.`,
186
+ availableIds,
187
+ };
188
+ }
189
+ if (entries.length === 0) {
190
+ return {
191
+ error: 'No plugin lifecycle profiles registered. Contribute one via a pack manifest "pluginLifecycleProfileFiles" entry or sharkcraft/plugin-lifecycle-profiles.ts.',
192
+ availableIds,
193
+ };
194
+ }
195
+ if (entries.length === 1 && options.allowSingleDefault) {
196
+ return { entry: entries[0], availableIds };
197
+ }
198
+ return {
199
+ error: `--profile required. Available: ${availableIds.join(', ')}.`,
200
+ availableIds,
201
+ };
202
+ }