voidforge-build 23.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (772) hide show
  1. package/dist/.claude/agents/adolin-brand.md +40 -0
  2. package/dist/.claude/agents/ahsoka-access-control.md +56 -0
  3. package/dist/.claude/agents/alfred-dependencies.md +43 -0
  4. package/dist/.claude/agents/alia-threat-detect.md +40 -0
  5. package/dist/.claude/agents/anakin-dark-side.md +41 -0
  6. package/dist/.claude/agents/aquaman-deep-dive.md +43 -0
  7. package/dist/.claude/agents/aragorn-orchestration.md +39 -0
  8. package/dist/.claude/agents/archer-greenfield.md +48 -0
  9. package/dist/.claude/agents/armin-clever.md +39 -0
  10. package/dist/.claude/agents/arwen-ui-polish.md +42 -0
  11. package/dist/.claude/agents/ashitaka-tech-debt.md +39 -0
  12. package/dist/.claude/agents/asuka-performance.md +39 -0
  13. package/dist/.claude/agents/bail-organa-governance.md +37 -0
  14. package/dist/.claude/agents/banner-database.md +44 -0
  15. package/dist/.claude/agents/barton-smoke-test.md +59 -0
  16. package/dist/.claude/agents/bashir-field-medic.md +63 -0
  17. package/dist/.claude/agents/batgirl-detail.md +43 -0
  18. package/dist/.claude/agents/batman-qa.md +73 -0
  19. package/dist/.claude/agents/bayta-evals.md +41 -0
  20. package/dist/.claude/agents/beast-boy-cross-env.md +43 -0
  21. package/dist/.claude/agents/beerus-destroyer.md +39 -0
  22. package/dist/.claude/agents/bel-riose-orchestration.md +40 -0
  23. package/dist/.claude/agents/beru-subprocess.md +37 -0
  24. package/dist/.claude/agents/bilbo-microcopy.md +43 -0
  25. package/dist/.claude/agents/black-canary-monitoring.md +43 -0
  26. package/dist/.claude/agents/bliss-ai-safety.md +40 -0
  27. package/dist/.claude/agents/bo-katan-perimeter.md +40 -0
  28. package/dist/.claude/agents/bombadil-forge-sync.md +62 -0
  29. package/dist/.claude/agents/boromir-hubris.md +40 -0
  30. package/dist/.claude/agents/breeze-platform-relations.md +40 -0
  31. package/dist/.claude/agents/bucky-legacy.md +43 -0
  32. package/dist/.claude/agents/bulma-engineering.md +40 -0
  33. package/dist/.claude/agents/calcifer-daemon.md +39 -0
  34. package/dist/.claude/agents/cara-dune-enforcement.md +37 -0
  35. package/dist/.claude/agents/cassian-recon.md +37 -0
  36. package/dist/.claude/agents/cc-persistent-process.md +39 -0
  37. package/dist/.claude/agents/celeborn-design-system.md +40 -0
  38. package/dist/.claude/agents/celebrimbor-forge-artist.md +62 -0
  39. package/dist/.claude/agents/chakotay-bridge.md +47 -0
  40. package/dist/.claude/agents/chani-worm-rider.md +61 -0
  41. package/dist/.claude/agents/chewie-dependency-audit.md +41 -0
  42. package/dist/.claude/agents/chrome-discovery.md +37 -0
  43. package/dist/.claude/agents/constantine-cursed-code.md +59 -0
  44. package/dist/.claude/agents/coulson-release.md +64 -0
  45. package/dist/.claude/agents/crusher-diagnostics.md +48 -0
  46. package/dist/.claude/agents/cyborg-system-integration.md +43 -0
  47. package/dist/.claude/agents/dalinar-positioning.md +40 -0
  48. package/dist/.claude/agents/daneel-model-migration.md +40 -0
  49. package/dist/.claude/agents/data-tech-debt.md +48 -0
  50. package/dist/.claude/agents/dax-legacy-wisdom.md +48 -0
  51. package/dist/.claude/agents/deathstroke-adversarial.md +59 -0
  52. package/dist/.claude/agents/denji-determination.md +39 -0
  53. package/dist/.claude/agents/din-djarin-bounty.md +42 -0
  54. package/dist/.claude/agents/dockson-treasury.md +67 -0
  55. package/dist/.claude/agents/dori-integration-check.md +37 -0
  56. package/dist/.claude/agents/dors-observability.md +40 -0
  57. package/dist/.claude/agents/drax-exact-match.md +42 -0
  58. package/dist/.claude/agents/ducem-token-economics.md +41 -0
  59. package/dist/.claude/agents/duncan-relay.md +40 -0
  60. package/dist/.claude/agents/duo-teardown.md +38 -0
  61. package/dist/.claude/agents/ed-network-scan.md +38 -0
  62. package/dist/.claude/agents/elrond-ux-strategy.md +39 -0
  63. package/dist/.claude/agents/eowyn-delight.md +56 -0
  64. package/dist/.claude/agents/erwin-strategy.md +39 -0
  65. package/dist/.claude/agents/ezra-catches-missed.md +40 -0
  66. package/dist/.claude/agents/ezri-session-analyst.md +45 -0
  67. package/dist/.claude/agents/falcon-migration.md +43 -0
  68. package/dist/.claude/agents/faramir-judgment.md +40 -0
  69. package/dist/.claude/agents/faye-resourceful.md +39 -0
  70. package/dist/.claude/agents/fenring-passive-monitor.md +37 -0
  71. package/dist/.claude/agents/fern-protocol.md +37 -0
  72. package/dist/.claude/agents/feyd-adversarial.md +41 -0
  73. package/dist/.claude/agents/flash-rapid-test.md +43 -0
  74. package/dist/.claude/agents/friday-automation.md +42 -0
  75. package/dist/.claude/agents/frieren-long-term.md +39 -0
  76. package/dist/.claude/agents/frodo-critical-path.md +40 -0
  77. package/dist/.claude/agents/fury-initiative.md +65 -0
  78. package/dist/.claude/agents/gaal-prompt-arch.md +41 -0
  79. package/dist/.claude/agents/galadriel-frontend.md +69 -0
  80. package/dist/.claude/agents/gamora-perf-assassin.md +43 -0
  81. package/dist/.claude/agents/gandalf-setup-wizard.md +63 -0
  82. package/dist/.claude/agents/gen-docs.md +37 -0
  83. package/dist/.claude/agents/ghanima-paired-monitor.md +37 -0
  84. package/dist/.claude/agents/gimli-performance.md +41 -0
  85. package/dist/.claude/agents/giyu-silent-guard.md +39 -0
  86. package/dist/.claude/agents/glorfindel-rendering.md +40 -0
  87. package/dist/.claude/agents/gohan-hidden-power.md +39 -0
  88. package/dist/.claude/agents/gojo-infinite-scale.md +39 -0
  89. package/dist/.claude/agents/goku-scaling.md +39 -0
  90. package/dist/.claude/agents/goldberry-change-detect.md +37 -0
  91. package/dist/.claude/agents/gordon-escalation.md +42 -0
  92. package/dist/.claude/agents/green-arrow-precision.md +43 -0
  93. package/dist/.claude/agents/green-lantern-scenarios.md +43 -0
  94. package/dist/.claude/agents/grogu-tiny-vulns.md +38 -0
  95. package/dist/.claude/agents/groot-caching.md +43 -0
  96. package/dist/.claude/agents/gurney-delivery.md +40 -0
  97. package/dist/.claude/agents/haku-deploy-wizard.md +65 -0
  98. package/dist/.claude/agents/haldir-boundaries.md +40 -0
  99. package/dist/.claude/agents/han-vuln-hunter.md +40 -0
  100. package/dist/.claude/agents/hange-experimentation.md +39 -0
  101. package/dist/.claude/agents/harah-protocol.md +38 -0
  102. package/dist/.claude/agents/hawkgirl-regression-sweep.md +43 -0
  103. package/dist/.claude/agents/heero-mission-deploy.md +39 -0
  104. package/dist/.claude/agents/hera-navigation.md +41 -0
  105. package/dist/.claude/agents/hill-mission-control.md +43 -0
  106. package/dist/.claude/agents/himmel-legacy.md +37 -0
  107. package/dist/.claude/agents/hober-tool-schema.md +40 -0
  108. package/dist/.claude/agents/hoid-copywriting.md +40 -0
  109. package/dist/.claude/agents/howl-migration.md +39 -0
  110. package/dist/.claude/agents/hughes-observability.md +37 -0
  111. package/dist/.claude/agents/huntress-flaky-bugs.md +42 -0
  112. package/dist/.claude/agents/irulan-historian.md +37 -0
  113. package/dist/.claude/agents/jake-reporter.md +45 -0
  114. package/dist/.claude/agents/janeway-novel-arch.md +48 -0
  115. package/dist/.claude/agents/janov-context-eng.md +40 -0
  116. package/dist/.claude/agents/jarvis-status.md +42 -0
  117. package/dist/.claude/agents/jean-pragmatic.md +39 -0
  118. package/dist/.claude/agents/jessica-voice.md +40 -0
  119. package/dist/.claude/agents/jet-maintenance.md +39 -0
  120. package/dist/.claude/agents/jin-disciplined-adv.md +39 -0
  121. package/dist/.claude/agents/kaji-intelligence.md +39 -0
  122. package/dist/.claude/agents/kaladin-organic-growth.md +40 -0
  123. package/dist/.claude/agents/kallen-hard-deploy.md +39 -0
  124. package/dist/.claude/agents/kanan-intuitive.md +41 -0
  125. package/dist/.claude/agents/kaoru-harmony.md +37 -0
  126. package/dist/.claude/agents/kaworu-solver.md +39 -0
  127. package/dist/.claude/agents/kelsier-growth.md +64 -0
  128. package/dist/.claude/agents/kenobi-security.md +70 -0
  129. package/dist/.claude/agents/kim-api-design.md +49 -0
  130. package/dist/.claude/agents/kira-pragmatic.md +48 -0
  131. package/dist/.claude/agents/kishibe-hardening.md +39 -0
  132. package/dist/.claude/agents/kohaku-rapid-response.md +36 -0
  133. package/dist/.claude/agents/krillin-support.md +36 -0
  134. package/dist/.claude/agents/kusanagi-devops.md +70 -0
  135. package/dist/.claude/agents/la-forge-reliability.md +63 -0
  136. package/dist/.claude/agents/lang-micro-changes.md +43 -0
  137. package/dist/.claude/agents/legolas-precision.md +42 -0
  138. package/dist/.claude/agents/leia-secrets.md +41 -0
  139. package/dist/.claude/agents/lelouch-orchestration.md +39 -0
  140. package/dist/.claude/agents/leto-ii-persistence.md +40 -0
  141. package/dist/.claude/agents/leto-protection.md +40 -0
  142. package/dist/.claude/agents/levi-deploy.md +40 -0
  143. package/dist/.claude/agents/liet-kynes-deep-system.md +40 -0
  144. package/dist/.claude/agents/lift-social-media.md +40 -0
  145. package/dist/.claude/agents/loki-chaos.md +58 -0
  146. package/dist/.claude/agents/lucius-config.md +43 -0
  147. package/dist/.claude/agents/luke-audit-journey.md +41 -0
  148. package/dist/.claude/agents/manhunter-shapeshifting.md +43 -0
  149. package/dist/.claude/agents/marsh-competitive-intel.md +41 -0
  150. package/dist/.claude/agents/maul-red-team.md +57 -0
  151. package/dist/.claude/agents/merry-pair-review.md +40 -0
  152. package/dist/.claude/agents/mikasa-protection.md +39 -0
  153. package/dist/.claude/agents/miles-teg-perf.md +40 -0
  154. package/dist/.claude/agents/milim-load-test.md +39 -0
  155. package/dist/.claude/agents/misato-operations.md +39 -0
  156. package/dist/.claude/agents/mob-capacity.md +39 -0
  157. package/dist/.claude/agents/mohiam-authentication.md +40 -0
  158. package/dist/.claude/agents/mon-mothma-security-mgmt.md +41 -0
  159. package/dist/.claude/agents/mugen-chaos.md +39 -0
  160. package/dist/.claude/agents/mule-adversarial-ai.md +41 -0
  161. package/dist/.claude/agents/mustang-cleanup.md +39 -0
  162. package/dist/.claude/agents/nanami-structured-ops.md +39 -0
  163. package/dist/.claude/agents/nausicaa-resources.md +39 -0
  164. package/dist/.claude/agents/navani-technical-seo.md +40 -0
  165. package/dist/.claude/agents/nebula-optimization.md +43 -0
  166. package/dist/.claude/agents/nightwing-regression.md +59 -0
  167. package/dist/.claude/agents/nobara-direct-fix.md +39 -0
  168. package/dist/.claude/agents/nog-solutions.md +48 -0
  169. package/dist/.claude/agents/nori-asset-scanner.md +37 -0
  170. package/dist/.claude/agents/obrien-root-cause.md +48 -0
  171. package/dist/.claude/agents/odo-structural-anomaly.md +48 -0
  172. package/dist/.claude/agents/okoye-data-integrity.md +43 -0
  173. package/dist/.claude/agents/olivier-hardening.md +39 -0
  174. package/dist/.claude/agents/oracle-static-analysis.md +59 -0
  175. package/dist/.claude/agents/ori-prompt-crafter.md +37 -0
  176. package/dist/.claude/agents/padme-data-protection.md +42 -0
  177. package/dist/.claude/agents/paris-route-planner.md +47 -0
  178. package/dist/.claude/agents/parker-connections.md +43 -0
  179. package/dist/.claude/agents/paul-orchestration.md +40 -0
  180. package/dist/.claude/agents/picard-architecture.md +64 -0
  181. package/dist/.claude/agents/piccolo-tactics.md +39 -0
  182. package/dist/.claude/agents/pike-bold-decisions.md +48 -0
  183. package/dist/.claude/agents/pippin-discovery.md +40 -0
  184. package/dist/.claude/agents/plo-koon-edge-cases.md +37 -0
  185. package/dist/.claude/agents/power-chaotic.md +39 -0
  186. package/dist/.claude/agents/qui-gon-subtle-vulns.md +40 -0
  187. package/dist/.claude/agents/radagast-edge-cases.md +41 -0
  188. package/dist/.claude/agents/raoden-conversion.md +41 -0
  189. package/dist/.claude/agents/raven-deep-analysis.md +43 -0
  190. package/dist/.claude/agents/red-hood-aggressive.md +47 -0
  191. package/dist/.claude/agents/rei-dangerous-tasks.md +39 -0
  192. package/dist/.claude/agents/reigen-debugger.md +39 -0
  193. package/dist/.claude/agents/rengoku-intense-monitor.md +39 -0
  194. package/dist/.claude/agents/rex-infrastructure.md +41 -0
  195. package/dist/.claude/agents/rhodes-production.md +43 -0
  196. package/dist/.claude/agents/riker-review.md +62 -0
  197. package/dist/.claude/agents/rimuru-adapter.md +39 -0
  198. package/dist/.claude/agents/riza-backup.md +39 -0
  199. package/dist/.claude/agents/robin-apprentice.md +42 -0
  200. package/dist/.claude/agents/rocket-scrappy.md +43 -0
  201. package/dist/.claude/agents/rogers-api-design.md +43 -0
  202. package/dist/.claude/agents/romanoff-integrations.md +44 -0
  203. package/dist/.claude/agents/sabine-unconventional.md +40 -0
  204. package/dist/.claude/agents/salvor-model-selection.md +42 -0
  205. package/dist/.claude/agents/samwise-accessibility.md +43 -0
  206. package/dist/.claude/agents/sarene-outreach.md +40 -0
  207. package/dist/.claude/agents/sasha-resources.md +37 -0
  208. package/dist/.claude/agents/scotty-infrastructure.md +48 -0
  209. package/dist/.claude/agents/seldon-ai.md +67 -0
  210. package/dist/.claude/agents/senku-provisioning.md +40 -0
  211. package/dist/.claude/agents/sentaro-scheduling.md +37 -0
  212. package/dist/.claude/agents/seven-optimization.md +48 -0
  213. package/dist/.claude/agents/shallan-creative.md +40 -0
  214. package/dist/.claude/agents/sheeana-transport.md +40 -0
  215. package/dist/.claude/agents/shuri-innovation.md +43 -0
  216. package/dist/.claude/agents/silver-surfer-herald.md +90 -0
  217. package/dist/.claude/agents/siona-evasion.md +41 -0
  218. package/dist/.claude/agents/sisko-campaign.md +68 -0
  219. package/dist/.claude/agents/spike-routing.md +40 -0
  220. package/dist/.claude/agents/spock-schema.md +62 -0
  221. package/dist/.claude/agents/starfire-brute-force.md +43 -0
  222. package/dist/.claude/agents/stark-backend.md +71 -0
  223. package/dist/.claude/agents/steris-budget.md +41 -0
  224. package/dist/.claude/agents/stilgar-channel-security.md +40 -0
  225. package/dist/.claude/agents/strange-service-arch.md +44 -0
  226. package/dist/.claude/agents/sung-workers.md +39 -0
  227. package/dist/.claude/agents/superman-strength-test.md +43 -0
  228. package/dist/.claude/agents/suzaku-execution.md +39 -0
  229. package/dist/.claude/agents/szeth-compliance.md +40 -0
  230. package/dist/.claude/agents/tanjiro-persistent.md +39 -0
  231. package/dist/.claude/agents/tchalla-quality.md +43 -0
  232. package/dist/.claude/agents/thanos-gauntlet.md +68 -0
  233. package/dist/.claude/agents/theoden-rally.md +40 -0
  234. package/dist/.claude/agents/thor-queues.md +44 -0
  235. package/dist/.claude/agents/thufir-protocol-parsing.md +40 -0
  236. package/dist/.claude/agents/todo-brute-force.md +39 -0
  237. package/dist/.claude/agents/torres-site-scanner.md +47 -0
  238. package/dist/.claude/agents/totoro-guardian.md +39 -0
  239. package/dist/.claude/agents/tpol-disciplined.md +48 -0
  240. package/dist/.claude/agents/treebeard-deliberation.md +41 -0
  241. package/dist/.claude/agents/troi-prd-compliance.md +64 -0
  242. package/dist/.claude/agents/trunks-rollback.md +39 -0
  243. package/dist/.claude/agents/tuvok-deep-current.md +63 -0
  244. package/dist/.claude/agents/uhura-integration.md +47 -0
  245. package/dist/.claude/agents/valkyrie-recovery.md +43 -0
  246. package/dist/.claude/agents/vegeta-monitoring.md +39 -0
  247. package/dist/.claude/agents/veldora-dormant.md +37 -0
  248. package/dist/.claude/agents/vin-analytics.md +41 -0
  249. package/dist/.claude/agents/vision-data-analysis.md +43 -0
  250. package/dist/.claude/agents/wanda-seldon-validation.md +38 -0
  251. package/dist/.claude/agents/wanda-state.md +43 -0
  252. package/dist/.claude/agents/wax-paid-ads.md +40 -0
  253. package/dist/.claude/agents/wayne-ab-testing.md +40 -0
  254. package/dist/.claude/agents/whis-precision.md +39 -0
  255. package/dist/.claude/agents/windu-input-validation.md +41 -0
  256. package/dist/.claude/agents/winry-maintenance.md +39 -0
  257. package/dist/.claude/agents/wonder-woman-truth.md +43 -0
  258. package/dist/.claude/agents/wong-documentation.md +58 -0
  259. package/dist/.claude/agents/worf-security-arch.md +49 -0
  260. package/dist/.claude/agents/yoda-auth.md +57 -0
  261. package/dist/.claude/agents/yueh-trust-verify.md +40 -0
  262. package/dist/.claude/agents/zatanna-impossible.md +43 -0
  263. package/dist/.claude/agents/zechs-rival.md +39 -0
  264. package/dist/.claude/agents/zenitsu-alerts.md +37 -0
  265. package/dist/.claude/commands/ai.md +84 -0
  266. package/dist/.claude/commands/architect.md +107 -0
  267. package/dist/.claude/commands/assemble.md +223 -0
  268. package/dist/.claude/commands/assess.md +86 -0
  269. package/dist/.claude/commands/blueprint.md +135 -0
  270. package/dist/.claude/commands/build.md +138 -0
  271. package/dist/.claude/commands/campaign.md +224 -0
  272. package/dist/.claude/commands/cultivation.md +184 -0
  273. package/dist/.claude/commands/current.md +128 -0
  274. package/dist/.claude/commands/dangerroom.md +74 -0
  275. package/dist/.claude/commands/debrief.md +180 -0
  276. package/dist/.claude/commands/deploy.md +108 -0
  277. package/dist/.claude/commands/devops.md +160 -0
  278. package/dist/.claude/commands/engage.md +135 -0
  279. package/dist/.claude/commands/gauntlet.md +179 -0
  280. package/dist/.claude/commands/git.md +104 -0
  281. package/dist/.claude/commands/grow.md +160 -0
  282. package/dist/.claude/commands/imagine.md +126 -0
  283. package/dist/.claude/commands/portfolio.md +51 -0
  284. package/dist/.claude/commands/prd.md +113 -0
  285. package/dist/.claude/commands/qa.md +130 -0
  286. package/dist/.claude/commands/review.md +9 -0
  287. package/dist/.claude/commands/security.md +9 -0
  288. package/dist/.claude/commands/sentinel.md +90 -0
  289. package/dist/.claude/commands/test.md +114 -0
  290. package/dist/.claude/commands/thumper.md +116 -0
  291. package/dist/.claude/commands/treasury.md +117 -0
  292. package/dist/.claude/commands/ux.md +132 -0
  293. package/dist/.claude/commands/vault.md +198 -0
  294. package/dist/.claude/commands/void.md +148 -0
  295. package/dist/CHANGELOG.md +2621 -0
  296. package/dist/CLAUDE.md +292 -0
  297. package/dist/HOLOCRON.md +859 -0
  298. package/dist/VERSION.md +149 -0
  299. package/dist/docs/NAMING_REGISTRY.md +479 -0
  300. package/dist/docs/methods/AI_INTELLIGENCE.md +276 -0
  301. package/dist/docs/methods/ASSEMBLER.md +142 -0
  302. package/dist/docs/methods/BACKEND_ENGINEER.md +165 -0
  303. package/dist/docs/methods/BUILD_JOURNAL.md +214 -0
  304. package/dist/docs/methods/BUILD_PROTOCOL.md +436 -0
  305. package/dist/docs/methods/CAMPAIGN.md +569 -0
  306. package/dist/docs/methods/CONTEXT_MANAGEMENT.md +189 -0
  307. package/dist/docs/methods/DEEP_CURRENT.md +184 -0
  308. package/dist/docs/methods/DEVOPS_ENGINEER.md +297 -0
  309. package/dist/docs/methods/FIELD_MEDIC.md +265 -0
  310. package/dist/docs/methods/FORGE_ARTIST.md +108 -0
  311. package/dist/docs/methods/FORGE_KEEPER.md +270 -0
  312. package/dist/docs/methods/GAUNTLET.md +364 -0
  313. package/dist/docs/methods/GROWTH_STRATEGIST.md +466 -0
  314. package/dist/docs/methods/HEARTBEAT.md +168 -0
  315. package/dist/docs/methods/MCP_INTEGRATION.md +139 -0
  316. package/dist/docs/methods/MUSTER.md +152 -0
  317. package/dist/docs/methods/PRD_GENERATOR.md +186 -0
  318. package/dist/docs/methods/PRODUCT_DESIGN_FRONTEND.md +252 -0
  319. package/dist/docs/methods/QA_ENGINEER.md +360 -0
  320. package/dist/docs/methods/RELEASE_MANAGER.md +145 -0
  321. package/dist/docs/methods/SECURITY_AUDITOR.md +328 -0
  322. package/dist/docs/methods/SUB_AGENTS.md +375 -0
  323. package/dist/docs/methods/SYSTEMS_ARCHITECT.md +180 -0
  324. package/dist/docs/methods/TESTING.md +359 -0
  325. package/dist/docs/methods/THUMPER.md +175 -0
  326. package/dist/docs/methods/TIME_VAULT.md +120 -0
  327. package/dist/docs/methods/TREASURY.md +184 -0
  328. package/dist/docs/methods/TROUBLESHOOTING.md +265 -0
  329. package/dist/docs/patterns/README.md +52 -0
  330. package/dist/docs/patterns/ad-billing-adapter.ts +537 -0
  331. package/dist/docs/patterns/ad-platform-adapter.ts +421 -0
  332. package/dist/docs/patterns/ai-classifier.ts +195 -0
  333. package/dist/docs/patterns/ai-eval.ts +272 -0
  334. package/dist/docs/patterns/ai-orchestrator.ts +341 -0
  335. package/dist/docs/patterns/ai-router.ts +194 -0
  336. package/dist/docs/patterns/ai-tool-schema.ts +237 -0
  337. package/dist/docs/patterns/api-route.ts +241 -0
  338. package/dist/docs/patterns/backtest-engine.ts +499 -0
  339. package/dist/docs/patterns/browser-review.ts +292 -0
  340. package/dist/docs/patterns/combobox.tsx +300 -0
  341. package/dist/docs/patterns/component.tsx +262 -0
  342. package/dist/docs/patterns/daemon-process.ts +338 -0
  343. package/dist/docs/patterns/data-pipeline.ts +297 -0
  344. package/dist/docs/patterns/database-migration.ts +466 -0
  345. package/dist/docs/patterns/e2e-test.ts +629 -0
  346. package/dist/docs/patterns/error-handling.ts +312 -0
  347. package/dist/docs/patterns/execution-safety.ts +601 -0
  348. package/dist/docs/patterns/financial-transaction.ts +366 -0
  349. package/dist/docs/patterns/funding-plan.ts +462 -0
  350. package/dist/docs/patterns/game-entity.ts +137 -0
  351. package/dist/docs/patterns/game-loop.ts +113 -0
  352. package/dist/docs/patterns/game-state.ts +143 -0
  353. package/dist/docs/patterns/job-queue.ts +225 -0
  354. package/dist/docs/patterns/kongo-integration.ts +164 -0
  355. package/dist/docs/patterns/middleware.ts +363 -0
  356. package/dist/docs/patterns/mobile-screen.tsx +139 -0
  357. package/dist/docs/patterns/mobile-service.ts +167 -0
  358. package/dist/docs/patterns/multi-tenant.ts +382 -0
  359. package/dist/docs/patterns/oauth-token-lifecycle.ts +223 -0
  360. package/dist/docs/patterns/outbound-rate-limiter.ts +260 -0
  361. package/dist/docs/patterns/prompt-template.ts +195 -0
  362. package/dist/docs/patterns/revenue-source-adapter.ts +311 -0
  363. package/dist/docs/patterns/service.ts +224 -0
  364. package/dist/docs/patterns/sse-endpoint.ts +118 -0
  365. package/dist/docs/patterns/stablecoin-adapter.ts +511 -0
  366. package/dist/docs/patterns/third-party-script.ts +68 -0
  367. package/dist/scripts/thumper/gom-jabbar.sh +241 -0
  368. package/dist/scripts/thumper/relay.sh +610 -0
  369. package/dist/scripts/thumper/scan.sh +359 -0
  370. package/dist/scripts/thumper/thumper.sh +190 -0
  371. package/dist/scripts/thumper/water-rings.sh +76 -0
  372. package/dist/scripts/vault-read.d.ts +11 -0
  373. package/dist/scripts/vault-read.js +89 -0
  374. package/dist/scripts/voidforge.d.ts +21 -0
  375. package/dist/scripts/voidforge.js +614 -0
  376. package/dist/wizard/api/auth.d.ts +5 -0
  377. package/dist/wizard/api/auth.js +139 -0
  378. package/dist/wizard/api/blueprint.d.ts +34 -0
  379. package/dist/wizard/api/blueprint.js +161 -0
  380. package/dist/wizard/api/cloud-providers.d.ts +16 -0
  381. package/dist/wizard/api/cloud-providers.js +363 -0
  382. package/dist/wizard/api/credentials.d.ts +1 -0
  383. package/dist/wizard/api/credentials.js +265 -0
  384. package/dist/wizard/api/danger-room.d.ts +24 -0
  385. package/dist/wizard/api/danger-room.js +274 -0
  386. package/dist/wizard/api/deploy.d.ts +4 -0
  387. package/dist/wizard/api/deploy.js +164 -0
  388. package/dist/wizard/api/prd.d.ts +1 -0
  389. package/dist/wizard/api/prd.js +363 -0
  390. package/dist/wizard/api/project.d.ts +1 -0
  391. package/dist/wizard/api/project.js +241 -0
  392. package/dist/wizard/api/projects-data.d.ts +5 -0
  393. package/dist/wizard/api/projects-data.js +234 -0
  394. package/dist/wizard/api/projects-list.d.ts +5 -0
  395. package/dist/wizard/api/projects-list.js +227 -0
  396. package/dist/wizard/api/projects.d.ts +7 -0
  397. package/dist/wizard/api/projects.js +273 -0
  398. package/dist/wizard/api/provision-status.d.ts +5 -0
  399. package/dist/wizard/api/provision-status.js +47 -0
  400. package/dist/wizard/api/provision-steps.d.ts +21 -0
  401. package/dist/wizard/api/provision-steps.js +44 -0
  402. package/dist/wizard/api/provision-validate.d.ts +22 -0
  403. package/dist/wizard/api/provision-validate.js +164 -0
  404. package/dist/wizard/api/provision.d.ts +2 -0
  405. package/dist/wizard/api/provision.js +239 -0
  406. package/dist/wizard/api/terminal.d.ts +25 -0
  407. package/dist/wizard/api/terminal.js +246 -0
  408. package/dist/wizard/api/users.d.ts +6 -0
  409. package/dist/wizard/api/users.js +244 -0
  410. package/dist/wizard/api/war-room.d.ts +16 -0
  411. package/dist/wizard/api/war-room.js +70 -0
  412. package/dist/wizard/danger-room.config.json +5 -0
  413. package/dist/wizard/lib/ad-platform-core.d.ts +6 -0
  414. package/dist/wizard/lib/ad-platform-core.js +1 -0
  415. package/dist/wizard/lib/adapters/index.d.ts +52 -0
  416. package/dist/wizard/lib/adapters/index.js +38 -0
  417. package/dist/wizard/lib/adapters/sandbox-bank.d.ts +17 -0
  418. package/dist/wizard/lib/adapters/sandbox-bank.js +77 -0
  419. package/dist/wizard/lib/adapters/sandbox.d.ts +39 -0
  420. package/dist/wizard/lib/adapters/sandbox.js +174 -0
  421. package/dist/wizard/lib/adapters/stripe.d.ts +19 -0
  422. package/dist/wizard/lib/adapters/stripe.js +143 -0
  423. package/dist/wizard/lib/adapters/types.d.ts +9 -0
  424. package/dist/wizard/lib/adapters/types.js +10 -0
  425. package/dist/wizard/lib/agent-memory.d.ts +36 -0
  426. package/dist/wizard/lib/agent-memory.js +114 -0
  427. package/dist/wizard/lib/agent-registry.d.ts +21 -0
  428. package/dist/wizard/lib/agent-registry.js +105 -0
  429. package/dist/wizard/lib/anomaly-detection.d.ts +59 -0
  430. package/dist/wizard/lib/anomaly-detection.js +122 -0
  431. package/dist/wizard/lib/anthropic.d.ts +21 -0
  432. package/dist/wizard/lib/anthropic.js +105 -0
  433. package/dist/wizard/lib/asset-scanner.d.ts +23 -0
  434. package/dist/wizard/lib/asset-scanner.js +107 -0
  435. package/dist/wizard/lib/audit-log.d.ts +23 -0
  436. package/dist/wizard/lib/audit-log.js +70 -0
  437. package/dist/wizard/lib/autonomy-controller.d.ts +76 -0
  438. package/dist/wizard/lib/autonomy-controller.js +184 -0
  439. package/dist/wizard/lib/body-parser.d.ts +2 -0
  440. package/dist/wizard/lib/body-parser.js +36 -0
  441. package/dist/wizard/lib/build-analytics.d.ts +39 -0
  442. package/dist/wizard/lib/build-analytics.js +91 -0
  443. package/dist/wizard/lib/build-step.d.ts +21 -0
  444. package/dist/wizard/lib/build-step.js +104 -0
  445. package/dist/wizard/lib/campaign-proposer.d.ts +39 -0
  446. package/dist/wizard/lib/campaign-proposer.js +181 -0
  447. package/dist/wizard/lib/campaign-state-machine.d.ts +63 -0
  448. package/dist/wizard/lib/campaign-state-machine.js +114 -0
  449. package/dist/wizard/lib/ci-generator.d.ts +14 -0
  450. package/dist/wizard/lib/ci-generator.js +187 -0
  451. package/dist/wizard/lib/claude-merge.d.ts +38 -0
  452. package/dist/wizard/lib/claude-merge.js +115 -0
  453. package/dist/wizard/lib/codegen/erd-gen.d.ts +16 -0
  454. package/dist/wizard/lib/codegen/erd-gen.js +98 -0
  455. package/dist/wizard/lib/codegen/integrations.d.ts +18 -0
  456. package/dist/wizard/lib/codegen/integrations.js +189 -0
  457. package/dist/wizard/lib/codegen/openapi-gen.d.ts +15 -0
  458. package/dist/wizard/lib/codegen/openapi-gen.js +79 -0
  459. package/dist/wizard/lib/codegen/prisma-types.d.ts +15 -0
  460. package/dist/wizard/lib/codegen/prisma-types.js +44 -0
  461. package/dist/wizard/lib/codegen/seed-gen.d.ts +16 -0
  462. package/dist/wizard/lib/codegen/seed-gen.js +128 -0
  463. package/dist/wizard/lib/compliance.d.ts +51 -0
  464. package/dist/wizard/lib/compliance.js +112 -0
  465. package/dist/wizard/lib/correlation-engine.d.ts +59 -0
  466. package/dist/wizard/lib/correlation-engine.js +152 -0
  467. package/dist/wizard/lib/cost-estimator.d.ts +22 -0
  468. package/dist/wizard/lib/cost-estimator.js +72 -0
  469. package/dist/wizard/lib/cost-tracker.d.ts +27 -0
  470. package/dist/wizard/lib/cost-tracker.js +37 -0
  471. package/dist/wizard/lib/daemon-aggregator.d.ts +76 -0
  472. package/dist/wizard/lib/daemon-aggregator.js +241 -0
  473. package/dist/wizard/lib/daemon-core.d.ts +16 -0
  474. package/dist/wizard/lib/daemon-core.js +39 -0
  475. package/dist/wizard/lib/dashboard-data.d.ts +123 -0
  476. package/dist/wizard/lib/dashboard-data.js +314 -0
  477. package/dist/wizard/lib/dashboard-ws.d.ts +28 -0
  478. package/dist/wizard/lib/dashboard-ws.js +117 -0
  479. package/dist/wizard/lib/deep-current.d.ts +77 -0
  480. package/dist/wizard/lib/deep-current.js +247 -0
  481. package/dist/wizard/lib/deploy-coordinator.d.ts +40 -0
  482. package/dist/wizard/lib/deploy-coordinator.js +86 -0
  483. package/dist/wizard/lib/deploy-log.d.ts +28 -0
  484. package/dist/wizard/lib/deploy-log.js +52 -0
  485. package/dist/wizard/lib/desktop-notify.d.ts +27 -0
  486. package/dist/wizard/lib/desktop-notify.js +98 -0
  487. package/dist/wizard/lib/dns/cloudflare-dns.d.ts +35 -0
  488. package/dist/wizard/lib/dns/cloudflare-dns.js +216 -0
  489. package/dist/wizard/lib/dns/cloudflare-registrar.d.ts +31 -0
  490. package/dist/wizard/lib/dns/cloudflare-registrar.js +148 -0
  491. package/dist/wizard/lib/dns/types.d.ts +22 -0
  492. package/dist/wizard/lib/dns/types.js +4 -0
  493. package/dist/wizard/lib/document-discovery.d.ts +33 -0
  494. package/dist/wizard/lib/document-discovery.js +145 -0
  495. package/dist/wizard/lib/env-validator.d.ts +14 -0
  496. package/dist/wizard/lib/env-validator.js +205 -0
  497. package/dist/wizard/lib/env-writer.d.ts +13 -0
  498. package/dist/wizard/lib/env-writer.js +26 -0
  499. package/dist/wizard/lib/exec.d.ts +30 -0
  500. package/dist/wizard/lib/exec.js +52 -0
  501. package/dist/wizard/lib/experiment.d.ts +70 -0
  502. package/dist/wizard/lib/experiment.js +169 -0
  503. package/dist/wizard/lib/extensions.d.ts +20 -0
  504. package/dist/wizard/lib/extensions.js +183 -0
  505. package/dist/wizard/lib/financial/adapter-factory.d.ts +47 -0
  506. package/dist/wizard/lib/financial/adapter-factory.js +225 -0
  507. package/dist/wizard/lib/financial/billing/base.d.ts +6 -0
  508. package/dist/wizard/lib/financial/billing/base.js +1 -0
  509. package/dist/wizard/lib/financial/billing/google-billing.d.ts +56 -0
  510. package/dist/wizard/lib/financial/billing/google-billing.js +298 -0
  511. package/dist/wizard/lib/financial/billing/meta-billing.d.ts +54 -0
  512. package/dist/wizard/lib/financial/billing/meta-billing.js +243 -0
  513. package/dist/wizard/lib/financial/billing/tiktok-billing.d.ts +54 -0
  514. package/dist/wizard/lib/financial/billing/tiktok-billing.js +260 -0
  515. package/dist/wizard/lib/financial/campaign/base.d.ts +13 -0
  516. package/dist/wizard/lib/financial/campaign/base.js +1 -0
  517. package/dist/wizard/lib/financial/campaign/campaign-common.d.ts +21 -0
  518. package/dist/wizard/lib/financial/campaign/campaign-common.js +58 -0
  519. package/dist/wizard/lib/financial/campaign/google-api.d.ts +35 -0
  520. package/dist/wizard/lib/financial/campaign/google-api.js +118 -0
  521. package/dist/wizard/lib/financial/campaign/google-campaign.d.ts +38 -0
  522. package/dist/wizard/lib/financial/campaign/google-campaign.js +186 -0
  523. package/dist/wizard/lib/financial/campaign/meta-api.d.ts +28 -0
  524. package/dist/wizard/lib/financial/campaign/meta-api.js +93 -0
  525. package/dist/wizard/lib/financial/campaign/meta-campaign.d.ts +32 -0
  526. package/dist/wizard/lib/financial/campaign/meta-campaign.js +189 -0
  527. package/dist/wizard/lib/financial/campaign/sandbox-campaign.d.ts +45 -0
  528. package/dist/wizard/lib/financial/campaign/sandbox-campaign.js +261 -0
  529. package/dist/wizard/lib/financial/campaign/tiktok-api.d.ts +25 -0
  530. package/dist/wizard/lib/financial/campaign/tiktok-api.js +81 -0
  531. package/dist/wizard/lib/financial/campaign/tiktok-campaign.d.ts +37 -0
  532. package/dist/wizard/lib/financial/campaign/tiktok-campaign.js +155 -0
  533. package/dist/wizard/lib/financial/funding-auto.d.ts +44 -0
  534. package/dist/wizard/lib/financial/funding-auto.js +52 -0
  535. package/dist/wizard/lib/financial/funding-policy.d.ts +60 -0
  536. package/dist/wizard/lib/financial/funding-policy.js +179 -0
  537. package/dist/wizard/lib/financial/platform-planner.d.ts +47 -0
  538. package/dist/wizard/lib/financial/platform-planner.js +134 -0
  539. package/dist/wizard/lib/financial/reconciliation-engine.d.ts +78 -0
  540. package/dist/wizard/lib/financial/reconciliation-engine.js +193 -0
  541. package/dist/wizard/lib/financial/registry.d.ts +22 -0
  542. package/dist/wizard/lib/financial/registry.js +26 -0
  543. package/dist/wizard/lib/financial/reporting.d.ts +96 -0
  544. package/dist/wizard/lib/financial/reporting.js +198 -0
  545. package/dist/wizard/lib/financial/stablecoin/base.d.ts +6 -0
  546. package/dist/wizard/lib/financial/stablecoin/base.js +1 -0
  547. package/dist/wizard/lib/financial/stablecoin/circle.d.ts +54 -0
  548. package/dist/wizard/lib/financial/stablecoin/circle.js +367 -0
  549. package/dist/wizard/lib/financial/stablecoin/mercury.d.ts +24 -0
  550. package/dist/wizard/lib/financial/stablecoin/mercury.js +171 -0
  551. package/dist/wizard/lib/financial/stablecoin/sandbox-stablecoin.d.ts +47 -0
  552. package/dist/wizard/lib/financial/stablecoin/sandbox-stablecoin.js +202 -0
  553. package/dist/wizard/lib/financial/treasury-planner.d.ts +52 -0
  554. package/dist/wizard/lib/financial/treasury-planner.js +128 -0
  555. package/dist/wizard/lib/financial-core.d.ts +6 -0
  556. package/dist/wizard/lib/financial-core.js +5 -0
  557. package/dist/wizard/lib/financial-vault.d.ts +34 -0
  558. package/dist/wizard/lib/financial-vault.js +200 -0
  559. package/dist/wizard/lib/frontmatter.d.ts +30 -0
  560. package/dist/wizard/lib/frontmatter.js +99 -0
  561. package/dist/wizard/lib/gap-analysis.d.ts +37 -0
  562. package/dist/wizard/lib/gap-analysis.js +218 -0
  563. package/dist/wizard/lib/github.d.ts +22 -0
  564. package/dist/wizard/lib/github.js +261 -0
  565. package/dist/wizard/lib/headless-deploy.d.ts +14 -0
  566. package/dist/wizard/lib/headless-deploy.js +452 -0
  567. package/dist/wizard/lib/health-monitor.d.ts +15 -0
  568. package/dist/wizard/lib/health-monitor.js +91 -0
  569. package/dist/wizard/lib/health-poller.d.ts +9 -0
  570. package/dist/wizard/lib/health-poller.js +123 -0
  571. package/dist/wizard/lib/heartbeat-lifecycle.d.ts +71 -0
  572. package/dist/wizard/lib/heartbeat-lifecycle.js +107 -0
  573. package/dist/wizard/lib/heartbeat-scheduler.d.ts +26 -0
  574. package/dist/wizard/lib/heartbeat-scheduler.js +155 -0
  575. package/dist/wizard/lib/heartbeat.d.ts +22 -0
  576. package/dist/wizard/lib/heartbeat.js +538 -0
  577. package/dist/wizard/lib/herald.d.ts +28 -0
  578. package/dist/wizard/lib/herald.js +167 -0
  579. package/dist/wizard/lib/http-helpers.d.ts +9 -0
  580. package/dist/wizard/lib/http-helpers.js +24 -0
  581. package/dist/wizard/lib/image-gen.d.ts +56 -0
  582. package/dist/wizard/lib/image-gen.js +159 -0
  583. package/dist/wizard/lib/instance-sizing.d.ts +26 -0
  584. package/dist/wizard/lib/instance-sizing.js +51 -0
  585. package/dist/wizard/lib/kongo/analytics.d.ts +29 -0
  586. package/dist/wizard/lib/kongo/analytics.js +179 -0
  587. package/dist/wizard/lib/kongo/campaigns.d.ts +52 -0
  588. package/dist/wizard/lib/kongo/campaigns.js +91 -0
  589. package/dist/wizard/lib/kongo/client.d.ts +58 -0
  590. package/dist/wizard/lib/kongo/client.js +221 -0
  591. package/dist/wizard/lib/kongo/jobs.d.ts +57 -0
  592. package/dist/wizard/lib/kongo/jobs.js +122 -0
  593. package/dist/wizard/lib/kongo/pages.d.ts +60 -0
  594. package/dist/wizard/lib/kongo/pages.js +150 -0
  595. package/dist/wizard/lib/kongo/provisioner.d.ts +64 -0
  596. package/dist/wizard/lib/kongo/provisioner.js +116 -0
  597. package/dist/wizard/lib/kongo/seed.d.ts +49 -0
  598. package/dist/wizard/lib/kongo/seed.js +237 -0
  599. package/dist/wizard/lib/kongo/types.d.ts +323 -0
  600. package/dist/wizard/lib/kongo/types.js +11 -0
  601. package/dist/wizard/lib/kongo/variants.d.ts +57 -0
  602. package/dist/wizard/lib/kongo/variants.js +88 -0
  603. package/dist/wizard/lib/kongo/webhooks.d.ts +41 -0
  604. package/dist/wizard/lib/kongo/webhooks.js +112 -0
  605. package/dist/wizard/lib/marker.d.ts +28 -0
  606. package/dist/wizard/lib/marker.js +79 -0
  607. package/dist/wizard/lib/migrator.d.ts +35 -0
  608. package/dist/wizard/lib/migrator.js +190 -0
  609. package/dist/wizard/lib/natural-language-deploy.d.ts +30 -0
  610. package/dist/wizard/lib/natural-language-deploy.js +186 -0
  611. package/dist/wizard/lib/network.d.ts +22 -0
  612. package/dist/wizard/lib/network.js +72 -0
  613. package/dist/wizard/lib/oauth-core.d.ts +6 -0
  614. package/dist/wizard/lib/oauth-core.js +5 -0
  615. package/dist/wizard/lib/open-browser.d.ts +1 -0
  616. package/dist/wizard/lib/open-browser.js +26 -0
  617. package/dist/wizard/lib/patterns/ad-billing-adapter.d.ts +209 -0
  618. package/dist/wizard/lib/patterns/ad-billing-adapter.js +269 -0
  619. package/dist/wizard/lib/patterns/ad-platform-adapter.d.ts +200 -0
  620. package/dist/wizard/lib/patterns/ad-platform-adapter.js +212 -0
  621. package/dist/wizard/lib/patterns/daemon-process.d.ts +88 -0
  622. package/dist/wizard/lib/patterns/daemon-process.js +271 -0
  623. package/dist/wizard/lib/patterns/financial-transaction.d.ts +171 -0
  624. package/dist/wizard/lib/patterns/financial-transaction.js +154 -0
  625. package/dist/wizard/lib/patterns/funding-plan.d.ts +136 -0
  626. package/dist/wizard/lib/patterns/funding-plan.js +200 -0
  627. package/dist/wizard/lib/patterns/oauth-token-lifecycle.d.ts +94 -0
  628. package/dist/wizard/lib/patterns/oauth-token-lifecycle.js +139 -0
  629. package/dist/wizard/lib/patterns/outbound-rate-limiter.d.ts +67 -0
  630. package/dist/wizard/lib/patterns/outbound-rate-limiter.js +216 -0
  631. package/dist/wizard/lib/patterns/revenue-source-adapter.d.ts +96 -0
  632. package/dist/wizard/lib/patterns/revenue-source-adapter.js +182 -0
  633. package/dist/wizard/lib/patterns/stablecoin-adapter.d.ts +218 -0
  634. package/dist/wizard/lib/patterns/stablecoin-adapter.js +264 -0
  635. package/dist/wizard/lib/prd-validator.d.ts +39 -0
  636. package/dist/wizard/lib/prd-validator.js +137 -0
  637. package/dist/wizard/lib/project-init.d.ts +24 -0
  638. package/dist/wizard/lib/project-init.js +228 -0
  639. package/dist/wizard/lib/project-registry.d.ts +86 -0
  640. package/dist/wizard/lib/project-registry.js +359 -0
  641. package/dist/wizard/lib/project-scope.d.ts +64 -0
  642. package/dist/wizard/lib/project-scope.js +96 -0
  643. package/dist/wizard/lib/project-vault.d.ts +47 -0
  644. package/dist/wizard/lib/project-vault.js +221 -0
  645. package/dist/wizard/lib/provision-manifest.d.ts +44 -0
  646. package/dist/wizard/lib/provision-manifest.js +164 -0
  647. package/dist/wizard/lib/provisioner-registry.d.ts +15 -0
  648. package/dist/wizard/lib/provisioner-registry.js +34 -0
  649. package/dist/wizard/lib/provisioners/aws-config.d.ts +36 -0
  650. package/dist/wizard/lib/provisioners/aws-config.js +56 -0
  651. package/dist/wizard/lib/provisioners/aws-ec2.d.ts +19 -0
  652. package/dist/wizard/lib/provisioners/aws-ec2.js +241 -0
  653. package/dist/wizard/lib/provisioners/aws-rds.d.ts +10 -0
  654. package/dist/wizard/lib/provisioners/aws-rds.js +199 -0
  655. package/dist/wizard/lib/provisioners/aws-vps.d.ts +6 -0
  656. package/dist/wizard/lib/provisioners/aws-vps.js +231 -0
  657. package/dist/wizard/lib/provisioners/cloudflare.d.ts +6 -0
  658. package/dist/wizard/lib/provisioners/cloudflare.js +300 -0
  659. package/dist/wizard/lib/provisioners/docker.d.ts +6 -0
  660. package/dist/wizard/lib/provisioners/docker.js +75 -0
  661. package/dist/wizard/lib/provisioners/http-client.d.ts +20 -0
  662. package/dist/wizard/lib/provisioners/http-client.js +79 -0
  663. package/dist/wizard/lib/provisioners/railway-config.d.ts +24 -0
  664. package/dist/wizard/lib/provisioners/railway-config.js +220 -0
  665. package/dist/wizard/lib/provisioners/railway-deploy.d.ts +19 -0
  666. package/dist/wizard/lib/provisioners/railway-deploy.js +205 -0
  667. package/dist/wizard/lib/provisioners/railway.d.ts +6 -0
  668. package/dist/wizard/lib/provisioners/railway.js +45 -0
  669. package/dist/wizard/lib/provisioners/scripts/caddyfile.d.ts +10 -0
  670. package/dist/wizard/lib/provisioners/scripts/caddyfile.js +54 -0
  671. package/dist/wizard/lib/provisioners/scripts/deploy-vps.d.ts +10 -0
  672. package/dist/wizard/lib/provisioners/scripts/deploy-vps.js +112 -0
  673. package/dist/wizard/lib/provisioners/scripts/docker-compose.d.ts +11 -0
  674. package/dist/wizard/lib/provisioners/scripts/docker-compose.js +91 -0
  675. package/dist/wizard/lib/provisioners/scripts/dockerfile.d.ts +5 -0
  676. package/dist/wizard/lib/provisioners/scripts/dockerfile.js +185 -0
  677. package/dist/wizard/lib/provisioners/scripts/ecosystem-config.d.ts +10 -0
  678. package/dist/wizard/lib/provisioners/scripts/ecosystem-config.js +36 -0
  679. package/dist/wizard/lib/provisioners/scripts/provision-vps.d.ts +14 -0
  680. package/dist/wizard/lib/provisioners/scripts/provision-vps.js +202 -0
  681. package/dist/wizard/lib/provisioners/scripts/rollback-vps.d.ts +10 -0
  682. package/dist/wizard/lib/provisioners/scripts/rollback-vps.js +67 -0
  683. package/dist/wizard/lib/provisioners/self-deploy.d.ts +41 -0
  684. package/dist/wizard/lib/provisioners/self-deploy.js +185 -0
  685. package/dist/wizard/lib/provisioners/static-s3.d.ts +6 -0
  686. package/dist/wizard/lib/provisioners/static-s3.js +235 -0
  687. package/dist/wizard/lib/provisioners/types.d.ts +40 -0
  688. package/dist/wizard/lib/provisioners/types.js +4 -0
  689. package/dist/wizard/lib/provisioners/vercel.d.ts +6 -0
  690. package/dist/wizard/lib/provisioners/vercel.js +287 -0
  691. package/dist/wizard/lib/pty-manager.d.ts +42 -0
  692. package/dist/wizard/lib/pty-manager.js +244 -0
  693. package/dist/wizard/lib/rate-limiter-core.d.ts +5 -0
  694. package/dist/wizard/lib/rate-limiter-core.js +5 -0
  695. package/dist/wizard/lib/reconciliation.d.ts +43 -0
  696. package/dist/wizard/lib/reconciliation.js +173 -0
  697. package/dist/wizard/lib/revenue-types.d.ts +5 -0
  698. package/dist/wizard/lib/revenue-types.js +1 -0
  699. package/dist/wizard/lib/route-optimizer.d.ts +28 -0
  700. package/dist/wizard/lib/route-optimizer.js +93 -0
  701. package/dist/wizard/lib/s3-deploy.d.ts +19 -0
  702. package/dist/wizard/lib/s3-deploy.js +156 -0
  703. package/dist/wizard/lib/safety-tiers.d.ts +76 -0
  704. package/dist/wizard/lib/safety-tiers.js +134 -0
  705. package/dist/wizard/lib/sentry-generator.d.ts +15 -0
  706. package/dist/wizard/lib/sentry-generator.js +116 -0
  707. package/dist/wizard/lib/server-config.d.ts +13 -0
  708. package/dist/wizard/lib/server-config.js +23 -0
  709. package/dist/wizard/lib/service-install.d.ts +18 -0
  710. package/dist/wizard/lib/service-install.js +182 -0
  711. package/dist/wizard/lib/site-scanner.d.ts +80 -0
  712. package/dist/wizard/lib/site-scanner.js +262 -0
  713. package/dist/wizard/lib/ssh-deploy.d.ts +25 -0
  714. package/dist/wizard/lib/ssh-deploy.js +225 -0
  715. package/dist/wizard/lib/templates.d.ts +24 -0
  716. package/dist/wizard/lib/templates.js +219 -0
  717. package/dist/wizard/lib/totp.d.ts +35 -0
  718. package/dist/wizard/lib/totp.js +277 -0
  719. package/dist/wizard/lib/tower-auth.d.ts +43 -0
  720. package/dist/wizard/lib/tower-auth.js +352 -0
  721. package/dist/wizard/lib/tower-rate-limit.d.ts +14 -0
  722. package/dist/wizard/lib/tower-rate-limit.js +61 -0
  723. package/dist/wizard/lib/tower-session.d.ts +28 -0
  724. package/dist/wizard/lib/tower-session.js +119 -0
  725. package/dist/wizard/lib/treasury-backup.d.ts +23 -0
  726. package/dist/wizard/lib/treasury-backup.js +127 -0
  727. package/dist/wizard/lib/treasury-circuit-breakers.d.ts +28 -0
  728. package/dist/wizard/lib/treasury-circuit-breakers.js +74 -0
  729. package/dist/wizard/lib/treasury-handlers.d.ts +21 -0
  730. package/dist/wizard/lib/treasury-handlers.js +281 -0
  731. package/dist/wizard/lib/treasury-heartbeat.d.ts +18 -0
  732. package/dist/wizard/lib/treasury-heartbeat.js +20 -0
  733. package/dist/wizard/lib/treasury-io.d.ts +107 -0
  734. package/dist/wizard/lib/treasury-io.js +254 -0
  735. package/dist/wizard/lib/treasury-jobs.d.ts +14 -0
  736. package/dist/wizard/lib/treasury-jobs.js +589 -0
  737. package/dist/wizard/lib/treasury-migrator.d.ts +59 -0
  738. package/dist/wizard/lib/treasury-migrator.js +227 -0
  739. package/dist/wizard/lib/treasury-reader.d.ts +52 -0
  740. package/dist/wizard/lib/treasury-reader.js +235 -0
  741. package/dist/wizard/lib/updater.d.ts +29 -0
  742. package/dist/wizard/lib/updater.js +203 -0
  743. package/dist/wizard/lib/user-manager.d.ts +39 -0
  744. package/dist/wizard/lib/user-manager.js +182 -0
  745. package/dist/wizard/lib/vault.d.ts +26 -0
  746. package/dist/wizard/lib/vault.js +161 -0
  747. package/dist/wizard/router.d.ts +12 -0
  748. package/dist/wizard/router.js +58 -0
  749. package/dist/wizard/server.d.ts +18 -0
  750. package/dist/wizard/server.js +427 -0
  751. package/dist/wizard/ui/app.js +1357 -0
  752. package/dist/wizard/ui/danger-room-prophecy.js +217 -0
  753. package/dist/wizard/ui/danger-room.html +27 -0
  754. package/dist/wizard/ui/danger-room.js +29 -0
  755. package/dist/wizard/ui/deploy.html +181 -0
  756. package/dist/wizard/ui/deploy.js +616 -0
  757. package/dist/wizard/ui/favicon.svg +11 -0
  758. package/dist/wizard/ui/index.html +407 -0
  759. package/dist/wizard/ui/lobby.html +235 -0
  760. package/dist/wizard/ui/lobby.js +843 -0
  761. package/dist/wizard/ui/login.html +111 -0
  762. package/dist/wizard/ui/login.js +199 -0
  763. package/dist/wizard/ui/project.html +285 -0
  764. package/dist/wizard/ui/project.js +324 -0
  765. package/dist/wizard/ui/rollback.js +107 -0
  766. package/dist/wizard/ui/styles.css +1040 -0
  767. package/dist/wizard/ui/tower.html +177 -0
  768. package/dist/wizard/ui/tower.js +445 -0
  769. package/dist/wizard/ui/war-room-prophecy.js +217 -0
  770. package/dist/wizard/ui/war-room.html +27 -0
  771. package/dist/wizard/ui/war-room.js +29 -0
  772. package/package.json +60 -0
@@ -0,0 +1,614 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * VoidForge CLI — v21.0 The Extraction
4
+ *
5
+ * npx voidforge Launch wizard (browser UI at :3141)
6
+ * npx voidforge init Create new project (Gandalf flow)
7
+ * npx voidforge init --headless Create project without browser
8
+ * npx voidforge init --core Minimal methodology (no Holocron, no patterns)
9
+ * npx voidforge update Update project methodology (Bombadil)
10
+ * npx voidforge update --self Update the wizard itself
11
+ * npx voidforge update --extensions Update all installed extensions
12
+ * npx voidforge install <ext> Add extension to current project
13
+ * npx voidforge uninstall <ext> Remove extension from current project
14
+ * npx voidforge deploy Deploy project (Haku)
15
+ * npx voidforge doctor Check versions, compatibility, health
16
+ * npx voidforge migrate Migrate v20.x project to v21.0
17
+ * npx voidforge migrate treasury Migrate global treasury to per-project (v22.1)
18
+ * npx voidforge version Show wizard + methodology versions
19
+ * npx voidforge templates List available project templates
20
+ */
21
+ import { existsSync } from 'node:fs';
22
+ import { readFile } from 'node:fs/promises';
23
+ import { join, resolve } from 'node:path';
24
+ import { execSync } from 'node:child_process';
25
+ const args = process.argv.slice(2);
26
+ const command = args[0];
27
+ // ── Version ──────────────────────────────────────────────
28
+ async function getPackageVersion() {
29
+ const dir = import.meta.dirname ?? new URL('.', import.meta.url).pathname;
30
+ // Try ../package.json (dev: scripts/) then ../../package.json (dist: dist/scripts/)
31
+ for (const rel of ['..', '../..']) {
32
+ const pkgPath = resolve(dir, rel, 'package.json');
33
+ try {
34
+ const raw = await readFile(pkgPath, 'utf-8');
35
+ const pkg = JSON.parse(raw);
36
+ if ((pkg.name === 'voidforge-build' || pkg.name === '@voidforge/cli' || pkg.name === 'thevoidforge' || pkg.name === 'voidforge') && pkg.version) {
37
+ // Migration banner for legacy installs — printed on every run until user migrates.
38
+ if (pkg.name === 'thevoidforge' || pkg.name === '@voidforge/cli') {
39
+ process.stderr.write(`\n[VoidForge] You are running the legacy \`${pkg.name}\` CLI. Migrate:\n` +
40
+ ` npm uninstall -g ${pkg.name}\n` +
41
+ ` npm install -g voidforge-build@latest\n\n`);
42
+ }
43
+ return pkg.version;
44
+ }
45
+ }
46
+ catch {
47
+ continue;
48
+ }
49
+ }
50
+ return 'unknown';
51
+ }
52
+ // ── Commands ─────────────────────────────────────────────
53
+ async function cmdVersion() {
54
+ const ver = await getPackageVersion();
55
+ const nodeVer = process.version;
56
+ console.log(`VoidForge v${ver}`);
57
+ console.log(`Methodology v${ver}`);
58
+ console.log(`Node ${nodeVer}`);
59
+ }
60
+ async function cmdDoctor() {
61
+ const ver = await getPackageVersion();
62
+ const nodeVer = process.version;
63
+ const nodeMajor = parseInt(nodeVer.slice(1), 10);
64
+ const { findProjectRoot, getGlobalDir, getVaultPath, readMarker } = await import('../wizard/lib/marker.js');
65
+ const { readRegistry } = await import('../wizard/lib/project-registry.js');
66
+ console.log('\nVoidForge Doctor\n');
67
+ // Node.js check
68
+ const nodeOk = nodeMajor >= 20 && nodeMajor < 25;
69
+ console.log(`${nodeOk ? '✓' : '✗'} Node.js ${nodeVer} (required: >=20.11.0 <25.0.0)`);
70
+ // Wizard install
71
+ console.log(`✓ Wizard v${ver}`);
72
+ // Global config
73
+ const globalDir = getGlobalDir();
74
+ const globalExists = existsSync(globalDir);
75
+ console.log(`${globalExists ? '✓' : '✗'} Global config at ${globalDir}`);
76
+ if (globalExists) {
77
+ const vaultExists = existsSync(getVaultPath());
78
+ console.log(` - Vault: ${vaultExists ? '✓ (encrypted)' : '✗ not found'}`);
79
+ const projects = await readRegistry();
80
+ console.log(` - Projects: ${projects.length} registered`);
81
+ }
82
+ // Current project
83
+ const projectRoot = findProjectRoot();
84
+ if (projectRoot) {
85
+ const marker = await readMarker(projectRoot);
86
+ console.log(`✓ Current project: ${projectRoot}`);
87
+ if (marker) {
88
+ console.log(` - Marker: v${marker.version} (${marker.tier})`);
89
+ if (marker.extensions.length > 0) {
90
+ console.log(` - Extensions: ${marker.extensions.join(', ')}`);
91
+ }
92
+ }
93
+ }
94
+ else {
95
+ console.log('— No VoidForge project detected in current directory tree');
96
+ }
97
+ console.log('');
98
+ }
99
+ async function cmdTemplates() {
100
+ const { listTemplates } = await import('../wizard/lib/templates.js');
101
+ console.log('\nVoidForge Project Templates\n');
102
+ for (const t of listTemplates()) {
103
+ console.log(` ${t.id.padEnd(12)} ${t.name}`);
104
+ console.log(` ${''.padEnd(12)} ${t.description}\n`);
105
+ }
106
+ console.log('Usage: npx voidforge init --template <id>\n');
107
+ }
108
+ async function cmdDeploy() {
109
+ const isHeadless = args.includes('--headless');
110
+ const isSelfDeploy = args.includes('--self');
111
+ const isEnvOnly = args.includes('--env-only');
112
+ const projectDirFlag = args.find((a, i) => args[i - 1] === '--dir');
113
+ const hostFlag = args.find((a, i) => args[i - 1] === '--host');
114
+ if (isEnvOnly) {
115
+ const { envOnlyDeploy } = await import('../wizard/lib/headless-deploy.js');
116
+ await envOnlyDeploy(projectDirFlag);
117
+ }
118
+ else if (isSelfDeploy) {
119
+ const { generateCaddyTemplate } = await import('../wizard/lib/provisioners/self-deploy.js');
120
+ const domain = hostFlag ?? 'forge.yourdomain.com';
121
+ console.log('\nVoidForge Self-Deploy\n');
122
+ console.log('Generate the Caddy config and provision script with:');
123
+ console.log(' npx voidforge deploy --self --host forge.yourdomain.com\n');
124
+ console.log('Caddy template:\n');
125
+ console.log(generateCaddyTemplate(domain));
126
+ }
127
+ else if (isHeadless) {
128
+ const { headlessDeploy } = await import('../wizard/lib/headless-deploy.js');
129
+ await headlessDeploy(projectDirFlag);
130
+ }
131
+ else {
132
+ await launchWizard('deploy');
133
+ }
134
+ }
135
+ async function launchWizard(mode = 'init') {
136
+ const port = parseInt(process.env['VOIDFORGE_PORT'] ?? '3141', 10);
137
+ const isRemote = args.includes('--remote');
138
+ const isLan = args.includes('--lan');
139
+ const hostFlag = args.find((a, i) => args[i - 1] === '--host');
140
+ const wizardNames = {
141
+ init: { name: 'Gandalf', path: '/' },
142
+ deploy: { name: 'Haku', path: '/deploy.html' },
143
+ };
144
+ const wizard = wizardNames[mode];
145
+ const { startServer } = await import('../wizard/server.js');
146
+ const { openBrowser } = await import('../wizard/lib/open-browser.js');
147
+ const protocol = isRemote ? 'https' : 'http';
148
+ const host = isRemote ? (hostFlag ?? 'localhost') : 'localhost';
149
+ const url = `${protocol}://${host}:${port}${wizard.path}`;
150
+ const modeLabel = isRemote ? ' (Remote Mode)' : isLan ? ' (LAN Mode)' : '';
151
+ console.log('');
152
+ console.log(` VoidForge — ${wizard.name}${modeLabel}`);
153
+ console.log(` Server running at ${url}`);
154
+ if (isLan) {
155
+ console.log(' LAN Mode: Listening on all interfaces (0.0.0.0)');
156
+ console.log(' Access from private network: http://<your-ip>:' + port + wizard.path);
157
+ console.log(' Auth: optional password (no TOTP, no Caddy)');
158
+ }
159
+ if (isRemote)
160
+ console.log(' Authentication: REQUIRED (5-layer security active)');
161
+ console.log(' Press Ctrl+C to stop');
162
+ console.log('');
163
+ const serverOptions = isRemote ? { remote: true, host: hostFlag }
164
+ : isLan ? { lan: true }
165
+ : undefined;
166
+ await startServer(port, serverOptions);
167
+ if (!isRemote && !isLan)
168
+ await openBrowser(url);
169
+ }
170
+ async function cmdInitHeadless() {
171
+ const nameFlag = args.find((a, i) => args[i - 1] === '--name');
172
+ const dirFlag = args.find((a, i) => args[i - 1] === '--dir');
173
+ const onelinerFlag = args.find((a, i) => args[i - 1] === '--oneliner');
174
+ const domainFlag = args.find((a, i) => args[i - 1] === '--domain');
175
+ const repoFlag = args.find((a, i) => args[i - 1] === '--repo');
176
+ const isCore = args.includes('--core');
177
+ if (!nameFlag) {
178
+ console.error('Error: --name is required for headless init.');
179
+ console.error('Usage: npx voidforge init --headless --name "My Project" [--dir path] [--oneliner "..."]');
180
+ process.exit(1);
181
+ }
182
+ const defaultDir = join(process.env['HOME'] ?? process.env['USERPROFILE'] ?? '.', 'Projects', nameFlag.replace(/[^a-zA-Z0-9-_ ]/g, '').replace(/\s+/g, '-').toLowerCase());
183
+ const directory = dirFlag ?? defaultDir;
184
+ const { createProject } = await import('../wizard/lib/project-init.js');
185
+ const result = await createProject({
186
+ name: nameFlag,
187
+ directory,
188
+ oneliner: onelinerFlag,
189
+ domain: domainFlag,
190
+ repoUrl: repoFlag,
191
+ core: isCore,
192
+ });
193
+ console.log('');
194
+ console.log(` VoidForge — Project Created`);
195
+ console.log(` Name: ${nameFlag}`);
196
+ console.log(` Directory: ${result.projectDir}`);
197
+ console.log(` Files: ${result.filesCreated} methodology files`);
198
+ console.log(` Marker: ${result.markerId}`);
199
+ console.log('');
200
+ console.log(' Next: cd into the project and start building with Claude Code.');
201
+ console.log('');
202
+ }
203
+ async function cmdMigrateTreasury() {
204
+ const isDryRun = args.includes('--dry-run');
205
+ // Parse --project=<id> or --project <id>
206
+ let projectId;
207
+ for (let i = 2; i < args.length; i++) {
208
+ if (args[i].startsWith('--project=')) {
209
+ projectId = args[i].slice('--project='.length);
210
+ }
211
+ else if (args[i] === '--project' && args[i + 1]) {
212
+ projectId = args[i + 1];
213
+ }
214
+ }
215
+ if (!projectId) {
216
+ console.error('Error: --project=<id> is required.');
217
+ console.error('Usage: npx voidforge migrate treasury --project=<id> [--dry-run]');
218
+ console.error('\nList projects: npx voidforge doctor');
219
+ process.exit(1);
220
+ }
221
+ const { preFlightCheck, migrateTreasury } = await import('../wizard/lib/treasury-migrator.js');
222
+ const preflight = await preFlightCheck(projectId);
223
+ console.log('\n VoidForge v22.1 — Treasury Migration\n');
224
+ console.log(` Project: ${preflight.project?.name ?? projectId}`);
225
+ console.log(` ID: ${projectId}`);
226
+ if (preflight.context) {
227
+ console.log(` Dir: ${preflight.context.directory}`);
228
+ console.log(` Treasury: ${preflight.context.treasuryDir}`);
229
+ }
230
+ console.log(` Global: ${preflight.globalTreasuryDir} (${preflight.globalFileCount} files)`);
231
+ console.log('');
232
+ // Show warnings
233
+ for (const warning of preflight.warnings) {
234
+ console.log(` Warning: ${warning}`);
235
+ }
236
+ // Check for errors
237
+ if (preflight.errors.length > 0) {
238
+ for (const error of preflight.errors) {
239
+ console.error(` Error: ${error}`);
240
+ }
241
+ console.error('\n Migration aborted. Fix the errors above and retry.\n');
242
+ process.exit(1);
243
+ }
244
+ if (!preflight.context) {
245
+ console.error(' Error: Could not create project context.');
246
+ process.exit(1);
247
+ }
248
+ console.log(' Plan:');
249
+ if (preflight.globalTreasuryExists) {
250
+ console.log(' 1. Archive global treasury to ~/.voidforge/treasury-pre-v22/');
251
+ }
252
+ console.log(` ${preflight.globalTreasuryExists ? '2' : '1'}. Create per-project treasury at ${preflight.context.treasuryDir}`);
253
+ console.log(` ${preflight.globalTreasuryExists ? '3' : '2'}. Initialize genesis log files (clean break — no data copy)`);
254
+ console.log(` ${preflight.globalTreasuryExists ? '4' : '3'}. Set 0700 permissions`);
255
+ console.log(` ${preflight.globalTreasuryExists ? '5' : '4'}. Write migration manifest (.migrated)`);
256
+ if (preflight.globalTreasuryExists) {
257
+ console.log(` ${preflight.globalTreasuryExists ? '6' : '5'}. Validate archived hash chains`);
258
+ }
259
+ console.log('');
260
+ if (isDryRun) {
261
+ console.log(' (dry-run — no changes made)\n');
262
+ return;
263
+ }
264
+ const result = await migrateTreasury(preflight.context);
265
+ console.log(' Migration complete.');
266
+ console.log(` Archive: ${result.archiveDir}`);
267
+ console.log(` Treasury: ${result.treasuryDir}`);
268
+ console.log(` Spend log: ${result.manifest.spendLogEntries} archived entries (chain ${result.manifest.spendLogHashValid ? 'valid' : 'BROKEN'})`);
269
+ console.log(` Revenue log: ${result.manifest.revenueLogEntries} archived entries (chain ${result.manifest.revenueLogHashValid ? 'valid' : 'BROKEN'})`);
270
+ console.log(` Source files: ${result.manifest.sourceFileCount}`);
271
+ console.log('');
272
+ console.log(' Per-project logs start fresh (genesis hash). Global data preserved in archive.');
273
+ console.log(' To rollback: move archive back to ~/.voidforge/treasury/\n');
274
+ }
275
+ function showHelp() {
276
+ console.log('VoidForge — From nothing, everything.\n');
277
+ console.log('Usage: npx voidforge <command> [options]\n');
278
+ console.log('Commands:');
279
+ console.log(' (no command) Launch the wizard (browser UI)');
280
+ console.log(' init Create a new project');
281
+ console.log(' update Update project methodology');
282
+ console.log(' update --self Update the wizard itself');
283
+ console.log(' install <ext> Add extension to current project');
284
+ console.log(' uninstall <ext> Remove extension from current project');
285
+ console.log(' deploy Deploy project');
286
+ console.log(' migrate Migrate v20.x project to v21.0');
287
+ console.log(' migrate treasury Migrate global treasury to per-project (v22.1)');
288
+ console.log(' herald Silver Surfer — select optimal agent roster via Haiku');
289
+ console.log(' doctor Check versions, compatibility, health');
290
+ console.log(' version Show version information');
291
+ console.log(' templates List project templates');
292
+ console.log('\nOptions:');
293
+ console.log(' --help, -h Show this help');
294
+ console.log(' --remote Launch in remote mode (0.0.0.0 + auth)');
295
+ console.log(' --lan Launch in LAN mode');
296
+ console.log(' --headless CLI-only (no browser)');
297
+ console.log(' --self Deploy VoidForge itself');
298
+ console.log(' --env-only Write vault credentials to .env');
299
+ console.log('');
300
+ }
301
+ // ── Router ───────────────────────────────────────────────
302
+ async function main() {
303
+ try {
304
+ switch (command) {
305
+ case 'version':
306
+ case '--version':
307
+ case '-v':
308
+ await cmdVersion();
309
+ break;
310
+ case 'doctor':
311
+ await cmdDoctor();
312
+ break;
313
+ case 'templates':
314
+ await cmdTemplates();
315
+ break;
316
+ case 'deploy':
317
+ await cmdDeploy();
318
+ break;
319
+ case 'herald': {
320
+ // Silver Surfer — Herald dispatch: Haiku pre-scan selects optimal agent roster
321
+ const commandFlag = args.find((_a, i) => args[i - 1] === '--command') ?? '';
322
+ const focusFlag = args.find((_a, i) => args[i - 1] === '--focus') ?? undefined;
323
+ const jsonMode = args.includes('--json');
324
+ try {
325
+ const { gatherHeraldContext, runHerald } = await import('../wizard/lib/herald.js');
326
+ const { loadAgentRegistry, getRegistrySummary } = await import('../wizard/lib/agent-registry.js');
327
+ const context = await gatherHeraldContext(commandFlag, '', focusFlag);
328
+ const registry = await loadAgentRegistry();
329
+ const summary = getRegistrySummary(registry);
330
+ const result = await runHerald(context, registry);
331
+ if (jsonMode) {
332
+ console.log(JSON.stringify(result));
333
+ }
334
+ else {
335
+ console.log(`\n Silver Surfer scanned ${registry.length} agents for ${commandFlag || 'unknown command'}`);
336
+ if (focusFlag)
337
+ console.log(` Focus bias: "${focusFlag}"`);
338
+ console.log(` Selected ${result.estimatedAgents} agents: ${result.roster.join(', ')}`);
339
+ console.log(` Reasoning: ${result.reasoning}\n`);
340
+ }
341
+ }
342
+ catch (err) {
343
+ const msg = err instanceof Error ? err.message : String(err);
344
+ if (jsonMode) {
345
+ console.log(JSON.stringify({ roster: [], reasoning: `Herald unavailable: ${msg}`, estimatedAgents: 0 }));
346
+ }
347
+ else {
348
+ console.log(`\n Silver Surfer unavailable: ${msg}\n Commands will use their default agent roster.\n`);
349
+ }
350
+ }
351
+ break;
352
+ }
353
+ case 'install': {
354
+ const extName = args[1];
355
+ if (!extName) {
356
+ const { listExtensions } = await import('../wizard/lib/extensions.js');
357
+ console.log('\nAvailable extensions:\n');
358
+ for (const ext of listExtensions()) {
359
+ console.log(` ${ext.name.padEnd(16)} ${ext.description}`);
360
+ }
361
+ console.log('\nUsage: npx voidforge install <extension>\n');
362
+ break;
363
+ }
364
+ const { installExtension } = await import('../wizard/lib/extensions.js');
365
+ const { findProjectRoot } = await import('../wizard/lib/marker.js');
366
+ const projectRoot = findProjectRoot();
367
+ if (!projectRoot) {
368
+ console.error('Not a VoidForge project — run `npx voidforge init` first.');
369
+ process.exit(1);
370
+ }
371
+ const result = await installExtension(projectRoot, extName);
372
+ console.log(`\n Extension "${extName}" installed (${result.filesCreated} files created).\n`);
373
+ break;
374
+ }
375
+ case 'uninstall': {
376
+ const extToRemove = args[1];
377
+ if (!extToRemove) {
378
+ console.error('Usage: npx voidforge uninstall <extension>');
379
+ process.exit(1);
380
+ }
381
+ const { uninstallExtension } = await import('../wizard/lib/extensions.js');
382
+ const { findProjectRoot: findRoot } = await import('../wizard/lib/marker.js');
383
+ const root = findRoot();
384
+ if (!root) {
385
+ console.error('Not a VoidForge project — run `npx voidforge init` first.');
386
+ process.exit(1);
387
+ }
388
+ await uninstallExtension(root, extToRemove);
389
+ console.log(`\n Extension "${extToRemove}" uninstalled.\n`);
390
+ break;
391
+ }
392
+ case 'update': {
393
+ if (args.includes('--self')) {
394
+ const { selfUpdate } = await import('../wizard/lib/updater.js');
395
+ const result = selfUpdate();
396
+ console.log(result.message);
397
+ process.exit(result.success ? 0 : 1);
398
+ }
399
+ // Auto-upgrade CLI if behind npm latest (unless --no-self-update)
400
+ if (!args.includes('--self') && !args.includes('--extensions') && !args.includes('--no-self-update')) {
401
+ try {
402
+ // Strip npm_config_* env — CLI --registry flag doesn't override env vars (SEC-R2-001).
403
+ // Also drop undefined values — execSync stringifies them to "undefined" (R4-CURSED-002).
404
+ const safeEnv = {};
405
+ for (const [k, v] of Object.entries(process.env)) {
406
+ if (v !== undefined && !/^npm_config_/i.test(k))
407
+ safeEnv[k] = v;
408
+ }
409
+ const npmLatest = execSync('npm view voidforge-build version --registry=https://registry.npmjs.org/ 2>/dev/null', { encoding: 'utf-8', env: safeEnv }).trim();
410
+ const localVersion = await getPackageVersion();
411
+ if (npmLatest && localVersion && localVersion !== 'unknown' && npmLatest !== localVersion) {
412
+ const [nMaj, nMin, nPatch] = npmLatest.split('.').map(Number);
413
+ const [lMaj, lMin, lPatch] = localVersion.split('.').map(Number);
414
+ const npmNum = nMaj * 10000 + nMin * 100 + nPatch;
415
+ const localNum = lMaj * 10000 + lMin * 100 + lPatch;
416
+ if (npmNum > localNum) {
417
+ console.log(`\n CLI is v${localVersion}, npm has v${npmLatest}. Upgrading...`);
418
+ const { selfUpdate } = await import('../wizard/lib/updater.js');
419
+ const upgradeResult = selfUpdate();
420
+ if (upgradeResult.success) {
421
+ console.log(` Upgraded to v${npmLatest}. Re-running update with new version...\n`);
422
+ // Re-exec with the new version — the new binary has the updated methodology
423
+ try {
424
+ execSync('npx voidforge-build update --no-self-update', { stdio: 'inherit' });
425
+ }
426
+ catch { /* exit code propagated */ }
427
+ process.exit(0);
428
+ }
429
+ else {
430
+ console.log(` Self-upgrade failed: ${upgradeResult.message}. Continuing with v${localVersion}...`);
431
+ }
432
+ }
433
+ }
434
+ }
435
+ catch {
436
+ // npm view failed — offline or registry issue. Continue with local version.
437
+ }
438
+ }
439
+ if (args.includes('--extensions')) {
440
+ const { readRegistry } = await import('../wizard/lib/project-registry.js');
441
+ const { readMarker: readMkr } = await import('../wizard/lib/marker.js');
442
+ const { getExtension } = await import('../wizard/lib/extensions.js');
443
+ let updated = 0;
444
+ try {
445
+ const projects = await readRegistry();
446
+ for (const p of projects) {
447
+ const marker = await readMkr(p.directory);
448
+ if (!marker || marker.extensions.length === 0)
449
+ continue;
450
+ for (const extName of marker.extensions) {
451
+ const ext = getExtension(extName);
452
+ if (ext) {
453
+ await ext.install(p.directory);
454
+ updated++;
455
+ }
456
+ }
457
+ }
458
+ }
459
+ catch {
460
+ // Registry read failure — non-fatal
461
+ }
462
+ console.log(`\n Extensions updated across ${updated} project(s).\n`);
463
+ break;
464
+ }
465
+ // Methodology update
466
+ const { findProjectRoot: findProjRoot } = await import('../wizard/lib/marker.js');
467
+ const projRoot = findProjRoot();
468
+ if (!projRoot) {
469
+ console.error('Not a VoidForge project — run `npx voidforge init` first.');
470
+ process.exit(1);
471
+ }
472
+ const { diffMethodology, applyUpdate } = await import('../wizard/lib/updater.js');
473
+ const plan = await diffMethodology(projRoot);
474
+ if (plan.added.length === 0 && plan.modified.length === 0) {
475
+ console.log('\n Methodology is up to date. No changes needed.\n');
476
+ break;
477
+ }
478
+ console.log('\n VoidForge Update Plan (Bombadil)\n');
479
+ if (plan.added.length > 0) {
480
+ console.log(` New files (${plan.added.length}):`);
481
+ for (const f of plan.added)
482
+ console.log(` + ${f}`);
483
+ }
484
+ if (plan.modified.length > 0) {
485
+ console.log(` Modified (${plan.modified.length}):`);
486
+ for (const f of plan.modified)
487
+ console.log(` ~ ${f}`);
488
+ }
489
+ if (plan.removed.length > 0) {
490
+ console.log(` Removed upstream (${plan.removed.length}):`);
491
+ for (const f of plan.removed)
492
+ console.log(` - ${f} (kept locally)`);
493
+ }
494
+ console.log(` Unchanged: ${plan.unchanged} files\n`);
495
+ const result = await applyUpdate(projRoot);
496
+ console.log(` Updated to v${result.newVersion}. ${plan.added.length + plan.modified.length} files changed.\n`);
497
+ break;
498
+ }
499
+ case 'migrate': {
500
+ // Subcommand: migrate treasury --project=<id>
501
+ if (args[1] === 'treasury') {
502
+ await cmdMigrateTreasury();
503
+ break;
504
+ }
505
+ const isDryRun = args.includes('--dry-run');
506
+ const migrateDir = args.find((a, i) => args[i - 1] === '--dir') ?? process.cwd();
507
+ const { detectV20Project, migrateProject } = await import('../wizard/lib/migrator.js');
508
+ const migPlan = await detectV20Project(migrateDir);
509
+ if (!migPlan.hasWizardDir) {
510
+ console.log('\n No wizard/ directory found — this is not a v20.x project.\n');
511
+ break;
512
+ }
513
+ console.log('\n VoidForge v21.0 — Migration\n');
514
+ console.log(' Your project contains an embedded wizard (v20.x model).');
515
+ console.log(' VoidForge now runs as a standalone application.\n');
516
+ console.log(' Plan:');
517
+ console.log(` 1. Backup wizard/ (${migPlan.wizardFileCount} files) to ~/.voidforge/migration-backup/`);
518
+ if (migPlan.voidforgeDeps.length > 0) {
519
+ console.log(` 2. Remove ${migPlan.voidforgeDeps.length} VoidForge deps from package.json`);
520
+ }
521
+ console.log(' 3. Remove wizard/ directory');
522
+ console.log(' 4. Add .voidforge marker file');
523
+ console.log(' 5. Keep all methodology files in place\n');
524
+ if (isDryRun) {
525
+ console.log(' (dry-run — no changes made)\n');
526
+ break;
527
+ }
528
+ const migResult = await migrateProject(migrateDir);
529
+ console.log(` Migration complete.`);
530
+ console.log(` Backup: ${migResult.backupDir}`);
531
+ console.log(` Files removed: ${migResult.wizardFilesRemoved}`);
532
+ if (migResult.depsRemoved.length > 0) {
533
+ console.log(` Deps removed: ${migResult.depsRemoved.join(', ')}`);
534
+ }
535
+ console.log(` Marker created: ${migResult.markerCreated}\n`);
536
+ console.log(' To rollback: restore from the backup directory.\n');
537
+ break;
538
+ }
539
+ case 'init':
540
+ if (args.includes('--headless')) {
541
+ await cmdInitHeadless();
542
+ }
543
+ else {
544
+ await launchWizard('init');
545
+ }
546
+ break;
547
+ case 'heartbeat': {
548
+ const subCmd = args[1]; // start | stop | status
549
+ if (subCmd !== 'start') {
550
+ console.error('Usage: voidforge heartbeat start [--project-dir <path>]');
551
+ process.exit(1);
552
+ }
553
+ // Parse --project-dir for per-project daemon (v22.0 ADR-041 P1-A)
554
+ const projectDirIdx = args.indexOf('--project-dir');
555
+ const projectDir = projectDirIdx >= 0 ? args[projectDirIdx + 1] : undefined;
556
+ if (projectDir) {
557
+ if (!existsSync(projectDir)) {
558
+ console.error(`Project directory does not exist: ${projectDir}`);
559
+ process.exit(1);
560
+ }
561
+ // Configure per-project paths BEFORE daemon starts
562
+ const { configurePaths, checkGlobalDaemon } = await import('../wizard/lib/daemon-core.js');
563
+ configurePaths(projectDir);
564
+ // Dual-daemon guard
565
+ const globalRunning = await checkGlobalDaemon();
566
+ if (globalRunning) {
567
+ console.error('A global heartbeat daemon is running at ~/.voidforge/run/.');
568
+ console.error('Stop it first: kill $(cat ~/.voidforge/run/heartbeat.pid)');
569
+ process.exit(1);
570
+ }
571
+ // Set project ID and dir for financial operations
572
+ const { setDaemonProjectId, setDaemonProjectDir } = await import('../wizard/lib/heartbeat.js');
573
+ setDaemonProjectDir(projectDir);
574
+ // Look up project in registry for ID
575
+ const { findByDirectory } = await import('../wizard/lib/project-registry.js');
576
+ const project = await findByDirectory(resolve(projectDir));
577
+ if (project) {
578
+ setDaemonProjectId(project.id);
579
+ console.log(` Heartbeat daemon starting for project: ${project.name} (${project.id})`);
580
+ }
581
+ else {
582
+ console.log(` Heartbeat daemon starting for directory: ${projectDir} (not in registry)`);
583
+ }
584
+ }
585
+ // Prompt for vault password
586
+ const { createInterface } = await import('node:readline');
587
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
588
+ const password = await new Promise((res) => {
589
+ rl.question('Vault password: ', (answer) => { rl.close(); res(answer); });
590
+ });
591
+ const { startHeartbeat } = await import('../wizard/lib/heartbeat.js');
592
+ await startHeartbeat(password);
593
+ break;
594
+ }
595
+ case '--help':
596
+ case '-h':
597
+ showHelp();
598
+ break;
599
+ case undefined:
600
+ // No command — launch wizard
601
+ await launchWizard('init');
602
+ break;
603
+ default:
604
+ console.error(`Unknown command: ${command}`);
605
+ showHelp();
606
+ process.exit(1);
607
+ }
608
+ }
609
+ catch (err) {
610
+ console.error('Error:', err.message);
611
+ process.exit(1);
612
+ }
613
+ }
614
+ main();
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Auth API — Login, logout, session check, initial setup.
3
+ * All responses use { success, data?, error? } format.
4
+ */
5
+ export {};