Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
762 commits
Select commit Hold shift + click to select a range
cb81425
Add Website Completion Package to sitemap
angellllkr-eng Jun 9, 2026
dd47304
Reframe homepage around website completion revenue offer
angellllkr-eng Jun 9, 2026
17cadaf
Turn pack page into website completion offer
angellllkr-eng Jun 9, 2026
e910316
Upgrade contact page for package close and owner security routing
angellllkr-eng Jun 9, 2026
d3d2bef
Clean homepage imports after revenue offer update
angellllkr-eng Jun 9, 2026
85eca7f
Add hourly owner report npm commands
angellllkr-eng Jun 9, 2026
2f502a8
Add hourly owner revenue operating prompt
angellllkr-eng Jun 9, 2026
c7bd8ac
Add hourly owner report generator
angellllkr-eng Jun 9, 2026
fb535f4
Add hourly owner report sender
angellllkr-eng Jun 9, 2026
32aac0c
Add hourly owner automation verifier
angellllkr-eng Jun 9, 2026
feb046d
Add revenue-first owner goal verifier
angellllkr-eng Jun 9, 2026
c4f9d82
Add hourly owner report workflow
angellllkr-eng Jun 9, 2026
6b48124
Remove npm cache requirement from owner report workflow
angellllkr-eng Jun 9, 2026
e67a5b1
Restore relief promise and add package payment CTA
angellllkr-eng Jun 9, 2026
c518f70
Add package payment route to pack page
angellllkr-eng Jun 9, 2026
7f3dd8d
Add payment route to canonical package page
angellllkr-eng Jun 9, 2026
0b75bad
Make website package first paid pricing option
angellllkr-eng Jun 9, 2026
baf2268
Expose package payment route to hourly report
angellllkr-eng Jun 9, 2026
7da6737
Report package payment route status hourly
angellllkr-eng Jun 9, 2026
c328228
Verify hourly report payment route coverage
angellllkr-eng Jun 9, 2026
46d728c
Verify revenue pages include payment and relief promise
angellllkr-eng Jun 9, 2026
c353aca
Add payment route to hourly owner prompt
angellllkr-eng Jun 9, 2026
072165b
Allow mailto contact fallback in CSP
angellllkr-eng Jun 9, 2026
6502cb3
Skip hourly report script-only Vercel builds
angellllkr-eng Jun 9, 2026
2349528
Add package request receipt and delivery helpers
angellllkr-eng Jun 9, 2026
4dc134f
Add package request API route
angellllkr-eng Jun 9, 2026
52eff3f
Add client package request form
angellllkr-eng Jun 9, 2026
44f6e6b
Use API-backed package request form on contact page
angellllkr-eng Jun 9, 2026
9e86b50
Expose package request readiness in health API
angellllkr-eng Jun 9, 2026
8f218c5
Expose package request delivery secrets to owner workflow
angellllkr-eng Jun 9, 2026
7e0d064
Clean package request form imports
angellllkr-eng Jun 9, 2026
b4232b3
Report package request readiness hourly
angellllkr-eng Jun 9, 2026
839ca86
Verify assisted close package request path
angellllkr-eng Jun 9, 2026
c894124
Verify hourly package request contract
angellllkr-eng Jun 9, 2026
fb84216
Document package request assisted close lane
angellllkr-eng Jun 9, 2026
c643a3c
ci: harden manual Vercel production deploy
angellllkr-eng Jun 9, 2026
1b1351a
docs: add Vercel limit resolution guide
angellllkr-eng Jun 9, 2026
3ae63c2
Set owner report automation to 50-minute cadence
angellllkr-eng Jun 9, 2026
2e705b5
Verify 50-minute owner report automation
angellllkr-eng Jun 9, 2026
b4ed19c
docs: record current Vercel deployment state
angellllkr-eng Jun 9, 2026
353b35d
docs: add owner-controlled Vercel deploy runbook
angellllkr-eng Jun 9, 2026
558cf51
chore: disable automatic Vercel Git deployments
angellllkr-eng Jun 9, 2026
d31f547
Label owner report email as 50-minute cadence
angellllkr-eng Jun 9, 2026
f63ef87
Restore hourly private owner report workflow
angellllkr-eng Jun 9, 2026
47603c2
Enforce hourly private owner report contract
angellllkr-eng Jun 9, 2026
dac4ebb
docs: update deployment state after quota controls
angellllkr-eng Jun 9, 2026
b0b7723
Re-enable guarded Vercel main deployments
angellllkr-eng Jun 9, 2026
a13c21f
docs: add manual deploy click path
angellllkr-eng Jun 9, 2026
21364e0
Update current deployment controls
angellllkr-eng Jun 9, 2026
db125b3
Document guarded Vercel Git deployments
angellllkr-eng Jun 9, 2026
1828d3a
Clarify guarded deploy quota policy
angellllkr-eng Jun 9, 2026
fbc1434
Redact security owner report route
angellllkr-eng Jun 9, 2026
b92e21c
ci: make manual deploy env fallback safer
angellllkr-eng Jun 9, 2026
3d540a0
Add revenue war plan prompt
angellllkr-eng Jun 9, 2026
7dac902
Document hourly owner report delivery setup
angellllkr-eng Jun 9, 2026
d04a883
Allow canonical MindReply Vercel hosts
angellllkr-eng Jun 9, 2026
1ba6e3e
Tighten Vercel ignore guard self-test
angellllkr-eng Jun 9, 2026
598d456
ci: add deployment readiness check
angellllkr-eng Jun 9, 2026
8588a6b
docs: clarify deploy readiness and manual deploy path
angellllkr-eng Jun 9, 2026
6e51b9a
Add live revenue surface verifier
angellllkr-eng Jun 9, 2026
3cca8d8
Add live revenue verification script
angellllkr-eng Jun 9, 2026
8e57d0e
Verify live revenue surface after deploy
angellllkr-eng Jun 9, 2026
269a6aa
Remove blocked homepage positioning term
angellllkr-eng Jun 9, 2026
361d79c
Align owner report sender wording with hourly cadence
angellllkr-eng Jun 9, 2026
24c3bc6
Avoid blocked terms in vision dictionary
angellllkr-eng Jun 9, 2026
6846858
Activate hourly owner report workflow triggers
angellllkr-eng Jun 9, 2026
7fd797b
Fix hourly owner report workflow validation
angellllkr-eng Jun 9, 2026
7f57a82
Remove setup-node cache from owner report workflow
angellllkr-eng Jun 9, 2026
741e8ce
Harden production deploy alias and owner proof flow
angellllkr-eng Jun 9, 2026
9623716
Require live revenue verifier to detect stale deploys
angellllkr-eng Jun 9, 2026
394eda0
Attach live proof before owner report delivery
angellllkr-eng Jun 9, 2026
f7db9f0
ci: report after every main implementation push
angellllkr-eng Jun 9, 2026
a413abf
test: enforce owner report push trigger
angellllkr-eng Jun 9, 2026
911417d
Treat live revenue verifier as automation-only
angellllkr-eng Jun 9, 2026
7491818
Fix Vercel guard automation self-test separator
angellllkr-eng Jun 9, 2026
293cecb
Add country-aware locale endpoint
angellllkr-eng Jun 9, 2026
0cb7b21
Document live revenue proof report contract
angellllkr-eng Jun 9, 2026
9002835
Add subtle multilingual locale selector
angellllkr-eng Jun 9, 2026
4cced72
Verify production recovery live proof contract
angellllkr-eng Jun 9, 2026
f3af030
Add premium global footer
angellllkr-eng Jun 9, 2026
7767186
Wire footer locale assist and stronger SEO metadata
angellllkr-eng Jun 9, 2026
f26daf4
Allow geo locale API through middleware
angellllkr-eng Jun 9, 2026
16adb3b
Add search demand observatory contract
angellllkr-eng Jun 9, 2026
f859fde
Remove blocked term from layout metadata
angellllkr-eng Jun 9, 2026
a7c0022
Add emergency Vercel alias repair workflow
angellllkr-eng Jun 9, 2026
5cec88d
Remove blocked terms from capabilities copy
angellllkr-eng Jun 9, 2026
46a90e4
Document production alias recovery proof gate
angellllkr-eng Jun 9, 2026
04fb076
Refresh homepage authority copy for verifier
angellllkr-eng Jun 9, 2026
d2cdeee
Align Vercel guard report-only wording
angellllkr-eng Jun 9, 2026
db5d86a
Fix Vercel guard self-test fixtures
angellllkr-eng Jun 9, 2026
ef3be33
Open robots access for revenue pages
angellllkr-eng Jun 9, 2026
458b0f7
Expand geo locale support for high demand markets
angellllkr-eng Jun 9, 2026
727007d
Strengthen metadata for package and locale demand
angellllkr-eng Jun 9, 2026
b1a1608
Add locale alternates to revenue sitemap
angellllkr-eng Jun 9, 2026
df18ece
Polish locale assist for multilingual buying friction
angellllkr-eng Jun 9, 2026
2325c29
Add website audit action blueprint
angellllkr-eng Jun 9, 2026
83066a1
Add owner decision security boundary
angellllkr-eng Jun 9, 2026
1e33015
Make alias repair owner report install lockfile-free
angellllkr-eng Jun 9, 2026
97f37a6
Add revenue i18n SEO verifier
angellllkr-eng Jun 9, 2026
fc5eb9e
Run revenue i18n SEO verifier in decision checks
angellllkr-eng Jun 9, 2026
314b1ae
Put buying-friction demand wedge in homepage hero
angellllkr-eng Jun 9, 2026
aa0725b
feat: move locale assist into footer with ten market languages
angellllkr-eng Jun 9, 2026
fed81f3
Add assisted close details to package request receipt
angellllkr-eng Jun 9, 2026
a758d03
feat: target ten demand locales from geo headers
angellllkr-eng Jun 9, 2026
6d99ee5
feat: align metadata with priority locale markets
angellllkr-eng Jun 9, 2026
dbed892
Show assisted close state in package request form
angellllkr-eng Jun 9, 2026
8da6a8f
Clarify assisted close package request API response
angellllkr-eng Jun 9, 2026
2b80024
test: verify ten-language market locale contract
angellllkr-eng Jun 9, 2026
93bbc2d
feat: align sitemap alternates to ten priority locales
angellllkr-eng Jun 9, 2026
cff97f8
Verify package request assisted close contract
angellllkr-eng Jun 9, 2026
379698b
Schedule emergency Vercel alias repair guard
angellllkr-eng Jun 9, 2026
735b077
Skip alias repair when production is already healthy
angellllkr-eng Jun 9, 2026
266b611
ci: add explicit Vercel production deploy workflow
angellllkr-eng Jun 9, 2026
ce3bbbc
Use Vercel API metadata for protected alias source check
angellllkr-eng Jun 9, 2026
5951cec
fix: make Vercel production main builds reliable
angellllkr-eng Jun 9, 2026
9f571ca
Check live health before requiring alias token
angellllkr-eng Jun 9, 2026
5283b78
Strengthen homepage premium authority layer
angellllkr-eng Jun 9, 2026
79d23c8
Verify homepage premium authority layer
angellllkr-eng Jun 9, 2026
f76192c
feat: localize priority revenue surface copy
angellllkr-eng Jun 9, 2026
9367bf2
fix: route footer handoff through contact form
angellllkr-eng Jun 9, 2026
b0d2218
test: verify localized revenue surface and footer handoff
angellllkr-eng Jun 9, 2026
8fcf661
Add MRagent post-read upgrade trigger
angellllkr-eng Jun 9, 2026
3926ad3
Verify MRagent upgrade trigger
angellllkr-eng Jun 9, 2026
8c8de8a
fix: make capabilities page customer-safe
angellllkr-eng Jun 9, 2026
991adbf
fix: redirect public agents board to capabilities
angellllkr-eng Jun 9, 2026
70f3624
fix: redirect legacy pack route to package
angellllkr-eng Jun 9, 2026
66d2e6b
fix: remove internal legacy routes from robots allowlist
angellllkr-eng Jun 9, 2026
e5d67cd
fix: remove legacy internal routes from sitemap
angellllkr-eng Jun 9, 2026
830e24e
test: verify customer-safe public capability routing
angellllkr-eng Jun 9, 2026
bfdbcf8
fix: update emergency alias repair target
angellllkr-eng Jun 9, 2026
aa352d5
fix: detect stale live deployment assets
angellllkr-eng Jun 9, 2026
e0dacf5
ci: verify live domain after production deploy
angellllkr-eng Jun 9, 2026
4d5a6ea
docs: record production alias secret blocker
angellllkr-eng Jun 9, 2026
7829834
ci: make Vercel production deploy manual to preserve build quota
angellllkr-eng Jun 9, 2026
d339afb
ci: keep owner report hourly and manual only
angellllkr-eng Jun 9, 2026
457dc7e
ci: skip non-canonical Vercel project builds
angellllkr-eng Jun 9, 2026
3230de6
test: include Vercel ignore guard verification
angellllkr-eng Jun 9, 2026
148b37d
feat: show package delivery receipt proof
angellllkr-eng Jun 9, 2026
a32259d
fix: correct package receipt proof class
angellllkr-eng Jun 9, 2026
9f93ead
test: verify package delivery proof
angellllkr-eng Jun 9, 2026
f536ace
test: include package proof verifier
angellllkr-eng Jun 9, 2026
720b2cb
docs: update production blocker with package proof state
angellllkr-eng Jun 9, 2026
186dbad
fix: derive Vercel changed files from git
angellllkr-eng Jun 9, 2026
787ec27
docs: record Vercel ignore guard improvement
angellllkr-eng Jun 9, 2026
76e6721
feat: strengthen geo locale market priority
angellllkr-eng Jun 9, 2026
2e4e2f1
feat: harden multilingual market SEO metadata
angellllkr-eng Jun 9, 2026
805c786
feat: compact auto language and market assist
angellllkr-eng Jun 9, 2026
758f8d9
docs: record production alias recovery state
angellllkr-eng Jun 9, 2026
69df3de
fix: tighten mobile visual spacing
angellllkr-eng Jun 9, 2026
de2c342
test: verify market i18n and mobile surface
angellllkr-eng Jun 9, 2026
fdb894a
docs: add market SEO positioning lane
angellllkr-eng Jun 9, 2026
8a448fc
feat: add priority market footer strip
angellllkr-eng Jun 9, 2026
336cc5c
test: require footer market strip
angellllkr-eng Jun 9, 2026
bfd58e1
docs: record deployment alias status check
angellllkr-eng Jun 9, 2026
b8832a7
Add assisted close playbook for website package
angellllkr-eng Jun 9, 2026
c34c0ca
Update production recovery state with latest deployment proof
angellllkr-eng Jun 9, 2026
1cdc16a
ci: explicitly alias Vercel production domains
angellllkr-eng Jun 9, 2026
1aa3faa
test: fail stale live domain assets
angellllkr-eng Jun 9, 2026
bcf9a46
ci: attach live domain proof to owner reports
angellllkr-eng Jun 9, 2026
73906a3
test: require live proof in owner report workflow
angellllkr-eng Jun 9, 2026
5e3e126
Add package payment and invoice env placeholders
angellllkr-eng Jun 9, 2026
32c141f
Make package request receipt invoice-first by default
angellllkr-eng Jun 9, 2026
de207d6
Clarify invoice-first package request form
angellllkr-eng Jun 9, 2026
1382d92
Clarify package request fallback invoice message
angellllkr-eng Jun 9, 2026
9b86693
Add invoice-first close verifier
angellllkr-eng Jun 9, 2026
fa153da
Add invoice-first close verifier to decision gate
angellllkr-eng Jun 9, 2026
dff4370
feat: harden auto locale and market assist
angellllkr-eng Jun 9, 2026
6aa14ca
fix: tighten mobile locale spacing
angellllkr-eng Jun 9, 2026
85cea90
test: verify country locale and mobile footer polish
angellllkr-eng Jun 9, 2026
2fbe6d9
docs: add i18n market observation lanes
angellllkr-eng Jun 9, 2026
479d86b
ci: auto deploy production surface on main changes
angellllkr-eng Jun 9, 2026
7b80139
Clarify invoice-first homepage close path
angellllkr-eng Jun 9, 2026
8c4d69a
ci: fix deploy workflow without npm lockfile
angellllkr-eng Jun 9, 2026
517ac5a
ci: fix mragent verify without npm lockfile
angellllkr-eng Jun 9, 2026
0519a9b
Guard invoice-first homepage language
angellllkr-eng Jun 9, 2026
0140d6e
ci: fix manual production deploy install path
angellllkr-eng Jun 9, 2026
696897a
test: align locale verifier with dynamic market count
angellllkr-eng Jun 9, 2026
e0cab2d
Clarify package invoice route and SEO proof
angellllkr-eng Jun 9, 2026
f3d3367
Guard package page invoice proof
angellllkr-eng Jun 9, 2026
e21a228
ci: split production verification steps
angellllkr-eng Jun 9, 2026
661ecd9
ci: split decision layer verification
angellllkr-eng Jun 9, 2026
0ee372a
ci: split mragent verification gates
angellllkr-eng Jun 9, 2026
d050f50
Update production recovery state for invoice proof deploy
angellllkr-eng Jun 9, 2026
d373d3e
ci: restore reporting-only Vercel guard paths
angellllkr-eng Jun 9, 2026
3d2d8c2
ci: accept common Vercel token secret names
angellllkr-eng Jun 9, 2026
2e629f6
Verify live package page invoice proof
angellllkr-eng Jun 9, 2026
3f04c1c
ci: accept fallback Vercel token in manual deploy
angellllkr-eng Jun 9, 2026
fe1132b
Guard live package proof verifier contract
angellllkr-eng Jun 9, 2026
a7b257b
Update recovery state with live package gate
angellllkr-eng Jun 9, 2026
4c0cfe9
Add no-build Vercel alias recovery workflow
angellllkr-eng Jun 9, 2026
55480c5
Guard no-build alias workflow contract
angellllkr-eng Jun 9, 2026
aa361c5
Document no-build alias recovery path
angellllkr-eng Jun 9, 2026
b0b8c77
Link no-build alias workflow in recovery state
angellllkr-eng Jun 9, 2026
99b75ef
Point alias recovery at latest ready deployment
angellllkr-eng Jun 9, 2026
46644e3
Update no-build alias target to latest ready deployment
angellllkr-eng Jun 9, 2026
85a86a6
Guard latest alias recovery target
angellllkr-eng Jun 9, 2026
5802e62
Refresh production alias recovery state
angellllkr-eng Jun 9, 2026
0aaf177
Point alias recovery at latest ready contract deployment
angellllkr-eng Jun 9, 2026
adc8604
Update alias recovery runbook to latest ready contract deployment
angellllkr-eng Jun 9, 2026
cddbb13
Guard current alias recovery deployment target
angellllkr-eng Jun 9, 2026
64043a0
Refresh alias state for latest ready contract deployment
angellllkr-eng Jun 9, 2026
5cd4c68
fix: keep footer evidence copy customer-facing
angellllkr-eng Jun 10, 2026
cbb31f9
Record June 10 production alias status
angellllkr-eng Jun 10, 2026
9b1f386
ci: target latest footer deploy in alias repair
angellllkr-eng Jun 10, 2026
f36577b
Collect billing details for invoice-first package requests
angellllkr-eng Jun 10, 2026
868206a
Add billing capture to package request form
angellllkr-eng Jun 10, 2026
76005ab
Align package request fallback with billing capture
angellllkr-eng Jun 10, 2026
7253752
Verify billing capture for invoice-first close
angellllkr-eng Jun 10, 2026
e458cfa
Add billing details to fallback package email
angellllkr-eng Jun 10, 2026
97f3e32
Update page.tsx
angellllkr-eng Jun 10, 2026
fa70214
feat: deepen locale assist translations and discreet market selector
angellllkr-eng Jun 10, 2026
4c2db0b
Target billing-ready deployment in alias recovery
angellllkr-eng Jun 10, 2026
64af837
feat: refine footer market positioning and mobile handoff
angellllkr-eng Jun 10, 2026
dc76c5d
fix: tighten mobile footer and locale presentation
angellllkr-eng Jun 10, 2026
8931a3c
Guard billing-ready alias recovery target
angellllkr-eng Jun 10, 2026
e868e3e
feat: align metadata with priority demand markets
angellllkr-eng Jun 10, 2026
ffb12fe
feat: prioritize geo locale markets by demand gap
angellllkr-eng Jun 10, 2026
a45177b
test: verify priority market locale and mobile refinements
angellllkr-eng Jun 10, 2026
860ec4c
docs: record priority market and locale observation logic
angellllkr-eng Jun 10, 2026
542718a
feat: add full page translation provider fallback
angellllkr-eng Jun 10, 2026
3a5a811
feat: wire full page translation provider
angellllkr-eng Jun 10, 2026
922b352
fix: hide raw auto country label and publish locale changes
angellllkr-eng Jun 10, 2026
0957a3c
fix: hide translate provider chrome and preserve mobile polish
angellllkr-eng Jun 10, 2026
6e0a19b
feat: tune MRagent for short slow varied replies
angellllkr-eng Jun 10, 2026
eae6e22
test: verify translation provider and hidden country label
angellllkr-eng Jun 10, 2026
1ae6e90
feat: add detailed product surface
angellllkr-eng Jun 10, 2026
721c27f
feat: add fixed price checkout route
angellllkr-eng Jun 10, 2026
bf9761a
feat: replace noisy locale assist with translate handoff
angellllkr-eng Jun 10, 2026
8de0076
Update LocaleAssistV2.tsx
angellllkr-eng Jun 10, 2026
083a744
docs: add revenue conversion war plan for homepage and outreach
angellllkr-eng Jun 10, 2026
00a4202
Tighten MRagent speed variation and provider safety
angellllkr-eng Jun 10, 2026
2ab7494
feat: sharpen homepage revenue path and product detail
angellllkr-eng Jun 10, 2026
69d50ff
Update page.tsx
angellllkr-eng Jun 10, 2026
93665a9
Clean footer language and public contact copy
angellllkr-eng Jun 10, 2026
b16ee14
Add live homepage revenue rewrite pack
angellllkr-eng Jun 10, 2026
5c332e8
Add homepage revenue pack
angellllkr-eng Jun 10, 2026
74a0e29
fix: polish footer routes and language handoff
angellllkr-eng Jun 10, 2026
8477eb4
fix: add product and checkout routes to sitemap
angellllkr-eng Jun 10, 2026
f3f680e
fix: expose product and checkout routes to crawlers
angellllkr-eng Jun 10, 2026
6fce34a
fix: verify current revenue and translation surface
angellllkr-eng Jun 10, 2026
245da0b
docs: add homepage revenue strategy
angellllkr-eng Jun 10, 2026
5780371
docs: add outbound revenue assets
angellllkr-eng Jun 10, 2026
792b78f
Add Bulgarian locale assist and whole-site translation trigger
angellllkr-eng Jun 10, 2026
0a05832
Add Bulgarian to Google Translate provider
angellllkr-eng Jun 10, 2026
189181d
Add Bulgarian sitemap alternates
angellllkr-eng Jun 10, 2026
6ccb229
Add Bulgarian country locale mapping
angellllkr-eng Jun 10, 2026
cc7dbcb
Add Bulgarian SEO metadata
angellllkr-eng Jun 10, 2026
c81f230
Add Bulgarian multilingual policy to MRagent
angellllkr-eng Jun 10, 2026
3f14eb0
Add Bulgaria to footer market list
angellllkr-eng Jun 10, 2026
35976a2
Tighten MRagent response length and tone
Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
.next/
node_modules/
npm-debug.log
.env
.env.local
.env.development.local
.env.test.local
.env.production.local
.git/
.gitignore
README.md
13 changes: 0 additions & 13 deletions .editorconfig

This file was deleted.

35 changes: 27 additions & 8 deletions .env
Original file line number Diff line number Diff line change
@@ -1,8 +1,27 @@
# API keys (replace with your real keys after creating a Stripe account)
# This is your test secret API key.
STRIPE_SECRET_KEY=
# This is your test publishable API key.
VITE_STRIPE_PUBLISHABLE_KEY=

# Domain to return to after checkout
DOMAIN=http://localhost:3000
NEXT_PUBLIC_SITE_URL=https://www.mind-reply.com
NEXT_PUBLIC_WEBSITE_COMPLETION_PACKAGE_PAYMENT_URL=

# MRagent provider (optional)
OPENAI_API_KEY=
MRAGENT_MODEL=gpt-5
BLOB_READ_WRITE_TOKEN=

# Website Completion Package close route
MINDREPLY_PACKAGE_REQUEST_TO=
MINDREPLY_PACKAGE_REQUEST_FROM=
MINDREPLY_PACKAGE_REQUEST_DRY_RUN=false

# Owner reports
MINDREPLY_REPORT_EMAIL=
MINDREPLY_REPORT_FROM=
RESEND_API_KEY=
MINDREPLY_SLACK_WEBHOOK_URL=
SLACK_WEBHOOK_URL=

# Gmail / IMAP intake
MINDREPLY_IMAP_HOST=imap.gmail.com
MINDREPLY_IMAP_USER=
MINDREPLY_IMAP_PASSWORD=

# Calendar action outbox
MINDREPLY_CALENDAR_OUTBOX=calendar-outbox.jsonl
12 changes: 12 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
* text=auto

*.sh text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.ts text eol=lf
*.tsx text eol=lf
*.js text eol=lf
*.jsx text eol=lf
*.json text eol=lf
*.md text eol=lf
Dockerfile text eol=lf
55 changes: 55 additions & 0 deletions .github/workflows/activation-pack-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
name: Activation Pack Report

on:
workflow_dispatch:
inputs:
channels:
description: "Comma-separated channels: console,slack,email"
required: false
default: "console"
dry_run:
description: "Keep true until Slack/email secrets are verified"
required: false
default: "true"
require_delivery:
description: "Fail unless Slack or email actually sends"
required: false
default: "false"
schedule:
- cron: "*/30 * * * *"

permissions:
contents: read
statuses: read

jobs:
activation-pack-report:
runs-on: ubuntu-latest
timeout-minutes: 10
env:
NEXT_PUBLIC_SITE_URL: ${{ vars.NEXT_PUBLIC_SITE_URL || 'https://www.mind-reply.com' }}
MINDREPLY_REPORT_ENABLED: ${{ vars.MINDREPLY_REPORT_ENABLED || 'false' }}
MINDREPLY_REPORT_DRY_RUN: ${{ github.event.inputs.dry_run || vars.MINDREPLY_REPORT_DRY_RUN || 'true' }}
MINDREPLY_REPORT_REQUIRE_DELIVERY: ${{ github.event.inputs.require_delivery || vars.MINDREPLY_REPORT_REQUIRE_DELIVERY || 'false' }}
MINDREPLY_REPORT_CHANNELS: ${{ github.event.inputs.channels || vars.MINDREPLY_REPORT_CHANNELS || 'console' }}
MINDREPLY_REPORT_PERSONAL_ONLY: "true"
MINDREPLY_REPORT_EMAILS: ${{ secrets.MINDREPLY_REPORT_EMAILS }}
MINDREPLY_REPORT_EMAIL: ${{ secrets.MINDREPLY_REPORT_EMAIL }}
MINDREPLY_REPORT_EMAIL_ALLOWLIST: ${{ secrets.MINDREPLY_REPORT_EMAIL_ALLOWLIST }}
MINDREPLY_REPORT_FROM: ${{ secrets.MINDREPLY_REPORT_FROM }}
RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }}
MINDREPLY_SLACK_WEBHOOK_URL: ${{ secrets.MINDREPLY_SLACK_WEBHOOK_URL }}
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"

- name: Install
run: npm install

- name: Generate activation pack report
run: npm run report:activation-pack
52 changes: 52 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: Decision Layer CI

on:
push:
branches: [main]
pull_request:
branches: [main]

jobs:
verify:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "20"

- name: Install
run: npm install --no-audit --fund=false --progress=false

- name: Verify Vercel build guard
run: npm run vercel:ignore:verify

- name: Verify decision layer contract
run: npx tsx scripts/verify-decision-layer.ts

- name: Verify production version contract
run: npx tsx scripts/verify-production-version-contract.ts

- name: Verify revenue i18n SEO surface
run: npx tsx scripts/verify-revenue-i18n-seo.ts

- name: Verify package delivery proof
run: npx tsx scripts/verify-package-delivery-proof.ts

- name: Verify invoice-first close path
run: npx tsx scripts/verify-invoice-first-close.ts

- name: Verify MRagent MCP
run: npm run mcp:verify

- name: Typecheck
run: npm run typecheck

- name: Build
run: npm run build

- name: Python backend tests
run: python -m unittest discover src
82 changes: 82 additions & 0 deletions .github/workflows/deployment-readiness.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
name: MindReply Deployment Readiness Check

on:
workflow_dispatch:

permissions:
contents: read

concurrency:
group: mindreply-deployment-readiness
cancel-in-progress: false

jobs:
readiness:
name: Verify production deploy readiness without deploying
runs-on: ubuntu-latest
timeout-minutes: 25
env:
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}
VERCEL_ORG_ID: ${{ secrets.VERCEL_ORG_ID || vars.VERCEL_ORG_ID }}
VERCEL_PROJECT_ID: ${{ secrets.VERCEL_PROJECT_ID || vars.VERCEL_PROJECT_ID }}
NEXT_PUBLIC_SITE_URL: https://www.mind-reply.com
MINDREPLY_LIVE_VERIFY_URL: https://www.mind-reply.com
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "22"
cache: npm

- name: Install dependencies
run: npm ci

- name: Verify report state
run: npm run report:check

- name: Generate owner state report
run: npm run launch:report

- name: Verify revenue blueprint
run: npm run audit:blueprint

- name: Verify app contract
run: npm run verify:all

- name: Verify Vercel target secrets
run: |
test -n "$VERCEL_TOKEN"
test "$VERCEL_ORG_ID" = "team_0plIJmQLgZC1wVv9zI2eVf3B"
test "$VERCEL_PROJECT_ID" = "prj_EuO1lFvbwoFSdDxBlezNyXG8eVV3"

- name: Install Vercel CLI
run: npm install --global vercel@latest

- name: Pull Vercel production environment
run: vercel pull --yes --environment=production --token "$VERCEL_TOKEN"

- name: Build Vercel artifact without deploying
run: vercel build --prod --token "$VERCEL_TOKEN"

- name: Check current live health
run: |
curl --fail --show-error --silent https://www.mind-reply.com/ > /tmp/mindreply-home.html
curl --fail --show-error --silent https://www.mind-reply.com/api/health > /tmp/mindreply-health.json
if curl --fail --show-error --silent https://www.mind-reply.com/api/version > /tmp/mindreply-version.json; then
echo "Live /api/version is already deployed."
else
echo "Live /api/version is not deployed yet; manual production deploy is still required."
fi

- name: Upload readiness artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: mindreply-deployment-readiness
path: |
reports/outbox/**
.vercel/output/**
if-no-files-found: ignore
93 changes: 93 additions & 0 deletions .github/workflows/hourly-owner-report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
name: MindReply Hourly Owner Report

on:
workflow_dispatch:
inputs:
channels:
description: "Comma-separated channels: email,slack"
required: false
default: "email,slack"
dry_run:
description: "Set true to write receipts without sending"
required: false
default: "false"
schedule:
- cron: "0 * * * *"

permissions:
contents: read

concurrency:
group: mindreply-hourly-owner-report-${{ github.ref }}
cancel-in-progress: true

jobs:
owner-report:
name: Owner revenue report
runs-on: ubuntu-latest
timeout-minutes: 15
env:
MINDREPLY_REPORT_ENABLED: ${{ vars.MINDREPLY_REPORT_ENABLED || 'true' }}
MINDREPLY_REPORT_DRY_RUN: ${{ github.event.inputs.dry_run || vars.MINDREPLY_REPORT_DRY_RUN || 'false' }}
MINDREPLY_REPORT_CHANNELS: ${{ github.event.inputs.channels || vars.MINDREPLY_REPORT_CHANNELS || 'email,slack' }}
MINDREPLY_REPORT_REQUIRE_LIVE_PROOF: ${{ vars.MINDREPLY_REPORT_REQUIRE_LIVE_PROOF || 'true' }}
MINDREPLY_REPORT_EMAIL: ${{ secrets.MINDREPLY_REPORT_EMAIL || vars.MINDREPLY_REPORT_EMAIL }}
MINDREPLY_REPORT_EMAILS: ${{ secrets.MINDREPLY_REPORT_EMAILS || vars.MINDREPLY_REPORT_EMAILS }}
MINDREPLY_REPORT_FROM: ${{ secrets.MINDREPLY_REPORT_FROM || vars.MINDREPLY_REPORT_FROM }}
MINDREPLY_PACKAGE_REQUEST_TO: ${{ secrets.MINDREPLY_PACKAGE_REQUEST_TO || vars.MINDREPLY_PACKAGE_REQUEST_TO }}
MINDREPLY_PACKAGE_REQUEST_FROM: ${{ secrets.MINDREPLY_PACKAGE_REQUEST_FROM || vars.MINDREPLY_PACKAGE_REQUEST_FROM }}
MINDREPLY_PACKAGE_REQUEST_DRY_RUN: ${{ vars.MINDREPLY_PACKAGE_REQUEST_DRY_RUN || 'false' }}
RESEND_API_KEY: ${{ secrets.RESEND_API_KEY }}
MINDREPLY_SLACK_WEBHOOK_URL: ${{ secrets.MINDREPLY_SLACK_WEBHOOK_URL }}
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
NEXT_PUBLIC_SITE_URL: ${{ vars.NEXT_PUBLIC_SITE_URL || 'https://www.mind-reply.com' }}
NEXT_PUBLIC_WEBSITE_COMPLETION_PACKAGE_PAYMENT_URL: ${{ vars.NEXT_PUBLIC_WEBSITE_COMPLETION_PACKAGE_PAYMENT_URL }}
VERCEL_PROJECT_ID: ${{ vars.VERCEL_PROJECT_ID || 'prj_EuO1lFvbwoFSdDxBlezNyXG8eVV3' }}
VERCEL_TEAM_ID: ${{ vars.VERCEL_TEAM_ID || 'team_0plIJmQLgZC1wVv9zI2eVf3B' }}
VERCEL_TOKEN: ${{ secrets.VERCEL_TOKEN }}

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install dependencies
run: npm ci || npm install

- name: Check report contract
run: npm run report:check

- name: Generate launch report
run: npm run launch:report

- name: Verify revenue blueprint
run: npm run audit:blueprint

- name: Capture live production revenue surface
continue-on-error: true
env:
MINDREPLY_LIVE_VERIFY_URL: ${{ env.NEXT_PUBLIC_SITE_URL }}
MINDREPLY_REQUIRE_LIVE_SHA_MATCH: "false"
MINDREPLY_REQUIRE_LIVE_DEPLOYMENT_MATCH: "false"
run: npm run verify:live-revenue

- name: Send owner report
run: npm run report:send

- name: Upload owner report artifacts
if: always()
uses: actions/upload-artifact@v4
with:
name: mindreply-hourly-owner-report
path: |
reports/outbox/hourly-owner-report-latest.md
reports/outbox/hourly-owner-delivery-receipt-latest.json
reports/outbox/hourly-owner-report-*.md
reports/outbox/hourly-owner-delivery-receipt-*.json
mindreply-live-revenue-surface.json
if-no-files-found: warn
retention-days: 7
Loading