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,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
|
+
}
|
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "vertical:trading",
|
|
3
|
-
"description": "Trading harness — market-watcher, signal-gen, risk-checker, executor (paper by default), postmortem. Includes circuit-breaker safety patterns.",
|
|
4
|
-
"domain": "trading/quantitative",
|
|
5
|
-
"files": [
|
|
6
|
-
{
|
|
7
|
-
"src": "package.json.tmpl",
|
|
8
|
-
"dst": "package.json",
|
|
9
|
-
"render": true
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
"src": "CLAUDE.md.tmpl",
|
|
13
|
-
"dst": "CLAUDE.md",
|
|
14
|
-
"render": true
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
"src": "README.md.tmpl",
|
|
18
|
-
"dst": "README.md",
|
|
19
|
-
"render": true
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
"src": ".claude/settings.json.tmpl",
|
|
23
|
-
"dst": ".claude/settings.json",
|
|
24
|
-
"render": true
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"src": ".claude-plugin/plugin.json.tmpl",
|
|
28
|
-
"dst": ".claude-plugin/plugin.json",
|
|
29
|
-
"render": true
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"src": "src/init.ts.tmpl",
|
|
33
|
-
"dst": "src/init.ts",
|
|
34
|
-
"render": true
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
"src": "src/agents/market-watcher.ts.tmpl",
|
|
38
|
-
"dst": "src/agents/market-watcher.ts",
|
|
39
|
-
"render": true
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
"src": "src/agents/signal-gen.ts.tmpl",
|
|
43
|
-
"dst": "src/agents/signal-gen.ts",
|
|
44
|
-
"render": true
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"src": "src/agents/risk-checker.ts.tmpl",
|
|
48
|
-
"dst": "src/agents/risk-checker.ts",
|
|
49
|
-
"render": true
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
"src": "src/agents/executor.ts.tmpl",
|
|
53
|
-
"dst": "src/agents/executor.ts",
|
|
54
|
-
"render": true
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
"src": "src/agents/postmortem.ts.tmpl",
|
|
58
|
-
"dst": "src/agents/postmortem.ts",
|
|
59
|
-
"render": true
|
|
60
|
-
},
|
|
61
|
-
{
|
|
62
|
-
"src": "tsconfig.json.tmpl",
|
|
63
|
-
"dst": "tsconfig.json",
|
|
64
|
-
"render": true
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
"src": "bin/cli.js.tmpl",
|
|
68
|
-
"dst": "bin/cli.js",
|
|
69
|
-
"render": true
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
"src": "__tests__/smoke.test.ts.tmpl",
|
|
73
|
-
"dst": "__tests__/smoke.test.ts",
|
|
74
|
-
"render": true
|
|
75
|
-
}
|
|
76
|
-
],
|
|
77
|
-
"vars": [
|
|
78
|
-
{
|
|
79
|
-
"name": "name",
|
|
80
|
-
"prompt": "Harness name (kebab-case)",
|
|
81
|
-
"validate": "^[a-z0-9-]+$"
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
"name": "description",
|
|
85
|
-
"prompt": "One-line description",
|
|
86
|
-
"default": "Quant trading with paper-default and circuit-breakers"
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
"name": "host",
|
|
90
|
-
"prompt": "Host adapter",
|
|
91
|
-
"default": "claude-code",
|
|
92
|
-
"choices": [
|
|
93
|
-
"claude-code",
|
|
94
|
-
"codex",
|
|
95
|
-
"pi-dev",
|
|
96
|
-
"hermes"
|
|
97
|
-
]
|
|
98
|
-
}
|
|
99
|
-
]
|
|
100
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"id": "vertical:trading",
|
|
3
|
+
"description": "Trading harness — market-watcher, signal-gen, risk-checker, executor (paper by default), postmortem. Includes circuit-breaker safety patterns.",
|
|
4
|
+
"domain": "trading/quantitative",
|
|
5
|
+
"files": [
|
|
6
|
+
{
|
|
7
|
+
"src": "package.json.tmpl",
|
|
8
|
+
"dst": "package.json",
|
|
9
|
+
"render": true
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"src": "CLAUDE.md.tmpl",
|
|
13
|
+
"dst": "CLAUDE.md",
|
|
14
|
+
"render": true
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"src": "README.md.tmpl",
|
|
18
|
+
"dst": "README.md",
|
|
19
|
+
"render": true
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"src": ".claude/settings.json.tmpl",
|
|
23
|
+
"dst": ".claude/settings.json",
|
|
24
|
+
"render": true
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"src": ".claude-plugin/plugin.json.tmpl",
|
|
28
|
+
"dst": ".claude-plugin/plugin.json",
|
|
29
|
+
"render": true
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"src": "src/init.ts.tmpl",
|
|
33
|
+
"dst": "src/init.ts",
|
|
34
|
+
"render": true
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"src": "src/agents/market-watcher.ts.tmpl",
|
|
38
|
+
"dst": "src/agents/market-watcher.ts",
|
|
39
|
+
"render": true
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
"src": "src/agents/signal-gen.ts.tmpl",
|
|
43
|
+
"dst": "src/agents/signal-gen.ts",
|
|
44
|
+
"render": true
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"src": "src/agents/risk-checker.ts.tmpl",
|
|
48
|
+
"dst": "src/agents/risk-checker.ts",
|
|
49
|
+
"render": true
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"src": "src/agents/executor.ts.tmpl",
|
|
53
|
+
"dst": "src/agents/executor.ts",
|
|
54
|
+
"render": true
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"src": "src/agents/postmortem.ts.tmpl",
|
|
58
|
+
"dst": "src/agents/postmortem.ts",
|
|
59
|
+
"render": true
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
"src": "tsconfig.json.tmpl",
|
|
63
|
+
"dst": "tsconfig.json",
|
|
64
|
+
"render": true
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"src": "bin/cli.js.tmpl",
|
|
68
|
+
"dst": "bin/cli.js",
|
|
69
|
+
"render": true
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"src": "__tests__/smoke.test.ts.tmpl",
|
|
73
|
+
"dst": "__tests__/smoke.test.ts",
|
|
74
|
+
"render": true
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"vars": [
|
|
78
|
+
{
|
|
79
|
+
"name": "name",
|
|
80
|
+
"prompt": "Harness name (kebab-case)",
|
|
81
|
+
"validate": "^[a-z0-9-]+$"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"name": "description",
|
|
85
|
+
"prompt": "One-line description",
|
|
86
|
+
"default": "Quant trading with paper-default and circuit-breakers"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "host",
|
|
90
|
+
"prompt": "Host adapter",
|
|
91
|
+
"default": "claude-code",
|
|
92
|
+
"choices": [
|
|
93
|
+
"claude-code",
|
|
94
|
+
"codex",
|
|
95
|
+
"pi-dev",
|
|
96
|
+
"hermes"
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "{{name}}",
|
|
3
|
-
"version": "0.1.0",
|
|
4
|
-
"description": "{{description}}",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"bin": { "{{name}}": "bin/cli.js" },
|
|
7
|
-
"files": ["bin/**", "dist/**", "src/**", "tsconfig.json", ".claude/**", "CLAUDE.md", "README.md", "LICENSE"],
|
|
8
|
-
"scripts": { "build": "tsc", "test": "vitest run", "init": "node ./bin/cli.js init", "doctor": "node ./bin/cli.js doctor" },
|
|
9
|
-
"dependencies": { "@metaharness/kernel": "^0.1.0", "@metaharness/host-{{host}}": "^0.1.0" },
|
|
10
|
-
"devDependencies": { "@types/node": "^20.0.0", "typescript": "^5.4.0", "vitest": "^3.0.0" },
|
|
11
|
-
"keywords": ["trading", "quant", "agent-harness", "backtesting"],
|
|
12
|
-
"publishConfig": { "access": "public" },
|
|
13
|
-
"engines": { "node": ">=20.0.0" }
|
|
14
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "{{name}}",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "{{description}}",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": { "{{name}}": "bin/cli.js" },
|
|
7
|
+
"files": ["bin/**", "dist/**", "src/**", "tsconfig.json", ".claude/**", "CLAUDE.md", "README.md", "LICENSE"],
|
|
8
|
+
"scripts": { "build": "tsc", "test": "vitest run", "init": "node ./bin/cli.js init", "doctor": "node ./bin/cli.js doctor" },
|
|
9
|
+
"dependencies": { "@metaharness/kernel": "^0.1.0", "@metaharness/host-{{host}}": "^0.1.0" },
|
|
10
|
+
"devDependencies": { "@types/node": "^20.0.0", "typescript": "^5.4.0", "vitest": "^3.0.0" },
|
|
11
|
+
"keywords": ["trading", "quant", "agent-harness", "backtesting"],
|
|
12
|
+
"publishConfig": { "access": "public" },
|
|
13
|
+
"engines": { "node": ">=20.0.0" }
|
|
14
|
+
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
export const SYSTEM_PROMPT = `You are the executor for {{name}}.
|
|
3
|
-
ONLY runs on signals that risk-checker APPROVED. In paper mode, simulate
|
|
4
|
-
the fill at the current bid/ask spread and log to the paper book. In live
|
|
5
|
-
mode, submit via the broker MCP (which itself respects the circuit-breaker
|
|
6
|
-
state). Emit a fill report.`;
|
|
7
|
-
export const NAME = 'executor';
|
|
8
|
-
export const TIER = 'codemod' as const;
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
export const SYSTEM_PROMPT = `You are the executor for {{name}}.
|
|
3
|
+
ONLY runs on signals that risk-checker APPROVED. In paper mode, simulate
|
|
4
|
+
the fill at the current bid/ask spread and log to the paper book. In live
|
|
5
|
+
mode, submit via the broker MCP (which itself respects the circuit-breaker
|
|
6
|
+
state). Emit a fill report.`;
|
|
7
|
+
export const NAME = 'executor';
|
|
8
|
+
export const TIER = 'codemod' as const;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
export const SYSTEM_PROMPT = `You are the market watcher for {{name}}.
|
|
3
|
-
Poll the market_data MCP for the configured tickers. Detect regime shifts
|
|
4
|
-
(trending vs ranging, high-vol vs low-vol). Emit a regime classification
|
|
5
|
-
every tick. Do NOT generate signals — that's signal-gen's job.`;
|
|
6
|
-
export const NAME = 'market-watcher';
|
|
7
|
-
export const TIER = 'haiku' as const;
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
export const SYSTEM_PROMPT = `You are the market watcher for {{name}}.
|
|
3
|
+
Poll the market_data MCP for the configured tickers. Detect regime shifts
|
|
4
|
+
(trending vs ranging, high-vol vs low-vol). Emit a regime classification
|
|
5
|
+
every tick. Do NOT generate signals — that's signal-gen's job.`;
|
|
6
|
+
export const NAME = 'market-watcher';
|
|
7
|
+
export const TIER = 'haiku' as const;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
export const SYSTEM_PROMPT = `You are the daily P&L postmortem author for {{name}}.
|
|
3
|
-
At end of session: summarise P&L, list winning + losing trades, identify
|
|
4
|
-
patterns. Honesty matters — name the strategy that lost money even if it
|
|
5
|
-
won yesterday. Recommend one parameter to revisit tomorrow. Blameless;
|
|
6
|
-
strategies fail, not authors.`;
|
|
7
|
-
export const NAME = 'postmortem';
|
|
8
|
-
export const TIER = 'sonnet' as const;
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
export const SYSTEM_PROMPT = `You are the daily P&L postmortem author for {{name}}.
|
|
3
|
+
At end of session: summarise P&L, list winning + losing trades, identify
|
|
4
|
+
patterns. Honesty matters — name the strategy that lost money even if it
|
|
5
|
+
won yesterday. Recommend one parameter to revisit tomorrow. Blameless;
|
|
6
|
+
strategies fail, not authors.`;
|
|
7
|
+
export const NAME = 'postmortem';
|
|
8
|
+
export const TIER = 'sonnet' as const;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
// Deterministic risk checker. Codemod tier — no LLM call, just rules.
|
|
3
|
-
|
|
4
|
-
export const SYSTEM_PROMPT = `You are the risk gate for {{name}}.
|
|
5
|
-
For each incoming signal, check:
|
|
6
|
-
1. Circuit-breaker state (daily P&L > -2%, < 5 consecutive losses, latency < 500ms)
|
|
7
|
-
2. Position-sizing rule (fractional-Kelly with 0.25 multiplier)
|
|
8
|
-
3. Concentration limits (no single position > 10% equity)
|
|
9
|
-
Output: APPROVE or REJECT with a single-sentence reason.`;
|
|
10
|
-
export const NAME = 'risk-checker';
|
|
11
|
-
export const TIER = 'codemod' as const;
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// Deterministic risk checker. Codemod tier — no LLM call, just rules.
|
|
3
|
+
|
|
4
|
+
export const SYSTEM_PROMPT = `You are the risk gate for {{name}}.
|
|
5
|
+
For each incoming signal, check:
|
|
6
|
+
1. Circuit-breaker state (daily P&L > -2%, < 5 consecutive losses, latency < 500ms)
|
|
7
|
+
2. Position-sizing rule (fractional-Kelly with 0.25 multiplier)
|
|
8
|
+
3. Concentration limits (no single position > 10% equity)
|
|
9
|
+
Output: APPROVE or REJECT with a single-sentence reason.`;
|
|
10
|
+
export const NAME = 'risk-checker';
|
|
11
|
+
export const TIER = 'codemod' as const;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
export const SYSTEM_PROMPT = `You are the signal generator for {{name}}.
|
|
3
|
-
Read the regime from market-watcher and emit BUY/SELL/HOLD signals with
|
|
4
|
-
a confidence score and an entry/exit price. Cite the indicator(s) the
|
|
5
|
-
signal is based on. NEVER submit to executor directly — risk-checker
|
|
6
|
-
must vet every signal first.`;
|
|
7
|
-
export const NAME = 'signal-gen';
|
|
8
|
-
export const TIER = 'sonnet' as const;
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
export const SYSTEM_PROMPT = `You are the signal generator for {{name}}.
|
|
3
|
+
Read the regime from market-watcher and emit BUY/SELL/HOLD signals with
|
|
4
|
+
a confidence score and an entry/exit price. Cite the indicator(s) the
|
|
5
|
+
signal is based on. NEVER submit to executor directly — risk-checker
|
|
6
|
+
must vet every signal first.`;
|
|
7
|
+
export const NAME = 'signal-gen';
|
|
8
|
+
export const TIER = 'sonnet' as const;
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
// SPDX-License-Identifier: MIT
|
|
2
|
-
import { loadKernel } from '@metaharness/kernel';
|
|
3
|
-
import adapter from '@metaharness/host-{{host}}';
|
|
4
|
-
|
|
5
|
-
const HARNESS_NAME = '{{name}}';
|
|
6
|
-
const PAPER_BY_DEFAULT = process.env.RUFLO_TRADE_CONFIRM !== 'YES_LIVE';
|
|
7
|
-
|
|
8
|
-
async function main(): Promise<number> {
|
|
9
|
-
const kernel = await loadKernel();
|
|
10
|
-
const info = kernel.kernelInfo();
|
|
11
|
-
console.log(`${HARNESS_NAME} — quant trading harness`);
|
|
12
|
-
console.log(`Kernel ${info.version} (${kernel.backend}), host: ${adapter.name}`);
|
|
13
|
-
console.log(`Mode: ${PAPER_BY_DEFAULT ? 'PAPER (safe)' : 'LIVE'}`);
|
|
14
|
-
if (!PAPER_BY_DEFAULT) {
|
|
15
|
-
console.log('WARNING: live trading enabled. Circuit breakers are still active.');
|
|
16
|
-
}
|
|
17
|
-
return 0;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
main().then(c => process.exit(c)).catch(err => { console.error(err); process.exit(1); });
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
import { loadKernel } from '@metaharness/kernel';
|
|
3
|
+
import adapter from '@metaharness/host-{{host}}';
|
|
4
|
+
|
|
5
|
+
const HARNESS_NAME = '{{name}}';
|
|
6
|
+
const PAPER_BY_DEFAULT = process.env.RUFLO_TRADE_CONFIRM !== 'YES_LIVE';
|
|
7
|
+
|
|
8
|
+
async function main(): Promise<number> {
|
|
9
|
+
const kernel = await loadKernel();
|
|
10
|
+
const info = kernel.kernelInfo();
|
|
11
|
+
console.log(`${HARNESS_NAME} — quant trading harness`);
|
|
12
|
+
console.log(`Kernel ${info.version} (${kernel.backend}), host: ${adapter.name}`);
|
|
13
|
+
console.log(`Mode: ${PAPER_BY_DEFAULT ? 'PAPER (safe)' : 'LIVE'}`);
|
|
14
|
+
if (!PAPER_BY_DEFAULT) {
|
|
15
|
+
console.log('WARNING: live trading enabled. Circuit breakers are still active.');
|
|
16
|
+
}
|
|
17
|
+
return 0;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
main().then(c => process.exit(c)).catch(err => { console.error(err); process.exit(1); });
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2022",
|
|
4
|
-
"module": "NodeNext",
|
|
5
|
-
"moduleResolution": "NodeNext",
|
|
6
|
-
"lib": ["ES2022"],
|
|
7
|
-
"outDir": "./dist",
|
|
8
|
-
"rootDir": "./src",
|
|
9
|
-
"declaration": true,
|
|
10
|
-
"declarationMap": true,
|
|
11
|
-
"sourceMap": true,
|
|
12
|
-
"strict": true,
|
|
13
|
-
"esModuleInterop": true,
|
|
14
|
-
"skipLibCheck": true,
|
|
15
|
-
"forceConsistentCasingInFileNames": true
|
|
16
|
-
},
|
|
17
|
-
"include": ["src/**/*.ts"],
|
|
18
|
-
"exclude": ["node_modules", "dist", "__tests__"]
|
|
19
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2022",
|
|
4
|
+
"module": "NodeNext",
|
|
5
|
+
"moduleResolution": "NodeNext",
|
|
6
|
+
"lib": ["ES2022"],
|
|
7
|
+
"outDir": "./dist",
|
|
8
|
+
"rootDir": "./src",
|
|
9
|
+
"declaration": true,
|
|
10
|
+
"declarationMap": true,
|
|
11
|
+
"sourceMap": true,
|
|
12
|
+
"strict": true,
|
|
13
|
+
"esModuleInterop": true,
|
|
14
|
+
"skipLibCheck": true,
|
|
15
|
+
"forceConsistentCasingInFileNames": true
|
|
16
|
+
},
|
|
17
|
+
"include": ["src/**/*.ts"],
|
|
18
|
+
"exclude": ["node_modules", "dist", "__tests__"]
|
|
19
|
+
}
|