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.
- package/dist/.claude/agents/adolin-brand.md +40 -0
- package/dist/.claude/agents/ahsoka-access-control.md +56 -0
- package/dist/.claude/agents/alfred-dependencies.md +43 -0
- package/dist/.claude/agents/alia-threat-detect.md +40 -0
- package/dist/.claude/agents/anakin-dark-side.md +41 -0
- package/dist/.claude/agents/aquaman-deep-dive.md +43 -0
- package/dist/.claude/agents/aragorn-orchestration.md +39 -0
- package/dist/.claude/agents/archer-greenfield.md +48 -0
- package/dist/.claude/agents/armin-clever.md +39 -0
- package/dist/.claude/agents/arwen-ui-polish.md +42 -0
- package/dist/.claude/agents/ashitaka-tech-debt.md +39 -0
- package/dist/.claude/agents/asuka-performance.md +39 -0
- package/dist/.claude/agents/bail-organa-governance.md +37 -0
- package/dist/.claude/agents/banner-database.md +44 -0
- package/dist/.claude/agents/barton-smoke-test.md +59 -0
- package/dist/.claude/agents/bashir-field-medic.md +63 -0
- package/dist/.claude/agents/batgirl-detail.md +43 -0
- package/dist/.claude/agents/batman-qa.md +73 -0
- package/dist/.claude/agents/bayta-evals.md +41 -0
- package/dist/.claude/agents/beast-boy-cross-env.md +43 -0
- package/dist/.claude/agents/beerus-destroyer.md +39 -0
- package/dist/.claude/agents/bel-riose-orchestration.md +40 -0
- package/dist/.claude/agents/beru-subprocess.md +37 -0
- package/dist/.claude/agents/bilbo-microcopy.md +43 -0
- package/dist/.claude/agents/black-canary-monitoring.md +43 -0
- package/dist/.claude/agents/bliss-ai-safety.md +40 -0
- package/dist/.claude/agents/bo-katan-perimeter.md +40 -0
- package/dist/.claude/agents/bombadil-forge-sync.md +62 -0
- package/dist/.claude/agents/boromir-hubris.md +40 -0
- package/dist/.claude/agents/breeze-platform-relations.md +40 -0
- package/dist/.claude/agents/bucky-legacy.md +43 -0
- package/dist/.claude/agents/bulma-engineering.md +40 -0
- package/dist/.claude/agents/calcifer-daemon.md +39 -0
- package/dist/.claude/agents/cara-dune-enforcement.md +37 -0
- package/dist/.claude/agents/cassian-recon.md +37 -0
- package/dist/.claude/agents/cc-persistent-process.md +39 -0
- package/dist/.claude/agents/celeborn-design-system.md +40 -0
- package/dist/.claude/agents/celebrimbor-forge-artist.md +62 -0
- package/dist/.claude/agents/chakotay-bridge.md +47 -0
- package/dist/.claude/agents/chani-worm-rider.md +61 -0
- package/dist/.claude/agents/chewie-dependency-audit.md +41 -0
- package/dist/.claude/agents/chrome-discovery.md +37 -0
- package/dist/.claude/agents/constantine-cursed-code.md +59 -0
- package/dist/.claude/agents/coulson-release.md +64 -0
- package/dist/.claude/agents/crusher-diagnostics.md +48 -0
- package/dist/.claude/agents/cyborg-system-integration.md +43 -0
- package/dist/.claude/agents/dalinar-positioning.md +40 -0
- package/dist/.claude/agents/daneel-model-migration.md +40 -0
- package/dist/.claude/agents/data-tech-debt.md +48 -0
- package/dist/.claude/agents/dax-legacy-wisdom.md +48 -0
- package/dist/.claude/agents/deathstroke-adversarial.md +59 -0
- package/dist/.claude/agents/denji-determination.md +39 -0
- package/dist/.claude/agents/din-djarin-bounty.md +42 -0
- package/dist/.claude/agents/dockson-treasury.md +67 -0
- package/dist/.claude/agents/dori-integration-check.md +37 -0
- package/dist/.claude/agents/dors-observability.md +40 -0
- package/dist/.claude/agents/drax-exact-match.md +42 -0
- package/dist/.claude/agents/ducem-token-economics.md +41 -0
- package/dist/.claude/agents/duncan-relay.md +40 -0
- package/dist/.claude/agents/duo-teardown.md +38 -0
- package/dist/.claude/agents/ed-network-scan.md +38 -0
- package/dist/.claude/agents/elrond-ux-strategy.md +39 -0
- package/dist/.claude/agents/eowyn-delight.md +56 -0
- package/dist/.claude/agents/erwin-strategy.md +39 -0
- package/dist/.claude/agents/ezra-catches-missed.md +40 -0
- package/dist/.claude/agents/ezri-session-analyst.md +45 -0
- package/dist/.claude/agents/falcon-migration.md +43 -0
- package/dist/.claude/agents/faramir-judgment.md +40 -0
- package/dist/.claude/agents/faye-resourceful.md +39 -0
- package/dist/.claude/agents/fenring-passive-monitor.md +37 -0
- package/dist/.claude/agents/fern-protocol.md +37 -0
- package/dist/.claude/agents/feyd-adversarial.md +41 -0
- package/dist/.claude/agents/flash-rapid-test.md +43 -0
- package/dist/.claude/agents/friday-automation.md +42 -0
- package/dist/.claude/agents/frieren-long-term.md +39 -0
- package/dist/.claude/agents/frodo-critical-path.md +40 -0
- package/dist/.claude/agents/fury-initiative.md +65 -0
- package/dist/.claude/agents/gaal-prompt-arch.md +41 -0
- package/dist/.claude/agents/galadriel-frontend.md +69 -0
- package/dist/.claude/agents/gamora-perf-assassin.md +43 -0
- package/dist/.claude/agents/gandalf-setup-wizard.md +63 -0
- package/dist/.claude/agents/gen-docs.md +37 -0
- package/dist/.claude/agents/ghanima-paired-monitor.md +37 -0
- package/dist/.claude/agents/gimli-performance.md +41 -0
- package/dist/.claude/agents/giyu-silent-guard.md +39 -0
- package/dist/.claude/agents/glorfindel-rendering.md +40 -0
- package/dist/.claude/agents/gohan-hidden-power.md +39 -0
- package/dist/.claude/agents/gojo-infinite-scale.md +39 -0
- package/dist/.claude/agents/goku-scaling.md +39 -0
- package/dist/.claude/agents/goldberry-change-detect.md +37 -0
- package/dist/.claude/agents/gordon-escalation.md +42 -0
- package/dist/.claude/agents/green-arrow-precision.md +43 -0
- package/dist/.claude/agents/green-lantern-scenarios.md +43 -0
- package/dist/.claude/agents/grogu-tiny-vulns.md +38 -0
- package/dist/.claude/agents/groot-caching.md +43 -0
- package/dist/.claude/agents/gurney-delivery.md +40 -0
- package/dist/.claude/agents/haku-deploy-wizard.md +65 -0
- package/dist/.claude/agents/haldir-boundaries.md +40 -0
- package/dist/.claude/agents/han-vuln-hunter.md +40 -0
- package/dist/.claude/agents/hange-experimentation.md +39 -0
- package/dist/.claude/agents/harah-protocol.md +38 -0
- package/dist/.claude/agents/hawkgirl-regression-sweep.md +43 -0
- package/dist/.claude/agents/heero-mission-deploy.md +39 -0
- package/dist/.claude/agents/hera-navigation.md +41 -0
- package/dist/.claude/agents/hill-mission-control.md +43 -0
- package/dist/.claude/agents/himmel-legacy.md +37 -0
- package/dist/.claude/agents/hober-tool-schema.md +40 -0
- package/dist/.claude/agents/hoid-copywriting.md +40 -0
- package/dist/.claude/agents/howl-migration.md +39 -0
- package/dist/.claude/agents/hughes-observability.md +37 -0
- package/dist/.claude/agents/huntress-flaky-bugs.md +42 -0
- package/dist/.claude/agents/irulan-historian.md +37 -0
- package/dist/.claude/agents/jake-reporter.md +45 -0
- package/dist/.claude/agents/janeway-novel-arch.md +48 -0
- package/dist/.claude/agents/janov-context-eng.md +40 -0
- package/dist/.claude/agents/jarvis-status.md +42 -0
- package/dist/.claude/agents/jean-pragmatic.md +39 -0
- package/dist/.claude/agents/jessica-voice.md +40 -0
- package/dist/.claude/agents/jet-maintenance.md +39 -0
- package/dist/.claude/agents/jin-disciplined-adv.md +39 -0
- package/dist/.claude/agents/kaji-intelligence.md +39 -0
- package/dist/.claude/agents/kaladin-organic-growth.md +40 -0
- package/dist/.claude/agents/kallen-hard-deploy.md +39 -0
- package/dist/.claude/agents/kanan-intuitive.md +41 -0
- package/dist/.claude/agents/kaoru-harmony.md +37 -0
- package/dist/.claude/agents/kaworu-solver.md +39 -0
- package/dist/.claude/agents/kelsier-growth.md +64 -0
- package/dist/.claude/agents/kenobi-security.md +70 -0
- package/dist/.claude/agents/kim-api-design.md +49 -0
- package/dist/.claude/agents/kira-pragmatic.md +48 -0
- package/dist/.claude/agents/kishibe-hardening.md +39 -0
- package/dist/.claude/agents/kohaku-rapid-response.md +36 -0
- package/dist/.claude/agents/krillin-support.md +36 -0
- package/dist/.claude/agents/kusanagi-devops.md +70 -0
- package/dist/.claude/agents/la-forge-reliability.md +63 -0
- package/dist/.claude/agents/lang-micro-changes.md +43 -0
- package/dist/.claude/agents/legolas-precision.md +42 -0
- package/dist/.claude/agents/leia-secrets.md +41 -0
- package/dist/.claude/agents/lelouch-orchestration.md +39 -0
- package/dist/.claude/agents/leto-ii-persistence.md +40 -0
- package/dist/.claude/agents/leto-protection.md +40 -0
- package/dist/.claude/agents/levi-deploy.md +40 -0
- package/dist/.claude/agents/liet-kynes-deep-system.md +40 -0
- package/dist/.claude/agents/lift-social-media.md +40 -0
- package/dist/.claude/agents/loki-chaos.md +58 -0
- package/dist/.claude/agents/lucius-config.md +43 -0
- package/dist/.claude/agents/luke-audit-journey.md +41 -0
- package/dist/.claude/agents/manhunter-shapeshifting.md +43 -0
- package/dist/.claude/agents/marsh-competitive-intel.md +41 -0
- package/dist/.claude/agents/maul-red-team.md +57 -0
- package/dist/.claude/agents/merry-pair-review.md +40 -0
- package/dist/.claude/agents/mikasa-protection.md +39 -0
- package/dist/.claude/agents/miles-teg-perf.md +40 -0
- package/dist/.claude/agents/milim-load-test.md +39 -0
- package/dist/.claude/agents/misato-operations.md +39 -0
- package/dist/.claude/agents/mob-capacity.md +39 -0
- package/dist/.claude/agents/mohiam-authentication.md +40 -0
- package/dist/.claude/agents/mon-mothma-security-mgmt.md +41 -0
- package/dist/.claude/agents/mugen-chaos.md +39 -0
- package/dist/.claude/agents/mule-adversarial-ai.md +41 -0
- package/dist/.claude/agents/mustang-cleanup.md +39 -0
- package/dist/.claude/agents/nanami-structured-ops.md +39 -0
- package/dist/.claude/agents/nausicaa-resources.md +39 -0
- package/dist/.claude/agents/navani-technical-seo.md +40 -0
- package/dist/.claude/agents/nebula-optimization.md +43 -0
- package/dist/.claude/agents/nightwing-regression.md +59 -0
- package/dist/.claude/agents/nobara-direct-fix.md +39 -0
- package/dist/.claude/agents/nog-solutions.md +48 -0
- package/dist/.claude/agents/nori-asset-scanner.md +37 -0
- package/dist/.claude/agents/obrien-root-cause.md +48 -0
- package/dist/.claude/agents/odo-structural-anomaly.md +48 -0
- package/dist/.claude/agents/okoye-data-integrity.md +43 -0
- package/dist/.claude/agents/olivier-hardening.md +39 -0
- package/dist/.claude/agents/oracle-static-analysis.md +59 -0
- package/dist/.claude/agents/ori-prompt-crafter.md +37 -0
- package/dist/.claude/agents/padme-data-protection.md +42 -0
- package/dist/.claude/agents/paris-route-planner.md +47 -0
- package/dist/.claude/agents/parker-connections.md +43 -0
- package/dist/.claude/agents/paul-orchestration.md +40 -0
- package/dist/.claude/agents/picard-architecture.md +64 -0
- package/dist/.claude/agents/piccolo-tactics.md +39 -0
- package/dist/.claude/agents/pike-bold-decisions.md +48 -0
- package/dist/.claude/agents/pippin-discovery.md +40 -0
- package/dist/.claude/agents/plo-koon-edge-cases.md +37 -0
- package/dist/.claude/agents/power-chaotic.md +39 -0
- package/dist/.claude/agents/qui-gon-subtle-vulns.md +40 -0
- package/dist/.claude/agents/radagast-edge-cases.md +41 -0
- package/dist/.claude/agents/raoden-conversion.md +41 -0
- package/dist/.claude/agents/raven-deep-analysis.md +43 -0
- package/dist/.claude/agents/red-hood-aggressive.md +47 -0
- package/dist/.claude/agents/rei-dangerous-tasks.md +39 -0
- package/dist/.claude/agents/reigen-debugger.md +39 -0
- package/dist/.claude/agents/rengoku-intense-monitor.md +39 -0
- package/dist/.claude/agents/rex-infrastructure.md +41 -0
- package/dist/.claude/agents/rhodes-production.md +43 -0
- package/dist/.claude/agents/riker-review.md +62 -0
- package/dist/.claude/agents/rimuru-adapter.md +39 -0
- package/dist/.claude/agents/riza-backup.md +39 -0
- package/dist/.claude/agents/robin-apprentice.md +42 -0
- package/dist/.claude/agents/rocket-scrappy.md +43 -0
- package/dist/.claude/agents/rogers-api-design.md +43 -0
- package/dist/.claude/agents/romanoff-integrations.md +44 -0
- package/dist/.claude/agents/sabine-unconventional.md +40 -0
- package/dist/.claude/agents/salvor-model-selection.md +42 -0
- package/dist/.claude/agents/samwise-accessibility.md +43 -0
- package/dist/.claude/agents/sarene-outreach.md +40 -0
- package/dist/.claude/agents/sasha-resources.md +37 -0
- package/dist/.claude/agents/scotty-infrastructure.md +48 -0
- package/dist/.claude/agents/seldon-ai.md +67 -0
- package/dist/.claude/agents/senku-provisioning.md +40 -0
- package/dist/.claude/agents/sentaro-scheduling.md +37 -0
- package/dist/.claude/agents/seven-optimization.md +48 -0
- package/dist/.claude/agents/shallan-creative.md +40 -0
- package/dist/.claude/agents/sheeana-transport.md +40 -0
- package/dist/.claude/agents/shuri-innovation.md +43 -0
- package/dist/.claude/agents/silver-surfer-herald.md +90 -0
- package/dist/.claude/agents/siona-evasion.md +41 -0
- package/dist/.claude/agents/sisko-campaign.md +68 -0
- package/dist/.claude/agents/spike-routing.md +40 -0
- package/dist/.claude/agents/spock-schema.md +62 -0
- package/dist/.claude/agents/starfire-brute-force.md +43 -0
- package/dist/.claude/agents/stark-backend.md +71 -0
- package/dist/.claude/agents/steris-budget.md +41 -0
- package/dist/.claude/agents/stilgar-channel-security.md +40 -0
- package/dist/.claude/agents/strange-service-arch.md +44 -0
- package/dist/.claude/agents/sung-workers.md +39 -0
- package/dist/.claude/agents/superman-strength-test.md +43 -0
- package/dist/.claude/agents/suzaku-execution.md +39 -0
- package/dist/.claude/agents/szeth-compliance.md +40 -0
- package/dist/.claude/agents/tanjiro-persistent.md +39 -0
- package/dist/.claude/agents/tchalla-quality.md +43 -0
- package/dist/.claude/agents/thanos-gauntlet.md +68 -0
- package/dist/.claude/agents/theoden-rally.md +40 -0
- package/dist/.claude/agents/thor-queues.md +44 -0
- package/dist/.claude/agents/thufir-protocol-parsing.md +40 -0
- package/dist/.claude/agents/todo-brute-force.md +39 -0
- package/dist/.claude/agents/torres-site-scanner.md +47 -0
- package/dist/.claude/agents/totoro-guardian.md +39 -0
- package/dist/.claude/agents/tpol-disciplined.md +48 -0
- package/dist/.claude/agents/treebeard-deliberation.md +41 -0
- package/dist/.claude/agents/troi-prd-compliance.md +64 -0
- package/dist/.claude/agents/trunks-rollback.md +39 -0
- package/dist/.claude/agents/tuvok-deep-current.md +63 -0
- package/dist/.claude/agents/uhura-integration.md +47 -0
- package/dist/.claude/agents/valkyrie-recovery.md +43 -0
- package/dist/.claude/agents/vegeta-monitoring.md +39 -0
- package/dist/.claude/agents/veldora-dormant.md +37 -0
- package/dist/.claude/agents/vin-analytics.md +41 -0
- package/dist/.claude/agents/vision-data-analysis.md +43 -0
- package/dist/.claude/agents/wanda-seldon-validation.md +38 -0
- package/dist/.claude/agents/wanda-state.md +43 -0
- package/dist/.claude/agents/wax-paid-ads.md +40 -0
- package/dist/.claude/agents/wayne-ab-testing.md +40 -0
- package/dist/.claude/agents/whis-precision.md +39 -0
- package/dist/.claude/agents/windu-input-validation.md +41 -0
- package/dist/.claude/agents/winry-maintenance.md +39 -0
- package/dist/.claude/agents/wonder-woman-truth.md +43 -0
- package/dist/.claude/agents/wong-documentation.md +58 -0
- package/dist/.claude/agents/worf-security-arch.md +49 -0
- package/dist/.claude/agents/yoda-auth.md +57 -0
- package/dist/.claude/agents/yueh-trust-verify.md +40 -0
- package/dist/.claude/agents/zatanna-impossible.md +43 -0
- package/dist/.claude/agents/zechs-rival.md +39 -0
- package/dist/.claude/agents/zenitsu-alerts.md +37 -0
- package/dist/.claude/commands/ai.md +84 -0
- package/dist/.claude/commands/architect.md +107 -0
- package/dist/.claude/commands/assemble.md +223 -0
- package/dist/.claude/commands/assess.md +86 -0
- package/dist/.claude/commands/blueprint.md +135 -0
- package/dist/.claude/commands/build.md +138 -0
- package/dist/.claude/commands/campaign.md +224 -0
- package/dist/.claude/commands/cultivation.md +184 -0
- package/dist/.claude/commands/current.md +128 -0
- package/dist/.claude/commands/dangerroom.md +74 -0
- package/dist/.claude/commands/debrief.md +180 -0
- package/dist/.claude/commands/deploy.md +108 -0
- package/dist/.claude/commands/devops.md +160 -0
- package/dist/.claude/commands/engage.md +135 -0
- package/dist/.claude/commands/gauntlet.md +179 -0
- package/dist/.claude/commands/git.md +104 -0
- package/dist/.claude/commands/grow.md +160 -0
- package/dist/.claude/commands/imagine.md +126 -0
- package/dist/.claude/commands/portfolio.md +51 -0
- package/dist/.claude/commands/prd.md +113 -0
- package/dist/.claude/commands/qa.md +130 -0
- package/dist/.claude/commands/review.md +9 -0
- package/dist/.claude/commands/security.md +9 -0
- package/dist/.claude/commands/sentinel.md +90 -0
- package/dist/.claude/commands/test.md +114 -0
- package/dist/.claude/commands/thumper.md +116 -0
- package/dist/.claude/commands/treasury.md +117 -0
- package/dist/.claude/commands/ux.md +132 -0
- package/dist/.claude/commands/vault.md +198 -0
- package/dist/.claude/commands/void.md +148 -0
- package/dist/CHANGELOG.md +2621 -0
- package/dist/CLAUDE.md +292 -0
- package/dist/HOLOCRON.md +859 -0
- package/dist/VERSION.md +149 -0
- package/dist/docs/NAMING_REGISTRY.md +479 -0
- package/dist/docs/methods/AI_INTELLIGENCE.md +276 -0
- package/dist/docs/methods/ASSEMBLER.md +142 -0
- package/dist/docs/methods/BACKEND_ENGINEER.md +165 -0
- package/dist/docs/methods/BUILD_JOURNAL.md +214 -0
- package/dist/docs/methods/BUILD_PROTOCOL.md +436 -0
- package/dist/docs/methods/CAMPAIGN.md +569 -0
- package/dist/docs/methods/CONTEXT_MANAGEMENT.md +189 -0
- package/dist/docs/methods/DEEP_CURRENT.md +184 -0
- package/dist/docs/methods/DEVOPS_ENGINEER.md +297 -0
- package/dist/docs/methods/FIELD_MEDIC.md +265 -0
- package/dist/docs/methods/FORGE_ARTIST.md +108 -0
- package/dist/docs/methods/FORGE_KEEPER.md +270 -0
- package/dist/docs/methods/GAUNTLET.md +364 -0
- package/dist/docs/methods/GROWTH_STRATEGIST.md +466 -0
- package/dist/docs/methods/HEARTBEAT.md +168 -0
- package/dist/docs/methods/MCP_INTEGRATION.md +139 -0
- package/dist/docs/methods/MUSTER.md +152 -0
- package/dist/docs/methods/PRD_GENERATOR.md +186 -0
- package/dist/docs/methods/PRODUCT_DESIGN_FRONTEND.md +252 -0
- package/dist/docs/methods/QA_ENGINEER.md +360 -0
- package/dist/docs/methods/RELEASE_MANAGER.md +145 -0
- package/dist/docs/methods/SECURITY_AUDITOR.md +328 -0
- package/dist/docs/methods/SUB_AGENTS.md +375 -0
- package/dist/docs/methods/SYSTEMS_ARCHITECT.md +180 -0
- package/dist/docs/methods/TESTING.md +359 -0
- package/dist/docs/methods/THUMPER.md +175 -0
- package/dist/docs/methods/TIME_VAULT.md +120 -0
- package/dist/docs/methods/TREASURY.md +184 -0
- package/dist/docs/methods/TROUBLESHOOTING.md +265 -0
- package/dist/docs/patterns/README.md +52 -0
- package/dist/docs/patterns/ad-billing-adapter.ts +537 -0
- package/dist/docs/patterns/ad-platform-adapter.ts +421 -0
- package/dist/docs/patterns/ai-classifier.ts +195 -0
- package/dist/docs/patterns/ai-eval.ts +272 -0
- package/dist/docs/patterns/ai-orchestrator.ts +341 -0
- package/dist/docs/patterns/ai-router.ts +194 -0
- package/dist/docs/patterns/ai-tool-schema.ts +237 -0
- package/dist/docs/patterns/api-route.ts +241 -0
- package/dist/docs/patterns/backtest-engine.ts +499 -0
- package/dist/docs/patterns/browser-review.ts +292 -0
- package/dist/docs/patterns/combobox.tsx +300 -0
- package/dist/docs/patterns/component.tsx +262 -0
- package/dist/docs/patterns/daemon-process.ts +338 -0
- package/dist/docs/patterns/data-pipeline.ts +297 -0
- package/dist/docs/patterns/database-migration.ts +466 -0
- package/dist/docs/patterns/e2e-test.ts +629 -0
- package/dist/docs/patterns/error-handling.ts +312 -0
- package/dist/docs/patterns/execution-safety.ts +601 -0
- package/dist/docs/patterns/financial-transaction.ts +366 -0
- package/dist/docs/patterns/funding-plan.ts +462 -0
- package/dist/docs/patterns/game-entity.ts +137 -0
- package/dist/docs/patterns/game-loop.ts +113 -0
- package/dist/docs/patterns/game-state.ts +143 -0
- package/dist/docs/patterns/job-queue.ts +225 -0
- package/dist/docs/patterns/kongo-integration.ts +164 -0
- package/dist/docs/patterns/middleware.ts +363 -0
- package/dist/docs/patterns/mobile-screen.tsx +139 -0
- package/dist/docs/patterns/mobile-service.ts +167 -0
- package/dist/docs/patterns/multi-tenant.ts +382 -0
- package/dist/docs/patterns/oauth-token-lifecycle.ts +223 -0
- package/dist/docs/patterns/outbound-rate-limiter.ts +260 -0
- package/dist/docs/patterns/prompt-template.ts +195 -0
- package/dist/docs/patterns/revenue-source-adapter.ts +311 -0
- package/dist/docs/patterns/service.ts +224 -0
- package/dist/docs/patterns/sse-endpoint.ts +118 -0
- package/dist/docs/patterns/stablecoin-adapter.ts +511 -0
- package/dist/docs/patterns/third-party-script.ts +68 -0
- package/dist/scripts/thumper/gom-jabbar.sh +241 -0
- package/dist/scripts/thumper/relay.sh +610 -0
- package/dist/scripts/thumper/scan.sh +359 -0
- package/dist/scripts/thumper/thumper.sh +190 -0
- package/dist/scripts/thumper/water-rings.sh +76 -0
- package/dist/scripts/vault-read.d.ts +11 -0
- package/dist/scripts/vault-read.js +89 -0
- package/dist/scripts/voidforge.d.ts +21 -0
- package/dist/scripts/voidforge.js +614 -0
- package/dist/wizard/api/auth.d.ts +5 -0
- package/dist/wizard/api/auth.js +139 -0
- package/dist/wizard/api/blueprint.d.ts +34 -0
- package/dist/wizard/api/blueprint.js +161 -0
- package/dist/wizard/api/cloud-providers.d.ts +16 -0
- package/dist/wizard/api/cloud-providers.js +363 -0
- package/dist/wizard/api/credentials.d.ts +1 -0
- package/dist/wizard/api/credentials.js +265 -0
- package/dist/wizard/api/danger-room.d.ts +24 -0
- package/dist/wizard/api/danger-room.js +274 -0
- package/dist/wizard/api/deploy.d.ts +4 -0
- package/dist/wizard/api/deploy.js +164 -0
- package/dist/wizard/api/prd.d.ts +1 -0
- package/dist/wizard/api/prd.js +363 -0
- package/dist/wizard/api/project.d.ts +1 -0
- package/dist/wizard/api/project.js +241 -0
- package/dist/wizard/api/projects-data.d.ts +5 -0
- package/dist/wizard/api/projects-data.js +234 -0
- package/dist/wizard/api/projects-list.d.ts +5 -0
- package/dist/wizard/api/projects-list.js +227 -0
- package/dist/wizard/api/projects.d.ts +7 -0
- package/dist/wizard/api/projects.js +273 -0
- package/dist/wizard/api/provision-status.d.ts +5 -0
- package/dist/wizard/api/provision-status.js +47 -0
- package/dist/wizard/api/provision-steps.d.ts +21 -0
- package/dist/wizard/api/provision-steps.js +44 -0
- package/dist/wizard/api/provision-validate.d.ts +22 -0
- package/dist/wizard/api/provision-validate.js +164 -0
- package/dist/wizard/api/provision.d.ts +2 -0
- package/dist/wizard/api/provision.js +239 -0
- package/dist/wizard/api/terminal.d.ts +25 -0
- package/dist/wizard/api/terminal.js +246 -0
- package/dist/wizard/api/users.d.ts +6 -0
- package/dist/wizard/api/users.js +244 -0
- package/dist/wizard/api/war-room.d.ts +16 -0
- package/dist/wizard/api/war-room.js +70 -0
- package/dist/wizard/danger-room.config.json +5 -0
- package/dist/wizard/lib/ad-platform-core.d.ts +6 -0
- package/dist/wizard/lib/ad-platform-core.js +1 -0
- package/dist/wizard/lib/adapters/index.d.ts +52 -0
- package/dist/wizard/lib/adapters/index.js +38 -0
- package/dist/wizard/lib/adapters/sandbox-bank.d.ts +17 -0
- package/dist/wizard/lib/adapters/sandbox-bank.js +77 -0
- package/dist/wizard/lib/adapters/sandbox.d.ts +39 -0
- package/dist/wizard/lib/adapters/sandbox.js +174 -0
- package/dist/wizard/lib/adapters/stripe.d.ts +19 -0
- package/dist/wizard/lib/adapters/stripe.js +143 -0
- package/dist/wizard/lib/adapters/types.d.ts +9 -0
- package/dist/wizard/lib/adapters/types.js +10 -0
- package/dist/wizard/lib/agent-memory.d.ts +36 -0
- package/dist/wizard/lib/agent-memory.js +114 -0
- package/dist/wizard/lib/agent-registry.d.ts +21 -0
- package/dist/wizard/lib/agent-registry.js +105 -0
- package/dist/wizard/lib/anomaly-detection.d.ts +59 -0
- package/dist/wizard/lib/anomaly-detection.js +122 -0
- package/dist/wizard/lib/anthropic.d.ts +21 -0
- package/dist/wizard/lib/anthropic.js +105 -0
- package/dist/wizard/lib/asset-scanner.d.ts +23 -0
- package/dist/wizard/lib/asset-scanner.js +107 -0
- package/dist/wizard/lib/audit-log.d.ts +23 -0
- package/dist/wizard/lib/audit-log.js +70 -0
- package/dist/wizard/lib/autonomy-controller.d.ts +76 -0
- package/dist/wizard/lib/autonomy-controller.js +184 -0
- package/dist/wizard/lib/body-parser.d.ts +2 -0
- package/dist/wizard/lib/body-parser.js +36 -0
- package/dist/wizard/lib/build-analytics.d.ts +39 -0
- package/dist/wizard/lib/build-analytics.js +91 -0
- package/dist/wizard/lib/build-step.d.ts +21 -0
- package/dist/wizard/lib/build-step.js +104 -0
- package/dist/wizard/lib/campaign-proposer.d.ts +39 -0
- package/dist/wizard/lib/campaign-proposer.js +181 -0
- package/dist/wizard/lib/campaign-state-machine.d.ts +63 -0
- package/dist/wizard/lib/campaign-state-machine.js +114 -0
- package/dist/wizard/lib/ci-generator.d.ts +14 -0
- package/dist/wizard/lib/ci-generator.js +187 -0
- package/dist/wizard/lib/claude-merge.d.ts +38 -0
- package/dist/wizard/lib/claude-merge.js +115 -0
- package/dist/wizard/lib/codegen/erd-gen.d.ts +16 -0
- package/dist/wizard/lib/codegen/erd-gen.js +98 -0
- package/dist/wizard/lib/codegen/integrations.d.ts +18 -0
- package/dist/wizard/lib/codegen/integrations.js +189 -0
- package/dist/wizard/lib/codegen/openapi-gen.d.ts +15 -0
- package/dist/wizard/lib/codegen/openapi-gen.js +79 -0
- package/dist/wizard/lib/codegen/prisma-types.d.ts +15 -0
- package/dist/wizard/lib/codegen/prisma-types.js +44 -0
- package/dist/wizard/lib/codegen/seed-gen.d.ts +16 -0
- package/dist/wizard/lib/codegen/seed-gen.js +128 -0
- package/dist/wizard/lib/compliance.d.ts +51 -0
- package/dist/wizard/lib/compliance.js +112 -0
- package/dist/wizard/lib/correlation-engine.d.ts +59 -0
- package/dist/wizard/lib/correlation-engine.js +152 -0
- package/dist/wizard/lib/cost-estimator.d.ts +22 -0
- package/dist/wizard/lib/cost-estimator.js +72 -0
- package/dist/wizard/lib/cost-tracker.d.ts +27 -0
- package/dist/wizard/lib/cost-tracker.js +37 -0
- package/dist/wizard/lib/daemon-aggregator.d.ts +76 -0
- package/dist/wizard/lib/daemon-aggregator.js +241 -0
- package/dist/wizard/lib/daemon-core.d.ts +16 -0
- package/dist/wizard/lib/daemon-core.js +39 -0
- package/dist/wizard/lib/dashboard-data.d.ts +123 -0
- package/dist/wizard/lib/dashboard-data.js +314 -0
- package/dist/wizard/lib/dashboard-ws.d.ts +28 -0
- package/dist/wizard/lib/dashboard-ws.js +117 -0
- package/dist/wizard/lib/deep-current.d.ts +77 -0
- package/dist/wizard/lib/deep-current.js +247 -0
- package/dist/wizard/lib/deploy-coordinator.d.ts +40 -0
- package/dist/wizard/lib/deploy-coordinator.js +86 -0
- package/dist/wizard/lib/deploy-log.d.ts +28 -0
- package/dist/wizard/lib/deploy-log.js +52 -0
- package/dist/wizard/lib/desktop-notify.d.ts +27 -0
- package/dist/wizard/lib/desktop-notify.js +98 -0
- package/dist/wizard/lib/dns/cloudflare-dns.d.ts +35 -0
- package/dist/wizard/lib/dns/cloudflare-dns.js +216 -0
- package/dist/wizard/lib/dns/cloudflare-registrar.d.ts +31 -0
- package/dist/wizard/lib/dns/cloudflare-registrar.js +148 -0
- package/dist/wizard/lib/dns/types.d.ts +22 -0
- package/dist/wizard/lib/dns/types.js +4 -0
- package/dist/wizard/lib/document-discovery.d.ts +33 -0
- package/dist/wizard/lib/document-discovery.js +145 -0
- package/dist/wizard/lib/env-validator.d.ts +14 -0
- package/dist/wizard/lib/env-validator.js +205 -0
- package/dist/wizard/lib/env-writer.d.ts +13 -0
- package/dist/wizard/lib/env-writer.js +26 -0
- package/dist/wizard/lib/exec.d.ts +30 -0
- package/dist/wizard/lib/exec.js +52 -0
- package/dist/wizard/lib/experiment.d.ts +70 -0
- package/dist/wizard/lib/experiment.js +169 -0
- package/dist/wizard/lib/extensions.d.ts +20 -0
- package/dist/wizard/lib/extensions.js +183 -0
- package/dist/wizard/lib/financial/adapter-factory.d.ts +47 -0
- package/dist/wizard/lib/financial/adapter-factory.js +225 -0
- package/dist/wizard/lib/financial/billing/base.d.ts +6 -0
- package/dist/wizard/lib/financial/billing/base.js +1 -0
- package/dist/wizard/lib/financial/billing/google-billing.d.ts +56 -0
- package/dist/wizard/lib/financial/billing/google-billing.js +298 -0
- package/dist/wizard/lib/financial/billing/meta-billing.d.ts +54 -0
- package/dist/wizard/lib/financial/billing/meta-billing.js +243 -0
- package/dist/wizard/lib/financial/billing/tiktok-billing.d.ts +54 -0
- package/dist/wizard/lib/financial/billing/tiktok-billing.js +260 -0
- package/dist/wizard/lib/financial/campaign/base.d.ts +13 -0
- package/dist/wizard/lib/financial/campaign/base.js +1 -0
- package/dist/wizard/lib/financial/campaign/campaign-common.d.ts +21 -0
- package/dist/wizard/lib/financial/campaign/campaign-common.js +58 -0
- package/dist/wizard/lib/financial/campaign/google-api.d.ts +35 -0
- package/dist/wizard/lib/financial/campaign/google-api.js +118 -0
- package/dist/wizard/lib/financial/campaign/google-campaign.d.ts +38 -0
- package/dist/wizard/lib/financial/campaign/google-campaign.js +186 -0
- package/dist/wizard/lib/financial/campaign/meta-api.d.ts +28 -0
- package/dist/wizard/lib/financial/campaign/meta-api.js +93 -0
- package/dist/wizard/lib/financial/campaign/meta-campaign.d.ts +32 -0
- package/dist/wizard/lib/financial/campaign/meta-campaign.js +189 -0
- package/dist/wizard/lib/financial/campaign/sandbox-campaign.d.ts +45 -0
- package/dist/wizard/lib/financial/campaign/sandbox-campaign.js +261 -0
- package/dist/wizard/lib/financial/campaign/tiktok-api.d.ts +25 -0
- package/dist/wizard/lib/financial/campaign/tiktok-api.js +81 -0
- package/dist/wizard/lib/financial/campaign/tiktok-campaign.d.ts +37 -0
- package/dist/wizard/lib/financial/campaign/tiktok-campaign.js +155 -0
- package/dist/wizard/lib/financial/funding-auto.d.ts +44 -0
- package/dist/wizard/lib/financial/funding-auto.js +52 -0
- package/dist/wizard/lib/financial/funding-policy.d.ts +60 -0
- package/dist/wizard/lib/financial/funding-policy.js +179 -0
- package/dist/wizard/lib/financial/platform-planner.d.ts +47 -0
- package/dist/wizard/lib/financial/platform-planner.js +134 -0
- package/dist/wizard/lib/financial/reconciliation-engine.d.ts +78 -0
- package/dist/wizard/lib/financial/reconciliation-engine.js +193 -0
- package/dist/wizard/lib/financial/registry.d.ts +22 -0
- package/dist/wizard/lib/financial/registry.js +26 -0
- package/dist/wizard/lib/financial/reporting.d.ts +96 -0
- package/dist/wizard/lib/financial/reporting.js +198 -0
- package/dist/wizard/lib/financial/stablecoin/base.d.ts +6 -0
- package/dist/wizard/lib/financial/stablecoin/base.js +1 -0
- package/dist/wizard/lib/financial/stablecoin/circle.d.ts +54 -0
- package/dist/wizard/lib/financial/stablecoin/circle.js +367 -0
- package/dist/wizard/lib/financial/stablecoin/mercury.d.ts +24 -0
- package/dist/wizard/lib/financial/stablecoin/mercury.js +171 -0
- package/dist/wizard/lib/financial/stablecoin/sandbox-stablecoin.d.ts +47 -0
- package/dist/wizard/lib/financial/stablecoin/sandbox-stablecoin.js +202 -0
- package/dist/wizard/lib/financial/treasury-planner.d.ts +52 -0
- package/dist/wizard/lib/financial/treasury-planner.js +128 -0
- package/dist/wizard/lib/financial-core.d.ts +6 -0
- package/dist/wizard/lib/financial-core.js +5 -0
- package/dist/wizard/lib/financial-vault.d.ts +34 -0
- package/dist/wizard/lib/financial-vault.js +200 -0
- package/dist/wizard/lib/frontmatter.d.ts +30 -0
- package/dist/wizard/lib/frontmatter.js +99 -0
- package/dist/wizard/lib/gap-analysis.d.ts +37 -0
- package/dist/wizard/lib/gap-analysis.js +218 -0
- package/dist/wizard/lib/github.d.ts +22 -0
- package/dist/wizard/lib/github.js +261 -0
- package/dist/wizard/lib/headless-deploy.d.ts +14 -0
- package/dist/wizard/lib/headless-deploy.js +452 -0
- package/dist/wizard/lib/health-monitor.d.ts +15 -0
- package/dist/wizard/lib/health-monitor.js +91 -0
- package/dist/wizard/lib/health-poller.d.ts +9 -0
- package/dist/wizard/lib/health-poller.js +123 -0
- package/dist/wizard/lib/heartbeat-lifecycle.d.ts +71 -0
- package/dist/wizard/lib/heartbeat-lifecycle.js +107 -0
- package/dist/wizard/lib/heartbeat-scheduler.d.ts +26 -0
- package/dist/wizard/lib/heartbeat-scheduler.js +155 -0
- package/dist/wizard/lib/heartbeat.d.ts +22 -0
- package/dist/wizard/lib/heartbeat.js +538 -0
- package/dist/wizard/lib/herald.d.ts +28 -0
- package/dist/wizard/lib/herald.js +167 -0
- package/dist/wizard/lib/http-helpers.d.ts +9 -0
- package/dist/wizard/lib/http-helpers.js +24 -0
- package/dist/wizard/lib/image-gen.d.ts +56 -0
- package/dist/wizard/lib/image-gen.js +159 -0
- package/dist/wizard/lib/instance-sizing.d.ts +26 -0
- package/dist/wizard/lib/instance-sizing.js +51 -0
- package/dist/wizard/lib/kongo/analytics.d.ts +29 -0
- package/dist/wizard/lib/kongo/analytics.js +179 -0
- package/dist/wizard/lib/kongo/campaigns.d.ts +52 -0
- package/dist/wizard/lib/kongo/campaigns.js +91 -0
- package/dist/wizard/lib/kongo/client.d.ts +58 -0
- package/dist/wizard/lib/kongo/client.js +221 -0
- package/dist/wizard/lib/kongo/jobs.d.ts +57 -0
- package/dist/wizard/lib/kongo/jobs.js +122 -0
- package/dist/wizard/lib/kongo/pages.d.ts +60 -0
- package/dist/wizard/lib/kongo/pages.js +150 -0
- package/dist/wizard/lib/kongo/provisioner.d.ts +64 -0
- package/dist/wizard/lib/kongo/provisioner.js +116 -0
- package/dist/wizard/lib/kongo/seed.d.ts +49 -0
- package/dist/wizard/lib/kongo/seed.js +237 -0
- package/dist/wizard/lib/kongo/types.d.ts +323 -0
- package/dist/wizard/lib/kongo/types.js +11 -0
- package/dist/wizard/lib/kongo/variants.d.ts +57 -0
- package/dist/wizard/lib/kongo/variants.js +88 -0
- package/dist/wizard/lib/kongo/webhooks.d.ts +41 -0
- package/dist/wizard/lib/kongo/webhooks.js +112 -0
- package/dist/wizard/lib/marker.d.ts +28 -0
- package/dist/wizard/lib/marker.js +79 -0
- package/dist/wizard/lib/migrator.d.ts +35 -0
- package/dist/wizard/lib/migrator.js +190 -0
- package/dist/wizard/lib/natural-language-deploy.d.ts +30 -0
- package/dist/wizard/lib/natural-language-deploy.js +186 -0
- package/dist/wizard/lib/network.d.ts +22 -0
- package/dist/wizard/lib/network.js +72 -0
- package/dist/wizard/lib/oauth-core.d.ts +6 -0
- package/dist/wizard/lib/oauth-core.js +5 -0
- package/dist/wizard/lib/open-browser.d.ts +1 -0
- package/dist/wizard/lib/open-browser.js +26 -0
- package/dist/wizard/lib/patterns/ad-billing-adapter.d.ts +209 -0
- package/dist/wizard/lib/patterns/ad-billing-adapter.js +269 -0
- package/dist/wizard/lib/patterns/ad-platform-adapter.d.ts +200 -0
- package/dist/wizard/lib/patterns/ad-platform-adapter.js +212 -0
- package/dist/wizard/lib/patterns/daemon-process.d.ts +88 -0
- package/dist/wizard/lib/patterns/daemon-process.js +271 -0
- package/dist/wizard/lib/patterns/financial-transaction.d.ts +171 -0
- package/dist/wizard/lib/patterns/financial-transaction.js +154 -0
- package/dist/wizard/lib/patterns/funding-plan.d.ts +136 -0
- package/dist/wizard/lib/patterns/funding-plan.js +200 -0
- package/dist/wizard/lib/patterns/oauth-token-lifecycle.d.ts +94 -0
- package/dist/wizard/lib/patterns/oauth-token-lifecycle.js +139 -0
- package/dist/wizard/lib/patterns/outbound-rate-limiter.d.ts +67 -0
- package/dist/wizard/lib/patterns/outbound-rate-limiter.js +216 -0
- package/dist/wizard/lib/patterns/revenue-source-adapter.d.ts +96 -0
- package/dist/wizard/lib/patterns/revenue-source-adapter.js +182 -0
- package/dist/wizard/lib/patterns/stablecoin-adapter.d.ts +218 -0
- package/dist/wizard/lib/patterns/stablecoin-adapter.js +264 -0
- package/dist/wizard/lib/prd-validator.d.ts +39 -0
- package/dist/wizard/lib/prd-validator.js +137 -0
- package/dist/wizard/lib/project-init.d.ts +24 -0
- package/dist/wizard/lib/project-init.js +228 -0
- package/dist/wizard/lib/project-registry.d.ts +86 -0
- package/dist/wizard/lib/project-registry.js +359 -0
- package/dist/wizard/lib/project-scope.d.ts +64 -0
- package/dist/wizard/lib/project-scope.js +96 -0
- package/dist/wizard/lib/project-vault.d.ts +47 -0
- package/dist/wizard/lib/project-vault.js +221 -0
- package/dist/wizard/lib/provision-manifest.d.ts +44 -0
- package/dist/wizard/lib/provision-manifest.js +164 -0
- package/dist/wizard/lib/provisioner-registry.d.ts +15 -0
- package/dist/wizard/lib/provisioner-registry.js +34 -0
- package/dist/wizard/lib/provisioners/aws-config.d.ts +36 -0
- package/dist/wizard/lib/provisioners/aws-config.js +56 -0
- package/dist/wizard/lib/provisioners/aws-ec2.d.ts +19 -0
- package/dist/wizard/lib/provisioners/aws-ec2.js +241 -0
- package/dist/wizard/lib/provisioners/aws-rds.d.ts +10 -0
- package/dist/wizard/lib/provisioners/aws-rds.js +199 -0
- package/dist/wizard/lib/provisioners/aws-vps.d.ts +6 -0
- package/dist/wizard/lib/provisioners/aws-vps.js +231 -0
- package/dist/wizard/lib/provisioners/cloudflare.d.ts +6 -0
- package/dist/wizard/lib/provisioners/cloudflare.js +300 -0
- package/dist/wizard/lib/provisioners/docker.d.ts +6 -0
- package/dist/wizard/lib/provisioners/docker.js +75 -0
- package/dist/wizard/lib/provisioners/http-client.d.ts +20 -0
- package/dist/wizard/lib/provisioners/http-client.js +79 -0
- package/dist/wizard/lib/provisioners/railway-config.d.ts +24 -0
- package/dist/wizard/lib/provisioners/railway-config.js +220 -0
- package/dist/wizard/lib/provisioners/railway-deploy.d.ts +19 -0
- package/dist/wizard/lib/provisioners/railway-deploy.js +205 -0
- package/dist/wizard/lib/provisioners/railway.d.ts +6 -0
- package/dist/wizard/lib/provisioners/railway.js +45 -0
- package/dist/wizard/lib/provisioners/scripts/caddyfile.d.ts +10 -0
- package/dist/wizard/lib/provisioners/scripts/caddyfile.js +54 -0
- package/dist/wizard/lib/provisioners/scripts/deploy-vps.d.ts +10 -0
- package/dist/wizard/lib/provisioners/scripts/deploy-vps.js +112 -0
- package/dist/wizard/lib/provisioners/scripts/docker-compose.d.ts +11 -0
- package/dist/wizard/lib/provisioners/scripts/docker-compose.js +91 -0
- package/dist/wizard/lib/provisioners/scripts/dockerfile.d.ts +5 -0
- package/dist/wizard/lib/provisioners/scripts/dockerfile.js +185 -0
- package/dist/wizard/lib/provisioners/scripts/ecosystem-config.d.ts +10 -0
- package/dist/wizard/lib/provisioners/scripts/ecosystem-config.js +36 -0
- package/dist/wizard/lib/provisioners/scripts/provision-vps.d.ts +14 -0
- package/dist/wizard/lib/provisioners/scripts/provision-vps.js +202 -0
- package/dist/wizard/lib/provisioners/scripts/rollback-vps.d.ts +10 -0
- package/dist/wizard/lib/provisioners/scripts/rollback-vps.js +67 -0
- package/dist/wizard/lib/provisioners/self-deploy.d.ts +41 -0
- package/dist/wizard/lib/provisioners/self-deploy.js +185 -0
- package/dist/wizard/lib/provisioners/static-s3.d.ts +6 -0
- package/dist/wizard/lib/provisioners/static-s3.js +235 -0
- package/dist/wizard/lib/provisioners/types.d.ts +40 -0
- package/dist/wizard/lib/provisioners/types.js +4 -0
- package/dist/wizard/lib/provisioners/vercel.d.ts +6 -0
- package/dist/wizard/lib/provisioners/vercel.js +287 -0
- package/dist/wizard/lib/pty-manager.d.ts +42 -0
- package/dist/wizard/lib/pty-manager.js +244 -0
- package/dist/wizard/lib/rate-limiter-core.d.ts +5 -0
- package/dist/wizard/lib/rate-limiter-core.js +5 -0
- package/dist/wizard/lib/reconciliation.d.ts +43 -0
- package/dist/wizard/lib/reconciliation.js +173 -0
- package/dist/wizard/lib/revenue-types.d.ts +5 -0
- package/dist/wizard/lib/revenue-types.js +1 -0
- package/dist/wizard/lib/route-optimizer.d.ts +28 -0
- package/dist/wizard/lib/route-optimizer.js +93 -0
- package/dist/wizard/lib/s3-deploy.d.ts +19 -0
- package/dist/wizard/lib/s3-deploy.js +156 -0
- package/dist/wizard/lib/safety-tiers.d.ts +76 -0
- package/dist/wizard/lib/safety-tiers.js +134 -0
- package/dist/wizard/lib/sentry-generator.d.ts +15 -0
- package/dist/wizard/lib/sentry-generator.js +116 -0
- package/dist/wizard/lib/server-config.d.ts +13 -0
- package/dist/wizard/lib/server-config.js +23 -0
- package/dist/wizard/lib/service-install.d.ts +18 -0
- package/dist/wizard/lib/service-install.js +182 -0
- package/dist/wizard/lib/site-scanner.d.ts +80 -0
- package/dist/wizard/lib/site-scanner.js +262 -0
- package/dist/wizard/lib/ssh-deploy.d.ts +25 -0
- package/dist/wizard/lib/ssh-deploy.js +225 -0
- package/dist/wizard/lib/templates.d.ts +24 -0
- package/dist/wizard/lib/templates.js +219 -0
- package/dist/wizard/lib/totp.d.ts +35 -0
- package/dist/wizard/lib/totp.js +277 -0
- package/dist/wizard/lib/tower-auth.d.ts +43 -0
- package/dist/wizard/lib/tower-auth.js +352 -0
- package/dist/wizard/lib/tower-rate-limit.d.ts +14 -0
- package/dist/wizard/lib/tower-rate-limit.js +61 -0
- package/dist/wizard/lib/tower-session.d.ts +28 -0
- package/dist/wizard/lib/tower-session.js +119 -0
- package/dist/wizard/lib/treasury-backup.d.ts +23 -0
- package/dist/wizard/lib/treasury-backup.js +127 -0
- package/dist/wizard/lib/treasury-circuit-breakers.d.ts +28 -0
- package/dist/wizard/lib/treasury-circuit-breakers.js +74 -0
- package/dist/wizard/lib/treasury-handlers.d.ts +21 -0
- package/dist/wizard/lib/treasury-handlers.js +281 -0
- package/dist/wizard/lib/treasury-heartbeat.d.ts +18 -0
- package/dist/wizard/lib/treasury-heartbeat.js +20 -0
- package/dist/wizard/lib/treasury-io.d.ts +107 -0
- package/dist/wizard/lib/treasury-io.js +254 -0
- package/dist/wizard/lib/treasury-jobs.d.ts +14 -0
- package/dist/wizard/lib/treasury-jobs.js +589 -0
- package/dist/wizard/lib/treasury-migrator.d.ts +59 -0
- package/dist/wizard/lib/treasury-migrator.js +227 -0
- package/dist/wizard/lib/treasury-reader.d.ts +52 -0
- package/dist/wizard/lib/treasury-reader.js +235 -0
- package/dist/wizard/lib/updater.d.ts +29 -0
- package/dist/wizard/lib/updater.js +203 -0
- package/dist/wizard/lib/user-manager.d.ts +39 -0
- package/dist/wizard/lib/user-manager.js +182 -0
- package/dist/wizard/lib/vault.d.ts +26 -0
- package/dist/wizard/lib/vault.js +161 -0
- package/dist/wizard/router.d.ts +12 -0
- package/dist/wizard/router.js +58 -0
- package/dist/wizard/server.d.ts +18 -0
- package/dist/wizard/server.js +427 -0
- package/dist/wizard/ui/app.js +1357 -0
- package/dist/wizard/ui/danger-room-prophecy.js +217 -0
- package/dist/wizard/ui/danger-room.html +27 -0
- package/dist/wizard/ui/danger-room.js +29 -0
- package/dist/wizard/ui/deploy.html +181 -0
- package/dist/wizard/ui/deploy.js +616 -0
- package/dist/wizard/ui/favicon.svg +11 -0
- package/dist/wizard/ui/index.html +407 -0
- package/dist/wizard/ui/lobby.html +235 -0
- package/dist/wizard/ui/lobby.js +843 -0
- package/dist/wizard/ui/login.html +111 -0
- package/dist/wizard/ui/login.js +199 -0
- package/dist/wizard/ui/project.html +285 -0
- package/dist/wizard/ui/project.js +324 -0
- package/dist/wizard/ui/rollback.js +107 -0
- package/dist/wizard/ui/styles.css +1040 -0
- package/dist/wizard/ui/tower.html +177 -0
- package/dist/wizard/ui/tower.js +445 -0
- package/dist/wizard/ui/war-room-prophecy.js +217 -0
- package/dist/wizard/ui/war-room.html +27 -0
- package/dist/wizard/ui/war-room.js +29 -0
- package/package.json +60 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Funding Policy — the 7 deterministic rules from PRD Section 15.
|
|
3
|
+
*
|
|
4
|
+
* Pure logic — no API calls, no file I/O, fully testable.
|
|
5
|
+
* Each rule evaluates independently and returns an allow/deny/freeze decision.
|
|
6
|
+
* All rules are evaluated on every cycle; the most restrictive decision wins.
|
|
7
|
+
*
|
|
8
|
+
* PRD Reference: §15 (Rules Engine V1)
|
|
9
|
+
* Agents: Dockson (treasury), Heartbeat daemon
|
|
10
|
+
*/
|
|
11
|
+
import type { Cents, CapabilityState } from '../patterns/funding-plan.js';
|
|
12
|
+
interface TreasuryState {
|
|
13
|
+
/** Current bank available balance in cents */
|
|
14
|
+
bankBalanceCents: Cents;
|
|
15
|
+
/** Minimum operating buffer floor in cents */
|
|
16
|
+
minimumBufferCents: Cents;
|
|
17
|
+
/** Reserved balance (earmarked for pending settlements) */
|
|
18
|
+
reservedCents: Cents;
|
|
19
|
+
/** Proposed off-ramp amount in cents (0 if no off-ramp proposed) */
|
|
20
|
+
proposedOfframpCents: Cents;
|
|
21
|
+
/** Maximum allowed daily treasury movement in cents */
|
|
22
|
+
maxDailyMovementCents: Cents;
|
|
23
|
+
/** Whether a Google invoice is due within the threshold window */
|
|
24
|
+
googleInvoiceDueSoon: boolean;
|
|
25
|
+
/** Google invoice amount in cents (0 if none) */
|
|
26
|
+
googleInvoiceCents: Cents;
|
|
27
|
+
/** Whether Meta uses direct debit billing */
|
|
28
|
+
metaUsesDirectDebit: boolean;
|
|
29
|
+
/** Meta forecasted 7-day spend in cents */
|
|
30
|
+
metaForecast7DayCents: Cents;
|
|
31
|
+
/** Current debit protection buffer in cents */
|
|
32
|
+
debitProtectionBufferCents: Cents;
|
|
33
|
+
/** Whether a reconciliation discrepancy currently exists */
|
|
34
|
+
discrepancyExists: boolean;
|
|
35
|
+
/** Whether a platform budget raise is being proposed */
|
|
36
|
+
proposingBudgetRaise: boolean;
|
|
37
|
+
/** Capability state of the platform being funded */
|
|
38
|
+
platformCapability: CapabilityState;
|
|
39
|
+
/** Whether autonomous funding is being claimed */
|
|
40
|
+
claimingAutonomousFunding: boolean;
|
|
41
|
+
}
|
|
42
|
+
interface PolicyDecision {
|
|
43
|
+
rule: number;
|
|
44
|
+
action: 'allow' | 'deny' | 'freeze';
|
|
45
|
+
reason: string;
|
|
46
|
+
}
|
|
47
|
+
interface PolicyThresholds {
|
|
48
|
+
/** Days before Google invoice due date to start prioritizing */
|
|
49
|
+
googleInvoiceWindowDays: number;
|
|
50
|
+
/** Multiplier for debit protection buffer over forecast */
|
|
51
|
+
debitProtectionMultiplier: number;
|
|
52
|
+
}
|
|
53
|
+
declare const DEFAULT_THRESHOLDS: PolicyThresholds;
|
|
54
|
+
export declare function evaluatePolicy(state: TreasuryState, _thresholds?: PolicyThresholds): PolicyDecision[];
|
|
55
|
+
export declare function aggregateDecisions(decisions: PolicyDecision[]): {
|
|
56
|
+
action: 'allow' | 'deny' | 'freeze';
|
|
57
|
+
blockingRules: PolicyDecision[];
|
|
58
|
+
};
|
|
59
|
+
export type { TreasuryState, PolicyDecision, PolicyThresholds };
|
|
60
|
+
export { DEFAULT_THRESHOLDS };
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Funding Policy — the 7 deterministic rules from PRD Section 15.
|
|
3
|
+
*
|
|
4
|
+
* Pure logic — no API calls, no file I/O, fully testable.
|
|
5
|
+
* Each rule evaluates independently and returns an allow/deny/freeze decision.
|
|
6
|
+
* All rules are evaluated on every cycle; the most restrictive decision wins.
|
|
7
|
+
*
|
|
8
|
+
* PRD Reference: §15 (Rules Engine V1)
|
|
9
|
+
* Agents: Dockson (treasury), Heartbeat daemon
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_THRESHOLDS = {
|
|
12
|
+
googleInvoiceWindowDays: 7,
|
|
13
|
+
debitProtectionMultiplier: 1.0,
|
|
14
|
+
};
|
|
15
|
+
// ── Rule Evaluators ──────────────────────────────────
|
|
16
|
+
function evaluateRule1(state) {
|
|
17
|
+
// Rule 1: Maintain minimum operating buffer
|
|
18
|
+
const balanceAfterReserve = (state.bankBalanceCents - state.reservedCents);
|
|
19
|
+
if (balanceAfterReserve < state.minimumBufferCents) {
|
|
20
|
+
return {
|
|
21
|
+
rule: 1,
|
|
22
|
+
action: 'deny',
|
|
23
|
+
reason: `Balance after reserves ($${(balanceAfterReserve / 100).toFixed(2)}) below minimum buffer ($${(state.minimumBufferCents / 100).toFixed(2)}) — deny non-essential spend`,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
rule: 1,
|
|
28
|
+
action: 'allow',
|
|
29
|
+
reason: `Balance after reserves ($${(balanceAfterReserve / 100).toFixed(2)}) above minimum buffer ($${(state.minimumBufferCents / 100).toFixed(2)})`,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function evaluateRule2(state) {
|
|
33
|
+
// Rule 2: Never off-ramp more than max daily treasury movement
|
|
34
|
+
if (state.proposedOfframpCents > state.maxDailyMovementCents) {
|
|
35
|
+
return {
|
|
36
|
+
rule: 2,
|
|
37
|
+
action: 'deny',
|
|
38
|
+
reason: `Proposed off-ramp ($${(state.proposedOfframpCents / 100).toFixed(2)}) exceeds max daily movement ($${(state.maxDailyMovementCents / 100).toFixed(2)})`,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
rule: 2,
|
|
43
|
+
action: 'allow',
|
|
44
|
+
reason: `Proposed off-ramp ($${(state.proposedOfframpCents / 100).toFixed(2)}) within max daily movement ($${(state.maxDailyMovementCents / 100).toFixed(2)})`,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function evaluateRule3(state) {
|
|
48
|
+
// Rule 3: Never raise platform budget if bank balance after reserve falls below floor
|
|
49
|
+
if (!state.proposingBudgetRaise) {
|
|
50
|
+
return {
|
|
51
|
+
rule: 3,
|
|
52
|
+
action: 'allow',
|
|
53
|
+
reason: 'No budget raise proposed',
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
const balanceAfterReserve = (state.bankBalanceCents - state.reservedCents);
|
|
57
|
+
if (balanceAfterReserve < state.minimumBufferCents) {
|
|
58
|
+
return {
|
|
59
|
+
rule: 3,
|
|
60
|
+
action: 'deny',
|
|
61
|
+
reason: `Cannot raise platform budget — balance after reserve ($${(balanceAfterReserve / 100).toFixed(2)}) below floor ($${(state.minimumBufferCents / 100).toFixed(2)})`,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
rule: 3,
|
|
66
|
+
action: 'allow',
|
|
67
|
+
reason: `Budget raise permitted — balance after reserve ($${(balanceAfterReserve / 100).toFixed(2)}) above floor ($${(state.minimumBufferCents / 100).toFixed(2)})`,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function evaluateRule4(state) {
|
|
71
|
+
// Rule 4: If Google invoice due within threshold, prioritize invoice coverage
|
|
72
|
+
if (!state.googleInvoiceDueSoon) {
|
|
73
|
+
return {
|
|
74
|
+
rule: 4,
|
|
75
|
+
action: 'allow',
|
|
76
|
+
reason: 'No Google invoice due soon',
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const availableForInvoice = (state.bankBalanceCents - state.reservedCents - state.minimumBufferCents);
|
|
80
|
+
if (availableForInvoice < state.googleInvoiceCents) {
|
|
81
|
+
return {
|
|
82
|
+
rule: 4,
|
|
83
|
+
action: 'deny',
|
|
84
|
+
reason: `Google invoice ($${(state.googleInvoiceCents / 100).toFixed(2)}) due soon but only $${(availableForInvoice / 100).toFixed(2)} available after reserves and buffer — prioritize invoice coverage over new expansion`,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
rule: 4,
|
|
89
|
+
action: 'allow',
|
|
90
|
+
reason: `Google invoice ($${(state.googleInvoiceCents / 100).toFixed(2)}) due soon — sufficient funds available ($${(availableForInvoice / 100).toFixed(2)})`,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function evaluateRule5(state) {
|
|
94
|
+
// Rule 5: If Meta uses direct debit, maintain debit protection buffer above 7-day forecast
|
|
95
|
+
if (!state.metaUsesDirectDebit) {
|
|
96
|
+
return {
|
|
97
|
+
rule: 5,
|
|
98
|
+
action: 'allow',
|
|
99
|
+
reason: 'Meta does not use direct debit',
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
if (state.debitProtectionBufferCents < state.metaForecast7DayCents) {
|
|
103
|
+
return {
|
|
104
|
+
rule: 5,
|
|
105
|
+
action: 'deny',
|
|
106
|
+
reason: `Debit protection buffer ($${(state.debitProtectionBufferCents / 100).toFixed(2)}) below Meta 7-day forecast ($${(state.metaForecast7DayCents / 100).toFixed(2)}) — maintain buffer before other operations`,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
rule: 5,
|
|
111
|
+
action: 'allow',
|
|
112
|
+
reason: `Debit protection buffer ($${(state.debitProtectionBufferCents / 100).toFixed(2)}) above Meta 7-day forecast ($${(state.metaForecast7DayCents / 100).toFixed(2)})`,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function evaluateRule6(state) {
|
|
116
|
+
// Rule 6: If discrepancy exists, freeze spend increases but allow monitoring
|
|
117
|
+
if (!state.discrepancyExists) {
|
|
118
|
+
return {
|
|
119
|
+
rule: 6,
|
|
120
|
+
action: 'allow',
|
|
121
|
+
reason: 'No reconciliation discrepancy detected',
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
rule: 6,
|
|
126
|
+
action: 'freeze',
|
|
127
|
+
reason: 'Reconciliation discrepancy detected — freeze spend increases, allow read-only monitoring',
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function evaluateRule7(state) {
|
|
131
|
+
// Rule 7: If platform capability is MONITORED_ONLY, never claim autonomous funding
|
|
132
|
+
if (state.platformCapability !== 'MONITORED_ONLY') {
|
|
133
|
+
return {
|
|
134
|
+
rule: 7,
|
|
135
|
+
action: 'allow',
|
|
136
|
+
reason: `Platform capability is ${state.platformCapability} — autonomous funding rules apply normally`,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
if (state.claimingAutonomousFunding) {
|
|
140
|
+
return {
|
|
141
|
+
rule: 7,
|
|
142
|
+
action: 'deny',
|
|
143
|
+
reason: 'Platform capability is MONITORED_ONLY — cannot claim autonomous funding support',
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
rule: 7,
|
|
148
|
+
action: 'allow',
|
|
149
|
+
reason: 'Platform is MONITORED_ONLY but no autonomous funding claimed — monitoring allowed',
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
// ── Main Policy Evaluator ────────────────────────────
|
|
153
|
+
// Evaluates all 7 rules and returns all decisions.
|
|
154
|
+
// The caller should enforce the most restrictive: freeze > deny > allow.
|
|
155
|
+
export function evaluatePolicy(state, _thresholds = DEFAULT_THRESHOLDS) {
|
|
156
|
+
return [
|
|
157
|
+
evaluateRule1(state),
|
|
158
|
+
evaluateRule2(state),
|
|
159
|
+
evaluateRule3(state),
|
|
160
|
+
evaluateRule4(state),
|
|
161
|
+
evaluateRule5(state),
|
|
162
|
+
evaluateRule6(state),
|
|
163
|
+
evaluateRule7(state),
|
|
164
|
+
];
|
|
165
|
+
}
|
|
166
|
+
// ── Decision Aggregator ──────────────────────────────
|
|
167
|
+
// Reduces a list of decisions to a single most-restrictive action.
|
|
168
|
+
export function aggregateDecisions(decisions) {
|
|
169
|
+
const freezeRules = decisions.filter(d => d.action === 'freeze');
|
|
170
|
+
if (freezeRules.length > 0) {
|
|
171
|
+
return { action: 'freeze', blockingRules: freezeRules };
|
|
172
|
+
}
|
|
173
|
+
const denyRules = decisions.filter(d => d.action === 'deny');
|
|
174
|
+
if (denyRules.length > 0) {
|
|
175
|
+
return { action: 'deny', blockingRules: denyRules };
|
|
176
|
+
}
|
|
177
|
+
return { action: 'allow', blockingRules: [] };
|
|
178
|
+
}
|
|
179
|
+
export { DEFAULT_THRESHOLDS };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-Specific Funding Planner — pure logic for Google invoice settlement,
|
|
3
|
+
* Meta debit protection, and multi-project portfolio rebalancing.
|
|
4
|
+
*
|
|
5
|
+
* No API calls, no file I/O — fully testable deterministic functions.
|
|
6
|
+
* All monetary values use branded integer cents (Cents type).
|
|
7
|
+
*
|
|
8
|
+
* PRD Reference: §12.3 (Platform Billing), §15 (Rules Engine)
|
|
9
|
+
* Agents: Dockson (treasury), Heartbeat daemon
|
|
10
|
+
*/
|
|
11
|
+
import type { Cents } from '../patterns/funding-plan.js';
|
|
12
|
+
interface GoogleInvoice {
|
|
13
|
+
invoiceId: string;
|
|
14
|
+
amountCents: Cents;
|
|
15
|
+
dueDate: string;
|
|
16
|
+
status: 'pending' | 'overdue' | 'paid';
|
|
17
|
+
}
|
|
18
|
+
interface SettlementPlan {
|
|
19
|
+
invoiceId: string;
|
|
20
|
+
amountCents: Cents;
|
|
21
|
+
dueDate: string;
|
|
22
|
+
wireReference: string;
|
|
23
|
+
priority: number;
|
|
24
|
+
remainingBufferAfterCents: Cents;
|
|
25
|
+
}
|
|
26
|
+
interface ProjectTreasury {
|
|
27
|
+
projectId: string;
|
|
28
|
+
projectName: string;
|
|
29
|
+
bankBalanceCents: Cents;
|
|
30
|
+
minimumBufferCents: Cents;
|
|
31
|
+
dailySpendRateCents: Cents;
|
|
32
|
+
runwayDays: number;
|
|
33
|
+
}
|
|
34
|
+
interface RebalanceRecommendation {
|
|
35
|
+
fromProjectId: string;
|
|
36
|
+
toProjectId: string;
|
|
37
|
+
amountCents: Cents;
|
|
38
|
+
reason: string;
|
|
39
|
+
}
|
|
40
|
+
interface ExpectedDebit {
|
|
41
|
+
date: string;
|
|
42
|
+
amountCents: Cents;
|
|
43
|
+
}
|
|
44
|
+
export declare function planGoogleInvoiceSettlement(invoices: GoogleInvoice[], bankBalanceCents: Cents, bufferTargetCents: Cents): SettlementPlan[];
|
|
45
|
+
export declare function planMetaDebitProtection(expectedDebits: ExpectedDebit[], bankBalanceCents: Cents, bufferTargetCents: Cents): Cents;
|
|
46
|
+
export declare function generatePortfolioRebalancing(projects: ProjectTreasury[]): RebalanceRecommendation[];
|
|
47
|
+
export type { GoogleInvoice, SettlementPlan, ExpectedDebit, ProjectTreasury, RebalanceRecommendation, };
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform-Specific Funding Planner — pure logic for Google invoice settlement,
|
|
3
|
+
* Meta debit protection, and multi-project portfolio rebalancing.
|
|
4
|
+
*
|
|
5
|
+
* No API calls, no file I/O — fully testable deterministic functions.
|
|
6
|
+
* All monetary values use branded integer cents (Cents type).
|
|
7
|
+
*
|
|
8
|
+
* PRD Reference: §12.3 (Platform Billing), §15 (Rules Engine)
|
|
9
|
+
* Agents: Dockson (treasury), Heartbeat daemon
|
|
10
|
+
*/
|
|
11
|
+
// ── Google Invoice Settlement Planner ────────────────
|
|
12
|
+
// Prioritize by due date (nearest first). Reserve buffer after settlement.
|
|
13
|
+
// Generate wire instructions for each invoice.
|
|
14
|
+
export function planGoogleInvoiceSettlement(invoices, bankBalanceCents, bufferTargetCents) {
|
|
15
|
+
if (invoices.length === 0)
|
|
16
|
+
return [];
|
|
17
|
+
// Filter to actionable invoices (pending or overdue, not already paid)
|
|
18
|
+
const actionable = invoices.filter(inv => inv.status !== 'paid');
|
|
19
|
+
// Sort: overdue first, then by due date ascending
|
|
20
|
+
const sorted = [...actionable].sort((a, b) => {
|
|
21
|
+
if (a.status === 'overdue' && b.status !== 'overdue')
|
|
22
|
+
return -1;
|
|
23
|
+
if (a.status !== 'overdue' && b.status === 'overdue')
|
|
24
|
+
return 1;
|
|
25
|
+
return new Date(a.dueDate).getTime() - new Date(b.dueDate).getTime();
|
|
26
|
+
});
|
|
27
|
+
const plans = [];
|
|
28
|
+
let availableBalance = bankBalanceCents;
|
|
29
|
+
for (let i = 0; i < sorted.length; i++) {
|
|
30
|
+
const invoice = sorted[i];
|
|
31
|
+
const invoiceAmount = invoice.amountCents;
|
|
32
|
+
// Reserve buffer: only settle if we can still maintain buffer afterward
|
|
33
|
+
const balanceAfterSettlement = availableBalance - invoiceAmount;
|
|
34
|
+
if (balanceAfterSettlement < bufferTargetCents) {
|
|
35
|
+
// Cannot settle this invoice without breaching buffer
|
|
36
|
+
// Still include it in the plan but mark the buffer breach
|
|
37
|
+
if (availableBalance > bufferTargetCents) {
|
|
38
|
+
// Partial settlement up to buffer is not supported — skip
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
// Balance already below buffer — cannot settle any more
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
const wireReference = `GOOG-INV-${invoice.invoiceId}-${Date.now().toString(36).toUpperCase()}`;
|
|
45
|
+
plans.push({
|
|
46
|
+
invoiceId: invoice.invoiceId,
|
|
47
|
+
amountCents: invoice.amountCents,
|
|
48
|
+
dueDate: invoice.dueDate,
|
|
49
|
+
wireReference,
|
|
50
|
+
priority: i + 1,
|
|
51
|
+
remainingBufferAfterCents: (balanceAfterSettlement),
|
|
52
|
+
});
|
|
53
|
+
availableBalance = balanceAfterSettlement;
|
|
54
|
+
}
|
|
55
|
+
return plans;
|
|
56
|
+
}
|
|
57
|
+
// ── Meta Debit Protection Planner ────────────────────
|
|
58
|
+
// Forecast 7-day debit total and ensure bank balance covers debits + buffer.
|
|
59
|
+
export function planMetaDebitProtection(expectedDebits, bankBalanceCents, bufferTargetCents) {
|
|
60
|
+
if (expectedDebits.length === 0)
|
|
61
|
+
return 0;
|
|
62
|
+
// Sum expected debits over the 7-day window
|
|
63
|
+
const now = Date.now();
|
|
64
|
+
const sevenDaysMs = 7 * 24 * 60 * 60 * 1000;
|
|
65
|
+
const cutoff = now + sevenDaysMs;
|
|
66
|
+
const totalExpectedDebits = expectedDebits
|
|
67
|
+
.filter(d => new Date(d.date).getTime() <= cutoff)
|
|
68
|
+
.reduce((sum, d) => sum + d.amountCents, 0);
|
|
69
|
+
// Required buffer: total debits + buffer target
|
|
70
|
+
const requiredBalance = totalExpectedDebits + bufferTargetCents;
|
|
71
|
+
const deficit = requiredBalance - bankBalanceCents;
|
|
72
|
+
// If balance already covers debits + buffer, no additional buffer needed
|
|
73
|
+
if (deficit <= 0)
|
|
74
|
+
return 0;
|
|
75
|
+
return deficit;
|
|
76
|
+
}
|
|
77
|
+
// ── Portfolio Rebalancing ────────────────────────────
|
|
78
|
+
// For multi-project operators: suggest moving operating float from
|
|
79
|
+
// overfunded to underfunded projects.
|
|
80
|
+
export function generatePortfolioRebalancing(projects) {
|
|
81
|
+
if (projects.length < 2)
|
|
82
|
+
return [];
|
|
83
|
+
const recommendations = [];
|
|
84
|
+
// Calculate "excess" for each project: balance above (buffer + 30 days of spend)
|
|
85
|
+
const TARGET_RUNWAY_DAYS = 30;
|
|
86
|
+
const analyzed = projects.map(p => {
|
|
87
|
+
const targetBalance = p.minimumBufferCents +
|
|
88
|
+
p.dailySpendRateCents * TARGET_RUNWAY_DAYS;
|
|
89
|
+
const excess = p.bankBalanceCents - targetBalance;
|
|
90
|
+
return { project: p, targetBalanceCents: targetBalance, excessCents: excess };
|
|
91
|
+
});
|
|
92
|
+
// Split into overfunded and underfunded
|
|
93
|
+
const overfunded = analyzed
|
|
94
|
+
.filter(a => a.excessCents > 0)
|
|
95
|
+
.sort((a, b) => b.excessCents - a.excessCents); // most excess first
|
|
96
|
+
const underfunded = analyzed
|
|
97
|
+
.filter(a => a.excessCents < 0)
|
|
98
|
+
.sort((a, b) => a.excessCents - b.excessCents); // most deficit first
|
|
99
|
+
// Match overfunded to underfunded greedily
|
|
100
|
+
let overIdx = 0;
|
|
101
|
+
let underIdx = 0;
|
|
102
|
+
const remainingExcess = overfunded.map(o => o.excessCents);
|
|
103
|
+
const remainingDeficit = underfunded.map(u => Math.abs(u.excessCents));
|
|
104
|
+
while (overIdx < overfunded.length && underIdx < underfunded.length) {
|
|
105
|
+
const available = remainingExcess[overIdx];
|
|
106
|
+
const needed = remainingDeficit[underIdx];
|
|
107
|
+
if (available <= 0) {
|
|
108
|
+
overIdx++;
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (needed <= 0) {
|
|
112
|
+
underIdx++;
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
const transferAmount = Math.min(available, needed);
|
|
116
|
+
const fromProject = overfunded[overIdx].project;
|
|
117
|
+
const toProject = underfunded[underIdx].project;
|
|
118
|
+
recommendations.push({
|
|
119
|
+
fromProjectId: fromProject.projectId,
|
|
120
|
+
toProjectId: toProject.projectId,
|
|
121
|
+
amountCents: Math.round(transferAmount),
|
|
122
|
+
reason: `${fromProject.projectName} has ${overfunded[overIdx].project.runwayDays}d runway ` +
|
|
123
|
+
`(${TARGET_RUNWAY_DAYS}d target) — transfer to ${toProject.projectName} ` +
|
|
124
|
+
`which has ${toProject.runwayDays}d runway`,
|
|
125
|
+
});
|
|
126
|
+
remainingExcess[overIdx] -= transferAmount;
|
|
127
|
+
remainingDeficit[underIdx] -= transferAmount;
|
|
128
|
+
if (remainingExcess[overIdx] <= 0)
|
|
129
|
+
overIdx++;
|
|
130
|
+
if (remainingDeficit[underIdx] <= 0)
|
|
131
|
+
underIdx++;
|
|
132
|
+
}
|
|
133
|
+
return recommendations;
|
|
134
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Three-Way Reconciliation Engine — pure logic for financial matching.
|
|
3
|
+
*
|
|
4
|
+
* Reconciles three data sources:
|
|
5
|
+
* 1. Provider transfers (stablecoin off-ramp records)
|
|
6
|
+
* 2. Bank transactions (settlement arrivals)
|
|
7
|
+
* 3. Platform spend (ad platform reported spend)
|
|
8
|
+
*
|
|
9
|
+
* No API calls, no file I/O — fully testable deterministic functions.
|
|
10
|
+
* Extends the existing reconciliation.ts pattern with stablecoin-specific matching.
|
|
11
|
+
*
|
|
12
|
+
* PRD Reference: §12.6 (ReconciliationRecord), §16 (Reporting and Reconciliation)
|
|
13
|
+
* Agents: Dockson (treasury), Heartbeat daemon
|
|
14
|
+
*/
|
|
15
|
+
type Cents = number & {
|
|
16
|
+
readonly __brand: 'Cents';
|
|
17
|
+
};
|
|
18
|
+
interface ProviderTransfer {
|
|
19
|
+
id: string;
|
|
20
|
+
providerTransferId: string;
|
|
21
|
+
amountCents: Cents;
|
|
22
|
+
feesCents: Cents;
|
|
23
|
+
netAmountCents: Cents;
|
|
24
|
+
status: 'pending' | 'processing' | 'completed' | 'failed' | 'cancelled';
|
|
25
|
+
initiatedAt: string;
|
|
26
|
+
completedAt?: string;
|
|
27
|
+
reference?: string;
|
|
28
|
+
}
|
|
29
|
+
interface BankTransaction {
|
|
30
|
+
id: string;
|
|
31
|
+
amountCents: Cents;
|
|
32
|
+
date: string;
|
|
33
|
+
reference: string;
|
|
34
|
+
counterparty: string;
|
|
35
|
+
type: 'credit' | 'debit';
|
|
36
|
+
}
|
|
37
|
+
interface PlatformSpendEntry {
|
|
38
|
+
platform: 'google' | 'meta';
|
|
39
|
+
date: string;
|
|
40
|
+
spendCents: Cents;
|
|
41
|
+
invoiceId?: string;
|
|
42
|
+
}
|
|
43
|
+
type VarianceClassification = 'MATCHED' | 'WITHIN_THRESHOLD' | 'MISMATCH';
|
|
44
|
+
interface TransferBankMatch {
|
|
45
|
+
transferId: string;
|
|
46
|
+
bankTransactionId: string | null;
|
|
47
|
+
transferAmountCents: Cents;
|
|
48
|
+
bankAmountCents: Cents;
|
|
49
|
+
varianceCents: Cents;
|
|
50
|
+
classification: VarianceClassification;
|
|
51
|
+
}
|
|
52
|
+
interface BankSpendMatch {
|
|
53
|
+
bankTransactionId: string;
|
|
54
|
+
platform: 'google' | 'meta';
|
|
55
|
+
bankAmountCents: Cents;
|
|
56
|
+
spendAmountCents: Cents;
|
|
57
|
+
varianceCents: Cents;
|
|
58
|
+
classification: VarianceClassification;
|
|
59
|
+
}
|
|
60
|
+
interface ReconciliationReport {
|
|
61
|
+
date: string;
|
|
62
|
+
transferMatches: TransferBankMatch[];
|
|
63
|
+
spendMatches: BankSpendMatch[];
|
|
64
|
+
unmatchedTransfers: ProviderTransfer[];
|
|
65
|
+
unmatchedBankTransactions: BankTransaction[];
|
|
66
|
+
unmatchedSpend: PlatformSpendEntry[];
|
|
67
|
+
totalTransferredCents: Cents;
|
|
68
|
+
totalBankReceivedCents: Cents;
|
|
69
|
+
totalPlatformSpendCents: Cents;
|
|
70
|
+
overallVarianceCents: Cents;
|
|
71
|
+
mismatchCount: number;
|
|
72
|
+
}
|
|
73
|
+
export declare function classifyVariance(varianceCents: Cents, referenceCents: Cents, thresholdBps: number): VarianceClassification;
|
|
74
|
+
export declare function matchTransferToBank(transfer: ProviderTransfer, transactions: BankTransaction[], thresholdBps?: number): TransferBankMatch;
|
|
75
|
+
export declare function matchBankToSpend(bankTransaction: BankTransaction, platformSpend: PlatformSpendEntry[], thresholdBps?: number): BankSpendMatch | null;
|
|
76
|
+
export declare function reconcileThreeWay(providerTransfers: ProviderTransfer[], bankTransactions: BankTransaction[], platformSpend: PlatformSpendEntry[], thresholdBps?: number): ReconciliationReport;
|
|
77
|
+
export declare function shouldFreeze(mismatchCount: number, consecutiveCount: number, maxConsecutive: number): boolean;
|
|
78
|
+
export type { Cents, ProviderTransfer, BankTransaction, PlatformSpendEntry, VarianceClassification, TransferBankMatch, BankSpendMatch, ReconciliationReport, };
|