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.
- package/LICENSE +21 -21
- package/README.md +111 -74
- package/dist/bin.js +14 -2
- package/dist/bin.js.map +1 -1
- package/dist/completions-cmd.js +94 -94
- package/dist/diag.d.ts +8 -0
- package/dist/diag.d.ts.map +1 -1
- package/dist/diag.js +79 -15
- package/dist/diag.js.map +1 -1
- package/dist/export-config.d.ts.map +1 -1
- package/dist/export-config.js +3 -12
- package/dist/export-config.js.map +1 -1
- package/dist/genome.d.ts.map +1 -1
- package/dist/genome.js +3 -12
- package/dist/genome.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +101 -75
- package/dist/index.js.map +1 -1
- package/dist/meta-proxy.d.ts +57 -0
- package/dist/meta-proxy.d.ts.map +1 -0
- package/dist/meta-proxy.js +325 -0
- package/dist/meta-proxy.js.map +1 -0
- package/dist/publish-cmd.d.ts.map +1 -1
- package/dist/publish-cmd.js +5 -0
- package/dist/publish-cmd.js.map +1 -1
- package/dist/publish.d.ts +6 -0
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +9 -0
- package/dist/publish.js.map +1 -1
- package/dist/redact.d.ts +25 -0
- package/dist/redact.d.ts.map +1 -0
- package/dist/redact.js +62 -0
- package/dist/redact.js.map +1 -0
- package/dist/score.d.ts +9 -0
- package/dist/score.d.ts.map +1 -1
- package/dist/score.js +20 -14
- package/dist/score.js.map +1 -1
- package/dist/threat-model.d.ts.map +1 -1
- package/dist/threat-model.js +3 -12
- package/dist/threat-model.js.map +1 -1
- package/dist/with-wasm.js +43 -43
- package/dist/witness-client.d.ts +7 -0
- package/dist/witness-client.d.ts.map +1 -1
- package/dist/witness-client.js +5 -1
- package/dist/witness-client.js.map +1 -1
- package/genomes/README.md +23 -23
- package/genomes/genome-promoted-cand6-edit-by-midpoint.json +26 -26
- package/package.json +126 -125
- package/templates/catalog.def.mjs +542 -542
- package/templates/catalog.json +1274 -1274
- package/templates/minimal/.claude/settings.json.tmpl +18 -18
- package/templates/minimal/.claude-plugin/plugin.json.tmpl +13 -13
- package/templates/minimal/CLAUDE.md.tmpl +26 -23
- package/templates/minimal/README.md.tmpl +20 -20
- package/templates/minimal/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/minimal/bin/cli.js.tmpl +100 -100
- package/templates/minimal/manifest.json +20 -20
- package/templates/minimal/package.json.tmpl +31 -31
- package/templates/minimal/src/init.ts.tmpl +21 -21
- package/templates/minimal/tsconfig.json.tmpl +19 -19
- package/templates/minimal/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_advertising/.claude/commands/doctor.md.tmpl +12 -12
- package/templates/vertical_advertising/.claude/settings.json.tmpl +33 -33
- package/templates/vertical_advertising/.claude/skills/media-plan/SKILL.md.tmpl +13 -13
- package/templates/vertical_advertising/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_advertising/CLAUDE.md.tmpl +30 -30
- package/templates/vertical_advertising/README.md.tmpl +29 -29
- package/templates/vertical_advertising/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_advertising/bin/cli.js.tmpl +100 -100
- package/templates/vertical_advertising/manifest.json +101 -101
- package/templates/vertical_advertising/package.json.tmpl +30 -30
- package/templates/vertical_advertising/src/agents/copywriter.ts.tmpl +7 -7
- package/templates/vertical_advertising/src/agents/media-planner.ts.tmpl +7 -7
- package/templates/vertical_advertising/src/agents/performance-analyst.ts.tmpl +7 -7
- package/templates/vertical_advertising/src/init.ts.tmpl +21 -21
- package/templates/vertical_advertising/tsconfig.json.tmpl +19 -19
- package/templates/vertical_advertising/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_agentics/.claude/commands/doctor.md.tmpl +12 -12
- package/templates/vertical_agentics/.claude/settings.json.tmpl +33 -33
- package/templates/vertical_agentics/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
- package/templates/vertical_agentics/.claude/skills/run-swarm/SKILL.md.tmpl +14 -14
- package/templates/vertical_agentics/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_agentics/CLAUDE.md.tmpl +32 -32
- package/templates/vertical_agentics/README.md.tmpl +30 -30
- package/templates/vertical_agentics/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_agentics/bin/cli.js.tmpl +100 -100
- package/templates/vertical_agentics/manifest.json +111 -111
- package/templates/vertical_agentics/package.json.tmpl +30 -30
- package/templates/vertical_agentics/src/agents/critic.ts.tmpl +7 -7
- package/templates/vertical_agentics/src/agents/orchestrator.ts.tmpl +7 -7
- package/templates/vertical_agentics/src/agents/planner.ts.tmpl +7 -7
- package/templates/vertical_agentics/src/agents/worker.ts.tmpl +7 -7
- package/templates/vertical_agentics/src/init.ts.tmpl +21 -21
- package/templates/vertical_agentics/tsconfig.json.tmpl +19 -19
- package/templates/vertical_agentics/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_ai/.claude/commands/doctor.md.tmpl +12 -12
- package/templates/vertical_ai/.claude/settings.json.tmpl +35 -35
- package/templates/vertical_ai/.claude/skills/eval-report/SKILL.md.tmpl +13 -13
- package/templates/vertical_ai/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_ai/CLAUDE.md.tmpl +31 -31
- package/templates/vertical_ai/README.md.tmpl +30 -30
- package/templates/vertical_ai/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_ai/bin/cli.js.tmpl +100 -100
- package/templates/vertical_ai/manifest.json +106 -106
- package/templates/vertical_ai/package.json.tmpl +30 -30
- package/templates/vertical_ai/src/agents/data-curator.ts.tmpl +7 -7
- package/templates/vertical_ai/src/agents/deployer.ts.tmpl +7 -7
- package/templates/vertical_ai/src/agents/evaluator.ts.tmpl +7 -7
- package/templates/vertical_ai/src/agents/trainer.ts.tmpl +7 -7
- package/templates/vertical_ai/src/init.ts.tmpl +21 -21
- package/templates/vertical_ai/tsconfig.json.tmpl +19 -19
- package/templates/vertical_ai/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_business/.claude/commands/doctor.md.tmpl +12 -12
- package/templates/vertical_business/.claude/settings.json.tmpl +33 -33
- package/templates/vertical_business/.claude/skills/quarterly-plan/SKILL.md.tmpl +13 -13
- package/templates/vertical_business/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_business/CLAUDE.md.tmpl +30 -30
- package/templates/vertical_business/README.md.tmpl +29 -29
- package/templates/vertical_business/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_business/bin/cli.js.tmpl +100 -100
- package/templates/vertical_business/manifest.json +101 -101
- package/templates/vertical_business/package.json.tmpl +30 -30
- package/templates/vertical_business/src/agents/analyst.ts.tmpl +7 -7
- package/templates/vertical_business/src/agents/ops-coordinator.ts.tmpl +7 -7
- package/templates/vertical_business/src/agents/strategist.ts.tmpl +7 -7
- package/templates/vertical_business/src/init.ts.tmpl +21 -21
- package/templates/vertical_business/tsconfig.json.tmpl +19 -19
- package/templates/vertical_business/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_coding/.claude/commands/doctor.md.tmpl +12 -12
- package/templates/vertical_coding/.claude/commands/review-diff.md.tmpl +10 -10
- package/templates/vertical_coding/.claude/settings.json.tmpl +40 -40
- package/templates/vertical_coding/.claude/skills/plan-change/SKILL.md.tmpl +15 -15
- package/templates/vertical_coding/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_coding/CLAUDE.md.tmpl +32 -32
- package/templates/vertical_coding/README.md.tmpl +30 -30
- package/templates/vertical_coding/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_coding/bin/cli.js.tmpl +100 -100
- package/templates/vertical_coding/manifest.json +111 -111
- package/templates/vertical_coding/package.json.tmpl +30 -30
- package/templates/vertical_coding/src/agents/architect.ts.tmpl +7 -7
- package/templates/vertical_coding/src/agents/implementer.ts.tmpl +7 -7
- package/templates/vertical_coding/src/agents/reviewer.ts.tmpl +7 -7
- package/templates/vertical_coding/src/agents/test-writer.ts.tmpl +7 -7
- package/templates/vertical_coding/src/init.ts.tmpl +21 -21
- package/templates/vertical_coding/tsconfig.json.tmpl +19 -19
- package/templates/vertical_coding/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_crm/.claude/commands/doctor.md.tmpl +12 -12
- package/templates/vertical_crm/.claude/settings.json.tmpl +33 -33
- package/templates/vertical_crm/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
- package/templates/vertical_crm/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_crm/CLAUDE.md.tmpl +30 -30
- package/templates/vertical_crm/README.md.tmpl +29 -29
- package/templates/vertical_crm/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_crm/bin/cli.js.tmpl +100 -100
- package/templates/vertical_crm/manifest.json +101 -101
- package/templates/vertical_crm/package.json.tmpl +30 -30
- package/templates/vertical_crm/src/agents/account-manager.ts.tmpl +7 -7
- package/templates/vertical_crm/src/agents/churn-watcher.ts.tmpl +7 -7
- package/templates/vertical_crm/src/agents/lead-qualifier.ts.tmpl +7 -7
- package/templates/vertical_crm/src/init.ts.tmpl +21 -21
- package/templates/vertical_crm/tsconfig.json.tmpl +19 -19
- package/templates/vertical_crm/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_devops/.claude/settings.json.tmpl +36 -36
- package/templates/vertical_devops/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_devops/CLAUDE.md.tmpl +34 -34
- package/templates/vertical_devops/README.md.tmpl +27 -27
- package/templates/vertical_devops/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_devops/bin/cli.js.tmpl +100 -100
- package/templates/vertical_devops/manifest.json +100 -100
- package/templates/vertical_devops/package.json.tmpl +27 -27
- package/templates/vertical_devops/runbooks/README.md.tmpl +32 -32
- package/templates/vertical_devops/src/agents/escalator.ts.tmpl +19 -19
- package/templates/vertical_devops/src/agents/postmortem.ts.tmpl +23 -23
- package/templates/vertical_devops/src/agents/responder.ts.tmpl +14 -14
- package/templates/vertical_devops/src/agents/runbook-runner.ts.tmpl +17 -17
- package/templates/vertical_devops/src/init.ts.tmpl +23 -23
- package/templates/vertical_devops/tsconfig.json.tmpl +19 -19
- package/templates/vertical_devops/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_education/.claude/commands/doctor.md.tmpl +12 -12
- package/templates/vertical_education/.claude/commands/mastery-report.md.tmpl +12 -12
- package/templates/vertical_education/.claude/settings.json.tmpl +45 -45
- package/templates/vertical_education/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
- package/templates/vertical_education/.claude/skills/teach-next/SKILL.md.tmpl +16 -16
- package/templates/vertical_education/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_education/CLAUDE.md.tmpl +33 -33
- package/templates/vertical_education/README.md.tmpl +30 -30
- package/templates/vertical_education/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_education/bin/cli.js.tmpl +100 -100
- package/templates/vertical_education/manifest.json +116 -116
- package/templates/vertical_education/package.json.tmpl +30 -30
- package/templates/vertical_education/src/agents/explainer.ts.tmpl +7 -7
- package/templates/vertical_education/src/agents/grader.ts.tmpl +7 -7
- package/templates/vertical_education/src/agents/quiz-master.ts.tmpl +7 -7
- package/templates/vertical_education/src/agents/tutor.ts.tmpl +7 -7
- package/templates/vertical_education/src/init.ts.tmpl +21 -21
- package/templates/vertical_education/tsconfig.json.tmpl +19 -19
- package/templates/vertical_education/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_exotic/.claude/commands/doctor.md.tmpl +12 -12
- package/templates/vertical_exotic/.claude/settings.json.tmpl +44 -44
- package/templates/vertical_exotic/.claude/skills/evolve/SKILL.md.tmpl +14 -14
- package/templates/vertical_exotic/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
- package/templates/vertical_exotic/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_exotic/CLAUDE.md.tmpl +31 -31
- package/templates/vertical_exotic/README.md.tmpl +29 -29
- package/templates/vertical_exotic/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_exotic/bin/cli.js.tmpl +100 -100
- package/templates/vertical_exotic/manifest.json +106 -106
- package/templates/vertical_exotic/package.json.tmpl +30 -30
- package/templates/vertical_exotic/src/agents/experimenter.ts.tmpl +7 -7
- package/templates/vertical_exotic/src/agents/federator.ts.tmpl +7 -7
- package/templates/vertical_exotic/src/agents/hypothesizer.ts.tmpl +7 -7
- package/templates/vertical_exotic/src/init.ts.tmpl +21 -21
- package/templates/vertical_exotic/tsconfig.json.tmpl +19 -19
- package/templates/vertical_exotic/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_gaming/.claude/commands/design-doc-diff.md.tmpl +13 -13
- package/templates/vertical_gaming/.claude/commands/doctor.md.tmpl +12 -12
- package/templates/vertical_gaming/.claude/settings.json.tmpl +45 -45
- package/templates/vertical_gaming/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
- package/templates/vertical_gaming/.claude/skills/playtest-recap/SKILL.md.tmpl +16 -16
- package/templates/vertical_gaming/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_gaming/CLAUDE.md.tmpl +33 -33
- package/templates/vertical_gaming/README.md.tmpl +30 -30
- package/templates/vertical_gaming/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_gaming/bin/cli.js.tmpl +100 -100
- package/templates/vertical_gaming/manifest.json +116 -116
- package/templates/vertical_gaming/package.json.tmpl +30 -30
- package/templates/vertical_gaming/src/agents/balance-critic.ts.tmpl +7 -7
- package/templates/vertical_gaming/src/agents/economy-modeler.ts.tmpl +7 -7
- package/templates/vertical_gaming/src/agents/narrative-keeper.ts.tmpl +7 -7
- package/templates/vertical_gaming/src/agents/playtest-reader.ts.tmpl +7 -7
- package/templates/vertical_gaming/src/init.ts.tmpl +21 -21
- package/templates/vertical_gaming/tsconfig.json.tmpl +19 -19
- package/templates/vertical_gaming/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_health/.claude/commands/doctor.md.tmpl +12 -12
- package/templates/vertical_health/.claude/settings.json.tmpl +33 -33
- package/templates/vertical_health/.claude/skills/wellness-intake/SKILL.md.tmpl +15 -15
- package/templates/vertical_health/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_health/CLAUDE.md.tmpl +30 -30
- package/templates/vertical_health/README.md.tmpl +29 -29
- package/templates/vertical_health/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_health/bin/cli.js.tmpl +100 -100
- package/templates/vertical_health/manifest.json +101 -101
- package/templates/vertical_health/package.json.tmpl +30 -30
- package/templates/vertical_health/src/agents/care-coordinator.ts.tmpl +7 -7
- package/templates/vertical_health/src/agents/intake.ts.tmpl +7 -7
- package/templates/vertical_health/src/agents/triage.ts.tmpl +7 -7
- package/templates/vertical_health/src/init.ts.tmpl +21 -21
- package/templates/vertical_health/tsconfig.json.tmpl +19 -19
- package/templates/vertical_health/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_legal/.claude/settings.json.tmpl +10 -10
- package/templates/vertical_legal/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_legal/CLAUDE.md.tmpl +24 -24
- package/templates/vertical_legal/README.md.tmpl +21 -21
- package/templates/vertical_legal/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_legal/bin/cli.js.tmpl +100 -100
- package/templates/vertical_legal/manifest.json +90 -90
- package/templates/vertical_legal/package.json.tmpl +14 -14
- package/templates/vertical_legal/src/agents/citation-checker.ts.tmpl +7 -7
- package/templates/vertical_legal/src/agents/redline.ts.tmpl +7 -7
- package/templates/vertical_legal/src/agents/risk-rater.ts.tmpl +8 -8
- package/templates/vertical_legal/src/init.ts.tmpl +13 -13
- package/templates/vertical_legal/tsconfig.json.tmpl +19 -19
- package/templates/vertical_legal/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_marketing/.claude/commands/doctor.md.tmpl +12 -12
- package/templates/vertical_marketing/.claude/settings.json.tmpl +33 -33
- package/templates/vertical_marketing/.claude/skills/campaign-brief/SKILL.md.tmpl +13 -13
- package/templates/vertical_marketing/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_marketing/CLAUDE.md.tmpl +30 -30
- package/templates/vertical_marketing/README.md.tmpl +29 -29
- package/templates/vertical_marketing/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_marketing/bin/cli.js.tmpl +100 -100
- package/templates/vertical_marketing/manifest.json +101 -101
- package/templates/vertical_marketing/package.json.tmpl +30 -30
- package/templates/vertical_marketing/src/agents/content-creator.ts.tmpl +7 -7
- package/templates/vertical_marketing/src/agents/seo-analyst.ts.tmpl +7 -7
- package/templates/vertical_marketing/src/agents/strategist.ts.tmpl +7 -7
- package/templates/vertical_marketing/src/init.ts.tmpl +21 -21
- package/templates/vertical_marketing/tsconfig.json.tmpl +19 -19
- package/templates/vertical_marketing/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_repo-maintainer/.claude/commands/doctor.md.tmpl +12 -12
- package/templates/vertical_repo-maintainer/.claude/commands/release-check.md.tmpl +13 -13
- package/templates/vertical_repo-maintainer/.claude/commands/repo-triage.md.tmpl +16 -16
- package/templates/vertical_repo-maintainer/.claude/settings.json.tmpl +44 -44
- package/templates/vertical_repo-maintainer/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
- package/templates/vertical_repo-maintainer/.claude/skills/plan-change/SKILL.md.tmpl +15 -15
- package/templates/vertical_repo-maintainer/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_repo-maintainer/CLAUDE.md.tmpl +34 -34
- package/templates/vertical_repo-maintainer/README.md.tmpl +30 -30
- package/templates/vertical_repo-maintainer/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_repo-maintainer/bin/cli.js.tmpl +100 -100
- package/templates/vertical_repo-maintainer/manifest.json +121 -121
- package/templates/vertical_repo-maintainer/package.json.tmpl +30 -30
- package/templates/vertical_repo-maintainer/src/agents/benchmarker.ts.tmpl +7 -7
- package/templates/vertical_repo-maintainer/src/agents/maintainer.ts.tmpl +7 -7
- package/templates/vertical_repo-maintainer/src/agents/release.ts.tmpl +7 -7
- package/templates/vertical_repo-maintainer/src/agents/security.ts.tmpl +7 -7
- package/templates/vertical_repo-maintainer/src/init.ts.tmpl +21 -21
- package/templates/vertical_repo-maintainer/tsconfig.json.tmpl +19 -19
- package/templates/vertical_repo-maintainer/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_research/.claude/settings.json.tmpl +9 -9
- package/templates/vertical_research/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_research/CLAUDE.md.tmpl +33 -33
- package/templates/vertical_research/README.md.tmpl +17 -17
- package/templates/vertical_research/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_research/bin/cli.js.tmpl +100 -100
- package/templates/vertical_research/manifest.json +105 -105
- package/templates/vertical_research/package.json.tmpl +14 -14
- package/templates/vertical_research/src/agents/citer.ts.tmpl +8 -8
- package/templates/vertical_research/src/agents/fact-checker.ts.tmpl +8 -8
- package/templates/vertical_research/src/agents/scout.ts.tmpl +7 -7
- package/templates/vertical_research/src/agents/source-grader.ts.tmpl +10 -10
- package/templates/vertical_research/src/agents/synthesizer.ts.tmpl +8 -8
- package/templates/vertical_research/src/agents/web-searcher.ts.tmpl +6 -6
- package/templates/vertical_research/src/init.ts.tmpl +13 -13
- package/templates/vertical_research/tsconfig.json.tmpl +19 -19
- package/templates/vertical_research/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_ruview/.claude/commands/doctor.md.tmpl +12 -12
- package/templates/vertical_ruview/.claude/settings.json.tmpl +33 -33
- package/templates/vertical_ruview/.claude/skills/index-and-ask/SKILL.md.tmpl +15 -15
- package/templates/vertical_ruview/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
- package/templates/vertical_ruview/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_ruview/CLAUDE.md.tmpl +31 -31
- package/templates/vertical_ruview/README.md.tmpl +29 -29
- package/templates/vertical_ruview/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_ruview/bin/cli.js.tmpl +100 -100
- package/templates/vertical_ruview/manifest.json +106 -106
- package/templates/vertical_ruview/package.json.tmpl +30 -30
- package/templates/vertical_ruview/src/agents/indexer.ts.tmpl +7 -7
- package/templates/vertical_ruview/src/agents/retriever.ts.tmpl +7 -7
- package/templates/vertical_ruview/src/agents/reviewer.ts.tmpl +7 -7
- package/templates/vertical_ruview/src/init.ts.tmpl +21 -21
- package/templates/vertical_ruview/tsconfig.json.tmpl +19 -19
- package/templates/vertical_ruview/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_sales/.claude/commands/doctor.md.tmpl +12 -12
- package/templates/vertical_sales/.claude/commands/pipeline-report.md.tmpl +13 -13
- package/templates/vertical_sales/.claude/settings.json.tmpl +45 -45
- package/templates/vertical_sales/.claude/skills/memory-inspect/SKILL.md.tmpl +14 -14
- package/templates/vertical_sales/.claude/skills/qualify-lead/SKILL.md.tmpl +15 -15
- package/templates/vertical_sales/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_sales/CLAUDE.md.tmpl +33 -33
- package/templates/vertical_sales/README.md.tmpl +30 -30
- package/templates/vertical_sales/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_sales/bin/cli.js.tmpl +100 -100
- package/templates/vertical_sales/manifest.json +116 -116
- package/templates/vertical_sales/package.json.tmpl +30 -30
- package/templates/vertical_sales/src/agents/closer.ts.tmpl +7 -7
- package/templates/vertical_sales/src/agents/demo-coach.ts.tmpl +7 -7
- package/templates/vertical_sales/src/agents/prospector.ts.tmpl +7 -7
- package/templates/vertical_sales/src/agents/qualifier.ts.tmpl +7 -7
- package/templates/vertical_sales/src/init.ts.tmpl +21 -21
- package/templates/vertical_sales/tsconfig.json.tmpl +19 -19
- package/templates/vertical_sales/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_support/.claude/settings.json.tmpl +25 -25
- package/templates/vertical_support/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_support/CLAUDE.md.tmpl +34 -34
- package/templates/vertical_support/README.md.tmpl +16 -16
- package/templates/vertical_support/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_support/bin/cli.js.tmpl +100 -100
- package/templates/vertical_support/kb/README.md.tmpl +23 -23
- package/templates/vertical_support/manifest.json +100 -100
- package/templates/vertical_support/package.json.tmpl +25 -25
- package/templates/vertical_support/src/agents/escalator.ts.tmpl +6 -6
- package/templates/vertical_support/src/agents/kb-searcher.ts.tmpl +6 -6
- package/templates/vertical_support/src/agents/responder.ts.tmpl +7 -7
- package/templates/vertical_support/src/agents/triager.ts.tmpl +6 -6
- package/templates/vertical_support/src/init.ts.tmpl +16 -16
- package/templates/vertical_support/tsconfig.json.tmpl +19 -19
- package/templates/vertical_support/vitest.config.ts.tmpl +23 -23
- package/templates/vertical_trading/.claude/settings.json.tmpl +20 -20
- package/templates/vertical_trading/.claude-plugin/plugin.json.tmpl +23 -23
- package/templates/vertical_trading/CLAUDE.md.tmpl +24 -24
- package/templates/vertical_trading/README.md.tmpl +17 -17
- package/templates/vertical_trading/__tests__/smoke.test.ts.tmpl +37 -37
- package/templates/vertical_trading/bin/cli.js.tmpl +100 -100
- package/templates/vertical_trading/manifest.json +100 -100
- package/templates/vertical_trading/package.json.tmpl +14 -14
- package/templates/vertical_trading/src/agents/executor.ts.tmpl +8 -8
- package/templates/vertical_trading/src/agents/market-watcher.ts.tmpl +7 -7
- package/templates/vertical_trading/src/agents/postmortem.ts.tmpl +8 -8
- package/templates/vertical_trading/src/agents/risk-checker.ts.tmpl +11 -11
- package/templates/vertical_trading/src/agents/signal-gen.ts.tmpl +8 -8
- package/templates/vertical_trading/src/init.ts.tmpl +20 -20
- package/templates/vertical_trading/tsconfig.json.tmpl +19 -19
- package/templates/vertical_trading/vitest.config.ts.tmpl +23 -23
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "Health-check the harness: kernel load, MCP wiring, memory backend, host adapter."
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
Run a full health check and print a PASS/FAIL table.
|
|
6
|
-
|
|
7
|
-
1. Kernel loads and `kernelInfo().version` matches package.json.
|
|
8
|
-
2. The MCP server starts and lists its tools.
|
|
9
|
-
3. The memory backend is reachable.
|
|
10
|
-
4. The configured host adapter is present.
|
|
11
|
-
|
|
12
|
-
Exit non-zero if any check fails.
|
|
1
|
+
---
|
|
2
|
+
description: "Health-check the harness: kernel load, MCP wiring, memory backend, host adapter."
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Run a full health check and print a PASS/FAIL table.
|
|
6
|
+
|
|
7
|
+
1. Kernel loads and `kernelInfo().version` matches package.json.
|
|
8
|
+
2. The MCP server starts and lists its tools.
|
|
9
|
+
3. The memory backend is reachable.
|
|
10
|
+
4. The configured host adapter is present.
|
|
11
|
+
|
|
12
|
+
Exit non-zero if any check fails.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Summarise the current pipeline by stage + the one bottleneck to address this week.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
Generate the weekly pipeline report.
|
|
6
|
-
|
|
7
|
-
1. Read the open opportunities from CRM memory.
|
|
8
|
-
2. Group by stage (qualified / demo / negotiation / closed-won / closed-lost).
|
|
9
|
-
3. Compute the conversion rate per stage from the last 90 days.
|
|
10
|
-
4. Identify the ONE stage with the worst conversion + write a one-paragraph hypothesis for why.
|
|
11
|
-
5. End with the ONE action for the team this week — not a list of 10.
|
|
12
|
-
|
|
13
|
-
Reports that say "everything is fine" or "ten things to fix" do not change behaviour. Pick the bottleneck.
|
|
1
|
+
---
|
|
2
|
+
description: Summarise the current pipeline by stage + the one bottleneck to address this week.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Generate the weekly pipeline report.
|
|
6
|
+
|
|
7
|
+
1. Read the open opportunities from CRM memory.
|
|
8
|
+
2. Group by stage (qualified / demo / negotiation / closed-won / closed-lost).
|
|
9
|
+
3. Compute the conversion rate per stage from the last 90 days.
|
|
10
|
+
4. Identify the ONE stage with the worst conversion + write a one-paragraph hypothesis for why.
|
|
11
|
+
5. End with the ONE action for the team this week — not a list of 10.
|
|
12
|
+
|
|
13
|
+
Reports that say "everything is fine" or "ten things to fix" do not change behaviour. Pick the bottleneck.
|
|
@@ -1,45 +1,45 @@
|
|
|
1
|
-
{
|
|
2
|
-
"permissions": {
|
|
3
|
-
"allow": [
|
|
4
|
-
"Bash(npx {{name}}*)",
|
|
5
|
-
"mcp__{{name}}__*",
|
|
6
|
-
"mcp__crm_store__*",
|
|
7
|
-
"mcp__pricing_book__*"
|
|
8
|
-
],
|
|
9
|
-
"deny": [
|
|
10
|
-
"Read(./.env)",
|
|
11
|
-
"Read(./.env.*)",
|
|
12
|
-
"Bash(rm -rf*)",
|
|
13
|
-
"Bash(git push*)"
|
|
14
|
-
]
|
|
15
|
-
},
|
|
16
|
-
"mcpServers": {
|
|
17
|
-
"{{name}}": {
|
|
18
|
-
"command": "npx",
|
|
19
|
-
"args": [
|
|
20
|
-
"-y",
|
|
21
|
-
"{{name}}@latest",
|
|
22
|
-
"mcp",
|
|
23
|
-
"start"
|
|
24
|
-
]
|
|
25
|
-
},
|
|
26
|
-
"crm_store": {
|
|
27
|
-
"command": "npx",
|
|
28
|
-
"args": [
|
|
29
|
-
"-y",
|
|
30
|
-
"{{name}}@latest",
|
|
31
|
-
"mcp",
|
|
32
|
-
"crm"
|
|
33
|
-
]
|
|
34
|
-
},
|
|
35
|
-
"pricing_book": {
|
|
36
|
-
"command": "npx",
|
|
37
|
-
"args": [
|
|
38
|
-
"-y",
|
|
39
|
-
"{{name}}@latest",
|
|
40
|
-
"mcp",
|
|
41
|
-
"pricing"
|
|
42
|
-
]
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(npx {{name}}*)",
|
|
5
|
+
"mcp__{{name}}__*",
|
|
6
|
+
"mcp__crm_store__*",
|
|
7
|
+
"mcp__pricing_book__*"
|
|
8
|
+
],
|
|
9
|
+
"deny": [
|
|
10
|
+
"Read(./.env)",
|
|
11
|
+
"Read(./.env.*)",
|
|
12
|
+
"Bash(rm -rf*)",
|
|
13
|
+
"Bash(git push*)"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
"mcpServers": {
|
|
17
|
+
"{{name}}": {
|
|
18
|
+
"command": "npx",
|
|
19
|
+
"args": [
|
|
20
|
+
"-y",
|
|
21
|
+
"{{name}}@latest",
|
|
22
|
+
"mcp",
|
|
23
|
+
"start"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"crm_store": {
|
|
27
|
+
"command": "npx",
|
|
28
|
+
"args": [
|
|
29
|
+
"-y",
|
|
30
|
+
"{{name}}@latest",
|
|
31
|
+
"mcp",
|
|
32
|
+
"crm"
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
"pricing_book": {
|
|
36
|
+
"command": "npx",
|
|
37
|
+
"args": [
|
|
38
|
+
"-y",
|
|
39
|
+
"{{name}}@latest",
|
|
40
|
+
"mcp",
|
|
41
|
+
"pricing"
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -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,15 +1,15 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: qualify-lead
|
|
3
|
-
description: "Run one qualification pass on a lead: BANT/MEDDPICC score + missing-fact list + go/no-go."
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# qualify-lead
|
|
7
|
-
|
|
8
|
-
Run one lead qualification pass.
|
|
9
|
-
|
|
10
|
-
1. Pull the lead brief + framework rubric from memory.
|
|
11
|
-
2. Score budget / authority / need / timeline; mark the missing fact for each axis.
|
|
12
|
-
3. Make a go/no-go call with one-line rationale.
|
|
13
|
-
4. If go: hand the brief to demo-coach. If no-go: write a polite disqualification note + the trigger that would re-qualify them.
|
|
14
|
-
|
|
15
|
-
Bias toward disqualification — running a no-fit lead through the pipeline costs more than declining it.
|
|
1
|
+
---
|
|
2
|
+
name: qualify-lead
|
|
3
|
+
description: "Run one qualification pass on a lead: BANT/MEDDPICC score + missing-fact list + go/no-go."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# qualify-lead
|
|
7
|
+
|
|
8
|
+
Run one lead qualification pass.
|
|
9
|
+
|
|
10
|
+
1. Pull the lead brief + framework rubric from memory.
|
|
11
|
+
2. Score budget / authority / need / timeline; mark the missing fact for each axis.
|
|
12
|
+
3. Make a go/no-go call with one-line rationale.
|
|
13
|
+
4. If go: hand the brief to demo-coach. If no-go: write a polite disqualification note + the trigger that would re-qualify them.
|
|
14
|
+
|
|
15
|
+
Bias toward disqualification — running a no-fit lead through the pipeline costs more than declining it.
|
|
@@ -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
|
-
"Customer / Growth",
|
|
14
|
-
"sales"
|
|
15
|
-
],
|
|
16
|
-
"tags": [
|
|
17
|
-
"metaharness",
|
|
18
|
-
"agent-harness",
|
|
19
|
-
"vertical:sales",
|
|
20
|
-
"sales"
|
|
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
|
+
"Customer / Growth",
|
|
14
|
+
"sales"
|
|
15
|
+
],
|
|
16
|
+
"tags": [
|
|
17
|
+
"metaharness",
|
|
18
|
+
"agent-harness",
|
|
19
|
+
"vertical:sales",
|
|
20
|
+
"sales"
|
|
21
|
+
],
|
|
22
|
+
"homepage": "https://github.com/ruvnet/agent-harness-generator"
|
|
23
|
+
}
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
# {{name}}
|
|
2
|
-
|
|
3
|
-
{{description}}
|
|
4
|
-
|
|
5
|
-
> Sales / Pipeline harness · domain: `sales`. 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
|
-
| `prospector` | sonnet | Researches accounts + identifies buying signals. |
|
|
18
|
-
| `qualifier` | haiku | Fast triage with a hidden-pain framework. |
|
|
19
|
-
| `demo-coach` | sonnet | Generates personalised demos from the prospect brief. |
|
|
20
|
-
| `closer` | opus | Handles objections + negotiates honestly. |
|
|
21
|
-
## Skills
|
|
22
|
-
|
|
23
|
-
- `/memory-inspect` — Search and inspect the harness memory namespace (HNSW + emergent-time decay).
|
|
24
|
-
- `/qualify-lead` — Run one qualification pass on a lead: BANT/MEDDPICC score + missing-fact list + go/no-go.
|
|
25
|
-
|
|
26
|
-
## Commands
|
|
27
|
-
|
|
28
|
-
- `doctor` — Health-check the harness: kernel load, MCP wiring, memory backend, host adapter.
|
|
29
|
-
- `pipeline-report` — Summarise the current pipeline by stage + the one bottleneck to address this week.
|
|
30
|
-
|
|
31
|
-
## Architecture
|
|
32
|
-
|
|
33
|
-
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
|
+
> Sales / Pipeline harness · domain: `sales`. 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
|
+
| `prospector` | sonnet | Researches accounts + identifies buying signals. |
|
|
18
|
+
| `qualifier` | haiku | Fast triage with a hidden-pain framework. |
|
|
19
|
+
| `demo-coach` | sonnet | Generates personalised demos from the prospect brief. |
|
|
20
|
+
| `closer` | opus | Handles objections + negotiates honestly. |
|
|
21
|
+
## Skills
|
|
22
|
+
|
|
23
|
+
- `/memory-inspect` — Search and inspect the harness memory namespace (HNSW + emergent-time decay).
|
|
24
|
+
- `/qualify-lead` — Run one qualification pass on a lead: BANT/MEDDPICC score + missing-fact list + go/no-go.
|
|
25
|
+
|
|
26
|
+
## Commands
|
|
27
|
+
|
|
28
|
+
- `doctor` — Health-check the harness: kernel load, MCP wiring, memory backend, host adapter.
|
|
29
|
+
- `pipeline-report` — Summarise the current pipeline by stage + the one bottleneck to address this week.
|
|
30
|
+
|
|
31
|
+
## Architecture
|
|
32
|
+
|
|
33
|
+
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,30 +1,30 @@
|
|
|
1
|
-
# {{name}}
|
|
2
|
-
|
|
3
|
-
{{description}}
|
|
4
|
-
|
|
5
|
-
> **Sales / Pipeline** — Prospect → qualify → demo → close with hidden-pain framework + objection-handling memory.
|
|
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
|
-
| `prospector` | Researches accounts + identifies buying signals. |
|
|
22
|
-
| `qualifier` | Fast triage with a hidden-pain framework. |
|
|
23
|
-
| `demo-coach` | Generates personalised demos from the prospect brief. |
|
|
24
|
-
| `closer` | Handles objections + negotiates honestly. |
|
|
25
|
-
|
|
26
|
-
This harness ships with the **{{host}}** adapter.
|
|
27
|
-
|
|
28
|
-
## License
|
|
29
|
-
|
|
30
|
-
MIT
|
|
1
|
+
# {{name}}
|
|
2
|
+
|
|
3
|
+
{{description}}
|
|
4
|
+
|
|
5
|
+
> **Sales / Pipeline** — Prospect → qualify → demo → close with hidden-pain framework + objection-handling memory.
|
|
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
|
+
| `prospector` | Researches accounts + identifies buying signals. |
|
|
22
|
+
| `qualifier` | Fast triage with a hidden-pain framework. |
|
|
23
|
+
| `demo-coach` | Generates personalised demos from the prospect brief. |
|
|
24
|
+
| `closer` | Handles objections + negotiates honestly. |
|
|
25
|
+
|
|
26
|
+
This harness ships with the **{{host}}** adapter.
|
|
27
|
+
|
|
28
|
+
## License
|
|
29
|
+
|
|
30
|
+
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
|
+
}
|