@shrkcrft/inspector 0.1.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (705) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +15 -0
  3. package/dist/acceptance-replay.d.ts +63 -0
  4. package/dist/acceptance-replay.d.ts.map +1 -0
  5. package/dist/acceptance-replay.js +240 -0
  6. package/dist/action-hint-diagnostics.d.ts +32 -0
  7. package/dist/action-hint-diagnostics.d.ts.map +1 -0
  8. package/dist/action-hint-diagnostics.js +133 -0
  9. package/dist/adoption-check.d.ts +28 -0
  10. package/dist/adoption-check.d.ts.map +1 -0
  11. package/dist/adoption-check.js +181 -0
  12. package/dist/adoption-checkpoint.d.ts +97 -0
  13. package/dist/adoption-checkpoint.d.ts.map +1 -0
  14. package/dist/adoption-checkpoint.js +209 -0
  15. package/dist/adoption-merge-preview.d.ts +28 -0
  16. package/dist/adoption-merge-preview.d.ts.map +1 -0
  17. package/dist/adoption-merge-preview.js +254 -0
  18. package/dist/adoption-report-renderer.d.ts +33 -0
  19. package/dist/adoption-report-renderer.d.ts.map +1 -0
  20. package/dist/adoption-report-renderer.js +257 -0
  21. package/dist/adoption-state.d.ts +100 -0
  22. package/dist/adoption-state.d.ts.map +1 -0
  23. package/dist/adoption-state.js +296 -0
  24. package/dist/adoption-three-way.d.ts +46 -0
  25. package/dist/adoption-three-way.d.ts.map +1 -0
  26. package/dist/adoption-three-way.js +181 -0
  27. package/dist/agent-brief.d.ts +77 -0
  28. package/dist/agent-brief.d.ts.map +1 -0
  29. package/dist/agent-brief.js +490 -0
  30. package/dist/agent-contract-gate.d.ts +108 -0
  31. package/dist/agent-contract-gate.d.ts.map +1 -0
  32. package/dist/agent-contract-gate.js +412 -0
  33. package/dist/agent-contract-templates.d.ts +63 -0
  34. package/dist/agent-contract-templates.d.ts.map +1 -0
  35. package/dist/agent-contract-templates.js +346 -0
  36. package/dist/agent-contract.d.ts +65 -0
  37. package/dist/agent-contract.d.ts.map +1 -0
  38. package/dist/agent-contract.js +555 -0
  39. package/dist/agent-handoff.d.ts +123 -0
  40. package/dist/agent-handoff.d.ts.map +1 -0
  41. package/dist/agent-handoff.js +470 -0
  42. package/dist/agent-instructions.d.ts +2 -0
  43. package/dist/agent-instructions.d.ts.map +1 -0
  44. package/dist/agent-instructions.js +21 -0
  45. package/dist/agent-orchestration.d.ts +61 -0
  46. package/dist/agent-orchestration.d.ts.map +1 -0
  47. package/dist/agent-orchestration.js +285 -0
  48. package/dist/agent-task-prep.d.ts +31 -0
  49. package/dist/agent-task-prep.d.ts.map +1 -0
  50. package/dist/agent-task-prep.js +73 -0
  51. package/dist/ai-readiness.d.ts +30 -0
  52. package/dist/ai-readiness.d.ts.map +1 -0
  53. package/dist/ai-readiness.js +279 -0
  54. package/dist/api-report.d.ts +51 -0
  55. package/dist/api-report.d.ts.map +1 -0
  56. package/dist/api-report.js +254 -0
  57. package/dist/apply-dispatch-trace.d.ts +93 -0
  58. package/dist/apply-dispatch-trace.d.ts.map +1 -0
  59. package/dist/apply-dispatch-trace.js +283 -0
  60. package/dist/apply-gate-result.d.ts +52 -0
  61. package/dist/apply-gate-result.d.ts.map +1 -0
  62. package/dist/apply-gate-result.js +44 -0
  63. package/dist/architecture-map.d.ts +118 -0
  64. package/dist/architecture-map.d.ts.map +1 -0
  65. package/dist/architecture-map.js +543 -0
  66. package/dist/area-explore.d.ts +75 -0
  67. package/dist/area-explore.d.ts.map +1 -0
  68. package/dist/area-explore.js +438 -0
  69. package/dist/area-map.d.ts +43 -0
  70. package/dist/area-map.d.ts.map +1 -0
  71. package/dist/area-map.js +197 -0
  72. package/dist/asset-provenance.d.ts +123 -0
  73. package/dist/asset-provenance.d.ts.map +1 -0
  74. package/dist/asset-provenance.js +209 -0
  75. package/dist/barrel-operations.d.ts +45 -0
  76. package/dist/barrel-operations.d.ts.map +1 -0
  77. package/dist/barrel-operations.js +159 -0
  78. package/dist/boundaries-changed-only.d.ts +62 -0
  79. package/dist/boundaries-changed-only.d.ts.map +1 -0
  80. package/dist/boundaries-changed-only.js +97 -0
  81. package/dist/boundary-suggestions.d.ts +20 -0
  82. package/dist/boundary-suggestions.d.ts.map +1 -0
  83. package/dist/boundary-suggestions.js +51 -0
  84. package/dist/bundle-diff.d.ts +98 -0
  85. package/dist/bundle-diff.d.ts.map +1 -0
  86. package/dist/bundle-diff.js +531 -0
  87. package/dist/bundle-replay.d.ts +68 -0
  88. package/dist/bundle-replay.d.ts.map +1 -0
  89. package/dist/bundle-replay.js +273 -0
  90. package/dist/bundle-validate-html.d.ts +11 -0
  91. package/dist/bundle-validate-html.d.ts.map +1 -0
  92. package/dist/bundle-validate-html.js +60 -0
  93. package/dist/change-intent.d.ts +36 -0
  94. package/dist/change-intent.d.ts.map +1 -0
  95. package/dist/change-intent.js +259 -0
  96. package/dist/changed-preflight.d.ts +59 -0
  97. package/dist/changed-preflight.d.ts.map +1 -0
  98. package/dist/changed-preflight.js +358 -0
  99. package/dist/changed-scope.d.ts +112 -0
  100. package/dist/changed-scope.d.ts.map +1 -0
  101. package/dist/changed-scope.js +172 -0
  102. package/dist/changes-summary.d.ts +87 -0
  103. package/dist/changes-summary.d.ts.map +1 -0
  104. package/dist/changes-summary.js +323 -0
  105. package/dist/check-result-v1.d.ts +90 -0
  106. package/dist/check-result-v1.d.ts.map +1 -0
  107. package/dist/check-result-v1.js +335 -0
  108. package/dist/ci-integrity-report.d.ts +38 -0
  109. package/dist/ci-integrity-report.d.ts.map +1 -0
  110. package/dist/ci-integrity-report.js +324 -0
  111. package/dist/ci-permissions-fix.d.ts +38 -0
  112. package/dist/ci-permissions-fix.d.ts.map +1 -0
  113. package/dist/ci-permissions-fix.js +201 -0
  114. package/dist/ci-permissions.d.ts +51 -0
  115. package/dist/ci-permissions.d.ts.map +1 -0
  116. package/dist/ci-permissions.js +431 -0
  117. package/dist/ci-predict.d.ts +42 -0
  118. package/dist/ci-predict.d.ts.map +1 -0
  119. package/dist/ci-predict.js +300 -0
  120. package/dist/ci-scaffold.d.ts +47 -0
  121. package/dist/ci-scaffold.d.ts.map +1 -0
  122. package/dist/ci-scaffold.js +638 -0
  123. package/dist/codemod-assist.d.ts +97 -0
  124. package/dist/codemod-assist.d.ts.map +1 -0
  125. package/dist/codemod-assist.js +261 -0
  126. package/dist/command-recommender.d.ts +25 -0
  127. package/dist/command-recommender.d.ts.map +1 -0
  128. package/dist/command-recommender.js +145 -0
  129. package/dist/command-suggester.d.ts +61 -0
  130. package/dist/command-suggester.d.ts.map +1 -0
  131. package/dist/command-suggester.js +159 -0
  132. package/dist/command-taxonomy.d.ts +38 -0
  133. package/dist/command-taxonomy.d.ts.map +1 -0
  134. package/dist/command-taxonomy.js +164 -0
  135. package/dist/compliance-evidence.d.ts +58 -0
  136. package/dist/compliance-evidence.d.ts.map +1 -0
  137. package/dist/compliance-evidence.js +260 -0
  138. package/dist/compliance-profiles.d.ts +42 -0
  139. package/dist/compliance-profiles.d.ts.map +1 -0
  140. package/dist/compliance-profiles.js +171 -0
  141. package/dist/construct-adoption-diff.d.ts +55 -0
  142. package/dist/construct-adoption-diff.d.ts.map +1 -0
  143. package/dist/construct-adoption-diff.js +331 -0
  144. package/dist/construct-adoption.d.ts +71 -0
  145. package/dist/construct-adoption.d.ts.map +1 -0
  146. package/dist/construct-adoption.js +331 -0
  147. package/dist/construct-inference.d.ts +44 -0
  148. package/dist/construct-inference.d.ts.map +1 -0
  149. package/dist/construct-inference.js +391 -0
  150. package/dist/construct-registry.d.ts +32 -0
  151. package/dist/construct-registry.d.ts.map +1 -0
  152. package/dist/construct-registry.js +198 -0
  153. package/dist/contract-file-rule.d.ts +37 -0
  154. package/dist/contract-file-rule.d.ts.map +1 -0
  155. package/dist/contract-file-rule.js +99 -0
  156. package/dist/contract-template-registry.d.ts +28 -0
  157. package/dist/contract-template-registry.d.ts.map +1 -0
  158. package/dist/contract-template-registry.js +161 -0
  159. package/dist/contradictions.d.ts +52 -0
  160. package/dist/contradictions.d.ts.map +1 -0
  161. package/dist/contradictions.js +391 -0
  162. package/dist/convention-registry.d.ts +44 -0
  163. package/dist/convention-registry.d.ts.map +1 -0
  164. package/dist/convention-registry.js +195 -0
  165. package/dist/coverage-report.d.ts +25 -0
  166. package/dist/coverage-report.d.ts.map +1 -0
  167. package/dist/coverage-report.js +190 -0
  168. package/dist/custom-checks.d.ts +146 -0
  169. package/dist/custom-checks.d.ts.map +1 -0
  170. package/dist/custom-checks.js +260 -0
  171. package/dist/dashboard/dashboard-data.d.ts +59 -0
  172. package/dist/dashboard/dashboard-data.d.ts.map +1 -0
  173. package/dist/dashboard/dashboard-data.js +653 -0
  174. package/dist/dashboard-export.d.ts +67 -0
  175. package/dist/dashboard-export.d.ts.map +1 -0
  176. package/dist/dashboard-export.js +203 -0
  177. package/dist/decision-records.d.ts +47 -0
  178. package/dist/decision-records.d.ts.map +1 -0
  179. package/dist/decision-records.js +255 -0
  180. package/dist/demo-package.d.ts +49 -0
  181. package/dist/demo-package.d.ts.map +1 -0
  182. package/dist/demo-package.js +305 -0
  183. package/dist/demo-script.d.ts +25 -0
  184. package/dist/demo-script.d.ts.map +1 -0
  185. package/dist/demo-script.js +198 -0
  186. package/dist/demo-workflow.d.ts +28 -0
  187. package/dist/demo-workflow.d.ts.map +1 -0
  188. package/dist/demo-workflow.js +178 -0
  189. package/dist/dev-cycle.d.ts +41 -0
  190. package/dist/dev-cycle.d.ts.map +1 -0
  191. package/dist/dev-cycle.js +94 -0
  192. package/dist/dev-session-html.d.ts +13 -0
  193. package/dist/dev-session-html.d.ts.map +1 -0
  194. package/dist/dev-session-html.js +223 -0
  195. package/dist/dev-session-report.d.ts +11 -0
  196. package/dist/dev-session-report.d.ts.map +1 -0
  197. package/dist/dev-session-report.js +206 -0
  198. package/dist/dev-session.d.ts +257 -0
  199. package/dist/dev-session.d.ts.map +1 -0
  200. package/dist/dev-session.js +568 -0
  201. package/dist/diagnostics-suggest.d.ts +17 -0
  202. package/dist/diagnostics-suggest.d.ts.map +1 -0
  203. package/dist/diagnostics-suggest.js +69 -0
  204. package/dist/docs-check.d.ts +40 -0
  205. package/dist/docs-check.d.ts.map +1 -0
  206. package/dist/docs-check.js +221 -0
  207. package/dist/doctor-acknowledgements.d.ts +69 -0
  208. package/dist/doctor-acknowledgements.d.ts.map +1 -0
  209. package/dist/doctor-acknowledgements.js +150 -0
  210. package/dist/doctor-result.d.ts +51 -0
  211. package/dist/doctor-result.d.ts.map +1 -0
  212. package/dist/doctor-result.js +7 -0
  213. package/dist/doctor-suppressions.d.ts +91 -0
  214. package/dist/doctor-suppressions.d.ts.map +1 -0
  215. package/dist/doctor-suppressions.js +238 -0
  216. package/dist/drift-baseline.d.ts +29 -0
  217. package/dist/drift-baseline.d.ts.map +1 -0
  218. package/dist/drift-baseline.js +80 -0
  219. package/dist/drift.d.ts +38 -0
  220. package/dist/drift.d.ts.map +1 -0
  221. package/dist/drift.js +107 -0
  222. package/dist/entrypoint-matrix.d.ts +61 -0
  223. package/dist/entrypoint-matrix.d.ts.map +1 -0
  224. package/dist/entrypoint-matrix.js +221 -0
  225. package/dist/examples-check.d.ts +36 -0
  226. package/dist/examples-check.d.ts.map +1 -0
  227. package/dist/examples-check.js +168 -0
  228. package/dist/execution-graph.d.ts +98 -0
  229. package/dist/execution-graph.d.ts.map +1 -0
  230. package/dist/execution-graph.js +484 -0
  231. package/dist/export-bundle.d.ts +10 -0
  232. package/dist/export-bundle.d.ts.map +1 -0
  233. package/dist/export-bundle.js +90 -0
  234. package/dist/failure-diagnostics.d.ts +63 -0
  235. package/dist/failure-diagnostics.d.ts.map +1 -0
  236. package/dist/failure-diagnostics.js +243 -0
  237. package/dist/feature-bundle.d.ts +111 -0
  238. package/dist/feature-bundle.d.ts.map +1 -0
  239. package/dist/feature-bundle.js +211 -0
  240. package/dist/feedback-actions-v2.d.ts +65 -0
  241. package/dist/feedback-actions-v2.d.ts.map +1 -0
  242. package/dist/feedback-actions-v2.js +183 -0
  243. package/dist/feedback-ingestion.d.ts +96 -0
  244. package/dist/feedback-ingestion.d.ts.map +1 -0
  245. package/dist/feedback-ingestion.js +400 -0
  246. package/dist/fix-preview.d.ts +82 -0
  247. package/dist/fix-preview.d.ts.map +1 -0
  248. package/dist/fix-preview.js +365 -0
  249. package/dist/fuzzy-impact.d.ts +50 -0
  250. package/dist/fuzzy-impact.d.ts.map +1 -0
  251. package/dist/fuzzy-impact.js +446 -0
  252. package/dist/generated-code.d.ts +97 -0
  253. package/dist/generated-code.d.ts.map +1 -0
  254. package/dist/generated-code.js +395 -0
  255. package/dist/git-helpers.d.ts +26 -0
  256. package/dist/git-helpers.d.ts.map +1 -0
  257. package/dist/git-helpers.js +110 -0
  258. package/dist/golden-output.d.ts +33 -0
  259. package/dist/golden-output.d.ts.map +1 -0
  260. package/dist/golden-output.js +92 -0
  261. package/dist/grounding/build-grounding.d.ts +53 -0
  262. package/dist/grounding/build-grounding.d.ts.map +1 -0
  263. package/dist/grounding/build-grounding.js +51 -0
  264. package/dist/grounding/nx-projects.d.ts +29 -0
  265. package/dist/grounding/nx-projects.d.ts.map +1 -0
  266. package/dist/grounding/nx-projects.js +109 -0
  267. package/dist/grounding/validate-extracted-plan.d.ts +20 -0
  268. package/dist/grounding/validate-extracted-plan.d.ts.map +1 -0
  269. package/dist/grounding/validate-extracted-plan.js +127 -0
  270. package/dist/healing-plan.d.ts +33 -0
  271. package/dist/healing-plan.d.ts.map +1 -0
  272. package/dist/healing-plan.js +346 -0
  273. package/dist/helper-registry.d.ts +90 -0
  274. package/dist/helper-registry.d.ts.map +1 -0
  275. package/dist/helper-registry.js +529 -0
  276. package/dist/impact-analysis.d.ts +150 -0
  277. package/dist/impact-analysis.d.ts.map +1 -0
  278. package/dist/impact-analysis.js +697 -0
  279. package/dist/impact-graph-render.d.ts +51 -0
  280. package/dist/impact-graph-render.d.ts.map +1 -0
  281. package/dist/impact-graph-render.js +139 -0
  282. package/dist/impact-graph.d.ts +17 -0
  283. package/dist/impact-graph.d.ts.map +1 -0
  284. package/dist/impact-graph.js +119 -0
  285. package/dist/impact-render.d.ts +22 -0
  286. package/dist/impact-render.d.ts.map +1 -0
  287. package/dist/impact-render.js +413 -0
  288. package/dist/import-graph-analysis.d.ts +28 -0
  289. package/dist/import-graph-analysis.d.ts.map +1 -0
  290. package/dist/import-graph-analysis.js +193 -0
  291. package/dist/import-hygiene.d.ts +93 -0
  292. package/dist/import-hygiene.d.ts.map +1 -0
  293. package/dist/import-hygiene.js +366 -0
  294. package/dist/index.d.ts +223 -0
  295. package/dist/index.d.ts.map +1 -0
  296. package/dist/index.js +233 -0
  297. package/dist/ingest-adoption.d.ts +50 -0
  298. package/dist/ingest-adoption.d.ts.map +1 -0
  299. package/dist/ingest-adoption.js +183 -0
  300. package/dist/ingest-apply.d.ts +80 -0
  301. package/dist/ingest-apply.d.ts.map +1 -0
  302. package/dist/ingest-apply.js +227 -0
  303. package/dist/ingest-body-extractor.d.ts +28 -0
  304. package/dist/ingest-body-extractor.d.ts.map +1 -0
  305. package/dist/ingest-body-extractor.js +129 -0
  306. package/dist/ingest-drafts.d.ts +16 -0
  307. package/dist/ingest-drafts.d.ts.map +1 -0
  308. package/dist/ingest-drafts.js +482 -0
  309. package/dist/inspector-cache.d.ts +41 -0
  310. package/dist/inspector-cache.d.ts.map +1 -0
  311. package/dist/inspector-cache.js +104 -0
  312. package/dist/install-smoke.d.ts +44 -0
  313. package/dist/install-smoke.d.ts.map +1 -0
  314. package/dist/install-smoke.js +31 -0
  315. package/dist/knowledge-authoring.d.ts +151 -0
  316. package/dist/knowledge-authoring.d.ts.map +1 -0
  317. package/dist/knowledge-authoring.js +586 -0
  318. package/dist/knowledge-graph.d.ts +76 -0
  319. package/dist/knowledge-graph.d.ts.map +1 -0
  320. package/dist/knowledge-graph.js +336 -0
  321. package/dist/knowledge-lint.d.ts +97 -0
  322. package/dist/knowledge-lint.d.ts.map +1 -0
  323. package/dist/knowledge-lint.js +302 -0
  324. package/dist/knowledge-rename.d.ts +38 -0
  325. package/dist/knowledge-rename.d.ts.map +1 -0
  326. package/dist/knowledge-rename.js +88 -0
  327. package/dist/knowledge-stale.d.ts +124 -0
  328. package/dist/knowledge-stale.d.ts.map +1 -0
  329. package/dist/knowledge-stale.js +892 -0
  330. package/dist/languages/command-inference.d.ts +27 -0
  331. package/dist/languages/command-inference.d.ts.map +1 -0
  332. package/dist/languages/command-inference.js +214 -0
  333. package/dist/languages/dependency-scan.d.ts +33 -0
  334. package/dist/languages/dependency-scan.d.ts.map +1 -0
  335. package/dist/languages/dependency-scan.js +343 -0
  336. package/dist/languages/index.d.ts +14 -0
  337. package/dist/languages/index.d.ts.map +1 -0
  338. package/dist/languages/index.js +13 -0
  339. package/dist/languages/language-boundaries.d.ts +30 -0
  340. package/dist/languages/language-boundaries.d.ts.map +1 -0
  341. package/dist/languages/language-boundaries.js +176 -0
  342. package/dist/languages/language-cache.d.ts +54 -0
  343. package/dist/languages/language-cache.d.ts.map +1 -0
  344. package/dist/languages/language-cache.js +236 -0
  345. package/dist/languages/language-detection.d.ts +30 -0
  346. package/dist/languages/language-detection.d.ts.map +1 -0
  347. package/dist/languages/language-detection.js +584 -0
  348. package/dist/languages/language-id.d.ts +15 -0
  349. package/dist/languages/language-id.d.ts.map +1 -0
  350. package/dist/languages/language-id.js +15 -0
  351. package/dist/languages/language-runner.d.ts +90 -0
  352. package/dist/languages/language-runner.d.ts.map +1 -0
  353. package/dist/languages/language-runner.js +346 -0
  354. package/dist/languages/polyglot-boundary.d.ts +80 -0
  355. package/dist/languages/polyglot-boundary.d.ts.map +1 -0
  356. package/dist/languages/polyglot-boundary.js +373 -0
  357. package/dist/languages/polyglot-ci.d.ts +25 -0
  358. package/dist/languages/polyglot-ci.d.ts.map +1 -0
  359. package/dist/languages/polyglot-ci.js +278 -0
  360. package/dist/languages/test-impact.d.ts +19 -0
  361. package/dist/languages/test-impact.d.ts.map +1 -0
  362. package/dist/languages/test-impact.js +157 -0
  363. package/dist/loader-diagnostics.d.ts +40 -0
  364. package/dist/loader-diagnostics.d.ts.map +1 -0
  365. package/dist/loader-diagnostics.js +49 -0
  366. package/dist/memory-diff.d.ts +60 -0
  367. package/dist/memory-diff.d.ts.map +1 -0
  368. package/dist/memory-diff.js +302 -0
  369. package/dist/migration-profile-registry.d.ts +26 -0
  370. package/dist/migration-profile-registry.d.ts.map +1 -0
  371. package/dist/migration-profile-registry.js +135 -0
  372. package/dist/migration-readiness.d.ts +101 -0
  373. package/dist/migration-readiness.d.ts.map +1 -0
  374. package/dist/migration-readiness.js +253 -0
  375. package/dist/monorepo-onboarding.d.ts +51 -0
  376. package/dist/monorepo-onboarding.d.ts.map +1 -0
  377. package/dist/monorepo-onboarding.js +235 -0
  378. package/dist/onboarding-adoption-diff.d.ts +53 -0
  379. package/dist/onboarding-adoption-diff.d.ts.map +1 -0
  380. package/dist/onboarding-adoption-diff.js +285 -0
  381. package/dist/onboarding-adoption.d.ts +136 -0
  382. package/dist/onboarding-adoption.d.ts.map +1 -0
  383. package/dist/onboarding-adoption.js +702 -0
  384. package/dist/onboarding-agent-import.d.ts +40 -0
  385. package/dist/onboarding-agent-import.d.ts.map +1 -0
  386. package/dist/onboarding-agent-import.js +114 -0
  387. package/dist/onboarding-diff.d.ts +39 -0
  388. package/dist/onboarding-diff.d.ts.map +1 -0
  389. package/dist/onboarding-diff.js +240 -0
  390. package/dist/onboarding-drafts.d.ts +28 -0
  391. package/dist/onboarding-drafts.d.ts.map +1 -0
  392. package/dist/onboarding-drafts.js +234 -0
  393. package/dist/onboarding-report.d.ts +8 -0
  394. package/dist/onboarding-report.d.ts.map +1 -0
  395. package/dist/onboarding-report.js +239 -0
  396. package/dist/onboarding.d.ts +134 -0
  397. package/dist/onboarding.d.ts.map +1 -0
  398. package/dist/onboarding.js +729 -0
  399. package/dist/ownership.d.ts +38 -0
  400. package/dist/ownership.d.ts.map +1 -0
  401. package/dist/ownership.js +102 -0
  402. package/dist/pack-author-ux.d.ts +58 -0
  403. package/dist/pack-author-ux.d.ts.map +1 -0
  404. package/dist/pack-author-ux.js +219 -0
  405. package/dist/pack-author.d.ts +94 -0
  406. package/dist/pack-author.d.ts.map +1 -0
  407. package/dist/pack-author.js +208 -0
  408. package/dist/pack-compatibility.d.ts +21 -0
  409. package/dist/pack-compatibility.d.ts.map +1 -0
  410. package/dist/pack-compatibility.js +114 -0
  411. package/dist/pack-contributions-inventory.d.ts +121 -0
  412. package/dist/pack-contributions-inventory.d.ts.map +1 -0
  413. package/dist/pack-contributions-inventory.js +732 -0
  414. package/dist/pack-docs.d.ts +11 -0
  415. package/dist/pack-docs.d.ts.map +1 -0
  416. package/dist/pack-docs.js +101 -0
  417. package/dist/pack-doctor.d.ts +50 -0
  418. package/dist/pack-doctor.d.ts.map +1 -0
  419. package/dist/pack-doctor.js +302 -0
  420. package/dist/pack-helper-registry.d.ts +29 -0
  421. package/dist/pack-helper-registry.d.ts.map +1 -0
  422. package/dist/pack-helper-registry.js +144 -0
  423. package/dist/pack-pending.d.ts +68 -0
  424. package/dist/pack-pending.d.ts.map +1 -0
  425. package/dist/pack-pending.js +189 -0
  426. package/dist/pack-quality-score.d.ts +44 -0
  427. package/dist/pack-quality-score.d.ts.map +1 -0
  428. package/dist/pack-quality-score.js +155 -0
  429. package/dist/pack-release-check.d.ts +24 -0
  430. package/dist/pack-release-check.d.ts.map +1 -0
  431. package/dist/pack-release-check.js +258 -0
  432. package/dist/pack-signature-status.d.ts +72 -0
  433. package/dist/pack-signature-status.d.ts.map +1 -0
  434. package/dist/pack-signature-status.js +222 -0
  435. package/dist/pack-symbol-compat.d.ts +60 -0
  436. package/dist/pack-symbol-compat.d.ts.map +1 -0
  437. package/dist/pack-symbol-compat.js +371 -0
  438. package/dist/pack-test-runner.d.ts +59 -0
  439. package/dist/pack-test-runner.d.ts.map +1 -0
  440. package/dist/pack-test-runner.js +211 -0
  441. package/dist/pipeline-command-dictionary.d.ts +2 -0
  442. package/dist/pipeline-command-dictionary.d.ts.map +1 -0
  443. package/dist/pipeline-command-dictionary.js +20 -0
  444. package/dist/pipeline-lint.d.ts +30 -0
  445. package/dist/pipeline-lint.d.ts.map +1 -0
  446. package/dist/pipeline-lint.js +134 -0
  447. package/dist/plan-dependency-graph.d.ts +25 -0
  448. package/dist/plan-dependency-graph.d.ts.map +1 -0
  449. package/dist/plan-dependency-graph.js +195 -0
  450. package/dist/plan-review.d.ts +64 -0
  451. package/dist/plan-review.d.ts.map +1 -0
  452. package/dist/plan-review.js +242 -0
  453. package/dist/plan-simulation.d.ts +108 -0
  454. package/dist/plan-simulation.d.ts.map +1 -0
  455. package/dist/plan-simulation.js +767 -0
  456. package/dist/playbook-registry.d.ts +25 -0
  457. package/dist/playbook-registry.d.ts.map +1 -0
  458. package/dist/playbook-registry.js +148 -0
  459. package/dist/playbook-script.d.ts +60 -0
  460. package/dist/playbook-script.d.ts.map +1 -0
  461. package/dist/playbook-script.js +161 -0
  462. package/dist/plugin-lifecycle-profile-registry.d.ts +52 -0
  463. package/dist/plugin-lifecycle-profile-registry.d.ts.map +1 -0
  464. package/dist/plugin-lifecycle-profile-registry.js +202 -0
  465. package/dist/plugin-lifecycle.d.ts +132 -0
  466. package/dist/plugin-lifecycle.d.ts.map +1 -0
  467. package/dist/plugin-lifecycle.js +477 -0
  468. package/dist/policy-engine.d.ts +101 -0
  469. package/dist/policy-engine.d.ts.map +1 -0
  470. package/dist/policy-engine.js +321 -0
  471. package/dist/policy-override-audit.d.ts +18 -0
  472. package/dist/policy-override-audit.d.ts.map +1 -0
  473. package/dist/policy-override-audit.js +54 -0
  474. package/dist/policy-overrides.d.ts +35 -0
  475. package/dist/policy-overrides.d.ts.map +1 -0
  476. package/dist/policy-overrides.js +84 -0
  477. package/dist/policy-test.d.ts +83 -0
  478. package/dist/policy-test.d.ts.map +1 -0
  479. package/dist/policy-test.js +342 -0
  480. package/dist/pr-summary.d.ts +34 -0
  481. package/dist/pr-summary.d.ts.map +1 -0
  482. package/dist/pr-summary.js +220 -0
  483. package/dist/product-coherence.d.ts +21 -0
  484. package/dist/product-coherence.d.ts.map +1 -0
  485. package/dist/product-coherence.js +158 -0
  486. package/dist/profile-registry.d.ts +42 -0
  487. package/dist/profile-registry.d.ts.map +1 -0
  488. package/dist/profile-registry.js +104 -0
  489. package/dist/project-coupling-audit.d.ts +64 -0
  490. package/dist/project-coupling-audit.d.ts.map +1 -0
  491. package/dist/project-coupling-audit.js +282 -0
  492. package/dist/project-overview.d.ts +14 -0
  493. package/dist/project-overview.d.ts.map +1 -0
  494. package/dist/project-overview.js +27 -0
  495. package/dist/propose-knowledge.d.ts +64 -0
  496. package/dist/propose-knowledge.d.ts.map +1 -0
  497. package/dist/propose-knowledge.js +367 -0
  498. package/dist/quality-baseline.d.ts +123 -0
  499. package/dist/quality-baseline.d.ts.map +1 -0
  500. package/dist/quality-baseline.js +433 -0
  501. package/dist/quality-html.d.ts +7 -0
  502. package/dist/quality-html.d.ts.map +1 -0
  503. package/dist/quality-html.js +64 -0
  504. package/dist/quality-report.d.ts +49 -0
  505. package/dist/quality-report.d.ts.map +1 -0
  506. package/dist/quality-report.js +296 -0
  507. package/dist/query-resolver.d.ts +38 -0
  508. package/dist/query-resolver.d.ts.map +1 -0
  509. package/dist/query-resolver.js +163 -0
  510. package/dist/ranker-explainability.d.ts +91 -0
  511. package/dist/ranker-explainability.d.ts.map +1 -0
  512. package/dist/ranker-explainability.js +550 -0
  513. package/dist/reference-lookup.d.ts +8 -0
  514. package/dist/reference-lookup.d.ts.map +1 -0
  515. package/dist/reference-lookup.js +18 -0
  516. package/dist/registration-hint-registry.d.ts +55 -0
  517. package/dist/registration-hint-registry.d.ts.map +1 -0
  518. package/dist/registration-hint-registry.js +327 -0
  519. package/dist/registry-lifecycle.d.ts +47 -0
  520. package/dist/registry-lifecycle.d.ts.map +1 -0
  521. package/dist/registry-lifecycle.js +214 -0
  522. package/dist/release-readiness.d.ts +64 -0
  523. package/dist/release-readiness.d.ts.map +1 -0
  524. package/dist/release-readiness.js +456 -0
  525. package/dist/release-smoke.d.ts +138 -0
  526. package/dist/release-smoke.d.ts.map +1 -0
  527. package/dist/release-smoke.js +459 -0
  528. package/dist/release-train.d.ts +33 -0
  529. package/dist/release-train.d.ts.map +1 -0
  530. package/dist/release-train.js +104 -0
  531. package/dist/repo-memory.d.ts +95 -0
  532. package/dist/repo-memory.d.ts.map +1 -0
  533. package/dist/repo-memory.js +614 -0
  534. package/dist/report-site.d.ts +92 -0
  535. package/dist/report-site.d.ts.map +1 -0
  536. package/dist/report-site.js +658 -0
  537. package/dist/reposet.d.ts +56 -0
  538. package/dist/reposet.d.ts.map +1 -0
  539. package/dist/reposet.js +160 -0
  540. package/dist/repository-intelligence.d.ts +145 -0
  541. package/dist/repository-intelligence.d.ts.map +1 -0
  542. package/dist/repository-intelligence.js +729 -0
  543. package/dist/repository-knowledge-model.d.ts +218 -0
  544. package/dist/repository-knowledge-model.d.ts.map +1 -0
  545. package/dist/repository-knowledge-model.js +939 -0
  546. package/dist/repository-map.d.ts +72 -0
  547. package/dist/repository-map.d.ts.map +1 -0
  548. package/dist/repository-map.js +332 -0
  549. package/dist/repository-stats.d.ts +66 -0
  550. package/dist/repository-stats.d.ts.map +1 -0
  551. package/dist/repository-stats.js +329 -0
  552. package/dist/review-comment-renderer.d.ts +59 -0
  553. package/dist/review-comment-renderer.d.ts.map +1 -0
  554. package/dist/review-comment-renderer.js +181 -0
  555. package/dist/review-comment-v2.d.ts +9 -0
  556. package/dist/review-comment-v2.d.ts.map +1 -0
  557. package/dist/review-comment-v2.js +178 -0
  558. package/dist/review-html.d.ts +13 -0
  559. package/dist/review-html.d.ts.map +1 -0
  560. package/dist/review-html.js +79 -0
  561. package/dist/review-packet-v2.d.ts +29 -0
  562. package/dist/review-packet-v2.d.ts.map +1 -0
  563. package/dist/review-packet-v2.js +71 -0
  564. package/dist/review-packet-v3.d.ts +22 -0
  565. package/dist/review-packet-v3.d.ts.map +1 -0
  566. package/dist/review-packet-v3.js +181 -0
  567. package/dist/review-packet.d.ts +49 -0
  568. package/dist/review-packet.d.ts.map +1 -0
  569. package/dist/review-packet.js +129 -0
  570. package/dist/risk-signals.d.ts +28 -0
  571. package/dist/risk-signals.d.ts.map +1 -0
  572. package/dist/risk-signals.js +68 -0
  573. package/dist/role-views.d.ts +50 -0
  574. package/dist/role-views.d.ts.map +1 -0
  575. package/dist/role-views.js +334 -0
  576. package/dist/rounds.d.ts +52 -0
  577. package/dist/rounds.d.ts.map +1 -0
  578. package/dist/rounds.js +172 -0
  579. package/dist/rule-drift.d.ts +42 -0
  580. package/dist/rule-drift.d.ts.map +1 -0
  581. package/dist/rule-drift.js +148 -0
  582. package/dist/rule-quality.d.ts +73 -0
  583. package/dist/rule-quality.d.ts.map +1 -0
  584. package/dist/rule-quality.js +356 -0
  585. package/dist/rule-scaffold.d.ts +71 -0
  586. package/dist/rule-scaffold.d.ts.map +1 -0
  587. package/dist/rule-scaffold.js +258 -0
  588. package/dist/safety-audit-deep.d.ts +38 -0
  589. package/dist/safety-audit-deep.d.ts.map +1 -0
  590. package/dist/safety-audit-deep.js +162 -0
  591. package/dist/safety-audit.d.ts +91 -0
  592. package/dist/safety-audit.d.ts.map +1 -0
  593. package/dist/safety-audit.js +138 -0
  594. package/dist/safety-html.d.ts +7 -0
  595. package/dist/safety-html.d.ts.map +1 -0
  596. package/dist/safety-html.js +70 -0
  597. package/dist/scaffold-coverage.d.ts +46 -0
  598. package/dist/scaffold-coverage.d.ts.map +1 -0
  599. package/dist/scaffold-coverage.js +273 -0
  600. package/dist/scaffold-patterns.d.ts +38 -0
  601. package/dist/scaffold-patterns.d.ts.map +1 -0
  602. package/dist/scaffold-patterns.js +282 -0
  603. package/dist/schema-inventory.d.ts +55 -0
  604. package/dist/schema-inventory.d.ts.map +1 -0
  605. package/dist/schema-inventory.js +301 -0
  606. package/dist/search-index.d.ts +75 -0
  607. package/dist/search-index.d.ts.map +1 -0
  608. package/dist/search-index.js +531 -0
  609. package/dist/search-tuning-explain.d.ts +68 -0
  610. package/dist/search-tuning-explain.d.ts.map +1 -0
  611. package/dist/search-tuning-explain.js +207 -0
  612. package/dist/search-tuning-registry.d.ts +54 -0
  613. package/dist/search-tuning-registry.d.ts.map +1 -0
  614. package/dist/search-tuning-registry.js +303 -0
  615. package/dist/self-audit.d.ts +59 -0
  616. package/dist/self-audit.d.ts.map +1 -0
  617. package/dist/self-audit.js +192 -0
  618. package/dist/self-config-doctor-v2.d.ts +57 -0
  619. package/dist/self-config-doctor-v2.d.ts.map +1 -0
  620. package/dist/self-config-doctor-v2.js +653 -0
  621. package/dist/self-config-doctor.d.ts +47 -0
  622. package/dist/self-config-doctor.d.ts.map +1 -0
  623. package/dist/self-config-doctor.js +432 -0
  624. package/dist/sharkcraft-inspector.d.ts +73 -0
  625. package/dist/sharkcraft-inspector.d.ts.map +1 -0
  626. package/dist/sharkcraft-inspector.js +745 -0
  627. package/dist/spec/spec-cross-validate.d.ts +17 -0
  628. package/dist/spec/spec-cross-validate.d.ts.map +1 -0
  629. package/dist/spec/spec-cross-validate.js +53 -0
  630. package/dist/spec/spec-discovery.d.ts +27 -0
  631. package/dist/spec/spec-discovery.d.ts.map +1 -0
  632. package/dist/spec/spec-discovery.js +78 -0
  633. package/dist/spec/spec-review.d.ts +36 -0
  634. package/dist/spec/spec-review.d.ts.map +1 -0
  635. package/dist/spec/spec-review.js +37 -0
  636. package/dist/stability-map.d.ts +62 -0
  637. package/dist/stability-map.d.ts.map +1 -0
  638. package/dist/stability-map.js +404 -0
  639. package/dist/start-here.d.ts +49 -0
  640. package/dist/start-here.d.ts.map +1 -0
  641. package/dist/start-here.js +259 -0
  642. package/dist/surface-profile-detect.d.ts +42 -0
  643. package/dist/surface-profile-detect.d.ts.map +1 -0
  644. package/dist/surface-profile-detect.js +76 -0
  645. package/dist/symbol-index.d.ts +108 -0
  646. package/dist/symbol-index.d.ts.map +1 -0
  647. package/dist/symbol-index.js +483 -0
  648. package/dist/task-decompose.d.ts +38 -0
  649. package/dist/task-decompose.d.ts.map +1 -0
  650. package/dist/task-decompose.js +154 -0
  651. package/dist/task-packet.d.ts +104 -0
  652. package/dist/task-packet.d.ts.map +1 -0
  653. package/dist/task-packet.js +156 -0
  654. package/dist/task-ranker.d.ts +51 -0
  655. package/dist/task-ranker.d.ts.map +1 -0
  656. package/dist/task-ranker.js +410 -0
  657. package/dist/task-risk.d.ts +84 -0
  658. package/dist/task-risk.d.ts.map +1 -0
  659. package/dist/task-risk.js +731 -0
  660. package/dist/task-routing-hint-registry.d.ts +36 -0
  661. package/dist/task-routing-hint-registry.d.ts.map +1 -0
  662. package/dist/task-routing-hint-registry.js +186 -0
  663. package/dist/template-authoring.d.ts +113 -0
  664. package/dist/template-authoring.d.ts.map +1 -0
  665. package/dist/template-authoring.js +521 -0
  666. package/dist/template-body-inference-v2.d.ts +19 -0
  667. package/dist/template-body-inference-v2.d.ts.map +1 -0
  668. package/dist/template-body-inference-v2.js +468 -0
  669. package/dist/template-body-inference.d.ts +59 -0
  670. package/dist/template-body-inference.d.ts.map +1 -0
  671. package/dist/template-body-inference.js +277 -0
  672. package/dist/template-drift.d.ts +39 -0
  673. package/dist/template-drift.d.ts.map +1 -0
  674. package/dist/template-drift.js +353 -0
  675. package/dist/template-lint.d.ts +31 -0
  676. package/dist/template-lint.d.ts.map +1 -0
  677. package/dist/template-lint.js +113 -0
  678. package/dist/test-definitions.d.ts +41 -0
  679. package/dist/test-definitions.d.ts.map +1 -0
  680. package/dist/test-definitions.js +6 -0
  681. package/dist/test-impact.d.ts +30 -0
  682. package/dist/test-impact.d.ts.map +1 -0
  683. package/dist/test-impact.js +173 -0
  684. package/dist/test-runner.d.ts +87 -0
  685. package/dist/test-runner.d.ts.map +1 -0
  686. package/dist/test-runner.js +560 -0
  687. package/dist/uncertainty-report.d.ts +46 -0
  688. package/dist/uncertainty-report.d.ts.map +1 -0
  689. package/dist/uncertainty-report.js +108 -0
  690. package/dist/uncertainty.d.ts +38 -0
  691. package/dist/uncertainty.d.ts.map +1 -0
  692. package/dist/uncertainty.js +115 -0
  693. package/dist/universal-search.d.ts +64 -0
  694. package/dist/universal-search.d.ts.map +1 -0
  695. package/dist/universal-search.js +347 -0
  696. package/dist/upgrade-advisor.d.ts +22 -0
  697. package/dist/upgrade-advisor.d.ts.map +1 -0
  698. package/dist/upgrade-advisor.js +109 -0
  699. package/dist/why-file.d.ts +75 -0
  700. package/dist/why-file.d.ts.map +1 -0
  701. package/dist/why-file.js +202 -0
  702. package/dist/workflow-simulation.d.ts +46 -0
  703. package/dist/workflow-simulation.d.ts.map +1 -0
  704. package/dist/workflow-simulation.js +154 -0
  705. package/package.json +66 -0
@@ -0,0 +1,327 @@
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
+ * Registration hint registry. Pack- and local-contributed hints
11
+ * surface downstream registration steps that constructs typically need
12
+ * (composer wiring, route table entries, capability registration, etc.).
13
+ *
14
+ * The engine ships zero hints; every entry comes from a contribution.
15
+ *
16
+ * Read-only: hints can be listed, fetched by id, validated, and previewed
17
+ * against the live file system, but the engine never auto-applies them.
18
+ */
19
+ import { existsSync, readFileSync } from 'node:fs';
20
+ import * as nodePath from 'node:path';
21
+ import { pathToFileURL } from 'node:url';
22
+ import { validateRegistrationHint, } from '@shrkcrft/plugin-api';
23
+ export const REGISTRATION_HINT_REGISTRY_SCHEMA = 'sharkcraft.registration-hint-registry/v1';
24
+ export var RegistrationHintSource;
25
+ (function (RegistrationHintSource) {
26
+ RegistrationHintSource["Local"] = "local";
27
+ RegistrationHintSource["Pack"] = "pack";
28
+ RegistrationHintSource["Fixture"] = "fixture";
29
+ })(RegistrationHintSource || (RegistrationHintSource = {}));
30
+ async function importDefault(file) {
31
+ const mod = (await import(__rewriteRelativeImportExtension(pathToFileURL(file).href)));
32
+ if (Array.isArray(mod.default))
33
+ return mod.default;
34
+ if (mod.default && typeof mod.default === 'object')
35
+ return [mod.default];
36
+ if (Array.isArray(mod.registrationHints))
37
+ return mod.registrationHints;
38
+ return [];
39
+ }
40
+ function localFiles(inspection) {
41
+ const out = [];
42
+ const dir = inspection.sharkcraftDir;
43
+ if (!dir)
44
+ return [];
45
+ for (const name of ['registration-hints.ts', 'registration-hints/index.ts']) {
46
+ const abs = nodePath.join(dir, name);
47
+ if (existsSync(abs))
48
+ out.push(abs);
49
+ }
50
+ const cfg = inspection.config;
51
+ for (const rel of cfg?.registrationHintFiles ?? []) {
52
+ out.push(nodePath.isAbsolute(rel) ? rel : nodePath.join(dir, rel));
53
+ }
54
+ return out;
55
+ }
56
+ export async function loadRegistrationHints(inspection) {
57
+ const entries = [];
58
+ const issues = [];
59
+ const seen = new Set();
60
+ const ingest = (raw, source, packageName, sourceFile) => {
61
+ const v = validateRegistrationHint(raw);
62
+ if (!v.valid) {
63
+ for (const i of v.issues) {
64
+ issues.push({
65
+ severity: 'error',
66
+ code: 'invalid-hint',
67
+ message: `${i.field}: ${i.message}`,
68
+ hintId: typeof raw.id === 'string' ? raw.id : undefined,
69
+ source: sourceFile,
70
+ });
71
+ }
72
+ return;
73
+ }
74
+ if (seen.has(raw.id)) {
75
+ issues.push({
76
+ severity: 'error',
77
+ code: 'duplicate-id',
78
+ message: `Registration hint "${raw.id}" already loaded; skipping ${sourceFile}.`,
79
+ hintId: raw.id,
80
+ source: sourceFile,
81
+ });
82
+ return;
83
+ }
84
+ seen.add(raw.id);
85
+ entries.push({
86
+ hint: raw,
87
+ source,
88
+ ...(packageName ? { packageName } : {}),
89
+ sourceFile,
90
+ });
91
+ };
92
+ for (const file of localFiles(inspection)) {
93
+ try {
94
+ const list = await importDefault(file);
95
+ const rel = nodePath.relative(inspection.projectRoot, file) || file;
96
+ for (const h of list)
97
+ ingest(h, RegistrationHintSource.Local, undefined, rel);
98
+ }
99
+ catch (e) {
100
+ issues.push({
101
+ severity: 'warning',
102
+ code: 'load-failed',
103
+ message: `Failed to load ${file}: ${e.message}`,
104
+ source: file,
105
+ });
106
+ }
107
+ }
108
+ for (const pack of inspection.packs.validPacks ?? []) {
109
+ const contributions = (pack.manifest?.contributions ?? {});
110
+ for (const rel of contributions.registrationHintFiles ?? []) {
111
+ const file = nodePath.resolve(pack.packageRoot, rel);
112
+ if (!existsSync(file)) {
113
+ issues.push({
114
+ severity: 'warning',
115
+ code: 'missing-file',
116
+ message: `Pack ${pack.packageName} declares ${rel} but file is missing.`,
117
+ source: file,
118
+ });
119
+ continue;
120
+ }
121
+ try {
122
+ const list = await importDefault(file);
123
+ for (const h of list)
124
+ ingest(h, RegistrationHintSource.Pack, pack.packageName, rel);
125
+ }
126
+ catch (e) {
127
+ issues.push({
128
+ severity: 'warning',
129
+ code: 'load-failed',
130
+ message: `Pack ${pack.packageName} (${rel}): ${e.message}`,
131
+ source: file,
132
+ });
133
+ }
134
+ }
135
+ }
136
+ return { entries, issues };
137
+ }
138
+ export async function listRegistrationHints(inspection) {
139
+ const { entries } = await loadRegistrationHints(inspection);
140
+ return entries;
141
+ }
142
+ export async function getRegistrationHint(inspection, hintId) {
143
+ const entries = await listRegistrationHints(inspection);
144
+ return entries.find((e) => e.hint.id === hintId) ?? null;
145
+ }
146
+ export async function previewRegistrationHint(inspection, hintId, options = {}) {
147
+ const entry = await getRegistrationHint(inspection, hintId);
148
+ if (!entry)
149
+ return null;
150
+ const { hint } = entry;
151
+ const variables = options.variables ?? {};
152
+ const missingVariables = (hint.variables ?? [])
153
+ .filter((v) => v.required && variables[v.name] === undefined && v.defaultValue === undefined)
154
+ .map((v) => v.name);
155
+ // Discovery: prefer fixed targetFile when present, otherwise enumerate
156
+ // candidates from globs on the live file system.
157
+ let targetFile = null;
158
+ let candidates = [];
159
+ if (hint.discovery.targetFile) {
160
+ targetFile = hint.discovery.targetFile;
161
+ candidates = [hint.discovery.targetFile];
162
+ }
163
+ else if (hint.discovery.targetGlobs && hint.discovery.targetGlobs.length > 0) {
164
+ candidates = await resolveGlobsAgainstRoot(inspection.projectRoot, hint.discovery.targetGlobs);
165
+ if (candidates.length === 1)
166
+ targetFile = candidates[0];
167
+ }
168
+ const ambiguous = candidates.length !== 1;
169
+ const requiresHumanReview = hint.requiresHumanReview === true || ambiguous;
170
+ const renderedOps = hint.operations.map((op) => {
171
+ const description = describeOp(op);
172
+ const out = { kind: op.kind, description };
173
+ if (op.anchor)
174
+ out.anchor = op.anchor;
175
+ if (op.snippet)
176
+ out.snippet = substituteVars(op.snippet, variables);
177
+ return out;
178
+ });
179
+ return {
180
+ schema: 'sharkcraft.registration-hint-preview/v1',
181
+ hintId,
182
+ title: hint.title,
183
+ targetFile,
184
+ candidates,
185
+ ambiguous,
186
+ requiresHumanReview,
187
+ operations: renderedOps,
188
+ missingVariables,
189
+ safetyNotes: hint.safetyNotes ?? [],
190
+ validationCommands: hint.validationCommands ?? [],
191
+ nextCommand: ambiguous
192
+ ? `# Multiple candidates — pick one and apply manually.`
193
+ : `# Preview only. Apply manually after human review.`,
194
+ };
195
+ }
196
+ async function resolveGlobsAgainstRoot(projectRoot, globs) {
197
+ const out = [];
198
+ for (const glob of globs) {
199
+ // Crude glob: only `*` and `**` recognized; fallback to literal.
200
+ if (!glob.includes('*')) {
201
+ const abs = nodePath.join(projectRoot, glob);
202
+ if (existsSync(abs))
203
+ out.push(glob);
204
+ continue;
205
+ }
206
+ const baseSegments = [];
207
+ for (const seg of glob.split('/')) {
208
+ if (seg.includes('*'))
209
+ break;
210
+ baseSegments.push(seg);
211
+ }
212
+ const base = baseSegments.length > 0 ? nodePath.join(projectRoot, ...baseSegments) : projectRoot;
213
+ // Replace `**` with `___DOUBLESTAR___` BEFORE escaping; then
214
+ // escape special chars; then convert single `*` and the placeholder.
215
+ const escaped = glob
216
+ .replace(/\*\*/g, '___DOUBLESTAR___')
217
+ .replace(/[.+?^${}()|[\]\\]/g, '\\$&')
218
+ .replace(/\*/g, '[^/]*')
219
+ .replace(/___DOUBLESTAR___/g, '.*');
220
+ let re;
221
+ try {
222
+ re = new RegExp('^' + escaped + '$');
223
+ }
224
+ catch {
225
+ // Malformed glob — skip.
226
+ continue;
227
+ }
228
+ if (!existsSync(base))
229
+ continue;
230
+ // Walk the base directory looking for matches (capped, deterministic).
231
+ const stack = [base];
232
+ let safety = 0;
233
+ while (stack.length > 0 && safety < 5000) {
234
+ const dir = stack.pop();
235
+ safety += 1;
236
+ try {
237
+ const { readdirSync } = await import('node:fs');
238
+ const entries = readdirSync(dir, { withFileTypes: true });
239
+ for (const e of entries) {
240
+ const next = nodePath.join(dir, String(e.name));
241
+ if (e.isDirectory())
242
+ stack.push(next);
243
+ else if (e.isFile()) {
244
+ const rel = nodePath.relative(projectRoot, next);
245
+ if (re.test(rel))
246
+ out.push(rel);
247
+ }
248
+ }
249
+ }
250
+ catch {
251
+ // ignore traversal errors
252
+ }
253
+ }
254
+ }
255
+ return Array.from(new Set(out));
256
+ }
257
+ function describeOp(op) {
258
+ switch (op.kind) {
259
+ case 'ensure-import':
260
+ return `ensure-import from "${op.from ?? '?'}"${op.symbols ? ` { ${op.symbols.join(', ')} }` : ''}`;
261
+ case 'insert-enum-entry':
262
+ return `insert-enum-entry ${op.enumName ?? '?'}`;
263
+ case 'insert-object-entry':
264
+ return `insert-object-entry ${op.objectName ?? '?'}`;
265
+ case 'insert-before-closing-brace':
266
+ return `insert-before-closing-brace of "${op.containerName ?? '?'}"`;
267
+ case 'insert-between-anchors':
268
+ return `insert-between-anchors "${op.beginAnchor ?? '?'}" .. "${op.endAnchor ?? '?'}"`;
269
+ case 'insert-after':
270
+ return `insert-after anchor "${op.anchor ?? '?'}"`;
271
+ case 'insert-before':
272
+ return `insert-before anchor "${op.anchor ?? '?'}"`;
273
+ case 'append':
274
+ return `append snippet`;
275
+ case 'export':
276
+ return `export${op.symbols ? ` { ${op.symbols.join(', ')} }` : ''} from "${op.from ?? '?'}"`;
277
+ }
278
+ }
279
+ function substituteVars(snippet, vars) {
280
+ return snippet.replace(/\{\{\s*([A-Za-z0-9_]+)\s*\}\}/g, (_m, key) => vars[key] !== undefined ? vars[key] : `{{${key}}}`);
281
+ }
282
+ // ─────────────────────────────────────────────────────────────────────────────
283
+ // Doctor
284
+ // ─────────────────────────────────────────────────────────────────────────────
285
+ export async function listRegistrationHintIssues(inspection) {
286
+ const { issues, entries } = await loadRegistrationHints(inspection);
287
+ const out = [...issues];
288
+ // Cross-validate: target files referenced by hints with a fixed
289
+ // `targetFile` must currently exist; report missing as warning.
290
+ for (const e of entries) {
291
+ if (e.hint.discovery.targetFile) {
292
+ const abs = nodePath.join(inspection.projectRoot, e.hint.discovery.targetFile);
293
+ if (!existsSync(abs)) {
294
+ out.push({
295
+ severity: 'warning',
296
+ code: 'target-file-missing',
297
+ message: `Registration hint "${e.hint.id}" targets ${e.hint.discovery.targetFile} but the file is missing.`,
298
+ hintId: e.hint.id,
299
+ source: e.sourceFile,
300
+ });
301
+ }
302
+ else {
303
+ // Sanity: if the hint uses an anchor, verify the anchor exists.
304
+ for (const op of e.hint.operations) {
305
+ if (op.anchor) {
306
+ try {
307
+ const content = readFileSync(abs, 'utf8');
308
+ if (!content.includes(op.anchor)) {
309
+ out.push({
310
+ severity: 'info',
311
+ code: 'anchor-not-present',
312
+ message: `Hint "${e.hint.id}" expects anchor "${op.anchor}" in ${e.hint.discovery.targetFile} but it is missing today.`,
313
+ hintId: e.hint.id,
314
+ source: e.sourceFile,
315
+ });
316
+ }
317
+ }
318
+ catch {
319
+ // ignore read errors
320
+ }
321
+ }
322
+ }
323
+ }
324
+ }
325
+ }
326
+ return out;
327
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Registry lifecycle symmetry rule.
3
+ *
4
+ * Scans the workspace for `register*` APIs (functions or methods) and checks
5
+ * that a matching `remove*` / `unregister*` / `clear*` exists in the same file,
6
+ * with optional scope-aware naming (e.g. `registerXByScope` ↔ `removeXByScope`).
7
+ *
8
+ * Ignored: generated files (.generated.*, .d.ts), files containing
9
+ * `@shrkcrft lifecycle-ignore <reason>`. Sites with `@shrkcrft lifecycle-managed-by <name>`
10
+ * are reported under `ignored` with the managed-by reference.
11
+ */
12
+ export interface IRegistryPair {
13
+ registerName: string;
14
+ removerName: string;
15
+ file: string;
16
+ registerLine: number;
17
+ removerLine: number;
18
+ }
19
+ export interface IRegistryMissingRemover {
20
+ registerName: string;
21
+ expectedRemoverNames: ReadonlyArray<string>;
22
+ file: string;
23
+ line: number;
24
+ suggestion: string;
25
+ }
26
+ export interface IRegistryIgnored {
27
+ registerName: string;
28
+ file: string;
29
+ line: number;
30
+ reason: string;
31
+ managedBy?: string;
32
+ }
33
+ export interface IRegistryLifecycleReport {
34
+ schema: 'sharkcraft.registry-lifecycle/v1';
35
+ filesScanned: number;
36
+ registersFound: number;
37
+ matchedPairs: ReadonlyArray<IRegistryPair>;
38
+ missingRemovers: ReadonlyArray<IRegistryMissingRemover>;
39
+ ignored: ReadonlyArray<IRegistryIgnored>;
40
+ recommendations: ReadonlyArray<string>;
41
+ }
42
+ export declare function buildRegistryLifecycleReport(input: {
43
+ projectRoot: string;
44
+ limit?: number;
45
+ }): IRegistryLifecycleReport;
46
+ export declare function renderRegistryLifecycleReportText(report: IRegistryLifecycleReport): string;
47
+ //# sourceMappingURL=registry-lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry-lifecycle.d.ts","sourceRoot":"","sources":["../src/registry-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,kCAAkC,CAAC;IAC3C,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IAC3C,eAAe,EAAE,aAAa,CAAC,uBAAuB,CAAC,CAAC;IACxD,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACzC,eAAe,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACxC;AAyHD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,wBAAwB,CAoE3B;AAED,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM,CA6B1F"}
@@ -0,0 +1,214 @@
1
+ /**
2
+ * Registry lifecycle symmetry rule.
3
+ *
4
+ * Scans the workspace for `register*` APIs (functions or methods) and checks
5
+ * that a matching `remove*` / `unregister*` / `clear*` exists in the same file,
6
+ * with optional scope-aware naming (e.g. `registerXByScope` ↔ `removeXByScope`).
7
+ *
8
+ * Ignored: generated files (.generated.*, .d.ts), files containing
9
+ * `@shrkcrft lifecycle-ignore <reason>`. Sites with `@shrkcrft lifecycle-managed-by <name>`
10
+ * are reported under `ignored` with the managed-by reference.
11
+ */
12
+ import { readdirSync, readFileSync } from 'node:fs';
13
+ import { extname, join, relative } from 'node:path';
14
+ const SKIP_DIRS = new Set([
15
+ 'node_modules',
16
+ 'dist',
17
+ '.git',
18
+ '.sharkcraft',
19
+ 'coverage',
20
+ '.nx',
21
+ 'build',
22
+ 'out',
23
+ ]);
24
+ const SCAN_EXTENSIONS = new Set(['.ts', '.tsx']);
25
+ function isGeneratedFile(file, content) {
26
+ if (file.endsWith('.d.ts'))
27
+ return true;
28
+ if (/\.generated\.(ts|tsx)$/.test(file))
29
+ return true;
30
+ if (/^\/\/ @generated\b/m.test(content))
31
+ return true;
32
+ return false;
33
+ }
34
+ function walk(dir, projectRoot, out) {
35
+ let entries;
36
+ try {
37
+ entries = readdirSync(dir, { withFileTypes: true });
38
+ }
39
+ catch {
40
+ return;
41
+ }
42
+ for (const e of entries) {
43
+ if (SKIP_DIRS.has(e.name))
44
+ continue;
45
+ if (e.name.startsWith('.') && e.name !== '.sharkcraft') {
46
+ // skip hidden dotfiles
47
+ if (e.name !== '.')
48
+ continue;
49
+ }
50
+ const abs = join(dir, e.name);
51
+ if (e.isDirectory()) {
52
+ walk(abs, projectRoot, out);
53
+ }
54
+ else if (e.isFile() && SCAN_EXTENSIONS.has(extname(e.name))) {
55
+ out.push(abs);
56
+ }
57
+ }
58
+ }
59
+ const REGISTER_PATTERNS = Object.freeze([
60
+ // export function registerX(
61
+ /(?:export\s+)?(?:async\s+)?function\s+(register[A-Z]\w*)\s*\(/g,
62
+ // public/private registerX(
63
+ /(?:public|private|protected)?\s*(?:async\s+)?(register[A-Z]\w*)\s*\(/g,
64
+ // someRegistry.registerX = (...) =>
65
+ /\b(register[A-Z]\w*)\s*=\s*\(/g,
66
+ ]);
67
+ function findRegistersInFile(content) {
68
+ const out = [];
69
+ const seen = new Set();
70
+ for (const re of REGISTER_PATTERNS) {
71
+ let m;
72
+ re.lastIndex = 0;
73
+ while ((m = re.exec(content)) !== null) {
74
+ const name = m[1];
75
+ if (seen.has(`${name}@${m.index}`))
76
+ continue;
77
+ seen.add(`${name}@${m.index}`);
78
+ const line = content.slice(0, m.index).split('\n').length;
79
+ out.push({ name, line });
80
+ }
81
+ }
82
+ return out;
83
+ }
84
+ function findIgnoreAnnotations(content, registerName) {
85
+ const ignoreRe = new RegExp(`@shrkcrft\\s+lifecycle-ignore(?:\\s+([^\\n]+))?[\\s\\S]{0,200}?\\b${registerName}\\b`, 'm');
86
+ const managedRe = new RegExp(`@shrkcrft\\s+lifecycle-managed-by\\s+([\\w.-]+)[\\s\\S]{0,200}?\\b${registerName}\\b`, 'm');
87
+ const ignoreMatch = content.match(ignoreRe);
88
+ if (ignoreMatch) {
89
+ return { ignore: true, reason: ignoreMatch[1]?.trim() ?? 'no reason given' };
90
+ }
91
+ const managedMatch = content.match(managedRe);
92
+ if (managedMatch) {
93
+ return { ignore: true, managedBy: managedMatch[1], reason: 'managed-by directive' };
94
+ }
95
+ return { ignore: false };
96
+ }
97
+ function expectedRemoverNames(registerName) {
98
+ // registerX → removeX / unregisterX / clearX
99
+ // registerXByScope → removeXByScope / unregisterXByScope / clearXByScope
100
+ const stem = registerName.slice('register'.length);
101
+ return [`remove${stem}`, `unregister${stem}`, `clear${stem}`];
102
+ }
103
+ function findRemoverInContent(content, candidates) {
104
+ for (const name of candidates) {
105
+ const re = new RegExp(`(?:export\\s+)?(?:async\\s+)?function\\s+${name}\\s*\\(|\\b${name}\\s*=\\s*\\(|(?:public|private|protected)?\\s*(?:async\\s+)?${name}\\s*\\(`);
106
+ const m = content.match(re);
107
+ if (m && typeof m.index === 'number') {
108
+ const line = content.slice(0, m.index).split('\n').length;
109
+ return { name, line };
110
+ }
111
+ }
112
+ return null;
113
+ }
114
+ export function buildRegistryLifecycleReport(input) {
115
+ const { projectRoot } = input;
116
+ const files = [];
117
+ walk(projectRoot, projectRoot, files);
118
+ const limit = input.limit ?? 2000;
119
+ const scanFiles = files.slice(0, limit);
120
+ const matchedPairs = [];
121
+ const missingRemovers = [];
122
+ const ignored = [];
123
+ let registersFound = 0;
124
+ for (const file of scanFiles) {
125
+ let content;
126
+ try {
127
+ content = readFileSync(file, 'utf8');
128
+ }
129
+ catch {
130
+ continue;
131
+ }
132
+ if (isGeneratedFile(file, content))
133
+ continue;
134
+ const registers = findRegistersInFile(content);
135
+ for (const reg of registers) {
136
+ registersFound += 1;
137
+ const ann = findIgnoreAnnotations(content, reg.name);
138
+ if (ann.ignore) {
139
+ ignored.push({
140
+ registerName: reg.name,
141
+ file: relative(projectRoot, file),
142
+ line: reg.line,
143
+ reason: ann.reason ?? 'ignored',
144
+ ...(ann.managedBy ? { managedBy: ann.managedBy } : {}),
145
+ });
146
+ continue;
147
+ }
148
+ const candidates = expectedRemoverNames(reg.name);
149
+ const remover = findRemoverInContent(content, candidates);
150
+ if (remover) {
151
+ matchedPairs.push({
152
+ registerName: reg.name,
153
+ removerName: remover.name,
154
+ file: relative(projectRoot, file),
155
+ registerLine: reg.line,
156
+ removerLine: remover.line,
157
+ });
158
+ }
159
+ else {
160
+ missingRemovers.push({
161
+ registerName: reg.name,
162
+ expectedRemoverNames: candidates,
163
+ file: relative(projectRoot, file),
164
+ line: reg.line,
165
+ suggestion: `Add ${candidates[0]}() / ${candidates[1]}() / ${candidates[2]}() — or annotate with \`@shrkcrft lifecycle-ignore <reason>\` / \`@shrkcrft lifecycle-managed-by <name>\` if cleanup is owned elsewhere.`,
166
+ });
167
+ }
168
+ }
169
+ }
170
+ const recommendations = [];
171
+ if (missingRemovers.length > 0) {
172
+ recommendations.push(`Run \`shrk check registry-lifecycle --json\` and add the matching remover(s), or document why not via a \`@shrkcrft lifecycle-ignore\` / \`@shrkcrft lifecycle-managed-by\` annotation.`);
173
+ }
174
+ return {
175
+ schema: 'sharkcraft.registry-lifecycle/v1',
176
+ filesScanned: scanFiles.length,
177
+ registersFound,
178
+ matchedPairs,
179
+ missingRemovers,
180
+ ignored,
181
+ recommendations,
182
+ };
183
+ }
184
+ export function renderRegistryLifecycleReportText(report) {
185
+ const lines = [];
186
+ lines.push('=== Registry lifecycle ===');
187
+ lines.push(` files scanned ${report.filesScanned}`);
188
+ lines.push(` registers found ${report.registersFound}`);
189
+ lines.push(` matched pairs ${report.matchedPairs.length}`);
190
+ lines.push(` missing removers ${report.missingRemovers.length}`);
191
+ lines.push(` ignored ${report.ignored.length}`);
192
+ lines.push('');
193
+ if (report.missingRemovers.length > 0) {
194
+ lines.push('Missing removers:');
195
+ for (const m of report.missingRemovers.slice(0, 50)) {
196
+ lines.push(` ${m.file}:${m.line} ${m.registerName}`);
197
+ lines.push(` ↳ ${m.suggestion}`);
198
+ }
199
+ }
200
+ if (report.ignored.length > 0) {
201
+ lines.push('');
202
+ lines.push('Ignored:');
203
+ for (const i of report.ignored.slice(0, 20)) {
204
+ lines.push(` ${i.file}:${i.line} ${i.registerName} (${i.reason}${i.managedBy ? `; managed-by ${i.managedBy}` : ''})`);
205
+ }
206
+ }
207
+ if (report.recommendations.length > 0) {
208
+ lines.push('');
209
+ lines.push('Recommendations:');
210
+ for (const r of report.recommendations)
211
+ lines.push(` • ${r}`);
212
+ }
213
+ return lines.join('\n') + '\n';
214
+ }
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Aggregated release-readiness gate. Composes the existing read-only audits
3
+ * into one verdict so reviewers can answer "is this safe to tag?" without
4
+ * remembering every individual command.
5
+ *
6
+ * Pure read-only: never writes, never publishes, never invokes shells.
7
+ */
8
+ import type { ISharkcraftInspection } from './sharkcraft-inspector.js';
9
+ /** Max age in days for a preflight summary file before it's flagged stale. */
10
+ export declare const PREFLIGHT_STALE_AFTER_DAYS = 7;
11
+ export declare const RELEASE_READINESS_SCHEMA = "sharkcraft.release-readiness/v1";
12
+ export declare enum ReleaseReadinessSeverity {
13
+ Info = "info",
14
+ Warning = "warning",
15
+ Error = "error"
16
+ }
17
+ export interface IReleaseReadinessCheck {
18
+ id: string;
19
+ title: string;
20
+ status: 'pass' | 'warn' | 'fail' | 'skipped';
21
+ severity: ReleaseReadinessSeverity;
22
+ message: string;
23
+ suggestion?: string;
24
+ }
25
+ export interface IReleaseReadinessReport {
26
+ schema: typeof RELEASE_READINESS_SCHEMA;
27
+ generatedAt: string;
28
+ projectRoot: string;
29
+ ready: boolean;
30
+ strict: boolean;
31
+ blockers: readonly IReleaseReadinessCheck[];
32
+ warnings: readonly IReleaseReadinessCheck[];
33
+ passed: readonly IReleaseReadinessCheck[];
34
+ skipped: readonly IReleaseReadinessCheck[];
35
+ checklist: readonly string[];
36
+ }
37
+ export interface IReleaseReadinessOptions {
38
+ /** Treat warnings as blockers. Default: false. */
39
+ strict?: boolean;
40
+ /** Optional path to a release:preflight summary JSON. May be a directory
41
+ * (newest file wins) or the literal string 'auto' to search known
42
+ * locations. */
43
+ preflightSummaryFile?: string;
44
+ /** Optional list of pack paths to include in release-check. */
45
+ packPaths?: readonly string[];
46
+ /** Include suggested fixes for each blocker/warning. */
47
+ includeFixSuggestions?: boolean;
48
+ /** Include docs/examples checks (already independently runnable). */
49
+ includeDocsCheck?: boolean;
50
+ /** Include examples check. */
51
+ includeExamplesCheck?: boolean;
52
+ }
53
+ /** Auto-discover the newest preflight summary file. */
54
+ export declare function findNewestPreflightSummary(projectRoot: string): string | null;
55
+ export declare function buildReleaseReadiness(inspection: ISharkcraftInspection, options?: IReleaseReadinessOptions): Promise<IReleaseReadinessReport>;
56
+ /** Render a release readiness report as JS-free HTML. */
57
+ export declare function renderReleaseReadinessHtml(report: IReleaseReadinessReport): string;
58
+ /**
59
+ * Extract the pack-signature release gate so it can be unit-tested
60
+ * without invoking the full release-readiness pipeline (which runs doctor +
61
+ * coverage and needs a full inspection shape).
62
+ */
63
+ export declare function buildPackSignatureReleaseGate(inspection: ISharkcraftInspection): IReleaseReadinessCheck;
64
+ //# sourceMappingURL=release-readiness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-readiness.d.ts","sourceRoot":"","sources":["../src/release-readiness.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAEvE,8EAA8E;AAC9E,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,eAAO,MAAM,wBAAwB,oCAAoC,CAAC;AAE1E,oBAAY,wBAAwB;IAClC,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,EAAE,wBAAwB,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,OAAO,wBAAwB,CAAC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC5C,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC5C,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC1C,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC3C,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,kDAAkD;IAClD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;qBAEiB;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,wDAAwD;IACxD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,8BAA8B;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,uDAAuD;AACvD,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgC7E;AA2MD,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,qBAAqB,EACjC,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,uBAAuB,CAAC,CA4PlC;AAED,yDAAyD;AACzD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,CAyClF;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,EAAE,qBAAqB,GAChC,sBAAsB,CAyBxB"}