thevoidforge 21.0.0

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 (328) hide show
  1. package/dist/scripts/vault-read.d.ts +11 -0
  2. package/dist/scripts/vault-read.js +89 -0
  3. package/dist/scripts/voidforge.d.ts +20 -0
  4. package/dist/scripts/voidforge.js +404 -0
  5. package/dist/tsconfig.tsbuildinfo +1 -0
  6. package/dist/wizard/api/auth.d.ts +5 -0
  7. package/dist/wizard/api/auth.js +133 -0
  8. package/dist/wizard/api/blueprint.d.ts +45 -0
  9. package/dist/wizard/api/blueprint.js +184 -0
  10. package/dist/wizard/api/cloud-providers.d.ts +16 -0
  11. package/dist/wizard/api/cloud-providers.js +363 -0
  12. package/dist/wizard/api/credentials.d.ts +1 -0
  13. package/dist/wizard/api/credentials.js +258 -0
  14. package/dist/wizard/api/danger-room.d.ts +18 -0
  15. package/dist/wizard/api/danger-room.js +401 -0
  16. package/dist/wizard/api/deploy.d.ts +4 -0
  17. package/dist/wizard/api/deploy.js +164 -0
  18. package/dist/wizard/api/prd.d.ts +1 -0
  19. package/dist/wizard/api/prd.js +363 -0
  20. package/dist/wizard/api/project.d.ts +1 -0
  21. package/dist/wizard/api/project.js +239 -0
  22. package/dist/wizard/api/projects.d.ts +6 -0
  23. package/dist/wizard/api/projects.js +648 -0
  24. package/dist/wizard/api/provision.d.ts +4 -0
  25. package/dist/wizard/api/provision.js +535 -0
  26. package/dist/wizard/api/terminal.d.ts +25 -0
  27. package/dist/wizard/api/terminal.js +241 -0
  28. package/dist/wizard/api/users.d.ts +6 -0
  29. package/dist/wizard/api/users.js +244 -0
  30. package/dist/wizard/api/war-room.d.ts +14 -0
  31. package/dist/wizard/api/war-room.js +45 -0
  32. package/dist/wizard/lib/ad-platform-core.d.ts +6 -0
  33. package/dist/wizard/lib/ad-platform-core.js +1 -0
  34. package/dist/wizard/lib/adapters/index.d.ts +52 -0
  35. package/dist/wizard/lib/adapters/index.js +38 -0
  36. package/dist/wizard/lib/adapters/sandbox-bank.d.ts +17 -0
  37. package/dist/wizard/lib/adapters/sandbox-bank.js +77 -0
  38. package/dist/wizard/lib/adapters/sandbox.d.ts +39 -0
  39. package/dist/wizard/lib/adapters/sandbox.js +174 -0
  40. package/dist/wizard/lib/adapters/stripe.d.ts +19 -0
  41. package/dist/wizard/lib/adapters/stripe.js +143 -0
  42. package/dist/wizard/lib/adapters/types.d.ts +9 -0
  43. package/dist/wizard/lib/adapters/types.js +10 -0
  44. package/dist/wizard/lib/agent-memory.d.ts +36 -0
  45. package/dist/wizard/lib/agent-memory.js +114 -0
  46. package/dist/wizard/lib/anomaly-detection.d.ts +59 -0
  47. package/dist/wizard/lib/anomaly-detection.js +122 -0
  48. package/dist/wizard/lib/anthropic.d.ts +21 -0
  49. package/dist/wizard/lib/anthropic.js +105 -0
  50. package/dist/wizard/lib/asset-scanner.d.ts +23 -0
  51. package/dist/wizard/lib/asset-scanner.js +107 -0
  52. package/dist/wizard/lib/audit-log.d.ts +23 -0
  53. package/dist/wizard/lib/audit-log.js +70 -0
  54. package/dist/wizard/lib/autonomy-controller.d.ts +76 -0
  55. package/dist/wizard/lib/autonomy-controller.js +183 -0
  56. package/dist/wizard/lib/body-parser.d.ts +2 -0
  57. package/dist/wizard/lib/body-parser.js +36 -0
  58. package/dist/wizard/lib/build-analytics.d.ts +39 -0
  59. package/dist/wizard/lib/build-analytics.js +91 -0
  60. package/dist/wizard/lib/build-step.d.ts +21 -0
  61. package/dist/wizard/lib/build-step.js +104 -0
  62. package/dist/wizard/lib/campaign-proposer.d.ts +39 -0
  63. package/dist/wizard/lib/campaign-proposer.js +180 -0
  64. package/dist/wizard/lib/campaign-state-machine.d.ts +63 -0
  65. package/dist/wizard/lib/campaign-state-machine.js +114 -0
  66. package/dist/wizard/lib/ci-generator.d.ts +14 -0
  67. package/dist/wizard/lib/ci-generator.js +187 -0
  68. package/dist/wizard/lib/claude-merge.d.ts +38 -0
  69. package/dist/wizard/lib/claude-merge.js +115 -0
  70. package/dist/wizard/lib/codegen/erd-gen.d.ts +16 -0
  71. package/dist/wizard/lib/codegen/erd-gen.js +98 -0
  72. package/dist/wizard/lib/codegen/integrations.d.ts +18 -0
  73. package/dist/wizard/lib/codegen/integrations.js +189 -0
  74. package/dist/wizard/lib/codegen/openapi-gen.d.ts +15 -0
  75. package/dist/wizard/lib/codegen/openapi-gen.js +79 -0
  76. package/dist/wizard/lib/codegen/prisma-types.d.ts +15 -0
  77. package/dist/wizard/lib/codegen/prisma-types.js +44 -0
  78. package/dist/wizard/lib/codegen/seed-gen.d.ts +16 -0
  79. package/dist/wizard/lib/codegen/seed-gen.js +128 -0
  80. package/dist/wizard/lib/compliance.d.ts +51 -0
  81. package/dist/wizard/lib/compliance.js +112 -0
  82. package/dist/wizard/lib/correlation-engine.d.ts +59 -0
  83. package/dist/wizard/lib/correlation-engine.js +151 -0
  84. package/dist/wizard/lib/cost-estimator.d.ts +22 -0
  85. package/dist/wizard/lib/cost-estimator.js +72 -0
  86. package/dist/wizard/lib/cost-tracker.d.ts +27 -0
  87. package/dist/wizard/lib/cost-tracker.js +37 -0
  88. package/dist/wizard/lib/daemon-aggregator.d.ts +71 -0
  89. package/dist/wizard/lib/daemon-aggregator.js +204 -0
  90. package/dist/wizard/lib/daemon-core.d.ts +6 -0
  91. package/dist/wizard/lib/daemon-core.js +5 -0
  92. package/dist/wizard/lib/dashboard-data.d.ts +132 -0
  93. package/dist/wizard/lib/dashboard-data.js +336 -0
  94. package/dist/wizard/lib/dashboard-ws.d.ts +25 -0
  95. package/dist/wizard/lib/dashboard-ws.js +91 -0
  96. package/dist/wizard/lib/deep-current.d.ts +77 -0
  97. package/dist/wizard/lib/deep-current.js +234 -0
  98. package/dist/wizard/lib/deploy-coordinator.d.ts +40 -0
  99. package/dist/wizard/lib/deploy-coordinator.js +86 -0
  100. package/dist/wizard/lib/deploy-log.d.ts +28 -0
  101. package/dist/wizard/lib/deploy-log.js +52 -0
  102. package/dist/wizard/lib/desktop-notify.d.ts +27 -0
  103. package/dist/wizard/lib/desktop-notify.js +98 -0
  104. package/dist/wizard/lib/dns/cloudflare-dns.d.ts +35 -0
  105. package/dist/wizard/lib/dns/cloudflare-dns.js +216 -0
  106. package/dist/wizard/lib/dns/cloudflare-registrar.d.ts +31 -0
  107. package/dist/wizard/lib/dns/cloudflare-registrar.js +148 -0
  108. package/dist/wizard/lib/dns/types.d.ts +22 -0
  109. package/dist/wizard/lib/dns/types.js +4 -0
  110. package/dist/wizard/lib/document-discovery.d.ts +33 -0
  111. package/dist/wizard/lib/document-discovery.js +145 -0
  112. package/dist/wizard/lib/env-validator.d.ts +14 -0
  113. package/dist/wizard/lib/env-validator.js +205 -0
  114. package/dist/wizard/lib/env-writer.d.ts +13 -0
  115. package/dist/wizard/lib/env-writer.js +26 -0
  116. package/dist/wizard/lib/exec.d.ts +30 -0
  117. package/dist/wizard/lib/exec.js +52 -0
  118. package/dist/wizard/lib/experiment.d.ts +70 -0
  119. package/dist/wizard/lib/experiment.js +169 -0
  120. package/dist/wizard/lib/extensions.d.ts +20 -0
  121. package/dist/wizard/lib/extensions.js +183 -0
  122. package/dist/wizard/lib/financial/adapter-factory.d.ts +47 -0
  123. package/dist/wizard/lib/financial/adapter-factory.js +225 -0
  124. package/dist/wizard/lib/financial/billing/base.d.ts +6 -0
  125. package/dist/wizard/lib/financial/billing/base.js +1 -0
  126. package/dist/wizard/lib/financial/billing/google-billing.d.ts +56 -0
  127. package/dist/wizard/lib/financial/billing/google-billing.js +298 -0
  128. package/dist/wizard/lib/financial/billing/meta-billing.d.ts +54 -0
  129. package/dist/wizard/lib/financial/billing/meta-billing.js +243 -0
  130. package/dist/wizard/lib/financial/billing/tiktok-billing.d.ts +54 -0
  131. package/dist/wizard/lib/financial/billing/tiktok-billing.js +260 -0
  132. package/dist/wizard/lib/financial/campaign/base.d.ts +13 -0
  133. package/dist/wizard/lib/financial/campaign/base.js +1 -0
  134. package/dist/wizard/lib/financial/campaign/google-campaign.d.ts +42 -0
  135. package/dist/wizard/lib/financial/campaign/google-campaign.js +388 -0
  136. package/dist/wizard/lib/financial/campaign/meta-campaign.d.ts +41 -0
  137. package/dist/wizard/lib/financial/campaign/meta-campaign.js +311 -0
  138. package/dist/wizard/lib/financial/campaign/sandbox-campaign.d.ts +45 -0
  139. package/dist/wizard/lib/financial/campaign/sandbox-campaign.js +261 -0
  140. package/dist/wizard/lib/financial/campaign/tiktok-campaign.d.ts +40 -0
  141. package/dist/wizard/lib/financial/campaign/tiktok-campaign.js +350 -0
  142. package/dist/wizard/lib/financial/funding-auto.d.ts +44 -0
  143. package/dist/wizard/lib/financial/funding-auto.js +52 -0
  144. package/dist/wizard/lib/financial/funding-policy.d.ts +60 -0
  145. package/dist/wizard/lib/financial/funding-policy.js +179 -0
  146. package/dist/wizard/lib/financial/platform-planner.d.ts +47 -0
  147. package/dist/wizard/lib/financial/platform-planner.js +134 -0
  148. package/dist/wizard/lib/financial/reconciliation-engine.d.ts +78 -0
  149. package/dist/wizard/lib/financial/reconciliation-engine.js +193 -0
  150. package/dist/wizard/lib/financial/registry.d.ts +22 -0
  151. package/dist/wizard/lib/financial/registry.js +26 -0
  152. package/dist/wizard/lib/financial/reporting.d.ts +96 -0
  153. package/dist/wizard/lib/financial/reporting.js +198 -0
  154. package/dist/wizard/lib/financial/stablecoin/base.d.ts +6 -0
  155. package/dist/wizard/lib/financial/stablecoin/base.js +1 -0
  156. package/dist/wizard/lib/financial/stablecoin/circle.d.ts +54 -0
  157. package/dist/wizard/lib/financial/stablecoin/circle.js +367 -0
  158. package/dist/wizard/lib/financial/stablecoin/mercury.d.ts +24 -0
  159. package/dist/wizard/lib/financial/stablecoin/mercury.js +171 -0
  160. package/dist/wizard/lib/financial/stablecoin/sandbox-stablecoin.d.ts +47 -0
  161. package/dist/wizard/lib/financial/stablecoin/sandbox-stablecoin.js +202 -0
  162. package/dist/wizard/lib/financial/treasury-planner.d.ts +52 -0
  163. package/dist/wizard/lib/financial/treasury-planner.js +128 -0
  164. package/dist/wizard/lib/financial-core.d.ts +6 -0
  165. package/dist/wizard/lib/financial-core.js +5 -0
  166. package/dist/wizard/lib/financial-vault.d.ts +34 -0
  167. package/dist/wizard/lib/financial-vault.js +199 -0
  168. package/dist/wizard/lib/frontmatter.d.ts +30 -0
  169. package/dist/wizard/lib/frontmatter.js +96 -0
  170. package/dist/wizard/lib/gap-analysis.d.ts +37 -0
  171. package/dist/wizard/lib/gap-analysis.js +218 -0
  172. package/dist/wizard/lib/github.d.ts +22 -0
  173. package/dist/wizard/lib/github.js +261 -0
  174. package/dist/wizard/lib/headless-deploy.d.ts +14 -0
  175. package/dist/wizard/lib/headless-deploy.js +452 -0
  176. package/dist/wizard/lib/health-monitor.d.ts +15 -0
  177. package/dist/wizard/lib/health-monitor.js +91 -0
  178. package/dist/wizard/lib/health-poller.d.ts +9 -0
  179. package/dist/wizard/lib/health-poller.js +123 -0
  180. package/dist/wizard/lib/heartbeat.d.ts +15 -0
  181. package/dist/wizard/lib/heartbeat.js +827 -0
  182. package/dist/wizard/lib/http-helpers.d.ts +9 -0
  183. package/dist/wizard/lib/http-helpers.js +24 -0
  184. package/dist/wizard/lib/image-gen.d.ts +56 -0
  185. package/dist/wizard/lib/image-gen.js +159 -0
  186. package/dist/wizard/lib/instance-sizing.d.ts +26 -0
  187. package/dist/wizard/lib/instance-sizing.js +51 -0
  188. package/dist/wizard/lib/kongo/analytics.d.ts +29 -0
  189. package/dist/wizard/lib/kongo/analytics.js +179 -0
  190. package/dist/wizard/lib/kongo/campaigns.d.ts +52 -0
  191. package/dist/wizard/lib/kongo/campaigns.js +91 -0
  192. package/dist/wizard/lib/kongo/client.d.ts +58 -0
  193. package/dist/wizard/lib/kongo/client.js +221 -0
  194. package/dist/wizard/lib/kongo/jobs.d.ts +57 -0
  195. package/dist/wizard/lib/kongo/jobs.js +122 -0
  196. package/dist/wizard/lib/kongo/pages.d.ts +60 -0
  197. package/dist/wizard/lib/kongo/pages.js +150 -0
  198. package/dist/wizard/lib/kongo/provisioner.d.ts +64 -0
  199. package/dist/wizard/lib/kongo/provisioner.js +116 -0
  200. package/dist/wizard/lib/kongo/seed.d.ts +49 -0
  201. package/dist/wizard/lib/kongo/seed.js +237 -0
  202. package/dist/wizard/lib/kongo/types.d.ts +323 -0
  203. package/dist/wizard/lib/kongo/types.js +11 -0
  204. package/dist/wizard/lib/kongo/variants.d.ts +57 -0
  205. package/dist/wizard/lib/kongo/variants.js +88 -0
  206. package/dist/wizard/lib/kongo/webhooks.d.ts +41 -0
  207. package/dist/wizard/lib/kongo/webhooks.js +112 -0
  208. package/dist/wizard/lib/marker.d.ts +28 -0
  209. package/dist/wizard/lib/marker.js +79 -0
  210. package/dist/wizard/lib/migrator.d.ts +35 -0
  211. package/dist/wizard/lib/migrator.js +190 -0
  212. package/dist/wizard/lib/natural-language-deploy.d.ts +30 -0
  213. package/dist/wizard/lib/natural-language-deploy.js +186 -0
  214. package/dist/wizard/lib/network.d.ts +22 -0
  215. package/dist/wizard/lib/network.js +72 -0
  216. package/dist/wizard/lib/oauth-core.d.ts +6 -0
  217. package/dist/wizard/lib/oauth-core.js +5 -0
  218. package/dist/wizard/lib/open-browser.d.ts +1 -0
  219. package/dist/wizard/lib/open-browser.js +26 -0
  220. package/dist/wizard/lib/patterns/ad-billing-adapter.d.ts +209 -0
  221. package/dist/wizard/lib/patterns/ad-billing-adapter.js +269 -0
  222. package/dist/wizard/lib/patterns/ad-platform-adapter.d.ts +200 -0
  223. package/dist/wizard/lib/patterns/ad-platform-adapter.js +212 -0
  224. package/dist/wizard/lib/patterns/daemon-process.d.ts +88 -0
  225. package/dist/wizard/lib/patterns/daemon-process.js +271 -0
  226. package/dist/wizard/lib/patterns/financial-transaction.d.ts +161 -0
  227. package/dist/wizard/lib/patterns/financial-transaction.js +132 -0
  228. package/dist/wizard/lib/patterns/funding-plan.d.ts +136 -0
  229. package/dist/wizard/lib/patterns/funding-plan.js +200 -0
  230. package/dist/wizard/lib/patterns/oauth-token-lifecycle.d.ts +94 -0
  231. package/dist/wizard/lib/patterns/oauth-token-lifecycle.js +139 -0
  232. package/dist/wizard/lib/patterns/outbound-rate-limiter.d.ts +67 -0
  233. package/dist/wizard/lib/patterns/outbound-rate-limiter.js +216 -0
  234. package/dist/wizard/lib/patterns/revenue-source-adapter.d.ts +96 -0
  235. package/dist/wizard/lib/patterns/revenue-source-adapter.js +182 -0
  236. package/dist/wizard/lib/patterns/stablecoin-adapter.d.ts +218 -0
  237. package/dist/wizard/lib/patterns/stablecoin-adapter.js +264 -0
  238. package/dist/wizard/lib/prd-validator.d.ts +39 -0
  239. package/dist/wizard/lib/prd-validator.js +137 -0
  240. package/dist/wizard/lib/project-init.d.ts +24 -0
  241. package/dist/wizard/lib/project-init.js +193 -0
  242. package/dist/wizard/lib/project-registry.d.ts +86 -0
  243. package/dist/wizard/lib/project-registry.js +359 -0
  244. package/dist/wizard/lib/provision-manifest.d.ts +44 -0
  245. package/dist/wizard/lib/provision-manifest.js +164 -0
  246. package/dist/wizard/lib/provisioner-registry.d.ts +15 -0
  247. package/dist/wizard/lib/provisioner-registry.js +34 -0
  248. package/dist/wizard/lib/provisioners/aws-vps.d.ts +6 -0
  249. package/dist/wizard/lib/provisioners/aws-vps.js +643 -0
  250. package/dist/wizard/lib/provisioners/cloudflare.d.ts +6 -0
  251. package/dist/wizard/lib/provisioners/cloudflare.js +300 -0
  252. package/dist/wizard/lib/provisioners/docker.d.ts +6 -0
  253. package/dist/wizard/lib/provisioners/docker.js +75 -0
  254. package/dist/wizard/lib/provisioners/http-client.d.ts +20 -0
  255. package/dist/wizard/lib/provisioners/http-client.js +79 -0
  256. package/dist/wizard/lib/provisioners/railway.d.ts +6 -0
  257. package/dist/wizard/lib/provisioners/railway.js +413 -0
  258. package/dist/wizard/lib/provisioners/scripts/caddyfile.d.ts +10 -0
  259. package/dist/wizard/lib/provisioners/scripts/caddyfile.js +54 -0
  260. package/dist/wizard/lib/provisioners/scripts/deploy-vps.d.ts +10 -0
  261. package/dist/wizard/lib/provisioners/scripts/deploy-vps.js +112 -0
  262. package/dist/wizard/lib/provisioners/scripts/docker-compose.d.ts +11 -0
  263. package/dist/wizard/lib/provisioners/scripts/docker-compose.js +91 -0
  264. package/dist/wizard/lib/provisioners/scripts/dockerfile.d.ts +5 -0
  265. package/dist/wizard/lib/provisioners/scripts/dockerfile.js +185 -0
  266. package/dist/wizard/lib/provisioners/scripts/ecosystem-config.d.ts +10 -0
  267. package/dist/wizard/lib/provisioners/scripts/ecosystem-config.js +36 -0
  268. package/dist/wizard/lib/provisioners/scripts/provision-vps.d.ts +14 -0
  269. package/dist/wizard/lib/provisioners/scripts/provision-vps.js +202 -0
  270. package/dist/wizard/lib/provisioners/scripts/rollback-vps.d.ts +10 -0
  271. package/dist/wizard/lib/provisioners/scripts/rollback-vps.js +67 -0
  272. package/dist/wizard/lib/provisioners/self-deploy.d.ts +41 -0
  273. package/dist/wizard/lib/provisioners/self-deploy.js +185 -0
  274. package/dist/wizard/lib/provisioners/static-s3.d.ts +6 -0
  275. package/dist/wizard/lib/provisioners/static-s3.js +235 -0
  276. package/dist/wizard/lib/provisioners/types.d.ts +40 -0
  277. package/dist/wizard/lib/provisioners/types.js +4 -0
  278. package/dist/wizard/lib/provisioners/vercel.d.ts +6 -0
  279. package/dist/wizard/lib/provisioners/vercel.js +287 -0
  280. package/dist/wizard/lib/pty-manager.d.ts +42 -0
  281. package/dist/wizard/lib/pty-manager.js +231 -0
  282. package/dist/wizard/lib/rate-limiter-core.d.ts +5 -0
  283. package/dist/wizard/lib/rate-limiter-core.js +5 -0
  284. package/dist/wizard/lib/reconciliation.d.ts +43 -0
  285. package/dist/wizard/lib/reconciliation.js +173 -0
  286. package/dist/wizard/lib/revenue-types.d.ts +5 -0
  287. package/dist/wizard/lib/revenue-types.js +1 -0
  288. package/dist/wizard/lib/route-optimizer.d.ts +28 -0
  289. package/dist/wizard/lib/route-optimizer.js +93 -0
  290. package/dist/wizard/lib/s3-deploy.d.ts +19 -0
  291. package/dist/wizard/lib/s3-deploy.js +156 -0
  292. package/dist/wizard/lib/safety-tiers.d.ts +76 -0
  293. package/dist/wizard/lib/safety-tiers.js +134 -0
  294. package/dist/wizard/lib/sentry-generator.d.ts +15 -0
  295. package/dist/wizard/lib/sentry-generator.js +116 -0
  296. package/dist/wizard/lib/server-config.d.ts +13 -0
  297. package/dist/wizard/lib/server-config.js +23 -0
  298. package/dist/wizard/lib/service-install.d.ts +18 -0
  299. package/dist/wizard/lib/service-install.js +182 -0
  300. package/dist/wizard/lib/site-scanner.d.ts +80 -0
  301. package/dist/wizard/lib/site-scanner.js +262 -0
  302. package/dist/wizard/lib/ssh-deploy.d.ts +25 -0
  303. package/dist/wizard/lib/ssh-deploy.js +225 -0
  304. package/dist/wizard/lib/templates.d.ts +24 -0
  305. package/dist/wizard/lib/templates.js +219 -0
  306. package/dist/wizard/lib/totp.d.ts +35 -0
  307. package/dist/wizard/lib/totp.js +276 -0
  308. package/dist/wizard/lib/tower-auth.d.ts +43 -0
  309. package/dist/wizard/lib/tower-auth.js +352 -0
  310. package/dist/wizard/lib/tower-rate-limit.d.ts +14 -0
  311. package/dist/wizard/lib/tower-rate-limit.js +61 -0
  312. package/dist/wizard/lib/tower-session.d.ts +28 -0
  313. package/dist/wizard/lib/tower-session.js +119 -0
  314. package/dist/wizard/lib/treasury-backup.d.ts +23 -0
  315. package/dist/wizard/lib/treasury-backup.js +126 -0
  316. package/dist/wizard/lib/treasury-heartbeat.d.ts +82 -0
  317. package/dist/wizard/lib/treasury-heartbeat.js +1104 -0
  318. package/dist/wizard/lib/updater.d.ts +29 -0
  319. package/dist/wizard/lib/updater.js +190 -0
  320. package/dist/wizard/lib/user-manager.d.ts +39 -0
  321. package/dist/wizard/lib/user-manager.js +182 -0
  322. package/dist/wizard/lib/vault.d.ts +26 -0
  323. package/dist/wizard/lib/vault.js +161 -0
  324. package/dist/wizard/router.d.ts +5 -0
  325. package/dist/wizard/router.js +15 -0
  326. package/dist/wizard/server.d.ts +18 -0
  327. package/dist/wizard/server.js +436 -0
  328. package/package.json +59 -0
@@ -0,0 +1,260 @@
1
+ /**
2
+ * TikTok Ads Billing Adapter — real implementation via node:https (zero new dependencies).
3
+ *
4
+ * Implements AdBillingSetup (interactive CLI) + AdBillingAdapter (daemon runtime)
5
+ * for TikTok Marketing API v1.3.
6
+ *
7
+ * TikTok Marketing API v1.3:
8
+ * Base URL: https://business-api.tiktok.com/open_api/v1.3
9
+ * Auth: Access-Token header
10
+ *
11
+ * Billing model: TikTok uses prepaid (top-up wallet) or postpaid (auto-charge)
12
+ * billing. Neither supports programmatic settlement — all billing is managed
13
+ * through TikTok Ads Manager. Capability is always MONITORED_ONLY for
14
+ * prepaid/postpaid with auto-top-up, and UNSUPPORTED for unknown types.
15
+ *
16
+ * PRD Reference: $10.2, $11.1B, $12.3
17
+ * No Stubs Doctrine: every method makes a real API call or returns documented empty.
18
+ */
19
+ import { request as httpsRequest } from 'node:https';
20
+ import { randomUUID } from 'node:crypto';
21
+ import { toCents } from './base.js';
22
+ const TIKTOK_HOST = 'business-api.tiktok.com';
23
+ // -- HTTP helpers -------------------------------------------------
24
+ async function tiktokGet(path, accessToken, params) {
25
+ const query = params
26
+ ? '?' + new URLSearchParams(params).toString()
27
+ : '';
28
+ return new Promise((resolve, reject) => {
29
+ const req = httpsRequest({
30
+ hostname: TIKTOK_HOST,
31
+ path: `/open_api/v1.3${path}${query}`,
32
+ method: 'GET',
33
+ headers: {
34
+ 'Access-Token': accessToken,
35
+ 'Accept': 'application/json',
36
+ },
37
+ timeout: 15000,
38
+ }, (res) => {
39
+ let data = '';
40
+ res.on('data', (chunk) => { data += chunk.toString(); });
41
+ res.on('end', () => resolve({ status: res.statusCode ?? 500, body: data }));
42
+ });
43
+ req.on('error', reject);
44
+ req.on('timeout', () => { req.destroy(); reject(new Error('TikTok API timeout')); });
45
+ req.end();
46
+ });
47
+ }
48
+ async function tiktokPost(path, accessToken, body) {
49
+ const payload = JSON.stringify(body);
50
+ return new Promise((resolve, reject) => {
51
+ const req = httpsRequest({
52
+ hostname: TIKTOK_HOST,
53
+ path: `/open_api/v1.3${path}`,
54
+ method: 'POST',
55
+ headers: {
56
+ 'Access-Token': accessToken,
57
+ 'Content-Type': 'application/json',
58
+ 'Accept': 'application/json',
59
+ },
60
+ timeout: 15000,
61
+ }, (res) => {
62
+ let data = '';
63
+ res.on('data', (chunk) => { data += chunk.toString(); });
64
+ res.on('end', () => resolve({ status: res.statusCode ?? 500, body: data }));
65
+ });
66
+ req.on('error', reject);
67
+ req.on('timeout', () => { req.destroy(); reject(new Error('TikTok API timeout')); });
68
+ req.write(payload);
69
+ req.end();
70
+ });
71
+ }
72
+ /** Parse JSON response body; on failure return a descriptive error object. */
73
+ function safeParseJson(body) {
74
+ try {
75
+ return JSON.parse(body);
76
+ }
77
+ catch {
78
+ return { error: { message: 'Non-JSON response from TikTok API' } };
79
+ }
80
+ }
81
+ // -- Setup Implementation -----------------------------------------
82
+ export class TikTokBillingSetup {
83
+ async verifyBillingCapability(_platform, externalAccountId, tokens) {
84
+ const advertiserInfo = await this.fetchAdvertiserInfo(externalAccountId, tokens.accessToken);
85
+ const billingType = detectTikTokBillingType(advertiserInfo);
86
+ // TikTok doesn't support programmatic settlement — prepaid and postpaid are monitor-only
87
+ if (billingType === 'prepaid' || billingType === 'postpaid')
88
+ return 'MONITORED_ONLY';
89
+ return 'UNSUPPORTED';
90
+ }
91
+ async readBillingConfiguration(_platform, externalAccountId, tokens) {
92
+ const advertiserInfo = await this.fetchAdvertiserInfo(externalAccountId, tokens.accessToken);
93
+ const billingType = detectTikTokBillingType(advertiserInfo);
94
+ return {
95
+ billingMode: billingType === 'prepaid' ? 'manual_bank_transfer' : billingType === 'postpaid' ? 'direct_debit' : 'unknown',
96
+ accountIds: {
97
+ externalAccountId,
98
+ },
99
+ };
100
+ }
101
+ async detectBillingMode(_platform, externalAccountId, tokens) {
102
+ const advertiserInfo = await this.fetchAdvertiserInfo(externalAccountId, tokens.accessToken);
103
+ const billingType = detectTikTokBillingType(advertiserInfo);
104
+ // Map TikTok billing types to BillingMode union
105
+ if (billingType === 'prepaid')
106
+ return 'manual_bank_transfer';
107
+ if (billingType === 'postpaid')
108
+ return 'direct_debit';
109
+ return 'unknown';
110
+ }
111
+ /** Fetch advertiser info to determine billing type. */
112
+ async fetchAdvertiserInfo(advertiserId, accessToken) {
113
+ const { status, body } = await tiktokGet('/advertiser/info/', accessToken, { advertiser_ids: JSON.stringify([advertiserId]) });
114
+ if (status !== 200) {
115
+ let errorMsg = `HTTP ${status}`;
116
+ try {
117
+ const e = JSON.parse(body);
118
+ errorMsg = e.message ?? errorMsg;
119
+ }
120
+ catch { /* non-JSON */ }
121
+ throw new Error(`TikTok fetchAdvertiserInfo failed: ${errorMsg}`);
122
+ }
123
+ const parsed = safeParseJson(body);
124
+ // TikTok wraps responses in { code: 0, data: { list: [...] } }
125
+ const data = parsed.data;
126
+ const list = data?.list ?? [];
127
+ if (list.length === 0) {
128
+ return { billing_type: 'unknown' };
129
+ }
130
+ return list[0];
131
+ }
132
+ }
133
+ // -- Runtime Adapter Implementation -------------------------------
134
+ export class TikTokBillingAdapter {
135
+ config;
136
+ profile;
137
+ constructor(config) {
138
+ this.config = config;
139
+ }
140
+ /** Set or update the billing profile (called by heartbeat after setup verification). */
141
+ setProfile(profile) {
142
+ this.profile = profile;
143
+ }
144
+ async getCapabilityState(_platform) {
145
+ return this.profile?.capabilityState ?? 'UNSUPPORTED';
146
+ }
147
+ async readInvoices(_platform, _dateRange) {
148
+ // TikTok does not expose a direct invoice API for programmatic access.
149
+ // Billing is managed entirely through TikTok Ads Manager.
150
+ return [];
151
+ }
152
+ async readExpectedDebits(_platform, dateRange) {
153
+ // Estimate upcoming debits from recent spend velocity via the reporting API.
154
+ // TikTok reporting endpoint returns spend data for the given date range.
155
+ const { status, body } = await tiktokPost('/report/integrated/get/', this.config.accessToken, {
156
+ advertiser_id: this.config.appId,
157
+ report_type: 'BASIC',
158
+ dimensions: ['stat_time_day'],
159
+ metrics: ['spend'],
160
+ data_level: 'AUCTION_ADVERTISER',
161
+ start_date: dateRange.start.slice(0, 10),
162
+ end_date: dateRange.end.slice(0, 10),
163
+ page_size: 365,
164
+ });
165
+ if (status !== 200) {
166
+ let errorMsg = `HTTP ${status}`;
167
+ try {
168
+ const e = JSON.parse(body);
169
+ errorMsg = e.message ?? errorMsg;
170
+ }
171
+ catch { /* non-JSON */ }
172
+ throw new Error(`TikTok readExpectedDebits failed: ${errorMsg}`);
173
+ }
174
+ const parsed = safeParseJson(body);
175
+ const data = parsed.data;
176
+ const list = data?.list ?? [];
177
+ if (list.length === 0)
178
+ return [];
179
+ // Calculate total spend in the date range
180
+ const totalSpendDollars = list.reduce((sum, row) => {
181
+ const metrics = row.metrics;
182
+ const spend = parseFloat(metrics?.spend ?? '0');
183
+ return sum + spend;
184
+ }, 0);
185
+ // Calculate days in range for daily rate
186
+ const rangeStart = new Date(dateRange.start);
187
+ const rangeEnd = new Date(dateRange.end);
188
+ const daySpan = Math.max(1, Math.ceil((rangeEnd.getTime() - rangeStart.getTime()) / (24 * 60 * 60 * 1000)));
189
+ const dailyRateDollars = totalSpendDollars / daySpan;
190
+ // Project: estimate next billing cycle as ~30 days of spend at current rate.
191
+ const estimatedMonthlyDollars = dailyRateDollars * 30;
192
+ if (estimatedMonthlyDollars < 1)
193
+ return []; // negligible spend
194
+ const nextDebitDate = new Date(rangeEnd.getTime() + 30 * 24 * 60 * 60 * 1000);
195
+ return [{
196
+ id: randomUUID(),
197
+ platform: 'tiktok',
198
+ externalAccountId: this.config.appId,
199
+ estimatedAmountCents: toCents(estimatedMonthlyDollars),
200
+ currency: 'USD',
201
+ expectedDate: nextDebitDate.toISOString().slice(0, 10),
202
+ status: 'expected',
203
+ }];
204
+ }
205
+ async generateSettlementInstructions(invoice) {
206
+ // TikTok billing is MONITORED_ONLY — no programmatic settlement.
207
+ // Return guidance directing users to TikTok Ads Manager.
208
+ return {
209
+ invoiceId: invoice.id,
210
+ platform: 'tiktok',
211
+ payeeName: 'TikTok / ByteDance',
212
+ paymentMethod: 'direct_debit',
213
+ amountCents: invoice.amountCents,
214
+ currency: 'USD',
215
+ dueDate: invoice.dueDate,
216
+ notes: 'TikTok billing is managed in TikTok Ads Manager — no programmatic settlement available',
217
+ };
218
+ }
219
+ async confirmSettlement(invoiceId, bankTransactionId) {
220
+ // Optimistic confirmation for monitoring purposes.
221
+ // TikTok handles billing internally; we track for reconciliation only.
222
+ void invoiceId;
223
+ void bankTransactionId; // recorded in audit log by caller
224
+ return {
225
+ confirmed: true,
226
+ reconciledAmountCents: 0,
227
+ varianceCents: 0,
228
+ };
229
+ }
230
+ async normalizeFundingState() {
231
+ if (!this.profile)
232
+ return [];
233
+ const warnings = [];
234
+ if (this.profile.status === 'degraded') {
235
+ warnings.push('TikTok billing degraded — check advertiser account status');
236
+ }
237
+ return [{
238
+ platform: 'tiktok',
239
+ capabilityState: this.profile.capabilityState,
240
+ billingMode: this.profile.billingMode,
241
+ outstandingCents: 0, // TikTok manages billing internally
242
+ nextPaymentDueDate: this.profile.nextDueDate,
243
+ daysUntilNextPayment: this.profile.nextDueDate
244
+ ? Math.ceil((new Date(this.profile.nextDueDate).getTime() - Date.now()) / (24 * 60 * 60 * 1000))
245
+ : undefined,
246
+ fundingHealthy: this.profile.status === 'active',
247
+ warnings,
248
+ }];
249
+ }
250
+ }
251
+ function detectTikTokBillingType(advertiserInfo) {
252
+ // TikTok returns billing_type or contacter_type to indicate billing model.
253
+ // Common values: "prepaid", "postpaid"
254
+ const billingType = (advertiserInfo.billing_type ?? '').toLowerCase();
255
+ if (billingType === 'prepaid')
256
+ return 'prepaid';
257
+ if (billingType === 'postpaid')
258
+ return 'postpaid';
259
+ return 'unknown';
260
+ }
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Campaign adapter types — re-exports from the pattern file.
3
+ * ARCH-R2-012: Production code should not import from docs/patterns/ directly.
4
+ *
5
+ * The AdPlatformAdapter interface defines campaign CRUD operations:
6
+ * create, pause, resume, delete, updateBudget, updateCreative,
7
+ * plus reporting (getSpend, getPerformance, getInsights).
8
+ *
9
+ * Split interface: AdPlatformSetup (interactive CLI) + AdPlatformAdapter (daemon runtime).
10
+ * ReadOnlyAdapter restricts daemon Tier 1 jobs to safe operations only.
11
+ */
12
+ 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';
13
+ export { toCents, toDollars, TokenBucketLimiter } from '../../patterns/ad-platform-adapter.js';
@@ -0,0 +1 @@
1
+ export { toCents, toDollars, TokenBucketLimiter } from '../../patterns/ad-platform-adapter.js';
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Google Ads Campaign Adapter — real implementation via node:https (zero new dependencies).
3
+ *
4
+ * Implements AdPlatformAdapter for Google Ads API v17.
5
+ *
6
+ * Google Ads API v17:
7
+ * Base URL: https://googleads.googleapis.com/v17
8
+ * Auth: Authorization: Bearer {accessToken} + developer-token header
9
+ * Campaign CRUD via mutate endpoints
10
+ * Reporting via searchStream
11
+ * Rate limit: 15,000 operations/day
12
+ *
13
+ * PRD Reference: §9.5, §9.19.10, §9.20.4
14
+ * No Stubs Doctrine: every method makes a real API call or returns documented empty.
15
+ */
16
+ import type { AdPlatformAdapter, CampaignConfig, CampaignResult, CampaignUpdate, CreativeConfig, SpendReport, PerformanceMetrics, InsightData, OAuthTokens, Cents } from './base.js';
17
+ interface GoogleCampaignConfig {
18
+ customerId: string;
19
+ accessToken: string;
20
+ developerToken: string;
21
+ }
22
+ export declare class GoogleCampaignAdapter implements AdPlatformAdapter {
23
+ private readonly config;
24
+ private readonly rateLimiter;
25
+ constructor(config: GoogleCampaignConfig);
26
+ refreshToken(token: OAuthTokens): Promise<OAuthTokens>;
27
+ createCampaign(config: CampaignConfig): Promise<CampaignResult>;
28
+ updateCampaign(id: string, changes: CampaignUpdate): Promise<void>;
29
+ pauseCampaign(id: string): Promise<void>;
30
+ resumeCampaign(id: string): Promise<void>;
31
+ deleteCampaign(id: string): Promise<void>;
32
+ updateBudget(id: string, dailyBudget: Cents): Promise<void>;
33
+ updateCreative(id: string, creative: CreativeConfig): Promise<void>;
34
+ getSpend(dateRange: {
35
+ start: string;
36
+ end: string;
37
+ }): Promise<SpendReport>;
38
+ getPerformance(campaignId: string): Promise<PerformanceMetrics>;
39
+ getInsights(campaignId: string, metrics: string[]): Promise<InsightData>;
40
+ private throwApiError;
41
+ }
42
+ export {};