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,244 @@
1
+ /**
2
+ * Users API — Multi-user management endpoints.
3
+ * All user management requires admin role.
4
+ * Invite completion is public (token-authenticated).
5
+ */
6
+ import { addRoute } from '../router.js';
7
+ import { parseJsonBody } from '../lib/body-parser.js';
8
+ import { validateSession, parseSessionCookie, isRemoteMode, getClientIp, checkRateLimit, isValidUsername, } from '../lib/tower-auth.js';
9
+ import { createInvite, completeInvite, removeUser, updateUserRole, listUsers, hasRole, isValidRole, } from '../lib/user-manager.js';
10
+ import { audit } from '../lib/audit-log.js';
11
+ import { removeUserFromAllProjects } from '../lib/project-registry.js';
12
+ import { sendJson } from '../lib/http-helpers.js';
13
+ /** Extract and validate session from request. Returns null if not authenticated. */
14
+ function getSession(req) {
15
+ const token = parseSessionCookie(req.headers.cookie);
16
+ const ip = getClientIp(req);
17
+ if (!token)
18
+ return null;
19
+ return validateSession(token, ip);
20
+ }
21
+ // GET /api/users — List all users (admin only)
22
+ addRoute('GET', '/api/users', async (req, res) => {
23
+ if (!isRemoteMode()) {
24
+ sendJson(res, 400, { success: false, error: 'User management requires remote mode' });
25
+ return;
26
+ }
27
+ const session = getSession(req);
28
+ if (!session) {
29
+ sendJson(res, 401, { success: false, error: 'Authentication required' });
30
+ return;
31
+ }
32
+ if (!hasRole(session, 'admin')) {
33
+ const ip = getClientIp(req);
34
+ await audit('access_denied', ip, session.username, { action: 'list_users' });
35
+ sendJson(res, 404, { success: false, error: 'Not found' });
36
+ return;
37
+ }
38
+ const users = await listUsers();
39
+ sendJson(res, 200, { success: true, data: { users } });
40
+ });
41
+ // POST /api/users/invite — Create invitation (admin only)
42
+ addRoute('POST', '/api/users/invite', async (req, res) => {
43
+ if (!isRemoteMode()) {
44
+ sendJson(res, 400, { success: false, error: 'User management requires remote mode' });
45
+ return;
46
+ }
47
+ const session = getSession(req);
48
+ if (!session) {
49
+ sendJson(res, 401, { success: false, error: 'Authentication required' });
50
+ return;
51
+ }
52
+ // Admin check at route level (defense-in-depth — createInvite also checks)
53
+ if (!hasRole(session, 'admin')) {
54
+ const ip = getClientIp(req);
55
+ await audit('access_denied', ip, session.username, { action: 'create_invite' });
56
+ sendJson(res, 404, { success: false, error: 'Not found' });
57
+ return;
58
+ }
59
+ const body = await parseJsonBody(req);
60
+ if (typeof body !== 'object' || body === null) {
61
+ sendJson(res, 400, { success: false, error: 'Request body must be a JSON object' });
62
+ return;
63
+ }
64
+ const { role } = body;
65
+ if (typeof role !== 'string' || !isValidRole(role)) {
66
+ sendJson(res, 400, { success: false, error: 'role must be one of: admin, deployer, viewer' });
67
+ return;
68
+ }
69
+ const ip = getClientIp(req);
70
+ try {
71
+ const invite = await createInvite(role, session, ip);
72
+ sendJson(res, 201, { success: true, data: invite });
73
+ }
74
+ catch (err) {
75
+ const message = err instanceof Error ? err.message : 'Failed to create invite';
76
+ if (message === 'Too many pending invites' || message === 'Invalid role') {
77
+ sendJson(res, 400, { success: false, error: message });
78
+ }
79
+ else {
80
+ sendJson(res, 400, { success: false, error: 'Failed to create invite' });
81
+ }
82
+ }
83
+ });
84
+ // POST /api/users/complete-invite — New user completes invitation setup
85
+ addRoute('POST', '/api/users/complete-invite', async (req, res) => {
86
+ if (!isRemoteMode()) {
87
+ sendJson(res, 400, { success: false, error: 'User management requires remote mode' });
88
+ return;
89
+ }
90
+ // Rate limit — this is a public endpoint (auth-exempt)
91
+ const ip = getClientIp(req);
92
+ const rateCheck = checkRateLimit(ip);
93
+ if (!rateCheck.allowed) {
94
+ sendJson(res, 429, { success: false, error: 'Too many attempts. Try again later.' });
95
+ return;
96
+ }
97
+ const body = await parseJsonBody(req);
98
+ if (typeof body !== 'object' || body === null) {
99
+ sendJson(res, 400, { success: false, error: 'Request body must be a JSON object' });
100
+ return;
101
+ }
102
+ const { token, username, password } = body;
103
+ if (typeof token !== 'string' || token.length !== 64) {
104
+ sendJson(res, 400, { success: false, error: 'Invalid invite token' });
105
+ return;
106
+ }
107
+ if (typeof username !== 'string' || !isValidUsername(username.trim())) {
108
+ sendJson(res, 400, { success: false, error: 'Username must be 3-64 characters (letters, numbers, . _ -)' });
109
+ return;
110
+ }
111
+ if (typeof password !== 'string' || password.length < 12 || password.length > 256) {
112
+ sendJson(res, 400, { success: false, error: 'Password must be 12-256 characters' });
113
+ return;
114
+ }
115
+ try {
116
+ const result = await completeInvite(token, username.trim(), password, ip);
117
+ sendJson(res, 201, {
118
+ success: true,
119
+ data: {
120
+ totpSecret: result.totpSecret,
121
+ totpUri: result.totpUri,
122
+ role: result.role,
123
+ message: 'Scan the QR code with your authenticator app.',
124
+ },
125
+ }, true); // no-cache — TOTP secret must not be cached
126
+ }
127
+ catch (err) {
128
+ const message = err instanceof Error ? err.message : 'Failed to complete invite';
129
+ if (message === 'Invalid or expired invite') {
130
+ sendJson(res, 404, { success: false, error: 'Invalid or expired invite' });
131
+ }
132
+ else if (message === 'Username already taken') {
133
+ sendJson(res, 409, { success: false, error: 'Username already taken' });
134
+ }
135
+ else {
136
+ sendJson(res, 400, { success: false, error: 'Failed to complete setup' });
137
+ }
138
+ }
139
+ });
140
+ // POST /api/users/remove — Remove a user (admin only)
141
+ addRoute('POST', '/api/users/remove', async (req, res) => {
142
+ if (!isRemoteMode()) {
143
+ sendJson(res, 400, { success: false, error: 'User management requires remote mode' });
144
+ return;
145
+ }
146
+ const session = getSession(req);
147
+ if (!session) {
148
+ sendJson(res, 401, { success: false, error: 'Authentication required' });
149
+ return;
150
+ }
151
+ if (!hasRole(session, 'admin')) {
152
+ const ip = getClientIp(req);
153
+ await audit('access_denied', ip, session.username, { action: 'remove_user' });
154
+ sendJson(res, 404, { success: false, error: 'Not found' });
155
+ return;
156
+ }
157
+ const body = await parseJsonBody(req);
158
+ if (typeof body !== 'object' || body === null) {
159
+ sendJson(res, 400, { success: false, error: 'Request body must be a JSON object' });
160
+ return;
161
+ }
162
+ const { username } = body;
163
+ if (typeof username !== 'string' || username.trim().length === 0) {
164
+ sendJson(res, 400, { success: false, error: 'username is required' });
165
+ return;
166
+ }
167
+ // Prevent self-deletion
168
+ if (username.trim() === session.username) {
169
+ sendJson(res, 400, { success: false, error: 'Cannot remove yourself' });
170
+ return;
171
+ }
172
+ const ip = getClientIp(req);
173
+ try {
174
+ await removeUser(username.trim());
175
+ // Clean up project access entries for the removed user
176
+ const cleanedProjects = await removeUserFromAllProjects(username.trim());
177
+ await audit('user_remove', ip, session.username, { target: username.trim(), projectsCleanedUp: cleanedProjects });
178
+ sendJson(res, 200, { success: true });
179
+ }
180
+ catch (err) {
181
+ const message = err instanceof Error ? err.message : 'Failed to remove user';
182
+ if (message === 'User not found' || message === 'Cannot remove the last admin') {
183
+ sendJson(res, 400, { success: false, error: message });
184
+ }
185
+ else {
186
+ sendJson(res, 400, { success: false, error: 'Failed to remove user' });
187
+ }
188
+ }
189
+ });
190
+ // POST /api/users/role — Change a user's role (admin only)
191
+ addRoute('POST', '/api/users/role', async (req, res) => {
192
+ if (!isRemoteMode()) {
193
+ sendJson(res, 400, { success: false, error: 'User management requires remote mode' });
194
+ return;
195
+ }
196
+ const session = getSession(req);
197
+ if (!session) {
198
+ sendJson(res, 401, { success: false, error: 'Authentication required' });
199
+ return;
200
+ }
201
+ if (!hasRole(session, 'admin')) {
202
+ const ip = getClientIp(req);
203
+ await audit('access_denied', ip, session.username, { action: 'change_role' });
204
+ sendJson(res, 404, { success: false, error: 'Not found' });
205
+ return;
206
+ }
207
+ const body = await parseJsonBody(req);
208
+ if (typeof body !== 'object' || body === null) {
209
+ sendJson(res, 400, { success: false, error: 'Request body must be a JSON object' });
210
+ return;
211
+ }
212
+ const { username, role } = body;
213
+ if (typeof username !== 'string' || username.trim().length === 0) {
214
+ sendJson(res, 400, { success: false, error: 'username is required' });
215
+ return;
216
+ }
217
+ if (typeof role !== 'string' || !isValidRole(role)) {
218
+ sendJson(res, 400, { success: false, error: 'role must be one of: admin, deployer, viewer' });
219
+ return;
220
+ }
221
+ // Prevent self-demotion (accidental lockout)
222
+ if (username.trim() === session.username && role !== session.role) {
223
+ sendJson(res, 400, { success: false, error: 'Cannot change your own role' });
224
+ return;
225
+ }
226
+ const ip = getClientIp(req);
227
+ try {
228
+ await updateUserRole(username.trim(), role);
229
+ await audit('role_change', ip, session.username, {
230
+ target: username.trim(),
231
+ newRole: role,
232
+ });
233
+ sendJson(res, 200, { success: true });
234
+ }
235
+ catch (err) {
236
+ const message = err instanceof Error ? err.message : 'Failed to update role';
237
+ if (message === 'User not found' || message === 'Cannot demote the last admin') {
238
+ sendJson(res, 400, { success: false, error: message });
239
+ }
240
+ else {
241
+ sendJson(res, 400, { success: false, error: 'Failed to update role' });
242
+ }
243
+ }
244
+ });
@@ -0,0 +1,16 @@
1
+ /**
2
+ * War Room API — Alternative dashboard view using shared data parsers.
3
+ *
4
+ * v22.0 (ADR-041 M1): All routes use resolveProject() for project scoping.
5
+ * Routes registered at /api/projects/:id/war-room/*.
6
+ *
7
+ * Shares all parsers and WebSocket infra with Danger Room via wizard/lib/dashboard-*.ts.
8
+ */
9
+ import type { IncomingMessage } from 'node:http';
10
+ import type { Duplex } from 'node:stream';
11
+ export declare const broadcastWarRoom: (data: {
12
+ type: string;
13
+ [key: string]: unknown;
14
+ }, projectId?: string) => void;
15
+ export declare const closeWarRoom: () => void;
16
+ export declare const handleWarRoomUpgrade: (req: IncomingMessage, socket: Duplex, head: Buffer, projectId?: string) => void;
@@ -0,0 +1,70 @@
1
+ /**
2
+ * War Room API — Alternative dashboard view using shared data parsers.
3
+ *
4
+ * v22.0 (ADR-041 M1): All routes use resolveProject() for project scoping.
5
+ * Routes registered at /api/projects/:id/war-room/*.
6
+ *
7
+ * Shares all parsers and WebSocket infra with Danger Room via wizard/lib/dashboard-*.ts.
8
+ */
9
+ import { addRoute } from '../router.js';
10
+ import { sendJson } from '../lib/http-helpers.js';
11
+ import { resolveProject } from '../lib/project-scope.js';
12
+ import { parseCampaignState, parseBuildState, parseFindings, readDeployLog, readVersion, readContextStats, } from '../lib/dashboard-data.js';
13
+ import { createDashboardWs } from '../lib/dashboard-ws.js';
14
+ // ── WebSocket ───────────────────────────────────
15
+ const ws = createDashboardWs('War Room');
16
+ export const broadcastWarRoom = ws.broadcast;
17
+ export const closeWarRoom = ws.close;
18
+ export const handleWarRoomUpgrade = (req, socket, head, projectId) => ws.handleUpgrade(req, socket, head, projectId);
19
+ // ── Project-scoped REST endpoints ──────────────
20
+ addRoute('GET', '/api/projects/:id/war-room/campaign', async (req, res) => {
21
+ const resolved = await resolveProject(req, res);
22
+ if (!resolved)
23
+ return;
24
+ sendJson(res, 200, await parseCampaignState(resolved.context.logsDir));
25
+ });
26
+ addRoute('GET', '/api/projects/:id/war-room/build', async (req, res) => {
27
+ const resolved = await resolveProject(req, res);
28
+ if (!resolved)
29
+ return;
30
+ sendJson(res, 200, await parseBuildState(resolved.context.logsDir));
31
+ });
32
+ addRoute('GET', '/api/projects/:id/war-room/findings', async (req, res) => {
33
+ const resolved = await resolveProject(req, res);
34
+ if (!resolved)
35
+ return;
36
+ sendJson(res, 200, await parseFindings(resolved.context.logsDir));
37
+ });
38
+ addRoute('GET', '/api/projects/:id/war-room/version', async (req, res) => {
39
+ const resolved = await resolveProject(req, res);
40
+ if (!resolved)
41
+ return;
42
+ sendJson(res, 200, await readVersion(resolved.context.directory));
43
+ });
44
+ addRoute('GET', '/api/projects/:id/war-room/deploy', async (req, res) => {
45
+ const resolved = await resolveProject(req, res);
46
+ if (!resolved)
47
+ return;
48
+ sendJson(res, 200, await readDeployLog(resolved.context.logsDir));
49
+ });
50
+ addRoute('GET', '/api/projects/:id/war-room/context', async (_req, res) => {
51
+ // Context stats are global (user-scoped Claude session)
52
+ sendJson(res, 200, await readContextStats());
53
+ });
54
+ addRoute('GET', '/api/projects/:id/war-room/experiments', async (req, res) => {
55
+ const resolved = await resolveProject(req, res);
56
+ if (!resolved)
57
+ return;
58
+ try {
59
+ const { listExperiments } = await import('../lib/experiment.js');
60
+ const experiments = await listExperiments();
61
+ sendJson(res, 200, { experiments, total: experiments.length });
62
+ }
63
+ catch {
64
+ sendJson(res, 200, { experiments: [], total: 0 });
65
+ }
66
+ });
67
+ // ── Legacy routes removed (ADR-046, v23.4) ────────
68
+ // The standalone war-room.html now redirects to the project dashboard.
69
+ // Legacy /api/war-room/* shims (v22.0.x P0-B) have been removed.
70
+ // All data is served via /api/projects/:id/war-room/* routes above.
@@ -0,0 +1,5 @@
1
+ {
2
+ "health_endpoint": null,
3
+ "pm2_process": null,
4
+ "panels": ["git-status", "tests"]
5
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Ad platform core — re-exports from the ad-platform-adapter pattern for wizard runtime use.
3
+ * ARCH-R2-012: Production code should not import from docs/patterns/ directly.
4
+ */
5
+ export type { AdPlatformSetup, AdPlatformAdapter, ReadOnlyAdapter, CampaignConfig, CampaignResult, CampaignUpdate, CreativeConfig, SpendReport, PerformanceMetrics, InsightData, OAuthTokens, ConnectionStatus, PlatformError, Cents, Percentage, Ratio, AdPlatform, } from './patterns/ad-platform-adapter.js';
6
+ export { toCents, toDollars } from './patterns/ad-platform-adapter.js';
@@ -0,0 +1 @@
1
+ export { toCents, toDollars } from './patterns/ad-platform-adapter.js';
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Ad Platform Adapter Registry
3
+ *
4
+ * v17.0 No Stubs Doctrine: only fully-implemented adapters are exported.
5
+ * Stub files (meta, google, tiktok, linkedin, twitter, reddit, mercury, brex)
6
+ * were deleted — they contained 77 `throw new Error('Implement...')` calls.
7
+ * These adapters will be implemented when developer accounts are available (v17.1+).
8
+ * See ROADMAP.md for the planned adapter list.
9
+ *
10
+ * Available adapters:
11
+ * - SandboxSetup/SandboxAdapter — full implementation with realistic fake data
12
+ * - SandboxBankAdapter — full implementation for bank/revenue demo
13
+ * - StripeAdapter — real Stripe API via node:https (free test mode)
14
+ *
15
+ * PRD Reference: §9.5, §9.19.10, §9.20.4, §8.1 (Implementation Completeness Policy)
16
+ */
17
+ export { SandboxSetup, SandboxAdapter } from './sandbox.js';
18
+ export { SandboxBankAdapter } from './sandbox-bank.js';
19
+ export { StripeAdapter } from './stripe.js';
20
+ export type { AdPlatform } from './types.js';
21
+ import type { AdPlatform } from './types.js';
22
+ type PlatformInfo = {
23
+ name: string;
24
+ minBudgetCents: number;
25
+ sandbox?: boolean;
26
+ implemented: boolean;
27
+ };
28
+ /** Platform registry — tracks both available and planned adapters. */
29
+ export declare const PLATFORM_REGISTRY: Record<AdPlatform | 'sandbox', PlatformInfo>;
30
+ /** Revenue adapters — only those with real implementations. */
31
+ export declare const REVENUE_ADAPTERS: {
32
+ readonly sandbox: {
33
+ readonly name: "Sandbox Bank (Demo)";
34
+ readonly implemented: true;
35
+ };
36
+ readonly stripe: {
37
+ readonly name: "Stripe";
38
+ readonly implemented: true;
39
+ };
40
+ readonly paddle: {
41
+ readonly name: "Paddle";
42
+ readonly implemented: false;
43
+ };
44
+ readonly mercury: {
45
+ readonly name: "Mercury";
46
+ readonly implemented: false;
47
+ };
48
+ readonly brex: {
49
+ readonly name: "Brex";
50
+ readonly implemented: false;
51
+ };
52
+ };
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Ad Platform Adapter Registry
3
+ *
4
+ * v17.0 No Stubs Doctrine: only fully-implemented adapters are exported.
5
+ * Stub files (meta, google, tiktok, linkedin, twitter, reddit, mercury, brex)
6
+ * were deleted — they contained 77 `throw new Error('Implement...')` calls.
7
+ * These adapters will be implemented when developer accounts are available (v17.1+).
8
+ * See ROADMAP.md for the planned adapter list.
9
+ *
10
+ * Available adapters:
11
+ * - SandboxSetup/SandboxAdapter — full implementation with realistic fake data
12
+ * - SandboxBankAdapter — full implementation for bank/revenue demo
13
+ * - StripeAdapter — real Stripe API via node:https (free test mode)
14
+ *
15
+ * PRD Reference: §9.5, §9.19.10, §9.20.4, §8.1 (Implementation Completeness Policy)
16
+ */
17
+ export { SandboxSetup, SandboxAdapter } from './sandbox.js';
18
+ export { SandboxBankAdapter } from './sandbox-bank.js';
19
+ export { StripeAdapter } from './stripe.js';
20
+ /** Platform registry — tracks both available and planned adapters. */
21
+ export const PLATFORM_REGISTRY = {
22
+ sandbox: { name: 'Sandbox (Demo)', minBudgetCents: 0, sandbox: true, implemented: true },
23
+ meta: { name: 'Meta (Facebook/Instagram)', minBudgetCents: 100, implemented: false },
24
+ google: { name: 'Google Ads', minBudgetCents: 100, implemented: false },
25
+ tiktok: { name: 'TikTok', minBudgetCents: 2000, implemented: false },
26
+ linkedin: { name: 'LinkedIn', minBudgetCents: 1000, implemented: false },
27
+ twitter: { name: 'Twitter/X', minBudgetCents: 100, implemented: false },
28
+ reddit: { name: 'Reddit', minBudgetCents: 500, implemented: false },
29
+ snap: { name: 'Snapchat', minBudgetCents: 500, implemented: false },
30
+ };
31
+ /** Revenue adapters — only those with real implementations. */
32
+ export const REVENUE_ADAPTERS = {
33
+ sandbox: { name: 'Sandbox Bank (Demo)', implemented: true },
34
+ stripe: { name: 'Stripe', implemented: true },
35
+ paddle: { name: 'Paddle', implemented: false },
36
+ mercury: { name: 'Mercury', implemented: false },
37
+ brex: { name: 'Brex', implemented: false },
38
+ };
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Sandbox Bank Adapter — full implementation for development/demo.
3
+ *
4
+ * Implements RevenueSourceAdapter with realistic fake financial data.
5
+ * Every method returns valid-shaped data. No throws.
6
+ * This IS a full implementation for a sandbox bank (No Stubs Doctrine, v17.0).
7
+ */
8
+ import type { RevenueSourceAdapter, RevenueCredentials, ConnectionResult, TransactionPage, BalanceResult, DateRange } from '../revenue-types.js';
9
+ export declare class SandboxBankAdapter implements RevenueSourceAdapter {
10
+ private accountName;
11
+ private balanceCents;
12
+ constructor(label?: string, initialBalanceCents?: number);
13
+ connect(credentials: RevenueCredentials): Promise<ConnectionResult>;
14
+ getTransactions(dateRange: DateRange, cursor?: string): Promise<TransactionPage>;
15
+ getBalance(): Promise<BalanceResult>;
16
+ detectCurrency(_credentials: RevenueCredentials): Promise<string>;
17
+ }
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Sandbox Bank Adapter — full implementation for development/demo.
3
+ *
4
+ * Implements RevenueSourceAdapter with realistic fake financial data.
5
+ * Every method returns valid-shaped data. No throws.
6
+ * This IS a full implementation for a sandbox bank (No Stubs Doctrine, v17.0).
7
+ */
8
+ import { randomUUID } from 'node:crypto';
9
+ export class SandboxBankAdapter {
10
+ accountName;
11
+ balanceCents;
12
+ constructor(label = 'Sandbox Bank', initialBalanceCents = 500000) {
13
+ this.accountName = label;
14
+ this.balanceCents = initialBalanceCents;
15
+ }
16
+ async connect(credentials) {
17
+ return {
18
+ connected: true,
19
+ accountName: this.accountName,
20
+ accountId: `sandbox_bank_${randomUUID().slice(0, 8)}`,
21
+ currency: 'USD',
22
+ };
23
+ }
24
+ async getTransactions(dateRange, cursor) {
25
+ // Generate realistic transaction data
26
+ const dayCount = Math.ceil((new Date(dateRange.end).getTime() - new Date(dateRange.start).getTime()) / (24 * 60 * 60 * 1000));
27
+ // Invalid date range (end before start) — return empty result
28
+ if (dayCount <= 0) {
29
+ return {
30
+ transactions: [],
31
+ hasMore: false,
32
+ cursor: undefined,
33
+ };
34
+ }
35
+ const transactions = [];
36
+ // Simulate 2-5 transactions per day
37
+ for (let d = 0; d < dayCount; d++) {
38
+ const date = new Date(new Date(dateRange.start).getTime() + d * 86400000);
39
+ const txCount = 2 + Math.floor(Math.random() * 4);
40
+ for (let t = 0; t < txCount; t++) {
41
+ const isRevenue = Math.random() > 0.4; // 60% revenue, 40% expenses
42
+ const amountCents = isRevenue
43
+ ? Math.round(500 + Math.random() * 9500) // $5-$100 revenue
44
+ : -Math.round(100 + Math.random() * 5000); // $1-$50 expenses
45
+ const descriptions = isRevenue
46
+ ? ['Stripe payout', 'Customer payment', 'Subscription renewal', 'One-time purchase']
47
+ : ['Ad spend - Google', 'Ad spend - Meta', 'SaaS subscription', 'Domain renewal', 'Hosting'];
48
+ transactions.push({
49
+ externalId: `txn_${randomUUID().slice(0, 12)}`,
50
+ type: isRevenue ? 'charge' : 'refund',
51
+ amount: amountCents,
52
+ currency: 'USD',
53
+ description: descriptions[Math.floor(Math.random() * descriptions.length)],
54
+ metadata: { sandbox: 'true', category: isRevenue ? 'revenue' : 'expense' },
55
+ createdAt: date.toISOString(),
56
+ });
57
+ }
58
+ }
59
+ return {
60
+ transactions,
61
+ hasMore: false,
62
+ cursor: undefined,
63
+ };
64
+ }
65
+ async getBalance() {
66
+ // Slightly vary the balance to simulate real account activity
67
+ this.balanceCents += Math.round((Math.random() - 0.3) * 10000);
68
+ return {
69
+ available: this.balanceCents,
70
+ pending: Math.round(Math.random() * 50000),
71
+ currency: 'USD',
72
+ };
73
+ }
74
+ async detectCurrency(_credentials) {
75
+ return 'USD';
76
+ }
77
+ }
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Sandbox Ad Platform Adapter — full implementation for development/demo.
3
+ *
4
+ * Returns realistic fake data matching the AdPlatformSetup + AdPlatformAdapter
5
+ * interfaces. Every method returns valid-shaped data. No throws.
6
+ * This IS a full implementation for a sandbox platform (No Stubs Doctrine, v17.0).
7
+ *
8
+ * Use case: demonstrates the full Cultivation pipeline end-to-end without
9
+ * real platform API credentials. Users can see data flowing through dashboards,
10
+ * heartbeat daemon running real jobs, reconciliation processing, circuit breakers firing.
11
+ */
12
+ import type { AdPlatformSetup, AdPlatformAdapter, OAuthTokens, ConnectionStatus, CampaignConfig, CampaignResult, CampaignUpdate, CreativeConfig, SpendReport, PerformanceMetrics, InsightData, Cents } from './types.js';
13
+ export declare class SandboxSetup implements AdPlatformSetup {
14
+ private label;
15
+ constructor(label?: string);
16
+ authenticate(): Promise<OAuthTokens>;
17
+ verifyConnection(tokens: OAuthTokens): Promise<ConnectionStatus>;
18
+ detectCurrency(_tokens: OAuthTokens): Promise<string>;
19
+ }
20
+ export declare class SandboxAdapter implements AdPlatformAdapter {
21
+ private accountId;
22
+ private tokens;
23
+ private campaigns;
24
+ constructor(accountId?: string, tokens?: OAuthTokens);
25
+ refreshToken(token: OAuthTokens): Promise<OAuthTokens>;
26
+ createCampaign(config: CampaignConfig): Promise<CampaignResult>;
27
+ updateCampaign(id: string, changes: CampaignUpdate): Promise<void>;
28
+ pauseCampaign(id: string): Promise<void>;
29
+ resumeCampaign(id: string): Promise<void>;
30
+ deleteCampaign(id: string): Promise<void>;
31
+ updateBudget(id: string, dailyBudget: Cents): Promise<void>;
32
+ updateCreative(_id: string, _creative: CreativeConfig): Promise<void>;
33
+ getSpend(dateRange: {
34
+ start: string;
35
+ end: string;
36
+ }): Promise<SpendReport>;
37
+ getPerformance(campaignId: string): Promise<PerformanceMetrics>;
38
+ getInsights(campaignId: string, metrics: string[]): Promise<InsightData>;
39
+ }