metaharness 0.3.0 → 0.3.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 (384) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +111 -74
  3. package/dist/bin.js +14 -2
  4. package/dist/bin.js.map +1 -1
  5. package/dist/completions-cmd.js +94 -94
  6. package/dist/diag.d.ts +8 -0
  7. package/dist/diag.d.ts.map +1 -1
  8. package/dist/diag.js +79 -15
  9. package/dist/diag.js.map +1 -1
  10. package/dist/export-config.d.ts.map +1 -1
  11. package/dist/export-config.js +3 -12
  12. package/dist/export-config.js.map +1 -1
  13. package/dist/genome.d.ts.map +1 -1
  14. package/dist/genome.js +3 -12
  15. package/dist/genome.js.map +1 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +101 -75
  18. package/dist/index.js.map +1 -1
  19. package/dist/meta-proxy.d.ts +57 -0
  20. package/dist/meta-proxy.d.ts.map +1 -0
  21. package/dist/meta-proxy.js +325 -0
  22. package/dist/meta-proxy.js.map +1 -0
  23. package/dist/publish-cmd.d.ts.map +1 -1
  24. package/dist/publish-cmd.js +5 -0
  25. package/dist/publish-cmd.js.map +1 -1
  26. package/dist/publish.d.ts +6 -0
  27. package/dist/publish.d.ts.map +1 -1
  28. package/dist/publish.js +9 -0
  29. package/dist/publish.js.map +1 -1
  30. package/dist/redact.d.ts +25 -0
  31. package/dist/redact.d.ts.map +1 -0
  32. package/dist/redact.js +62 -0
  33. package/dist/redact.js.map +1 -0
  34. package/dist/score.d.ts +9 -0
  35. package/dist/score.d.ts.map +1 -1
  36. package/dist/score.js +20 -14
  37. package/dist/score.js.map +1 -1
  38. package/dist/threat-model.d.ts.map +1 -1
  39. package/dist/threat-model.js +3 -12
  40. package/dist/threat-model.js.map +1 -1
  41. package/dist/with-wasm.js +43 -43
  42. package/dist/witness-client.d.ts +7 -0
  43. package/dist/witness-client.d.ts.map +1 -1
  44. package/dist/witness-client.js +5 -1
  45. package/dist/witness-client.js.map +1 -1
  46. package/genomes/README.md +23 -23
  47. package/genomes/genome-promoted-cand6-edit-by-midpoint.json +26 -26
  48. package/package.json +126 -125
  49. package/templates/catalog.def.mjs +542 -542
  50. package/templates/catalog.json +1274 -1274
  51. package/templates/minimal/.claude/settings.json.tmpl +18 -18
  52. package/templates/minimal/.claude-plugin/plugin.json.tmpl +13 -13
  53. package/templates/minimal/CLAUDE.md.tmpl +26 -23
  54. package/templates/minimal/README.md.tmpl +20 -20
  55. package/templates/minimal/__tests__/smoke.test.ts.tmpl +37 -37
  56. package/templates/minimal/bin/cli.js.tmpl +100 -100
  57. package/templates/minimal/manifest.json +20 -20
  58. package/templates/minimal/package.json.tmpl +31 -31
  59. package/templates/minimal/src/init.ts.tmpl +21 -21
  60. package/templates/minimal/tsconfig.json.tmpl +19 -19
  61. package/templates/minimal/vitest.config.ts.tmpl +23 -23
  62. package/templates/vertical_advertising/.claude/commands/doctor.md.tmpl +12 -12
  63. package/templates/vertical_advertising/.claude/settings.json.tmpl +33 -33
  64. package/templates/vertical_advertising/.claude/skills/media-plan/SKILL.md.tmpl +13 -13
  65. package/templates/vertical_advertising/.claude-plugin/plugin.json.tmpl +23 -23
  66. package/templates/vertical_advertising/CLAUDE.md.tmpl +30 -30
  67. package/templates/vertical_advertising/README.md.tmpl +29 -29
  68. package/templates/vertical_advertising/__tests__/smoke.test.ts.tmpl +37 -37
  69. package/templates/vertical_advertising/bin/cli.js.tmpl +100 -100
  70. package/templates/vertical_advertising/manifest.json +101 -101
  71. package/templates/vertical_advertising/package.json.tmpl +30 -30
  72. package/templates/vertical_advertising/src/agents/copywriter.ts.tmpl +7 -7
  73. package/templates/vertical_advertising/src/agents/media-planner.ts.tmpl +7 -7
  74. package/templates/vertical_advertising/src/agents/performance-analyst.ts.tmpl +7 -7
  75. package/templates/vertical_advertising/src/init.ts.tmpl +21 -21
  76. package/templates/vertical_advertising/tsconfig.json.tmpl +19 -19
  77. package/templates/vertical_advertising/vitest.config.ts.tmpl +23 -23
  78. package/templates/vertical_agentics/.claude/commands/doctor.md.tmpl +12 -12
  79. package/templates/vertical_agentics/.claude/settings.json.tmpl +33 -33
  80. package/templates/vertical_agentics/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  81. package/templates/vertical_agentics/.claude/skills/run-swarm/SKILL.md.tmpl +14 -14
  82. package/templates/vertical_agentics/.claude-plugin/plugin.json.tmpl +23 -23
  83. package/templates/vertical_agentics/CLAUDE.md.tmpl +32 -32
  84. package/templates/vertical_agentics/README.md.tmpl +30 -30
  85. package/templates/vertical_agentics/__tests__/smoke.test.ts.tmpl +37 -37
  86. package/templates/vertical_agentics/bin/cli.js.tmpl +100 -100
  87. package/templates/vertical_agentics/manifest.json +111 -111
  88. package/templates/vertical_agentics/package.json.tmpl +30 -30
  89. package/templates/vertical_agentics/src/agents/critic.ts.tmpl +7 -7
  90. package/templates/vertical_agentics/src/agents/orchestrator.ts.tmpl +7 -7
  91. package/templates/vertical_agentics/src/agents/planner.ts.tmpl +7 -7
  92. package/templates/vertical_agentics/src/agents/worker.ts.tmpl +7 -7
  93. package/templates/vertical_agentics/src/init.ts.tmpl +21 -21
  94. package/templates/vertical_agentics/tsconfig.json.tmpl +19 -19
  95. package/templates/vertical_agentics/vitest.config.ts.tmpl +23 -23
  96. package/templates/vertical_ai/.claude/commands/doctor.md.tmpl +12 -12
  97. package/templates/vertical_ai/.claude/settings.json.tmpl +35 -35
  98. package/templates/vertical_ai/.claude/skills/eval-report/SKILL.md.tmpl +13 -13
  99. package/templates/vertical_ai/.claude-plugin/plugin.json.tmpl +23 -23
  100. package/templates/vertical_ai/CLAUDE.md.tmpl +31 -31
  101. package/templates/vertical_ai/README.md.tmpl +30 -30
  102. package/templates/vertical_ai/__tests__/smoke.test.ts.tmpl +37 -37
  103. package/templates/vertical_ai/bin/cli.js.tmpl +100 -100
  104. package/templates/vertical_ai/manifest.json +106 -106
  105. package/templates/vertical_ai/package.json.tmpl +30 -30
  106. package/templates/vertical_ai/src/agents/data-curator.ts.tmpl +7 -7
  107. package/templates/vertical_ai/src/agents/deployer.ts.tmpl +7 -7
  108. package/templates/vertical_ai/src/agents/evaluator.ts.tmpl +7 -7
  109. package/templates/vertical_ai/src/agents/trainer.ts.tmpl +7 -7
  110. package/templates/vertical_ai/src/init.ts.tmpl +21 -21
  111. package/templates/vertical_ai/tsconfig.json.tmpl +19 -19
  112. package/templates/vertical_ai/vitest.config.ts.tmpl +23 -23
  113. package/templates/vertical_business/.claude/commands/doctor.md.tmpl +12 -12
  114. package/templates/vertical_business/.claude/settings.json.tmpl +33 -33
  115. package/templates/vertical_business/.claude/skills/quarterly-plan/SKILL.md.tmpl +13 -13
  116. package/templates/vertical_business/.claude-plugin/plugin.json.tmpl +23 -23
  117. package/templates/vertical_business/CLAUDE.md.tmpl +30 -30
  118. package/templates/vertical_business/README.md.tmpl +29 -29
  119. package/templates/vertical_business/__tests__/smoke.test.ts.tmpl +37 -37
  120. package/templates/vertical_business/bin/cli.js.tmpl +100 -100
  121. package/templates/vertical_business/manifest.json +101 -101
  122. package/templates/vertical_business/package.json.tmpl +30 -30
  123. package/templates/vertical_business/src/agents/analyst.ts.tmpl +7 -7
  124. package/templates/vertical_business/src/agents/ops-coordinator.ts.tmpl +7 -7
  125. package/templates/vertical_business/src/agents/strategist.ts.tmpl +7 -7
  126. package/templates/vertical_business/src/init.ts.tmpl +21 -21
  127. package/templates/vertical_business/tsconfig.json.tmpl +19 -19
  128. package/templates/vertical_business/vitest.config.ts.tmpl +23 -23
  129. package/templates/vertical_coding/.claude/commands/doctor.md.tmpl +12 -12
  130. package/templates/vertical_coding/.claude/commands/review-diff.md.tmpl +10 -10
  131. package/templates/vertical_coding/.claude/settings.json.tmpl +40 -40
  132. package/templates/vertical_coding/.claude/skills/plan-change/SKILL.md.tmpl +15 -15
  133. package/templates/vertical_coding/.claude-plugin/plugin.json.tmpl +23 -23
  134. package/templates/vertical_coding/CLAUDE.md.tmpl +32 -32
  135. package/templates/vertical_coding/README.md.tmpl +30 -30
  136. package/templates/vertical_coding/__tests__/smoke.test.ts.tmpl +37 -37
  137. package/templates/vertical_coding/bin/cli.js.tmpl +100 -100
  138. package/templates/vertical_coding/manifest.json +111 -111
  139. package/templates/vertical_coding/package.json.tmpl +30 -30
  140. package/templates/vertical_coding/src/agents/architect.ts.tmpl +7 -7
  141. package/templates/vertical_coding/src/agents/implementer.ts.tmpl +7 -7
  142. package/templates/vertical_coding/src/agents/reviewer.ts.tmpl +7 -7
  143. package/templates/vertical_coding/src/agents/test-writer.ts.tmpl +7 -7
  144. package/templates/vertical_coding/src/init.ts.tmpl +21 -21
  145. package/templates/vertical_coding/tsconfig.json.tmpl +19 -19
  146. package/templates/vertical_coding/vitest.config.ts.tmpl +23 -23
  147. package/templates/vertical_crm/.claude/commands/doctor.md.tmpl +12 -12
  148. package/templates/vertical_crm/.claude/settings.json.tmpl +33 -33
  149. package/templates/vertical_crm/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  150. package/templates/vertical_crm/.claude-plugin/plugin.json.tmpl +23 -23
  151. package/templates/vertical_crm/CLAUDE.md.tmpl +30 -30
  152. package/templates/vertical_crm/README.md.tmpl +29 -29
  153. package/templates/vertical_crm/__tests__/smoke.test.ts.tmpl +37 -37
  154. package/templates/vertical_crm/bin/cli.js.tmpl +100 -100
  155. package/templates/vertical_crm/manifest.json +101 -101
  156. package/templates/vertical_crm/package.json.tmpl +30 -30
  157. package/templates/vertical_crm/src/agents/account-manager.ts.tmpl +7 -7
  158. package/templates/vertical_crm/src/agents/churn-watcher.ts.tmpl +7 -7
  159. package/templates/vertical_crm/src/agents/lead-qualifier.ts.tmpl +7 -7
  160. package/templates/vertical_crm/src/init.ts.tmpl +21 -21
  161. package/templates/vertical_crm/tsconfig.json.tmpl +19 -19
  162. package/templates/vertical_crm/vitest.config.ts.tmpl +23 -23
  163. package/templates/vertical_devops/.claude/settings.json.tmpl +36 -36
  164. package/templates/vertical_devops/.claude-plugin/plugin.json.tmpl +23 -23
  165. package/templates/vertical_devops/CLAUDE.md.tmpl +34 -34
  166. package/templates/vertical_devops/README.md.tmpl +27 -27
  167. package/templates/vertical_devops/__tests__/smoke.test.ts.tmpl +37 -37
  168. package/templates/vertical_devops/bin/cli.js.tmpl +100 -100
  169. package/templates/vertical_devops/manifest.json +100 -100
  170. package/templates/vertical_devops/package.json.tmpl +27 -27
  171. package/templates/vertical_devops/runbooks/README.md.tmpl +32 -32
  172. package/templates/vertical_devops/src/agents/escalator.ts.tmpl +19 -19
  173. package/templates/vertical_devops/src/agents/postmortem.ts.tmpl +23 -23
  174. package/templates/vertical_devops/src/agents/responder.ts.tmpl +14 -14
  175. package/templates/vertical_devops/src/agents/runbook-runner.ts.tmpl +17 -17
  176. package/templates/vertical_devops/src/init.ts.tmpl +23 -23
  177. package/templates/vertical_devops/tsconfig.json.tmpl +19 -19
  178. package/templates/vertical_devops/vitest.config.ts.tmpl +23 -23
  179. package/templates/vertical_education/.claude/commands/doctor.md.tmpl +12 -12
  180. package/templates/vertical_education/.claude/commands/mastery-report.md.tmpl +12 -12
  181. package/templates/vertical_education/.claude/settings.json.tmpl +45 -45
  182. package/templates/vertical_education/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  183. package/templates/vertical_education/.claude/skills/teach-next/SKILL.md.tmpl +16 -16
  184. package/templates/vertical_education/.claude-plugin/plugin.json.tmpl +23 -23
  185. package/templates/vertical_education/CLAUDE.md.tmpl +33 -33
  186. package/templates/vertical_education/README.md.tmpl +30 -30
  187. package/templates/vertical_education/__tests__/smoke.test.ts.tmpl +37 -37
  188. package/templates/vertical_education/bin/cli.js.tmpl +100 -100
  189. package/templates/vertical_education/manifest.json +116 -116
  190. package/templates/vertical_education/package.json.tmpl +30 -30
  191. package/templates/vertical_education/src/agents/explainer.ts.tmpl +7 -7
  192. package/templates/vertical_education/src/agents/grader.ts.tmpl +7 -7
  193. package/templates/vertical_education/src/agents/quiz-master.ts.tmpl +7 -7
  194. package/templates/vertical_education/src/agents/tutor.ts.tmpl +7 -7
  195. package/templates/vertical_education/src/init.ts.tmpl +21 -21
  196. package/templates/vertical_education/tsconfig.json.tmpl +19 -19
  197. package/templates/vertical_education/vitest.config.ts.tmpl +23 -23
  198. package/templates/vertical_exotic/.claude/commands/doctor.md.tmpl +12 -12
  199. package/templates/vertical_exotic/.claude/settings.json.tmpl +44 -44
  200. package/templates/vertical_exotic/.claude/skills/evolve/SKILL.md.tmpl +14 -14
  201. package/templates/vertical_exotic/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  202. package/templates/vertical_exotic/.claude-plugin/plugin.json.tmpl +23 -23
  203. package/templates/vertical_exotic/CLAUDE.md.tmpl +31 -31
  204. package/templates/vertical_exotic/README.md.tmpl +29 -29
  205. package/templates/vertical_exotic/__tests__/smoke.test.ts.tmpl +37 -37
  206. package/templates/vertical_exotic/bin/cli.js.tmpl +100 -100
  207. package/templates/vertical_exotic/manifest.json +106 -106
  208. package/templates/vertical_exotic/package.json.tmpl +30 -30
  209. package/templates/vertical_exotic/src/agents/experimenter.ts.tmpl +7 -7
  210. package/templates/vertical_exotic/src/agents/federator.ts.tmpl +7 -7
  211. package/templates/vertical_exotic/src/agents/hypothesizer.ts.tmpl +7 -7
  212. package/templates/vertical_exotic/src/init.ts.tmpl +21 -21
  213. package/templates/vertical_exotic/tsconfig.json.tmpl +19 -19
  214. package/templates/vertical_exotic/vitest.config.ts.tmpl +23 -23
  215. package/templates/vertical_gaming/.claude/commands/design-doc-diff.md.tmpl +13 -13
  216. package/templates/vertical_gaming/.claude/commands/doctor.md.tmpl +12 -12
  217. package/templates/vertical_gaming/.claude/settings.json.tmpl +45 -45
  218. package/templates/vertical_gaming/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  219. package/templates/vertical_gaming/.claude/skills/playtest-recap/SKILL.md.tmpl +16 -16
  220. package/templates/vertical_gaming/.claude-plugin/plugin.json.tmpl +23 -23
  221. package/templates/vertical_gaming/CLAUDE.md.tmpl +33 -33
  222. package/templates/vertical_gaming/README.md.tmpl +30 -30
  223. package/templates/vertical_gaming/__tests__/smoke.test.ts.tmpl +37 -37
  224. package/templates/vertical_gaming/bin/cli.js.tmpl +100 -100
  225. package/templates/vertical_gaming/manifest.json +116 -116
  226. package/templates/vertical_gaming/package.json.tmpl +30 -30
  227. package/templates/vertical_gaming/src/agents/balance-critic.ts.tmpl +7 -7
  228. package/templates/vertical_gaming/src/agents/economy-modeler.ts.tmpl +7 -7
  229. package/templates/vertical_gaming/src/agents/narrative-keeper.ts.tmpl +7 -7
  230. package/templates/vertical_gaming/src/agents/playtest-reader.ts.tmpl +7 -7
  231. package/templates/vertical_gaming/src/init.ts.tmpl +21 -21
  232. package/templates/vertical_gaming/tsconfig.json.tmpl +19 -19
  233. package/templates/vertical_gaming/vitest.config.ts.tmpl +23 -23
  234. package/templates/vertical_health/.claude/commands/doctor.md.tmpl +12 -12
  235. package/templates/vertical_health/.claude/settings.json.tmpl +33 -33
  236. package/templates/vertical_health/.claude/skills/wellness-intake/SKILL.md.tmpl +15 -15
  237. package/templates/vertical_health/.claude-plugin/plugin.json.tmpl +23 -23
  238. package/templates/vertical_health/CLAUDE.md.tmpl +30 -30
  239. package/templates/vertical_health/README.md.tmpl +29 -29
  240. package/templates/vertical_health/__tests__/smoke.test.ts.tmpl +37 -37
  241. package/templates/vertical_health/bin/cli.js.tmpl +100 -100
  242. package/templates/vertical_health/manifest.json +101 -101
  243. package/templates/vertical_health/package.json.tmpl +30 -30
  244. package/templates/vertical_health/src/agents/care-coordinator.ts.tmpl +7 -7
  245. package/templates/vertical_health/src/agents/intake.ts.tmpl +7 -7
  246. package/templates/vertical_health/src/agents/triage.ts.tmpl +7 -7
  247. package/templates/vertical_health/src/init.ts.tmpl +21 -21
  248. package/templates/vertical_health/tsconfig.json.tmpl +19 -19
  249. package/templates/vertical_health/vitest.config.ts.tmpl +23 -23
  250. package/templates/vertical_legal/.claude/settings.json.tmpl +10 -10
  251. package/templates/vertical_legal/.claude-plugin/plugin.json.tmpl +23 -23
  252. package/templates/vertical_legal/CLAUDE.md.tmpl +24 -24
  253. package/templates/vertical_legal/README.md.tmpl +21 -21
  254. package/templates/vertical_legal/__tests__/smoke.test.ts.tmpl +37 -37
  255. package/templates/vertical_legal/bin/cli.js.tmpl +100 -100
  256. package/templates/vertical_legal/manifest.json +90 -90
  257. package/templates/vertical_legal/package.json.tmpl +14 -14
  258. package/templates/vertical_legal/src/agents/citation-checker.ts.tmpl +7 -7
  259. package/templates/vertical_legal/src/agents/redline.ts.tmpl +7 -7
  260. package/templates/vertical_legal/src/agents/risk-rater.ts.tmpl +8 -8
  261. package/templates/vertical_legal/src/init.ts.tmpl +13 -13
  262. package/templates/vertical_legal/tsconfig.json.tmpl +19 -19
  263. package/templates/vertical_legal/vitest.config.ts.tmpl +23 -23
  264. package/templates/vertical_marketing/.claude/commands/doctor.md.tmpl +12 -12
  265. package/templates/vertical_marketing/.claude/settings.json.tmpl +33 -33
  266. package/templates/vertical_marketing/.claude/skills/campaign-brief/SKILL.md.tmpl +13 -13
  267. package/templates/vertical_marketing/.claude-plugin/plugin.json.tmpl +23 -23
  268. package/templates/vertical_marketing/CLAUDE.md.tmpl +30 -30
  269. package/templates/vertical_marketing/README.md.tmpl +29 -29
  270. package/templates/vertical_marketing/__tests__/smoke.test.ts.tmpl +37 -37
  271. package/templates/vertical_marketing/bin/cli.js.tmpl +100 -100
  272. package/templates/vertical_marketing/manifest.json +101 -101
  273. package/templates/vertical_marketing/package.json.tmpl +30 -30
  274. package/templates/vertical_marketing/src/agents/content-creator.ts.tmpl +7 -7
  275. package/templates/vertical_marketing/src/agents/seo-analyst.ts.tmpl +7 -7
  276. package/templates/vertical_marketing/src/agents/strategist.ts.tmpl +7 -7
  277. package/templates/vertical_marketing/src/init.ts.tmpl +21 -21
  278. package/templates/vertical_marketing/tsconfig.json.tmpl +19 -19
  279. package/templates/vertical_marketing/vitest.config.ts.tmpl +23 -23
  280. package/templates/vertical_repo-maintainer/.claude/commands/doctor.md.tmpl +12 -12
  281. package/templates/vertical_repo-maintainer/.claude/commands/release-check.md.tmpl +13 -13
  282. package/templates/vertical_repo-maintainer/.claude/commands/repo-triage.md.tmpl +16 -16
  283. package/templates/vertical_repo-maintainer/.claude/settings.json.tmpl +44 -44
  284. package/templates/vertical_repo-maintainer/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  285. package/templates/vertical_repo-maintainer/.claude/skills/plan-change/SKILL.md.tmpl +15 -15
  286. package/templates/vertical_repo-maintainer/.claude-plugin/plugin.json.tmpl +23 -23
  287. package/templates/vertical_repo-maintainer/CLAUDE.md.tmpl +34 -34
  288. package/templates/vertical_repo-maintainer/README.md.tmpl +30 -30
  289. package/templates/vertical_repo-maintainer/__tests__/smoke.test.ts.tmpl +37 -37
  290. package/templates/vertical_repo-maintainer/bin/cli.js.tmpl +100 -100
  291. package/templates/vertical_repo-maintainer/manifest.json +121 -121
  292. package/templates/vertical_repo-maintainer/package.json.tmpl +30 -30
  293. package/templates/vertical_repo-maintainer/src/agents/benchmarker.ts.tmpl +7 -7
  294. package/templates/vertical_repo-maintainer/src/agents/maintainer.ts.tmpl +7 -7
  295. package/templates/vertical_repo-maintainer/src/agents/release.ts.tmpl +7 -7
  296. package/templates/vertical_repo-maintainer/src/agents/security.ts.tmpl +7 -7
  297. package/templates/vertical_repo-maintainer/src/init.ts.tmpl +21 -21
  298. package/templates/vertical_repo-maintainer/tsconfig.json.tmpl +19 -19
  299. package/templates/vertical_repo-maintainer/vitest.config.ts.tmpl +23 -23
  300. package/templates/vertical_research/.claude/settings.json.tmpl +9 -9
  301. package/templates/vertical_research/.claude-plugin/plugin.json.tmpl +23 -23
  302. package/templates/vertical_research/CLAUDE.md.tmpl +33 -33
  303. package/templates/vertical_research/README.md.tmpl +17 -17
  304. package/templates/vertical_research/__tests__/smoke.test.ts.tmpl +37 -37
  305. package/templates/vertical_research/bin/cli.js.tmpl +100 -100
  306. package/templates/vertical_research/manifest.json +105 -105
  307. package/templates/vertical_research/package.json.tmpl +14 -14
  308. package/templates/vertical_research/src/agents/citer.ts.tmpl +8 -8
  309. package/templates/vertical_research/src/agents/fact-checker.ts.tmpl +8 -8
  310. package/templates/vertical_research/src/agents/scout.ts.tmpl +7 -7
  311. package/templates/vertical_research/src/agents/source-grader.ts.tmpl +10 -10
  312. package/templates/vertical_research/src/agents/synthesizer.ts.tmpl +8 -8
  313. package/templates/vertical_research/src/agents/web-searcher.ts.tmpl +6 -6
  314. package/templates/vertical_research/src/init.ts.tmpl +13 -13
  315. package/templates/vertical_research/tsconfig.json.tmpl +19 -19
  316. package/templates/vertical_research/vitest.config.ts.tmpl +23 -23
  317. package/templates/vertical_ruview/.claude/commands/doctor.md.tmpl +12 -12
  318. package/templates/vertical_ruview/.claude/settings.json.tmpl +33 -33
  319. package/templates/vertical_ruview/.claude/skills/index-and-ask/SKILL.md.tmpl +15 -15
  320. package/templates/vertical_ruview/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  321. package/templates/vertical_ruview/.claude-plugin/plugin.json.tmpl +23 -23
  322. package/templates/vertical_ruview/CLAUDE.md.tmpl +31 -31
  323. package/templates/vertical_ruview/README.md.tmpl +29 -29
  324. package/templates/vertical_ruview/__tests__/smoke.test.ts.tmpl +37 -37
  325. package/templates/vertical_ruview/bin/cli.js.tmpl +100 -100
  326. package/templates/vertical_ruview/manifest.json +106 -106
  327. package/templates/vertical_ruview/package.json.tmpl +30 -30
  328. package/templates/vertical_ruview/src/agents/indexer.ts.tmpl +7 -7
  329. package/templates/vertical_ruview/src/agents/retriever.ts.tmpl +7 -7
  330. package/templates/vertical_ruview/src/agents/reviewer.ts.tmpl +7 -7
  331. package/templates/vertical_ruview/src/init.ts.tmpl +21 -21
  332. package/templates/vertical_ruview/tsconfig.json.tmpl +19 -19
  333. package/templates/vertical_ruview/vitest.config.ts.tmpl +23 -23
  334. package/templates/vertical_sales/.claude/commands/doctor.md.tmpl +12 -12
  335. package/templates/vertical_sales/.claude/commands/pipeline-report.md.tmpl +13 -13
  336. package/templates/vertical_sales/.claude/settings.json.tmpl +45 -45
  337. package/templates/vertical_sales/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
  338. package/templates/vertical_sales/.claude/skills/qualify-lead/SKILL.md.tmpl +15 -15
  339. package/templates/vertical_sales/.claude-plugin/plugin.json.tmpl +23 -23
  340. package/templates/vertical_sales/CLAUDE.md.tmpl +33 -33
  341. package/templates/vertical_sales/README.md.tmpl +30 -30
  342. package/templates/vertical_sales/__tests__/smoke.test.ts.tmpl +37 -37
  343. package/templates/vertical_sales/bin/cli.js.tmpl +100 -100
  344. package/templates/vertical_sales/manifest.json +116 -116
  345. package/templates/vertical_sales/package.json.tmpl +30 -30
  346. package/templates/vertical_sales/src/agents/closer.ts.tmpl +7 -7
  347. package/templates/vertical_sales/src/agents/demo-coach.ts.tmpl +7 -7
  348. package/templates/vertical_sales/src/agents/prospector.ts.tmpl +7 -7
  349. package/templates/vertical_sales/src/agents/qualifier.ts.tmpl +7 -7
  350. package/templates/vertical_sales/src/init.ts.tmpl +21 -21
  351. package/templates/vertical_sales/tsconfig.json.tmpl +19 -19
  352. package/templates/vertical_sales/vitest.config.ts.tmpl +23 -23
  353. package/templates/vertical_support/.claude/settings.json.tmpl +25 -25
  354. package/templates/vertical_support/.claude-plugin/plugin.json.tmpl +23 -23
  355. package/templates/vertical_support/CLAUDE.md.tmpl +34 -34
  356. package/templates/vertical_support/README.md.tmpl +16 -16
  357. package/templates/vertical_support/__tests__/smoke.test.ts.tmpl +37 -37
  358. package/templates/vertical_support/bin/cli.js.tmpl +100 -100
  359. package/templates/vertical_support/kb/README.md.tmpl +23 -23
  360. package/templates/vertical_support/manifest.json +100 -100
  361. package/templates/vertical_support/package.json.tmpl +25 -25
  362. package/templates/vertical_support/src/agents/escalator.ts.tmpl +6 -6
  363. package/templates/vertical_support/src/agents/kb-searcher.ts.tmpl +6 -6
  364. package/templates/vertical_support/src/agents/responder.ts.tmpl +7 -7
  365. package/templates/vertical_support/src/agents/triager.ts.tmpl +6 -6
  366. package/templates/vertical_support/src/init.ts.tmpl +16 -16
  367. package/templates/vertical_support/tsconfig.json.tmpl +19 -19
  368. package/templates/vertical_support/vitest.config.ts.tmpl +23 -23
  369. package/templates/vertical_trading/.claude/settings.json.tmpl +20 -20
  370. package/templates/vertical_trading/.claude-plugin/plugin.json.tmpl +23 -23
  371. package/templates/vertical_trading/CLAUDE.md.tmpl +24 -24
  372. package/templates/vertical_trading/README.md.tmpl +17 -17
  373. package/templates/vertical_trading/__tests__/smoke.test.ts.tmpl +37 -37
  374. package/templates/vertical_trading/bin/cli.js.tmpl +100 -100
  375. package/templates/vertical_trading/manifest.json +100 -100
  376. package/templates/vertical_trading/package.json.tmpl +14 -14
  377. package/templates/vertical_trading/src/agents/executor.ts.tmpl +8 -8
  378. package/templates/vertical_trading/src/agents/market-watcher.ts.tmpl +7 -7
  379. package/templates/vertical_trading/src/agents/postmortem.ts.tmpl +8 -8
  380. package/templates/vertical_trading/src/agents/risk-checker.ts.tmpl +11 -11
  381. package/templates/vertical_trading/src/agents/signal-gen.ts.tmpl +8 -8
  382. package/templates/vertical_trading/src/init.ts.tmpl +20 -20
  383. package/templates/vertical_trading/tsconfig.json.tmpl +19 -19
  384. package/templates/vertical_trading/vitest.config.ts.tmpl +23 -23
@@ -1,14 +1,14 @@
1
- ---
2
- name: memory-inspect
3
- description: Search and inspect the harness memory namespace (HNSW + emergent-time decay).
4
- ---
5
-
6
- # memory-inspect
7
-
8
- Inspect what the harness has learned.
9
-
10
- - `search <query>` — semantic nearest-neighbour over the namespace
11
- - `list` — recent patterns with decay weight
12
- - `forget <id>` — evict a pattern
13
-
14
- Use this before planning so the harness reuses prior trajectories instead of starting cold.
1
+ ---
2
+ name: memory-inspect
3
+ description: Search and inspect the harness memory namespace (HNSW + emergent-time decay).
4
+ ---
5
+
6
+ # memory-inspect
7
+
8
+ Inspect what the harness has learned.
9
+
10
+ - `search <query>` — semantic nearest-neighbour over the namespace
11
+ - `list` — recent patterns with decay weight
12
+ - `forget <id>` — evict a pattern
13
+
14
+ Use this before planning so the harness reuses prior trajectories instead of starting cold.
@@ -1,23 +1,23 @@
1
- {
2
- "name": "{{name}}",
3
- "version": "0.1.0",
4
- "description": "{{description}}",
5
- "author": {
6
- "displayName": "Generated by metaharness",
7
- "url": "https://www.npmjs.com/package/metaharness"
8
- },
9
- "license": "MIT",
10
- "categories": [
11
- "agent-harness",
12
- "metaharness-scaffold",
13
- "Frontier",
14
- "exotic/self-evolution"
15
- ],
16
- "tags": [
17
- "metaharness",
18
- "agent-harness",
19
- "vertical:exotic",
20
- "exotic/self-evolution"
21
- ],
22
- "homepage": "https://github.com/ruvnet/agent-harness-generator"
23
- }
1
+ {
2
+ "name": "{{name}}",
3
+ "version": "0.1.0",
4
+ "description": "{{description}}",
5
+ "author": {
6
+ "displayName": "Generated by metaharness",
7
+ "url": "https://www.npmjs.com/package/metaharness"
8
+ },
9
+ "license": "MIT",
10
+ "categories": [
11
+ "agent-harness",
12
+ "metaharness-scaffold",
13
+ "Frontier",
14
+ "exotic/self-evolution"
15
+ ],
16
+ "tags": [
17
+ "metaharness",
18
+ "agent-harness",
19
+ "vertical:exotic",
20
+ "exotic/self-evolution"
21
+ ],
22
+ "homepage": "https://github.com/ruvnet/agent-harness-generator"
23
+ }
@@ -1,31 +1,31 @@
1
- # {{name}}
2
-
3
- {{description}}
4
-
5
- > Exotic / Self-Evolving harness · domain: `exotic/self-evolution`. Generated with [create-agent-harness](https://github.com/ruvnet/agent-harness-generator).
6
-
7
- ## Behavioral rules
8
-
9
- - Use the harness's MCP tools (`mcp__{{name}}__*`) for orchestration
10
- - Memory and routing are handled by the kernel — you don't need to learn them
11
- - Defer destructive operations to the user
12
-
13
- ## Agents
14
-
15
- | Agent | Tier | Role |
16
- |---|---|---|
17
- | `hypothesizer` | opus | Proposes a falsifiable self-improvement. |
18
- | `experimenter` | opus | Tests the hypothesis safely and records it. |
19
- | `federator` | sonnet | Shares vetted improvements across instances. |
20
- ## Skills
21
-
22
- - `/memory-inspect` — Search and inspect the harness memory namespace (HNSW + emergent-time decay).
23
- - `/evolve` — Run one safe self-improvement cycle: hypothesize → experiment → record → (maybe) federate.
24
-
25
- ## Commands
26
-
27
- - `doctor` — Health-check the harness: kernel load, MCP wiring, memory backend, host adapter.
28
-
29
- ## Architecture
30
-
31
- This harness uses [@metaharness/kernel](https://www.npmjs.com/package/@metaharness/kernel) — a Rust-compiled WASM module with a NAPI-RS native fallback — so the same code runs identically on every platform.
1
+ # {{name}}
2
+
3
+ {{description}}
4
+
5
+ > Exotic / Self-Evolving harness · domain: `exotic/self-evolution`. Generated with [create-agent-harness](https://github.com/ruvnet/agent-harness-generator).
6
+
7
+ ## Behavioral rules
8
+
9
+ - Use the harness's MCP tools (`mcp__{{name}}__*`) for orchestration
10
+ - Memory and routing are handled by the kernel — you don't need to learn them
11
+ - Defer destructive operations to the user
12
+
13
+ ## Agents
14
+
15
+ | Agent | Tier | Role |
16
+ |---|---|---|
17
+ | `hypothesizer` | opus | Proposes a falsifiable self-improvement. |
18
+ | `experimenter` | opus | Tests the hypothesis safely and records it. |
19
+ | `federator` | sonnet | Shares vetted improvements across instances. |
20
+ ## Skills
21
+
22
+ - `/memory-inspect` — Search and inspect the harness memory namespace (HNSW + emergent-time decay).
23
+ - `/evolve` — Run one safe self-improvement cycle: hypothesize → experiment → record → (maybe) federate.
24
+
25
+ ## Commands
26
+
27
+ - `doctor` — Health-check the harness: kernel load, MCP wiring, memory backend, host adapter.
28
+
29
+ ## Architecture
30
+
31
+ This harness uses [@metaharness/kernel](https://www.npmjs.com/package/@metaharness/kernel) — a Rust-compiled WASM module with a NAPI-RS native fallback — so the same code runs identically on every platform.
@@ -1,29 +1,29 @@
1
- # {{name}}
2
-
3
- {{description}}
4
-
5
- > **Exotic / Self-Evolving** — Hypothesizer → experimenter → federator over a witness-signed evolution log (ADR-014).
6
- >
7
- > Generated with [`create-agent-harness`](https://github.com/ruvnet/agent-harness-generator). Multi-host scaffolding with a kernel that resolves native → wasm → js (js backend in the published beta; see `harness doctor`).
8
-
9
- ## Install
10
-
11
- ```bash
12
- npm install -g {{name}}
13
- {{name}} init
14
- {{name}} doctor
15
- ```
16
-
17
- ## Agents
18
-
19
- | Agent | Role |
20
- |---|---|
21
- | `hypothesizer` | Proposes a falsifiable self-improvement. |
22
- | `experimenter` | Tests the hypothesis safely and records it. |
23
- | `federator` | Shares vetted improvements across instances. |
24
-
25
- This harness ships with the **{{host}}** adapter.
26
-
27
- ## License
28
-
29
- MIT
1
+ # {{name}}
2
+
3
+ {{description}}
4
+
5
+ > **Exotic / Self-Evolving** — Hypothesizer → experimenter → federator over a witness-signed evolution log (ADR-014).
6
+ >
7
+ > Generated with [`create-agent-harness`](https://github.com/ruvnet/agent-harness-generator). Multi-host scaffolding with a kernel that resolves native → wasm → js (js backend in the published beta; see `harness doctor`).
8
+
9
+ ## Install
10
+
11
+ ```bash
12
+ npm install -g {{name}}
13
+ {{name}} init
14
+ {{name}} doctor
15
+ ```
16
+
17
+ ## Agents
18
+
19
+ | Agent | Role |
20
+ |---|---|
21
+ | `hypothesizer` | Proposes a falsifiable self-improvement. |
22
+ | `experimenter` | Tests the hypothesis safely and records it. |
23
+ | `federator` | Shares vetted improvements across instances. |
24
+
25
+ This harness ships with the **{{host}}** adapter.
26
+
27
+ ## License
28
+
29
+ MIT
@@ -1,37 +1,37 @@
1
- // SPDX-License-Identifier: MIT
2
- // Generated by metaharness — a real smoke test for {{name}}.
3
- //
4
- // This is NOT a placeholder: it boots the actual kernel + host adapter the
5
- // harness depends on, so `npm test` fails loudly if @metaharness/kernel or
6
- // @metaharness/host-{{host}} is missing, broken, or version-skewed. It is the
7
- // fastest signal that `npm install` produced a runnable harness.
8
-
9
- import { describe, it, expect } from 'vitest';
10
- import { loadKernel } from '@metaharness/kernel';
11
- import adapter from '@metaharness/host-{{host}}';
12
- import { run } from '../bin/cli.js';
13
-
14
- describe('{{name}} — install smoke test', () => {
15
- it('loads the kernel and reports a version + a known backend', async () => {
16
- const kernel = await loadKernel();
17
- const info = kernel.kernelInfo();
18
- expect(typeof info.version).toBe('string');
19
- expect(info.version.length).toBeGreaterThan(0);
20
- expect(['native', 'wasm', 'js']).toContain(kernel.backend);
21
- });
22
-
23
- it('resolves the host adapter with a name', () => {
24
- expect(typeof adapter.name).toBe('string');
25
- expect(adapter.name.length).toBeGreaterThan(0);
26
- });
27
-
28
- it('the CLI doctor command succeeds (exit 0)', async () => {
29
- const code = await run(['doctor']);
30
- expect(code).toBe(0);
31
- });
32
-
33
- it('an unknown CLI command exits non-zero', async () => {
34
- const code = await run(['definitely-not-a-command']);
35
- expect(code).not.toBe(0);
36
- });
37
- });
1
+ // SPDX-License-Identifier: MIT
2
+ // Generated by metaharness — a real smoke test for {{name}}.
3
+ //
4
+ // This is NOT a placeholder: it boots the actual kernel + host adapter the
5
+ // harness depends on, so `npm test` fails loudly if @metaharness/kernel or
6
+ // @metaharness/host-{{host}} is missing, broken, or version-skewed. It is the
7
+ // fastest signal that `npm install` produced a runnable harness.
8
+
9
+ import { describe, it, expect } from 'vitest';
10
+ import { loadKernel } from '@metaharness/kernel';
11
+ import adapter from '@metaharness/host-{{host}}';
12
+ import { run } from '../bin/cli.js';
13
+
14
+ describe('{{name}} — install smoke test', () => {
15
+ it('loads the kernel and reports a version + a known backend', async () => {
16
+ const kernel = await loadKernel();
17
+ const info = kernel.kernelInfo();
18
+ expect(typeof info.version).toBe('string');
19
+ expect(info.version.length).toBeGreaterThan(0);
20
+ expect(['native', 'wasm', 'js']).toContain(kernel.backend);
21
+ });
22
+
23
+ it('resolves the host adapter with a name', () => {
24
+ expect(typeof adapter.name).toBe('string');
25
+ expect(adapter.name.length).toBeGreaterThan(0);
26
+ });
27
+
28
+ it('the CLI doctor command succeeds (exit 0)', async () => {
29
+ const code = await run(['doctor']);
30
+ expect(code).toBe(0);
31
+ });
32
+
33
+ it('an unknown CLI command exits non-zero', async () => {
34
+ const code = await run(['definitely-not-a-command']);
35
+ expect(code).not.toBe(0);
36
+ });
37
+ });
@@ -1,100 +1,100 @@
1
- #!/usr/bin/env node
2
- // SPDX-License-Identifier: MIT
3
- // Generated by metaharness — the `{{name}}` CLI entry point.
4
- //
5
- // This is plain ESM JavaScript on purpose: it runs as-is via `npx {{name}}`
6
- // with NO build step. `npm run build` (tsc) is only needed if you extend the
7
- // TypeScript in src/. The published package ships this file directly (see the
8
- // "bin" + "files" fields in package.json), so `npx {{name}}` works the moment
9
- // `npm install` has resolved @metaharness/kernel + @metaharness/host-{{host}}.
10
-
11
- import { loadKernel } from '@metaharness/kernel';
12
- import adapter from '@metaharness/host-{{host}}';
13
-
14
- const HARNESS_NAME = '{{name}}';
15
-
16
- /** `{{name}} init` — boot the kernel + host adapter and report status. */
17
- async function init() {
18
- const kernel = await loadKernel();
19
- const info = kernel.kernelInfo();
20
- console.log(`${HARNESS_NAME} — kernel ${info.version} (${kernel.backend})`);
21
- console.log(`Host adapter: ${adapter.name}`);
22
- console.log(`Run \`${HARNESS_NAME} doctor\` to verify the install.`);
23
- return 0;
24
- }
25
-
26
- /** `{{name}} doctor` — verify the install end-to-end (kernel + host resolve). */
27
- async function doctor() {
28
- const kernel = await loadKernel();
29
- const info = kernel.kernelInfo();
30
- const checks = [
31
- ['kernel loads', !!kernel],
32
- ['kernel reports a version', typeof info.version === 'string' && info.version.length > 0],
33
- ['kernel backend is native|wasm|js', ['native', 'wasm', 'js'].includes(kernel.backend)],
34
- ['host adapter has a name', typeof adapter?.name === 'string' && adapter.name.length > 0],
35
- ];
36
- let ok = true;
37
- for (const [label, pass] of checks) {
38
- console.log(`${pass ? 'PASS' : 'FAIL'} ${label}`);
39
- if (!pass) ok = false;
40
- }
41
- console.log(
42
- ok
43
- ? `\n${HARNESS_NAME}: all checks passed (kernel ${info.version}, ${kernel.backend} backend, host ${adapter.name})`
44
- : `\n${HARNESS_NAME}: doctor found problems`,
45
- );
46
- return ok ? 0 : 1;
47
- }
48
-
49
- /**
50
- * Dispatch one CLI invocation. Exported (not just run on import) so a test can
51
- * drive it without spawning a subprocess. Returns the intended exit code.
52
- */
53
- export async function run(argv) {
54
- const cmd = argv[0] ?? 'init';
55
- switch (cmd) {
56
- case 'init':
57
- return init();
58
- case 'doctor':
59
- return doctor();
60
- case '--version':
61
- case '-v': {
62
- const kernel = await loadKernel();
63
- console.log(kernel.version());
64
- return 0;
65
- }
66
- case '--help':
67
- case '-h':
68
- console.log(`Usage: ${HARNESS_NAME} <command>\n\n init boot the kernel + host adapter (default)\n doctor verify the install end-to-end\n --version print the kernel version`);
69
- return 0;
70
- default:
71
- console.error(`Unknown command: ${cmd}. Try \`${HARNESS_NAME} --help\`.`);
72
- return 2;
73
- }
74
- }
75
-
76
- // CLI guard: execute only when invoked directly (not when imported by a test).
77
- // npm's bin shims pass a NON-normalized argv[1] (e.g. ".../.bin/../<pkg>/bin/cli.js"
78
- // on Windows) and may differ in case, so realpath BOTH sides before comparing —
79
- // a naive string === misses the npx/shim path and the CLI silently no-ops.
80
- import { fileURLToPath } from 'node:url';
81
- import { realpathSync } from 'node:fs';
82
- import { argv } from 'node:process';
83
- const invokedDirectly = (() => {
84
- if (!argv[1]) return false;
85
- try {
86
- const a = realpathSync(argv[1]);
87
- const b = realpathSync(fileURLToPath(import.meta.url));
88
- return process.platform === 'win32' ? a.toLowerCase() === b.toLowerCase() : a === b;
89
- } catch {
90
- return false;
91
- }
92
- })();
93
- if (invokedDirectly) {
94
- run(argv.slice(2))
95
- .then((code) => process.exit(code))
96
- .catch((err) => {
97
- console.error(err);
98
- process.exit(1);
99
- });
100
- }
1
+ #!/usr/bin/env node
2
+ // SPDX-License-Identifier: MIT
3
+ // Generated by metaharness — the `{{name}}` CLI entry point.
4
+ //
5
+ // This is plain ESM JavaScript on purpose: it runs as-is via `npx {{name}}`
6
+ // with NO build step. `npm run build` (tsc) is only needed if you extend the
7
+ // TypeScript in src/. The published package ships this file directly (see the
8
+ // "bin" + "files" fields in package.json), so `npx {{name}}` works the moment
9
+ // `npm install` has resolved @metaharness/kernel + @metaharness/host-{{host}}.
10
+
11
+ import { loadKernel } from '@metaharness/kernel';
12
+ import adapter from '@metaharness/host-{{host}}';
13
+
14
+ const HARNESS_NAME = '{{name}}';
15
+
16
+ /** `{{name}} init` — boot the kernel + host adapter and report status. */
17
+ async function init() {
18
+ const kernel = await loadKernel();
19
+ const info = kernel.kernelInfo();
20
+ console.log(`${HARNESS_NAME} — kernel ${info.version} (${kernel.backend})`);
21
+ console.log(`Host adapter: ${adapter.name}`);
22
+ console.log(`Run \`${HARNESS_NAME} doctor\` to verify the install.`);
23
+ return 0;
24
+ }
25
+
26
+ /** `{{name}} doctor` — verify the install end-to-end (kernel + host resolve). */
27
+ async function doctor() {
28
+ const kernel = await loadKernel();
29
+ const info = kernel.kernelInfo();
30
+ const checks = [
31
+ ['kernel loads', !!kernel],
32
+ ['kernel reports a version', typeof info.version === 'string' && info.version.length > 0],
33
+ ['kernel backend is native|wasm|js', ['native', 'wasm', 'js'].includes(kernel.backend)],
34
+ ['host adapter has a name', typeof adapter?.name === 'string' && adapter.name.length > 0],
35
+ ];
36
+ let ok = true;
37
+ for (const [label, pass] of checks) {
38
+ console.log(`${pass ? 'PASS' : 'FAIL'} ${label}`);
39
+ if (!pass) ok = false;
40
+ }
41
+ console.log(
42
+ ok
43
+ ? `\n${HARNESS_NAME}: all checks passed (kernel ${info.version}, ${kernel.backend} backend, host ${adapter.name})`
44
+ : `\n${HARNESS_NAME}: doctor found problems`,
45
+ );
46
+ return ok ? 0 : 1;
47
+ }
48
+
49
+ /**
50
+ * Dispatch one CLI invocation. Exported (not just run on import) so a test can
51
+ * drive it without spawning a subprocess. Returns the intended exit code.
52
+ */
53
+ export async function run(argv) {
54
+ const cmd = argv[0] ?? 'init';
55
+ switch (cmd) {
56
+ case 'init':
57
+ return init();
58
+ case 'doctor':
59
+ return doctor();
60
+ case '--version':
61
+ case '-v': {
62
+ const kernel = await loadKernel();
63
+ console.log(kernel.version());
64
+ return 0;
65
+ }
66
+ case '--help':
67
+ case '-h':
68
+ console.log(`Usage: ${HARNESS_NAME} <command>\n\n init boot the kernel + host adapter (default)\n doctor verify the install end-to-end\n --version print the kernel version`);
69
+ return 0;
70
+ default:
71
+ console.error(`Unknown command: ${cmd}. Try \`${HARNESS_NAME} --help\`.`);
72
+ return 2;
73
+ }
74
+ }
75
+
76
+ // CLI guard: execute only when invoked directly (not when imported by a test).
77
+ // npm's bin shims pass a NON-normalized argv[1] (e.g. ".../.bin/../<pkg>/bin/cli.js"
78
+ // on Windows) and may differ in case, so realpath BOTH sides before comparing —
79
+ // a naive string === misses the npx/shim path and the CLI silently no-ops.
80
+ import { fileURLToPath } from 'node:url';
81
+ import { realpathSync } from 'node:fs';
82
+ import { argv } from 'node:process';
83
+ const invokedDirectly = (() => {
84
+ if (!argv[1]) return false;
85
+ try {
86
+ const a = realpathSync(argv[1]);
87
+ const b = realpathSync(fileURLToPath(import.meta.url));
88
+ return process.platform === 'win32' ? a.toLowerCase() === b.toLowerCase() : a === b;
89
+ } catch {
90
+ return false;
91
+ }
92
+ })();
93
+ if (invokedDirectly) {
94
+ run(argv.slice(2))
95
+ .then((code) => process.exit(code))
96
+ .catch((err) => {
97
+ console.error(err);
98
+ process.exit(1);
99
+ });
100
+ }