metaharness 0.1.0

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 (383) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +73 -0
  3. package/dist/analyze-repo.d.ts +74 -0
  4. package/dist/analyze-repo.d.ts.map +1 -0
  5. package/dist/analyze-repo.js +329 -0
  6. package/dist/analyze-repo.js.map +1 -0
  7. package/dist/audit-cmd.d.ts +6 -0
  8. package/dist/audit-cmd.d.ts.map +1 -0
  9. package/dist/audit-cmd.js +139 -0
  10. package/dist/audit-cmd.js.map +1 -0
  11. package/dist/bin.d.ts +3 -0
  12. package/dist/bin.d.ts.map +1 -0
  13. package/dist/bin.js +8 -0
  14. package/dist/bin.js.map +1 -0
  15. package/dist/compare-cmd.d.ts +56 -0
  16. package/dist/compare-cmd.d.ts.map +1 -0
  17. package/dist/compare-cmd.js +173 -0
  18. package/dist/compare-cmd.js.map +1 -0
  19. package/dist/completions-cmd.d.ts +6 -0
  20. package/dist/completions-cmd.d.ts.map +1 -0
  21. package/dist/completions-cmd.js +171 -0
  22. package/dist/completions-cmd.js.map +1 -0
  23. package/dist/diag.d.ts +76 -0
  24. package/dist/diag.d.ts.map +1 -0
  25. package/dist/diag.js +349 -0
  26. package/dist/diag.js.map +1 -0
  27. package/dist/eject.d.ts +33 -0
  28. package/dist/eject.d.ts.map +1 -0
  29. package/dist/eject.js +147 -0
  30. package/dist/eject.js.map +1 -0
  31. package/dist/export-config.d.ts +25 -0
  32. package/dist/export-config.d.ts.map +1 -0
  33. package/dist/export-config.js +134 -0
  34. package/dist/export-config.js.map +1 -0
  35. package/dist/external-template.d.ts +19 -0
  36. package/dist/external-template.d.ts.map +1 -0
  37. package/dist/external-template.js +37 -0
  38. package/dist/external-template.js.map +1 -0
  39. package/dist/federate.d.ts +37 -0
  40. package/dist/federate.d.ts.map +1 -0
  41. package/dist/federate.js +167 -0
  42. package/dist/federate.js.map +1 -0
  43. package/dist/genome-scorers.d.ts +33 -0
  44. package/dist/genome-scorers.d.ts.map +1 -0
  45. package/dist/genome-scorers.js +115 -0
  46. package/dist/genome-scorers.js.map +1 -0
  47. package/dist/genome.d.ts +28 -0
  48. package/dist/genome.d.ts.map +1 -0
  49. package/dist/genome.js +219 -0
  50. package/dist/genome.js.map +1 -0
  51. package/dist/harness-bin.d.ts +3 -0
  52. package/dist/harness-bin.d.ts.map +1 -0
  53. package/dist/harness-bin.js +17 -0
  54. package/dist/harness-bin.js.map +1 -0
  55. package/dist/index.d.ts +79 -0
  56. package/dist/index.d.ts.map +1 -0
  57. package/dist/index.js +409 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/manifest.d.ts +55 -0
  60. package/dist/manifest.d.ts.map +1 -0
  61. package/dist/manifest.js +62 -0
  62. package/dist/manifest.js.map +1 -0
  63. package/dist/mcp-cmd.d.ts +19 -0
  64. package/dist/mcp-cmd.d.ts.map +1 -0
  65. package/dist/mcp-cmd.js +179 -0
  66. package/dist/mcp-cmd.js.map +1 -0
  67. package/dist/mcp-scan.d.ts +25 -0
  68. package/dist/mcp-scan.d.ts.map +1 -0
  69. package/dist/mcp-scan.js +132 -0
  70. package/dist/mcp-scan.js.map +1 -0
  71. package/dist/oia-manifest.d.ts +97 -0
  72. package/dist/oia-manifest.d.ts.map +1 -0
  73. package/dist/oia-manifest.js +241 -0
  74. package/dist/oia-manifest.js.map +1 -0
  75. package/dist/publish-cmd.d.ts +9 -0
  76. package/dist/publish-cmd.d.ts.map +1 -0
  77. package/dist/publish-cmd.js +56 -0
  78. package/dist/publish-cmd.js.map +1 -0
  79. package/dist/publish.d.ts +55 -0
  80. package/dist/publish.d.ts.map +1 -0
  81. package/dist/publish.js +104 -0
  82. package/dist/publish.js.map +1 -0
  83. package/dist/registry.d.ts +60 -0
  84. package/dist/registry.d.ts.map +1 -0
  85. package/dist/registry.js +67 -0
  86. package/dist/registry.js.map +1 -0
  87. package/dist/rename.d.ts +26 -0
  88. package/dist/rename.d.ts.map +1 -0
  89. package/dist/rename.js +86 -0
  90. package/dist/rename.js.map +1 -0
  91. package/dist/renderer.d.ts +39 -0
  92. package/dist/renderer.d.ts.map +1 -0
  93. package/dist/renderer.js +75 -0
  94. package/dist/renderer.js.map +1 -0
  95. package/dist/sbom-cmd.d.ts +6 -0
  96. package/dist/sbom-cmd.d.ts.map +1 -0
  97. package/dist/sbom-cmd.js +125 -0
  98. package/dist/sbom-cmd.js.map +1 -0
  99. package/dist/score.d.ts +32 -0
  100. package/dist/score.d.ts.map +1 -0
  101. package/dist/score.js +381 -0
  102. package/dist/score.js.map +1 -0
  103. package/dist/secrets.d.ts +27 -0
  104. package/dist/secrets.d.ts.map +1 -0
  105. package/dist/secrets.js +228 -0
  106. package/dist/secrets.js.map +1 -0
  107. package/dist/subcommands.d.ts +32 -0
  108. package/dist/subcommands.d.ts.map +1 -0
  109. package/dist/subcommands.js +335 -0
  110. package/dist/subcommands.js.map +1 -0
  111. package/dist/tarball.d.ts +14 -0
  112. package/dist/tarball.d.ts.map +1 -0
  113. package/dist/tarball.js +121 -0
  114. package/dist/tarball.js.map +1 -0
  115. package/dist/threat-model.d.ts +32 -0
  116. package/dist/threat-model.d.ts.map +1 -0
  117. package/dist/threat-model.js +236 -0
  118. package/dist/threat-model.js.map +1 -0
  119. package/dist/upgrade-cmd.d.ts +9 -0
  120. package/dist/upgrade-cmd.d.ts.map +1 -0
  121. package/dist/upgrade-cmd.js +90 -0
  122. package/dist/upgrade-cmd.js.map +1 -0
  123. package/dist/upgrade.d.ts +37 -0
  124. package/dist/upgrade.d.ts.map +1 -0
  125. package/dist/upgrade.js +124 -0
  126. package/dist/upgrade.js.map +1 -0
  127. package/dist/validate.d.ts +7 -0
  128. package/dist/validate.d.ts.map +1 -0
  129. package/dist/validate.js +240 -0
  130. package/dist/validate.js.map +1 -0
  131. package/dist/walker.d.ts +24 -0
  132. package/dist/walker.d.ts.map +1 -0
  133. package/dist/walker.js +76 -0
  134. package/dist/walker.js.map +1 -0
  135. package/dist/witness-client.d.ts +40 -0
  136. package/dist/witness-client.d.ts.map +1 -0
  137. package/dist/witness-client.js +99 -0
  138. package/dist/witness-client.js.map +1 -0
  139. package/dist/wizard.d.ts +37 -0
  140. package/dist/wizard.d.ts.map +1 -0
  141. package/dist/wizard.js +137 -0
  142. package/dist/wizard.js.map +1 -0
  143. package/dist/writer.d.ts +13 -0
  144. package/dist/writer.d.ts.map +1 -0
  145. package/dist/writer.js +43 -0
  146. package/dist/writer.js.map +1 -0
  147. package/package.json +114 -0
  148. package/templates/catalog.def.mjs +542 -0
  149. package/templates/catalog.json +1274 -0
  150. package/templates/minimal/.claude/settings.json.tmpl +18 -0
  151. package/templates/minimal/CLAUDE.md.tmpl +23 -0
  152. package/templates/minimal/README.md.tmpl +20 -0
  153. package/templates/minimal/manifest.json +16 -0
  154. package/templates/minimal/package.json.tmpl +30 -0
  155. package/templates/minimal/src/init.ts.tmpl +21 -0
  156. package/templates/vertical_advertising/.claude/commands/doctor.md.tmpl +12 -0
  157. package/templates/vertical_advertising/.claude/settings.json.tmpl +33 -0
  158. package/templates/vertical_advertising/.claude/skills/media-plan/SKILL.md.tmpl +13 -0
  159. package/templates/vertical_advertising/CLAUDE.md.tmpl +30 -0
  160. package/templates/vertical_advertising/README.md.tmpl +29 -0
  161. package/templates/vertical_advertising/manifest.json +81 -0
  162. package/templates/vertical_advertising/package.json.tmpl +30 -0
  163. package/templates/vertical_advertising/src/agents/copywriter.ts.tmpl +7 -0
  164. package/templates/vertical_advertising/src/agents/media-planner.ts.tmpl +7 -0
  165. package/templates/vertical_advertising/src/agents/performance-analyst.ts.tmpl +7 -0
  166. package/templates/vertical_advertising/src/init.ts.tmpl +21 -0
  167. package/templates/vertical_agentics/.claude/commands/doctor.md.tmpl +12 -0
  168. package/templates/vertical_agentics/.claude/settings.json.tmpl +33 -0
  169. package/templates/vertical_agentics/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  170. package/templates/vertical_agentics/.claude/skills/run-swarm/SKILL.md.tmpl +14 -0
  171. package/templates/vertical_agentics/CLAUDE.md.tmpl +32 -0
  172. package/templates/vertical_agentics/README.md.tmpl +30 -0
  173. package/templates/vertical_agentics/manifest.json +91 -0
  174. package/templates/vertical_agentics/package.json.tmpl +30 -0
  175. package/templates/vertical_agentics/src/agents/critic.ts.tmpl +7 -0
  176. package/templates/vertical_agentics/src/agents/orchestrator.ts.tmpl +7 -0
  177. package/templates/vertical_agentics/src/agents/planner.ts.tmpl +7 -0
  178. package/templates/vertical_agentics/src/agents/worker.ts.tmpl +7 -0
  179. package/templates/vertical_agentics/src/init.ts.tmpl +21 -0
  180. package/templates/vertical_ai/.claude/commands/doctor.md.tmpl +12 -0
  181. package/templates/vertical_ai/.claude/settings.json.tmpl +35 -0
  182. package/templates/vertical_ai/.claude/skills/eval-report/SKILL.md.tmpl +13 -0
  183. package/templates/vertical_ai/CLAUDE.md.tmpl +31 -0
  184. package/templates/vertical_ai/README.md.tmpl +30 -0
  185. package/templates/vertical_ai/manifest.json +86 -0
  186. package/templates/vertical_ai/package.json.tmpl +30 -0
  187. package/templates/vertical_ai/src/agents/data-curator.ts.tmpl +7 -0
  188. package/templates/vertical_ai/src/agents/deployer.ts.tmpl +7 -0
  189. package/templates/vertical_ai/src/agents/evaluator.ts.tmpl +7 -0
  190. package/templates/vertical_ai/src/agents/trainer.ts.tmpl +7 -0
  191. package/templates/vertical_ai/src/init.ts.tmpl +21 -0
  192. package/templates/vertical_business/.claude/commands/doctor.md.tmpl +12 -0
  193. package/templates/vertical_business/.claude/settings.json.tmpl +33 -0
  194. package/templates/vertical_business/.claude/skills/quarterly-plan/SKILL.md.tmpl +13 -0
  195. package/templates/vertical_business/CLAUDE.md.tmpl +30 -0
  196. package/templates/vertical_business/README.md.tmpl +29 -0
  197. package/templates/vertical_business/manifest.json +81 -0
  198. package/templates/vertical_business/package.json.tmpl +30 -0
  199. package/templates/vertical_business/src/agents/analyst.ts.tmpl +7 -0
  200. package/templates/vertical_business/src/agents/ops-coordinator.ts.tmpl +7 -0
  201. package/templates/vertical_business/src/agents/strategist.ts.tmpl +7 -0
  202. package/templates/vertical_business/src/init.ts.tmpl +21 -0
  203. package/templates/vertical_coding/.claude/commands/doctor.md.tmpl +12 -0
  204. package/templates/vertical_coding/.claude/commands/review-diff.md.tmpl +10 -0
  205. package/templates/vertical_coding/.claude/settings.json.tmpl +40 -0
  206. package/templates/vertical_coding/.claude/skills/plan-change/SKILL.md.tmpl +15 -0
  207. package/templates/vertical_coding/CLAUDE.md.tmpl +32 -0
  208. package/templates/vertical_coding/README.md.tmpl +30 -0
  209. package/templates/vertical_coding/manifest.json +91 -0
  210. package/templates/vertical_coding/package.json.tmpl +30 -0
  211. package/templates/vertical_coding/src/agents/architect.ts.tmpl +7 -0
  212. package/templates/vertical_coding/src/agents/implementer.ts.tmpl +7 -0
  213. package/templates/vertical_coding/src/agents/reviewer.ts.tmpl +7 -0
  214. package/templates/vertical_coding/src/agents/test-writer.ts.tmpl +7 -0
  215. package/templates/vertical_coding/src/init.ts.tmpl +21 -0
  216. package/templates/vertical_crm/.claude/commands/doctor.md.tmpl +12 -0
  217. package/templates/vertical_crm/.claude/settings.json.tmpl +33 -0
  218. package/templates/vertical_crm/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  219. package/templates/vertical_crm/CLAUDE.md.tmpl +30 -0
  220. package/templates/vertical_crm/README.md.tmpl +29 -0
  221. package/templates/vertical_crm/manifest.json +81 -0
  222. package/templates/vertical_crm/package.json.tmpl +30 -0
  223. package/templates/vertical_crm/src/agents/account-manager.ts.tmpl +7 -0
  224. package/templates/vertical_crm/src/agents/churn-watcher.ts.tmpl +7 -0
  225. package/templates/vertical_crm/src/agents/lead-qualifier.ts.tmpl +7 -0
  226. package/templates/vertical_crm/src/init.ts.tmpl +21 -0
  227. package/templates/vertical_devops/.claude/settings.json.tmpl +36 -0
  228. package/templates/vertical_devops/CLAUDE.md.tmpl +34 -0
  229. package/templates/vertical_devops/README.md.tmpl +27 -0
  230. package/templates/vertical_devops/manifest.json +22 -0
  231. package/templates/vertical_devops/package.json.tmpl +26 -0
  232. package/templates/vertical_devops/runbooks/README.md.tmpl +32 -0
  233. package/templates/vertical_devops/src/agents/escalator.ts.tmpl +19 -0
  234. package/templates/vertical_devops/src/agents/postmortem.ts.tmpl +23 -0
  235. package/templates/vertical_devops/src/agents/responder.ts.tmpl +14 -0
  236. package/templates/vertical_devops/src/agents/runbook-runner.ts.tmpl +17 -0
  237. package/templates/vertical_devops/src/init.ts.tmpl +23 -0
  238. package/templates/vertical_education/.claude/commands/doctor.md.tmpl +12 -0
  239. package/templates/vertical_education/.claude/commands/mastery-report.md.tmpl +12 -0
  240. package/templates/vertical_education/.claude/settings.json.tmpl +45 -0
  241. package/templates/vertical_education/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  242. package/templates/vertical_education/.claude/skills/teach-next/SKILL.md.tmpl +16 -0
  243. package/templates/vertical_education/CLAUDE.md.tmpl +33 -0
  244. package/templates/vertical_education/README.md.tmpl +30 -0
  245. package/templates/vertical_education/manifest.json +96 -0
  246. package/templates/vertical_education/package.json.tmpl +30 -0
  247. package/templates/vertical_education/src/agents/explainer.ts.tmpl +7 -0
  248. package/templates/vertical_education/src/agents/grader.ts.tmpl +7 -0
  249. package/templates/vertical_education/src/agents/quiz-master.ts.tmpl +7 -0
  250. package/templates/vertical_education/src/agents/tutor.ts.tmpl +7 -0
  251. package/templates/vertical_education/src/init.ts.tmpl +21 -0
  252. package/templates/vertical_exotic/.claude/commands/doctor.md.tmpl +12 -0
  253. package/templates/vertical_exotic/.claude/settings.json.tmpl +44 -0
  254. package/templates/vertical_exotic/.claude/skills/evolve/SKILL.md.tmpl +14 -0
  255. package/templates/vertical_exotic/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  256. package/templates/vertical_exotic/CLAUDE.md.tmpl +31 -0
  257. package/templates/vertical_exotic/README.md.tmpl +29 -0
  258. package/templates/vertical_exotic/manifest.json +86 -0
  259. package/templates/vertical_exotic/package.json.tmpl +30 -0
  260. package/templates/vertical_exotic/src/agents/experimenter.ts.tmpl +7 -0
  261. package/templates/vertical_exotic/src/agents/federator.ts.tmpl +7 -0
  262. package/templates/vertical_exotic/src/agents/hypothesizer.ts.tmpl +7 -0
  263. package/templates/vertical_exotic/src/init.ts.tmpl +21 -0
  264. package/templates/vertical_gaming/.claude/commands/design-doc-diff.md.tmpl +13 -0
  265. package/templates/vertical_gaming/.claude/commands/doctor.md.tmpl +12 -0
  266. package/templates/vertical_gaming/.claude/settings.json.tmpl +45 -0
  267. package/templates/vertical_gaming/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  268. package/templates/vertical_gaming/.claude/skills/playtest-recap/SKILL.md.tmpl +16 -0
  269. package/templates/vertical_gaming/CLAUDE.md.tmpl +33 -0
  270. package/templates/vertical_gaming/README.md.tmpl +30 -0
  271. package/templates/vertical_gaming/manifest.json +96 -0
  272. package/templates/vertical_gaming/package.json.tmpl +30 -0
  273. package/templates/vertical_gaming/src/agents/balance-critic.ts.tmpl +7 -0
  274. package/templates/vertical_gaming/src/agents/economy-modeler.ts.tmpl +7 -0
  275. package/templates/vertical_gaming/src/agents/narrative-keeper.ts.tmpl +7 -0
  276. package/templates/vertical_gaming/src/agents/playtest-reader.ts.tmpl +7 -0
  277. package/templates/vertical_gaming/src/init.ts.tmpl +21 -0
  278. package/templates/vertical_health/.claude/commands/doctor.md.tmpl +12 -0
  279. package/templates/vertical_health/.claude/settings.json.tmpl +33 -0
  280. package/templates/vertical_health/.claude/skills/wellness-intake/SKILL.md.tmpl +15 -0
  281. package/templates/vertical_health/CLAUDE.md.tmpl +30 -0
  282. package/templates/vertical_health/README.md.tmpl +29 -0
  283. package/templates/vertical_health/manifest.json +81 -0
  284. package/templates/vertical_health/package.json.tmpl +30 -0
  285. package/templates/vertical_health/src/agents/care-coordinator.ts.tmpl +7 -0
  286. package/templates/vertical_health/src/agents/intake.ts.tmpl +7 -0
  287. package/templates/vertical_health/src/agents/triage.ts.tmpl +7 -0
  288. package/templates/vertical_health/src/init.ts.tmpl +21 -0
  289. package/templates/vertical_legal/.claude/settings.json.tmpl +10 -0
  290. package/templates/vertical_legal/CLAUDE.md.tmpl +24 -0
  291. package/templates/vertical_legal/README.md.tmpl +21 -0
  292. package/templates/vertical_legal/manifest.json +20 -0
  293. package/templates/vertical_legal/package.json.tmpl +13 -0
  294. package/templates/vertical_legal/src/agents/citation-checker.ts.tmpl +7 -0
  295. package/templates/vertical_legal/src/agents/redline.ts.tmpl +7 -0
  296. package/templates/vertical_legal/src/agents/risk-rater.ts.tmpl +8 -0
  297. package/templates/vertical_legal/src/init.ts.tmpl +13 -0
  298. package/templates/vertical_marketing/.claude/commands/doctor.md.tmpl +12 -0
  299. package/templates/vertical_marketing/.claude/settings.json.tmpl +33 -0
  300. package/templates/vertical_marketing/.claude/skills/campaign-brief/SKILL.md.tmpl +13 -0
  301. package/templates/vertical_marketing/CLAUDE.md.tmpl +30 -0
  302. package/templates/vertical_marketing/README.md.tmpl +29 -0
  303. package/templates/vertical_marketing/manifest.json +81 -0
  304. package/templates/vertical_marketing/package.json.tmpl +30 -0
  305. package/templates/vertical_marketing/src/agents/content-creator.ts.tmpl +7 -0
  306. package/templates/vertical_marketing/src/agents/seo-analyst.ts.tmpl +7 -0
  307. package/templates/vertical_marketing/src/agents/strategist.ts.tmpl +7 -0
  308. package/templates/vertical_marketing/src/init.ts.tmpl +21 -0
  309. package/templates/vertical_repo-maintainer/.claude/commands/doctor.md.tmpl +12 -0
  310. package/templates/vertical_repo-maintainer/.claude/commands/release-check.md.tmpl +13 -0
  311. package/templates/vertical_repo-maintainer/.claude/commands/repo-triage.md.tmpl +16 -0
  312. package/templates/vertical_repo-maintainer/.claude/settings.json.tmpl +44 -0
  313. package/templates/vertical_repo-maintainer/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  314. package/templates/vertical_repo-maintainer/.claude/skills/plan-change/SKILL.md.tmpl +15 -0
  315. package/templates/vertical_repo-maintainer/CLAUDE.md.tmpl +34 -0
  316. package/templates/vertical_repo-maintainer/README.md.tmpl +30 -0
  317. package/templates/vertical_repo-maintainer/manifest.json +101 -0
  318. package/templates/vertical_repo-maintainer/package.json.tmpl +30 -0
  319. package/templates/vertical_repo-maintainer/src/agents/benchmarker.ts.tmpl +7 -0
  320. package/templates/vertical_repo-maintainer/src/agents/maintainer.ts.tmpl +7 -0
  321. package/templates/vertical_repo-maintainer/src/agents/release.ts.tmpl +7 -0
  322. package/templates/vertical_repo-maintainer/src/agents/security.ts.tmpl +7 -0
  323. package/templates/vertical_repo-maintainer/src/init.ts.tmpl +21 -0
  324. package/templates/vertical_research/.claude/settings.json.tmpl +9 -0
  325. package/templates/vertical_research/CLAUDE.md.tmpl +33 -0
  326. package/templates/vertical_research/README.md.tmpl +17 -0
  327. package/templates/vertical_research/manifest.json +23 -0
  328. package/templates/vertical_research/package.json.tmpl +13 -0
  329. package/templates/vertical_research/src/agents/citer.ts.tmpl +8 -0
  330. package/templates/vertical_research/src/agents/fact-checker.ts.tmpl +8 -0
  331. package/templates/vertical_research/src/agents/scout.ts.tmpl +7 -0
  332. package/templates/vertical_research/src/agents/source-grader.ts.tmpl +10 -0
  333. package/templates/vertical_research/src/agents/synthesizer.ts.tmpl +8 -0
  334. package/templates/vertical_research/src/agents/web-searcher.ts.tmpl +6 -0
  335. package/templates/vertical_research/src/init.ts.tmpl +13 -0
  336. package/templates/vertical_ruview/.claude/commands/doctor.md.tmpl +12 -0
  337. package/templates/vertical_ruview/.claude/settings.json.tmpl +33 -0
  338. package/templates/vertical_ruview/.claude/skills/index-and-ask/SKILL.md.tmpl +15 -0
  339. package/templates/vertical_ruview/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  340. package/templates/vertical_ruview/CLAUDE.md.tmpl +31 -0
  341. package/templates/vertical_ruview/README.md.tmpl +29 -0
  342. package/templates/vertical_ruview/manifest.json +86 -0
  343. package/templates/vertical_ruview/package.json.tmpl +30 -0
  344. package/templates/vertical_ruview/src/agents/indexer.ts.tmpl +7 -0
  345. package/templates/vertical_ruview/src/agents/retriever.ts.tmpl +7 -0
  346. package/templates/vertical_ruview/src/agents/reviewer.ts.tmpl +7 -0
  347. package/templates/vertical_ruview/src/init.ts.tmpl +21 -0
  348. package/templates/vertical_sales/.claude/commands/doctor.md.tmpl +12 -0
  349. package/templates/vertical_sales/.claude/commands/pipeline-report.md.tmpl +13 -0
  350. package/templates/vertical_sales/.claude/settings.json.tmpl +45 -0
  351. package/templates/vertical_sales/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -0
  352. package/templates/vertical_sales/.claude/skills/qualify-lead/SKILL.md.tmpl +15 -0
  353. package/templates/vertical_sales/CLAUDE.md.tmpl +33 -0
  354. package/templates/vertical_sales/README.md.tmpl +30 -0
  355. package/templates/vertical_sales/manifest.json +96 -0
  356. package/templates/vertical_sales/package.json.tmpl +30 -0
  357. package/templates/vertical_sales/src/agents/closer.ts.tmpl +7 -0
  358. package/templates/vertical_sales/src/agents/demo-coach.ts.tmpl +7 -0
  359. package/templates/vertical_sales/src/agents/prospector.ts.tmpl +7 -0
  360. package/templates/vertical_sales/src/agents/qualifier.ts.tmpl +7 -0
  361. package/templates/vertical_sales/src/init.ts.tmpl +21 -0
  362. package/templates/vertical_support/.claude/settings.json.tmpl +25 -0
  363. package/templates/vertical_support/CLAUDE.md.tmpl +34 -0
  364. package/templates/vertical_support/README.md.tmpl +16 -0
  365. package/templates/vertical_support/kb/README.md.tmpl +23 -0
  366. package/templates/vertical_support/manifest.json +22 -0
  367. package/templates/vertical_support/package.json.tmpl +24 -0
  368. package/templates/vertical_support/src/agents/escalator.ts.tmpl +6 -0
  369. package/templates/vertical_support/src/agents/kb-searcher.ts.tmpl +6 -0
  370. package/templates/vertical_support/src/agents/responder.ts.tmpl +7 -0
  371. package/templates/vertical_support/src/agents/triager.ts.tmpl +6 -0
  372. package/templates/vertical_support/src/init.ts.tmpl +16 -0
  373. package/templates/vertical_trading/.claude/settings.json.tmpl +20 -0
  374. package/templates/vertical_trading/CLAUDE.md.tmpl +24 -0
  375. package/templates/vertical_trading/README.md.tmpl +17 -0
  376. package/templates/vertical_trading/manifest.json +22 -0
  377. package/templates/vertical_trading/package.json.tmpl +13 -0
  378. package/templates/vertical_trading/src/agents/executor.ts.tmpl +8 -0
  379. package/templates/vertical_trading/src/agents/market-watcher.ts.tmpl +7 -0
  380. package/templates/vertical_trading/src/agents/postmortem.ts.tmpl +8 -0
  381. package/templates/vertical_trading/src/agents/risk-checker.ts.tmpl +11 -0
  382. package/templates/vertical_trading/src/agents/signal-gen.ts.tmpl +8 -0
  383. package/templates/vertical_trading/src/init.ts.tmpl +20 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genome.d.ts","sourceRoot":"","sources":["../src/genome.ts"],"names":[],"mappings":"AAuBA,OAAO,EAA0C,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/G,OAAO,EAML,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAC;AAE7B,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAGjE,MAAM,WAAW,MAAM;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,UAAU,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,CAAC,CAAC;IACV,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,CAAC;IAC5C,QAAQ,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACrB;AASD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,WAAW,GAAE,MAAiC,GAAG,YAAY,CA+B3G;AAmBD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,CA4D5D;AAkCD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0DzE"}
package/dist/genome.js ADDED
@@ -0,0 +1,219 @@
1
+ // SPDX-License-Identifier: MIT
2
+ //
3
+ // `harness genome <repo>` — 18th subcommand (iter 110). The "strongest next
4
+ // commit" per the user's roadmap. Produces a 7-section readiness scorecard
5
+ // for a LOCAL repo, ON TOP of analyze-repo's archetype scoring.
6
+ //
7
+ // LOCAL-only, deterministic, never executes repo code. Same invariant as
8
+ // analyze-repo — we inherit the inventory/profile/plan pipeline so the
9
+ // no-exec contract is enforced once, not twice.
10
+ //
11
+ // Modes:
12
+ // - default: human-readable 7-section text report
13
+ // - --json: emits ONLY the 6-field genome scorecard the user named
14
+ // - --out <path>: writes the scorecard JSON to a file (text still goes to stdout)
15
+ // - --bundle: ADR-031 schema-1 envelope of the full report (for support tickets)
16
+ //
17
+ // Verdict + exit code:
18
+ // - 'ready' (0) — publish_readiness >= 0.75 && risk_score < 0.35
19
+ // - 'needs-work' (1) — somewhere in between
20
+ // - 'blocked' (2) — risk_score >= 0.7
21
+ import { existsSync, statSync, writeFileSync } from 'node:fs';
22
+ import { basename, resolve } from 'node:path';
23
+ import { inventory, analyzeFiles, recommendPlan } from './analyze-repo.js';
24
+ import { resolveAgentTopology, scoreMcpRisk, scoreTestConfidence, scorePublishReadiness, classifyRepoType, } from './genome-scorers.js';
25
+ function round2(x) {
26
+ return Math.round(x * 100) / 100;
27
+ }
28
+ function round3(x) {
29
+ return Math.round(x * 1000) / 1000;
30
+ }
31
+ export function buildGenomeReport(dir, generatedAt = new Date().toISOString()) {
32
+ const profile = analyzeFiles(basename(dir), inventory(dir));
33
+ const plan = recommendPlan(profile);
34
+ const topology = resolveAgentTopology(profile, plan);
35
+ const mcp = scoreMcpRisk(profile, plan);
36
+ const testConf = scoreTestConfidence(profile);
37
+ const publish = scorePublishReadiness(profile, plan);
38
+ // risk = weighted blend: most of the signal comes from publish-readiness
39
+ // (the inverse) and MCP surface; tests bend the curve a little.
40
+ const risk = round3(0.5 * (1 - publish) + 0.3 * mcp.numeric + 0.2 * (1 - testConf));
41
+ const genome = {
42
+ repo_type: classifyRepoType(profile),
43
+ agent_topology: topology,
44
+ risk_score: risk,
45
+ mcp_surface: mcp.surface,
46
+ test_confidence: round2(testConf),
47
+ publish_readiness: round2(publish),
48
+ };
49
+ let verdict;
50
+ let exitCode;
51
+ if (risk >= 0.7) {
52
+ verdict = 'blocked';
53
+ exitCode = 2;
54
+ }
55
+ else if (publish >= 0.75 && risk < 0.35) {
56
+ verdict = 'ready';
57
+ exitCode = 0;
58
+ }
59
+ else {
60
+ verdict = 'needs-work';
61
+ exitCode = 1;
62
+ }
63
+ return { schema: 1, generatedAt, dir, profile, plan, genome, verdict, exitCode };
64
+ }
65
+ // --- formatting ------------------------------------------------------------
66
+ function pct(x) {
67
+ return `${Math.round(x * 100)}%`;
68
+ }
69
+ function verdictLine(v) {
70
+ switch (v) {
71
+ case 'ready':
72
+ return 'READY — this repo is in shape to scaffold a harness for';
73
+ case 'needs-work':
74
+ return 'NEEDS WORK — harness will scaffold; expect some manual cleanup';
75
+ case 'blocked':
76
+ return 'BLOCKED — fix the high-risk signals before scaffolding';
77
+ }
78
+ }
79
+ export function formatGenomeReport(r) {
80
+ const out = [];
81
+ out.push(`harness genome — ${r.dir}`);
82
+ out.push('');
83
+ // 1. Repo profile
84
+ out.push('1. Repo profile');
85
+ out.push(` type: ${r.genome.repo_type}`);
86
+ out.push(` languages: ${r.profile.languages.join(', ') || '(none detected)'}`);
87
+ out.push(` build: ${r.profile.buildCommands.join(', ') || '(none detected)'}`);
88
+ out.push(` test: ${r.profile.testCommands.join(', ') || '(none detected)'}`);
89
+ out.push(` ci: ${r.profile.hasCi ? 'present' : 'none'}`);
90
+ out.push(` mcp signals: ${r.profile.hasMcp ? 'present' : 'none'}`);
91
+ out.push('');
92
+ // 2. Agent topology
93
+ out.push('2. Agent topology');
94
+ out.push(` recommended: ${r.genome.agent_topology.join(', ')}`);
95
+ out.push('');
96
+ // 3. MCP risk model
97
+ out.push('3. MCP risk model');
98
+ out.push(` surface: ${r.genome.mcp_surface}`);
99
+ out.push(` numeric risk: ${pct(scoreMcpRisk(r.profile, r.plan).numeric)}`);
100
+ out.push(` policy: ${r.plan.riskProfile}`);
101
+ out.push('');
102
+ // 4. Test confidence
103
+ out.push('4. Test confidence');
104
+ out.push(` score: ${pct(r.genome.test_confidence)}`);
105
+ out.push(` signals: ${r.profile.testCommands.length} test command(s), ci ${r.profile.hasCi ? 'yes' : 'no'}`);
106
+ out.push('');
107
+ // 5. Release readiness
108
+ out.push('5. Release readiness');
109
+ out.push(` score: ${pct(r.genome.publish_readiness)}`);
110
+ out.push(` buildable: ${r.profile.buildCommands.length > 0 ? 'yes' : 'no'}`);
111
+ out.push(` testable: ${r.profile.testCommands.length > 0 ? 'yes' : 'no'}`);
112
+ out.push(` ci wired: ${r.profile.hasCi ? 'yes' : 'no'}`);
113
+ out.push('');
114
+ // 6. Recommended harness plan
115
+ out.push('6. Recommended harness plan');
116
+ out.push(` template: ${r.plan.template}`);
117
+ out.push(` archetype: ${r.plan.archetypeId} (confidence ${pct(r.plan.confidence)})`);
118
+ out.push(` hosts: ${r.plan.hosts.join(', ')}`);
119
+ out.push(` agents: ${r.plan.agents.join(', ') || '(none)'}`);
120
+ out.push(` skills: ${r.plan.skills.join(', ') || '(none)'}`);
121
+ out.push('');
122
+ // 7. Scorecard
123
+ out.push('7. Scorecard');
124
+ out.push(` risk score: ${pct(r.genome.risk_score)}`);
125
+ out.push(` publish readiness: ${pct(r.genome.publish_readiness)}`);
126
+ out.push(` test confidence: ${pct(r.genome.test_confidence)}`);
127
+ out.push('');
128
+ out.push(`Verdict: ${verdictLine(r.verdict)} (exit ${r.exitCode})`);
129
+ out.push(`Scaffold it: npx openharness ${r.plan.name} --template ${r.plan.template}`);
130
+ return out;
131
+ }
132
+ // --- sanitisation (ADR-031) ------------------------------------------------
133
+ const SECRET_RE = /(secret|token|key|password|passphrase)/i;
134
+ function sanitiseValue(v) {
135
+ if (v == null)
136
+ return v;
137
+ if (Array.isArray(v))
138
+ return v.map(sanitiseValue);
139
+ if (typeof v === 'object') {
140
+ const out = {};
141
+ for (const [k, val] of Object.entries(v)) {
142
+ out[k] = SECRET_RE.test(k) ? '[REDACTED]' : sanitiseValue(val);
143
+ }
144
+ return out;
145
+ }
146
+ return v;
147
+ }
148
+ // --- dispatch --------------------------------------------------------------
149
+ function usage() {
150
+ return [
151
+ 'Usage: harness genome <path> [--out <file>] [--json] [--bundle]',
152
+ '',
153
+ ' Produces a 7-section readiness scorecard for a LOCAL repo.',
154
+ ' Defaults to human-readable text.',
155
+ '',
156
+ ' --out <file> Write the 6-field genome JSON to <file>.',
157
+ ' --json Emit the 6-field genome JSON to stdout (instead of text).',
158
+ ' --bundle Emit the full report as an ADR-031 schema-1 envelope.',
159
+ ];
160
+ }
161
+ export async function genomeCmd(args) {
162
+ const bundle = args.includes('--bundle');
163
+ const json = args.includes('--json');
164
+ let outPath = null;
165
+ const positional = [];
166
+ for (let i = 0; i < args.length; i++) {
167
+ const a = args[i];
168
+ if (a === '--out') {
169
+ outPath = args[++i] ?? null;
170
+ if (!outPath) {
171
+ const err = { schema: 1, error: 'missing-out-path', exitCode: 2 };
172
+ return { code: 2, lines: [bundle || json ? JSON.stringify(err, null, 2) : '--out requires a file path'] };
173
+ }
174
+ }
175
+ else if (a === '--bundle' || a === '--json') {
176
+ /* handled */
177
+ }
178
+ else if (a === '--help' || a === '-h') {
179
+ return { code: 0, lines: usage() };
180
+ }
181
+ else if (a && !a.startsWith('--')) {
182
+ positional.push(a);
183
+ }
184
+ else if (a) {
185
+ const err = { schema: 1, error: `unknown-flag-${a.replace(/^--?/, '')}`, exitCode: 2 };
186
+ return { code: 2, lines: [bundle || json ? JSON.stringify(err, null, 2) : `Unknown flag: ${a}`] };
187
+ }
188
+ }
189
+ if (positional.length === 0) {
190
+ return { code: 2, lines: usage() };
191
+ }
192
+ const dir = resolve(positional[0]);
193
+ if (!existsSync(dir) || !statSync(dir).isDirectory()) {
194
+ const generatedAt = new Date().toISOString();
195
+ const err = { schema: 1, generatedAt, error: 'not-a-directory', dir, exitCode: 2 };
196
+ if (bundle || json)
197
+ return { code: 2, lines: [JSON.stringify(err, null, 2)] };
198
+ return { code: 2, lines: [`harness genome: not a directory: ${dir}`] };
199
+ }
200
+ const report = buildGenomeReport(dir);
201
+ if (outPath) {
202
+ try {
203
+ writeFileSync(resolve(outPath), JSON.stringify(report.genome, null, 2) + '\n', 'utf-8');
204
+ }
205
+ catch (e) {
206
+ const err = { schema: 1, error: 'out-write-failed', detail: String(e), exitCode: 2 };
207
+ return { code: 2, lines: [bundle || json ? JSON.stringify(err, null, 2) : `harness genome: failed to write --out: ${String(e)}`] };
208
+ }
209
+ }
210
+ if (bundle) {
211
+ const sanitised = sanitiseValue({ ...report, exitCode: report.exitCode });
212
+ return { code: report.exitCode, lines: [JSON.stringify(sanitised, null, 2)] };
213
+ }
214
+ if (json) {
215
+ return { code: report.exitCode, lines: [JSON.stringify(report.genome, null, 2)] };
216
+ }
217
+ return { code: report.exitCode, lines: formatGenomeReport(report) };
218
+ }
219
+ //# sourceMappingURL=genome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genome.js","sourceRoot":"","sources":["../src/genome.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=harness-bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-bin.d.ts","sourceRoot":"","sources":["../src/harness-bin.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env node
2
+ // SPDX-License-Identifier: MIT
3
+ //
4
+ // `harness` binary entry point.
5
+ import { dispatch } from './subcommands.js';
6
+ const [, , subcommand = 'help', ...rest] = process.argv;
7
+ dispatch(subcommand, rest).then(({ code, lines }) => {
8
+ // eslint-disable-next-line no-console
9
+ for (const l of lines)
10
+ console.log(l);
11
+ process.exit(code);
12
+ }).catch(err => {
13
+ // eslint-disable-next-line no-console
14
+ console.error(err instanceof Error ? err.message : String(err));
15
+ process.exit(1);
16
+ });
17
+ //# sourceMappingURL=harness-bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"harness-bin.js","sourceRoot":"","sources":["../src/harness-bin.ts"],"names":[],"mappings":";AACA,+BAA+B;AAC/B,EAAE;AACF,gCAAgC;AAEhC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,MAAM,CAAC,EAAE,AAAD,EAAG,UAAU,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;AAExD,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;IAClD,sCAAsC;IACtC,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;IACb,sCAAsC;IACtC,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,79 @@
1
+ export declare const HOSTS: readonly ["claude-code", "codex", "pi-dev", "hermes", "openclaw", "rvm"];
2
+ export type Host = (typeof HOSTS)[number];
3
+ export declare const TEMPLATES: readonly ["minimal", "vertical:devops", "vertical:support", "vertical:trading", "vertical:legal", "vertical:research", "vertical:coding", "vertical:business", "vertical:crm", "vertical:marketing", "vertical:advertising", "vertical:ai", "vertical:agentics", "vertical:ruview", "vertical:health", "vertical:education", "vertical:sales", "vertical:gaming", "vertical:repo-maintainer", "vertical:exotic"];
4
+ export type TemplateId = (typeof TEMPLATES)[number];
5
+ export interface CatalogEntry {
6
+ id: string;
7
+ category: string;
8
+ name: string;
9
+ domain: string;
10
+ description: string;
11
+ quickStart: string;
12
+ tags: string[];
13
+ generate: boolean;
14
+ agentCount: number;
15
+ skillCount: number;
16
+ commandCount: number;
17
+ }
18
+ /** Read the canonical template catalog shipped at templates/catalog.json. */
19
+ export declare function loadCatalog(): CatalogEntry[];
20
+ /** Render the catalog as a human-readable table for `--list`. */
21
+ export declare function formatCatalog(entries: CatalogEntry[]): string[];
22
+ export interface CliArgs {
23
+ name?: string;
24
+ template?: string;
25
+ templatePackage?: string;
26
+ hosts?: string[];
27
+ yes?: boolean;
28
+ force?: boolean;
29
+ description?: string;
30
+ fromExisting?: string;
31
+ list?: boolean;
32
+ wizard?: boolean;
33
+ }
34
+ export declare function parseArgs(argv: string[]): CliArgs;
35
+ /**
36
+ * Resolve a template id to its on-disk directory. The "minimal" template
37
+ * lives at templates/minimal; vertical templates use ":" as the separator
38
+ * in their id and "_" as the on-disk separator (e.g. vertical:devops ->
39
+ * templates/vertical_devops).
40
+ */
41
+ export declare function templateDir(id: string): string;
42
+ export interface ScaffoldOptions {
43
+ name: string;
44
+ template: string;
45
+ host: Host;
46
+ description?: string;
47
+ targetDir: string;
48
+ force?: boolean;
49
+ generatorVersion: string;
50
+ }
51
+ export interface ScaffoldResult {
52
+ paths: string[];
53
+ manifestPath: string;
54
+ unresolved: string[];
55
+ }
56
+ /**
57
+ * Run the full scaffold pipeline:
58
+ * 1. Validate the name
59
+ * 2. Walk the template dir + render
60
+ * 3. Compute fingerprints
61
+ * 4. Build .harness/manifest.json
62
+ * 5. Atomically write everything to targetDir
63
+ *
64
+ * Returns the list of paths written + the manifest path + any unresolved
65
+ * template variables (should be empty for a clean run).
66
+ */
67
+ export declare function scaffold(opts: ScaffoldOptions): Promise<ScaffoldResult>;
68
+ /** Try to detect an existing ruflo project at the given path. */
69
+ export declare function detectRufloProject(dir: string): {
70
+ found: boolean;
71
+ signals: string[];
72
+ };
73
+ export declare function main(argv: string[]): Promise<number>;
74
+ export type { TemplateVars } from './renderer.js';
75
+ export { render, extractVarReferences, validateHarnessName } from './renderer.js';
76
+ export { walkTemplate, asFileMap } from './walker.js';
77
+ export { writeAtomic } from './writer.js';
78
+ export { emptyManifest, sha256, fingerprintFiles, diffFingerprints } from './manifest.js';
79
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqDA,eAAO,MAAM,KAAK,0EAA2E,CAAC;AAC9F,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1C,eAAO,MAAM,SAAS,kZAqBZ,CAAC;AACX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,IAAI,YAAY,EAAE,CAS5C;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAa/D;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CA+BjD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAoD7E;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,CAOA;AAyED,wBAAsB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4G1D;AAED,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}