thumbgate 1.16.20 → 1.16.21
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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +3 -2
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/mcp/server-stdio.js +1 -1
- package/adapters/opencode/opencode.json +1 -1
- package/bench/programbench-smoke.json +71 -0
- package/bench/thumbgate-bench.json +131 -0
- package/bin/cli.js +64 -1
- package/package.json +16 -8
- package/public/dashboard.html +1 -1
- package/public/guide.html +5 -3
- package/public/index.html +43 -31
- package/public/lessons.html +1 -1
- package/public/numbers.html +11 -11
- package/public/pro.html +31 -88
- package/scripts/billing.js +3 -3
- package/scripts/harness-selector.js +188 -0
- package/scripts/rag-precision-guardrails.js +63 -1
- package/scripts/rate-limiter.js +1 -1
- package/scripts/reasoning-efficiency-guardrails.js +73 -1
- package/scripts/thumbgate-bench.js +707 -0
- package/src/api/server.js +66 -13
package/public/index.html
CHANGED
|
@@ -1,20 +1,8 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
3
|
<head>
|
|
4
|
-
<!--
|
|
5
|
-
______ __
|
|
6
|
-
/ ____/___ ____ ___ ____ __ __/ /____ _____
|
|
7
|
-
/ / / __ \/ __ `__ \/ __ \/ / / / __/ _ \/ ___/
|
|
8
|
-
/ /___/ /_/ / / / / / / /_/ / /_/ / /_/ __/ /
|
|
9
|
-
\____/\____/_/ /_/ /_/ .___/\__,_/\__/\___/_/
|
|
10
|
-
/_/
|
|
11
|
-
Created with Perplexity Computer
|
|
12
|
-
https://www.perplexity.ai/computer
|
|
13
|
-
-->
|
|
14
4
|
<meta name="generator" content="ThumbGate">
|
|
15
5
|
<meta name="author" content="Igor Ganapolsky">
|
|
16
|
-
<meta property="og:see_also" content="https://www.perplexity.ai/computer">
|
|
17
|
-
<link rel="author" href="https://www.perplexity.ai/computer">
|
|
18
6
|
|
|
19
7
|
<meta charset="UTF-8">
|
|
20
8
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
@@ -32,7 +20,6 @@ __GOOGLE_SITE_VERIFICATION_META__
|
|
|
32
20
|
<meta name="twitter:card" content="summary_large_image">
|
|
33
21
|
<meta name="twitter:image" content="https://thumbgate-production.up.railway.app/og.png">
|
|
34
22
|
<meta name="keywords" content="ThumbGate, thumbgate, AI agent orchestration, AI experience orchestration, agent enforcement layer, save LLM tokens, reduce Claude API cost, reduce OpenAI cost, AI agent token savings, prevent LLM retries, prevent hallucination retries, stop AI token waste, pre-action checks, agent governance, Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode, workflow hardening, context engineering, AI authenticity, brand authenticity AI">
|
|
35
|
-
<link rel="icon" type="image/png" href="/thumbgate-icon.png">
|
|
36
23
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
|
37
24
|
|
|
38
25
|
<!-- Privacy-friendly analytics by Plausible -->
|
|
@@ -692,7 +679,23 @@ __GA_BOOTSTRAP__
|
|
|
692
679
|
<p style="font-size:18px;color:var(--text-muted);max-width:720px;margin:0 auto 20px;line-height:1.6;">Every retry loop, every hallucinated import, every "let me try a different approach" — those are billable tokens on every LLM vendor's bill. ThumbGate is machine-speed pre-action defense: thumbs-down once, block that exact mistake on every future call, surface the next highest-ROI remediation, and show which agent surfaces are actually active before rollout. Across Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode — any MCP-compatible agent, forever, including fast-moving vibe coding workflows.</p>
|
|
693
680
|
<p style="font-size:15px;color:var(--text-dim);max-width:760px;margin:0 auto 24px;line-height:1.6;">As desktop agents move into parallel sessions, terminals, and production workflows, ThumbGate checks the thing benchmarks miss: is this next action a known workflow, an open-ended agent, a costly fan-out, or a blind tool call with no way to verify it worked?</p>
|
|
694
681
|
|
|
695
|
-
|
|
682
|
+
<div class="hero-paid-path" aria-label="Paid AI agent governance sprint checkout options">
|
|
683
|
+
<div>
|
|
684
|
+
<strong>Need buyer-ready proof today?</strong>
|
|
685
|
+
<span>For one repeated workflow failure, book the $499 diagnostic or $1500 sprint first. Same-day Workflow Teardown and smaller paid reads remain available when you need clear rules, examples, and pre-action checks before a larger scope.</span>
|
|
686
|
+
</div>
|
|
687
|
+
<div class="hero-paid-actions">
|
|
688
|
+
<a class="diagnostic" href="__SPRINT_DIAGNOSTIC_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_diagnostic_checkout_started',{ctaId:'hero_workflow_sprint_diagnostic_checkout',price:sprintDiagnosticPriceDollars});sendGa4Event('begin_checkout',{currency:'USD',value:sprintDiagnosticPriceDollars});">Pay $499 diagnostic →</a>
|
|
689
|
+
<a class="sprint" href="__WORKFLOW_SPRINT_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_checkout_started',{ctaId:'hero_workflow_sprint_checkout',price:workflowSprintPriceDollars});sendGa4Event('begin_checkout',{currency:'USD',value:workflowSprintPriceDollars});">Pay $1500 sprint →</a>
|
|
690
|
+
<a class="starter" title="First AI Agent Failure Rule" href="https://buy.stripe.com/4gM6oHgH2bTw4lH6i73sI0z" onclick="sendFirstPartyTelemetry('first_failure_rule_checkout_started',{ctaId:'hero_first_failure_rule_checkout',price:1});sendGa4Event('begin_checkout',{currency:'USD',value:1,items:[{item_id:'first_failure_rule',item_name:'First AI Agent Failure Rule'}]});">Pay $1 first rule →</a>
|
|
691
|
+
<a class="starter" title="AI Agent Failure Quick Read" href="https://buy.stripe.com/aFa8wPgH29Lo4lH35V3sI0w" onclick="sendFirstPartyTelemetry('quick_read_checkout_started',{ctaId:'hero_quick_read_checkout',price:19});">Pay $19 quick read →</a>
|
|
692
|
+
<a class="starter" href="https://buy.stripe.com/7sYfZhgH29LodWhdKz3sI0v" onclick="sendFirstPartyTelemetry('workflow_teardown_checkout_started',{ctaId:'hero_workflow_teardown_checkout'})">Pay $99 teardown</a>
|
|
693
|
+
<a class="intake" href="#workflow-sprint-intake" onclick="sendFirstPartyTelemetry('workflow_sprint_recovery_intake_clicked',{ctaId:'hero_workflow_sprint_recovery_intake'});sendGa4Event('generate_lead',{method:'workflow_sprint_recovery_intake'});">Send workflow first →</a>
|
|
694
|
+
<a class="starter" href="/guides/ai-agent-governance-sprint">See sprint scope →</a>
|
|
695
|
+
</div>
|
|
696
|
+
</div>
|
|
697
|
+
|
|
698
|
+
<!-- HERO PRICING CARD — secondary path after the proof-led paid offers -->
|
|
696
699
|
<div id="pro-pitch" style="max-width:820px;margin:0 auto 32px;padding:24px 28px;background:linear-gradient(180deg,rgba(17,17,19,0.94) 0%,rgba(22,22,24,0.94) 100%);border:1px solid rgba(34,211,238,0.32);border-radius:20px;box-shadow:0 0 0 1px rgba(34,211,238,0.18),0 24px 64px rgba(0,0,0,0.35);text-align:left;">
|
|
697
700
|
<div style="display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px;">
|
|
698
701
|
<div>
|
|
@@ -720,20 +723,6 @@ __GA_BOOTSTRAP__
|
|
|
720
723
|
<p style="margin:14px 0 0;font-size:11px;color:var(--text-muted);text-align:center;">Card required · billed today · cancel anytime · your rules and captures stay local. <a href="/go/install" style="color:var(--cyan);text-decoration:none;">Prefer free? Install CLI →</a></p>
|
|
721
724
|
</div>
|
|
722
725
|
|
|
723
|
-
<div class="hero-paid-path" aria-label="Paid AI agent governance sprint checkout options">
|
|
724
|
-
<div>
|
|
725
|
-
<strong>Need buyer-ready proof today?</strong>
|
|
726
|
-
<span>Send one messy AI-agent workflow. We turn it into clear rules, examples, and pre-action checks, plus AI Agent Governance Sprint approval boundaries and rollback safety before it touches developer-machine risk surfaces.</span>
|
|
727
|
-
</div>
|
|
728
|
-
<div class="hero-paid-actions">
|
|
729
|
-
<a class="starter" href="https://buy.stripe.com/7sY4gzgH24r49G17mb3sI0g" onclick="sendFirstPartyTelemetry('founder_workflow_diagnostic_checkout_started',{ctaId:'hero_founder_workflow_diagnostic_checkout',ctaPlacement:'hero_paid_path',planId:'team',offer:'founder_workflow_diagnostic',price:99});sendGa4Event('begin_checkout',{currency:'USD',value:99,items:[{item_id:'founder_workflow_diagnostic',item_name:'Founder Workflow Diagnostic'}]});">Pay $99 diagnostic →</a>
|
|
730
|
-
<a class="diagnostic" href="__SPRINT_DIAGNOSTIC_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_diagnostic_checkout_started',{ctaId:'hero_workflow_sprint_diagnostic_checkout',ctaPlacement:'hero_paid_path',planId:'team',offer:'workflow_hardening_diagnostic',price:sprintDiagnosticPriceDollars});sendGa4Event('begin_checkout',{currency:'USD',value:sprintDiagnosticPriceDollars,items:[{item_id:'workflow_hardening_diagnostic',item_name:'Workflow Hardening Diagnostic'}]});">Pay $499 diagnostic →</a>
|
|
731
|
-
<a class="sprint" href="__WORKFLOW_SPRINT_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_checkout_started',{ctaId:'hero_workflow_sprint_checkout',ctaPlacement:'hero_paid_path',planId:'team',offer:'workflow_hardening_sprint',price:workflowSprintPriceDollars});sendGa4Event('begin_checkout',{currency:'USD',value:workflowSprintPriceDollars,items:[{item_id:'workflow_hardening_sprint',item_name:'Workflow Hardening Sprint'}]});">Pay $1500 sprint →</a>
|
|
732
|
-
<a class="intake" href="#workflow-sprint-intake" onclick="sendFirstPartyTelemetry('workflow_sprint_recovery_intake_clicked',{ctaId:'hero_workflow_sprint_recovery_intake',ctaPlacement:'hero_paid_path',planId:'team',offer:'workflow_hardening_sprint',reason:'not_ready_to_pay'});sendGa4Event('generate_lead',{currency:'USD',value:0,method:'workflow_sprint_recovery_intake'});">Send workflow first →</a>
|
|
733
|
-
<a class="starter" href="/guides/ai-agent-governance-sprint">See sprint scope →</a>
|
|
734
|
-
</div>
|
|
735
|
-
</div>
|
|
736
|
-
|
|
737
726
|
<a href="/dashboard" class="hero-dashboard-preview" style="display:block;max-width:620px;margin:0 auto 28px;background:linear-gradient(135deg,#0d1220 0%,#121a2e 100%);border:1px solid rgba(34,211,238,0.35);border-radius:12px;padding:20px 24px;box-shadow:0 0 48px rgba(34,211,238,0.15);font-family:var(--mono);text-align:left;text-decoration:none;color:inherit;" title="Open your live dashboard">
|
|
738
727
|
<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;font-size:11px;letter-spacing:0.08em;text-transform:uppercase;color:var(--text-muted);">
|
|
739
728
|
<span>Your dashboard · <span style="color:#eab308;background:rgba(234,179,8,0.1);padding:2px 6px;border-radius:3px;letter-spacing:0.04em;">Sample</span></span>
|
|
@@ -1309,7 +1298,7 @@ __GA_BOOTSTRAP__
|
|
|
1309
1298
|
<!-- HOW IT WORKS -->
|
|
1310
1299
|
<section class="how-it-works" id="how-it-works">
|
|
1311
1300
|
<div class="container">
|
|
1312
|
-
<div class="section-label">New in v1.16.
|
|
1301
|
+
<div class="section-label">New in v1.16.21</div>
|
|
1313
1302
|
<h2 class="section-title">Three steps to stop repeated AI failures</h2>
|
|
1314
1303
|
<div class="steps">
|
|
1315
1304
|
<div class="step">
|
|
@@ -1573,11 +1562,31 @@ __GA_BOOTSTRAP__
|
|
|
1573
1562
|
<a class="team-paid-link" data-workflow-sprint-link href="__WORKFLOW_SPRINT_CHECKOUT_URL__">Pay for sprint</a>
|
|
1574
1563
|
</div>
|
|
1575
1564
|
</div>
|
|
1565
|
+
<div class="team-paid-card">
|
|
1566
|
+
<div>
|
|
1567
|
+
<h4>Reliable AI Agent Governance Setup</h4>
|
|
1568
|
+
<p>Full ThumbGate-powered setup for Claude Code, Cursor, or Codex teams: npx install, custom prevention rules, audit trail, training, and proof reports. Optional ongoing rule management is $297/mo.</p>
|
|
1569
|
+
</div>
|
|
1570
|
+
<div>
|
|
1571
|
+
<div class="team-paid-price">$3,997</div>
|
|
1572
|
+
<a class="team-paid-link" href="#team-pilot-intake-form" onclick="sendFirstPartyTelemetry('governance_setup_intake_clicked',{ctaId:'team_governance_setup_intake',ctaPlacement:'team_paid_path',planId:'team',offer:'reliable_ai_agent_governance_setup',price:3997});sendGa4Event('generate_lead',{currency:'USD',value:3997,method:'governance_setup_intake'});">Request setup</a>
|
|
1573
|
+
</div>
|
|
1574
|
+
</div>
|
|
1575
|
+
<div class="team-paid-card">
|
|
1576
|
+
<div>
|
|
1577
|
+
<h4>OpenClaw Agent Governance Kit</h4>
|
|
1578
|
+
<p>Self-serve digital kit with ThumbGate prevention rules, OpenClaw-compatible workflow prompts, agent registry checklist, proof report template, and Zernio launch copy.</p>
|
|
1579
|
+
</div>
|
|
1580
|
+
<div>
|
|
1581
|
+
<div class="team-paid-price">$97</div>
|
|
1582
|
+
<a class="team-paid-link" href="https://buy.stripe.com/bJe14naiE9Lo7xT49Z3sI12" onclick="sendFirstPartyTelemetry('openclaw_governance_kit_checkout_started',{ctaId:'team_openclaw_governance_kit_checkout',ctaPlacement:'team_paid_path',planId:'digital_kit',offer:'openclaw_agent_governance_kit',price:97});sendGa4Event('begin_checkout',{currency:'USD',value:97,items:[{item_id:'openclaw_agent_governance_kit',item_name:'OpenClaw Agent Governance Kit'}]});">Buy kit</a>
|
|
1583
|
+
</div>
|
|
1584
|
+
</div>
|
|
1576
1585
|
</div>
|
|
1577
1586
|
<div class="team-intake-recovery" aria-label="Checkout recovery path for workflow sprint buyers">
|
|
1578
1587
|
<div>
|
|
1579
1588
|
<strong>Not ready to pay from a checkout page?</strong>
|
|
1580
|
-
<span>Send the workflow first. We can qualify the blocker, confirm the proof plan, and route you to the $499 diagnostic
|
|
1589
|
+
<span>Send the workflow first. We can qualify the blocker, confirm the proof plan, and route you to the $499 diagnostic, $1500 sprint, or $3,997 governance setup only when the scope is real.</span>
|
|
1581
1590
|
</div>
|
|
1582
1591
|
<a href="#team-pilot-intake-form" onclick="sendFirstPartyTelemetry('workflow_sprint_recovery_intake_clicked',{ctaId:'team_workflow_sprint_recovery_intake',ctaPlacement:'team_paid_path_recovery',planId:'team',offer:'workflow_hardening_sprint',reason:'checkout_abandon'});sendGa4Event('generate_lead',{currency:'USD',value:0,method:'workflow_sprint_recovery_intake'});">Send workflow first</a>
|
|
1583
1592
|
</div>
|
|
@@ -1708,7 +1717,7 @@ __GA_BOOTSTRAP__
|
|
|
1708
1717
|
<a href="https://www.linkedin.com/in/igorganapolsky" target="_blank" rel="noopener">LinkedIn</a>
|
|
1709
1718
|
<a href="/blog">Blog</a>
|
|
1710
1719
|
</div>
|
|
1711
|
-
<span class="footer-copy">© 2026 Max Smith KDP LLC · MIT License · v1.16.
|
|
1720
|
+
<span class="footer-copy">© 2026 Max Smith KDP LLC · MIT License · v1.16.21</span>
|
|
1712
1721
|
</div>
|
|
1713
1722
|
</footer>
|
|
1714
1723
|
|
|
@@ -2011,6 +2020,9 @@ function copyInstall(el) {
|
|
|
2011
2020
|
{ selector: '#pro-checkout-link', ctaId: 'pricing_pro_trial', ctaPlacement: 'pricing', planId: 'pro' },
|
|
2012
2021
|
{ selector: '.price-card.pro .btn-pro', ctaId: 'pricing_pro_monthly', ctaPlacement: 'pricing', planId: 'pro' },
|
|
2013
2022
|
{ selector: '.hero-actions .btn-pro-page', ctaId: 'hero_go_pro', ctaPlacement: 'hero', planId: 'pro' },
|
|
2023
|
+
{ selector: '.hero-paid-actions .diagnostic', ctaId: 'hero_workflow_sprint_diagnostic_checkout', ctaPlacement: 'hero_paid_path', planId: 'team' },
|
|
2024
|
+
{ selector: '.hero-paid-actions .sprint', ctaId: 'hero_workflow_sprint_checkout', ctaPlacement: 'hero_paid_path', planId: 'team' },
|
|
2025
|
+
{ selector: '.hero-paid-actions .intake', ctaId: 'hero_workflow_sprint_recovery_intake', ctaPlacement: 'hero_paid_path', planId: 'team' },
|
|
2014
2026
|
{ selector: '.sticky-cta .btn-pro', ctaId: 'sticky_go_pro', ctaPlacement: 'sticky_cta', planId: 'pro' },
|
|
2015
2027
|
{ selector: '.price-card.team .btn-team', ctaId: 'team_workflow_sprint', ctaPlacement: 'pricing', planId: 'team' },
|
|
2016
2028
|
{ selector: '#team-pilot-intake-form', ctaId: 'workflow_sprint_intake', ctaPlacement: 'team_visible_intake', planId: 'team' }
|
package/public/lessons.html
CHANGED
|
@@ -845,7 +845,7 @@ function renderUpgradeWall(containerId) {
|
|
|
845
845
|
'<div style="font-size:20px;font-weight:700;color:#fff;margin-bottom:8px;">Unlock your full lessons</div>' +
|
|
846
846
|
'<div style="color:#aaa;margin-bottom:16px;">Pro shows your real prevention rules, timeline, and insights.</div>' +
|
|
847
847
|
'<a href="/go/pro?utm_source=lessons" rel="noopener" ' +
|
|
848
|
-
'style="display:inline-block;background:#b85c2d;color:#fff;padding:10px 24px;border-radius:8px;text-decoration:none;font-weight:700;">Start
|
|
848
|
+
'style="display:inline-block;background:#b85c2d;color:#fff;padding:10px 24px;border-radius:8px;text-decoration:none;font-weight:700;">Start Pro now</a>' +
|
|
849
849
|
'<div style="color:#666;font-size:12px;margin-top:10px;">npx thumbgate pro --activate --key=YOUR_KEY</div>' +
|
|
850
850
|
'</div></div>';
|
|
851
851
|
el.appendChild(wall);
|
package/public/numbers.html
CHANGED
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
"alternateName": "thumbgate",
|
|
26
26
|
"applicationCategory": "DeveloperApplication",
|
|
27
27
|
"operatingSystem": "Cross-platform, Node.js >=18.18.0",
|
|
28
|
-
"softwareVersion": "1.16.
|
|
28
|
+
"softwareVersion": "1.16.21",
|
|
29
29
|
"url": "https://thumbgate-production.up.railway.app/numbers",
|
|
30
|
-
"dateModified": "2026-05-
|
|
30
|
+
"dateModified": "2026-05-06",
|
|
31
31
|
"creator": {
|
|
32
32
|
"@type": "Person",
|
|
33
33
|
"name": "Igor Ganapolsky",
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
"https://www.linkedin.com/in/igorganapolsky"
|
|
58
58
|
]
|
|
59
59
|
},
|
|
60
|
-
"dateModified": "2026-05-
|
|
61
|
-
"datePublished": "2026-05-
|
|
60
|
+
"dateModified": "2026-05-06",
|
|
61
|
+
"datePublished": "2026-05-06",
|
|
62
62
|
"keywords": [
|
|
63
63
|
"AI agent gates",
|
|
64
64
|
"LLM token savings",
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
{
|
|
71
71
|
"@type": "PropertyValue",
|
|
72
72
|
"name": "active_gates",
|
|
73
|
-
"value":
|
|
73
|
+
"value": 36
|
|
74
74
|
},
|
|
75
75
|
{
|
|
76
76
|
"@type": "PropertyValue",
|
|
@@ -101,7 +101,7 @@
|
|
|
101
101
|
{
|
|
102
102
|
"@type": "PropertyValue",
|
|
103
103
|
"name": "bayes_error_rate",
|
|
104
|
-
"value":
|
|
104
|
+
"value": null
|
|
105
105
|
}
|
|
106
106
|
]
|
|
107
107
|
}
|
|
@@ -190,14 +190,14 @@
|
|
|
190
190
|
<main class="container">
|
|
191
191
|
<h1>The Numbers</h1>
|
|
192
192
|
<p class="subtitle">Generated first-party operational data from the ThumbGate runtime. No surveys or projections — this page is a release-time snapshot produced by the same local scripts that power the CLI and dashboard.</p>
|
|
193
|
-
<div class="freshness">Updated: 2026-05-
|
|
193
|
+
<div class="freshness">Updated: 2026-05-06 · Version 1.16.21</div>
|
|
194
194
|
|
|
195
195
|
<h2>Gate enforcement</h2>
|
|
196
196
|
<div class="stats-grid">
|
|
197
197
|
<div class="stat-card">
|
|
198
198
|
<div class="stat-label">Active gates</div>
|
|
199
|
-
<div class="stat-value">
|
|
200
|
-
<div class="stat-sub">36 manual ·
|
|
199
|
+
<div class="stat-value">36</div>
|
|
200
|
+
<div class="stat-sub">36 manual · 0 auto-promoted</div>
|
|
201
201
|
<a class="stat-source" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/scripts/gate-stats.js">source: gate-stats.js</a>
|
|
202
202
|
</div>
|
|
203
203
|
<div class="stat-card">
|
|
@@ -242,7 +242,7 @@
|
|
|
242
242
|
</div>
|
|
243
243
|
<div class="stat-card">
|
|
244
244
|
<div class="stat-label">Scorer Bayes error</div>
|
|
245
|
-
<div class="stat-value">
|
|
245
|
+
<div class="stat-value">n/a (no feedback sequences recorded yet)</div>
|
|
246
246
|
<div class="stat-sub">irreducible error given current feature set</div>
|
|
247
247
|
<a class="stat-source" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/scripts/bayes-optimal-gate.js">source: bayes-optimal-gate.js</a>
|
|
248
248
|
</div>
|
|
@@ -264,7 +264,7 @@
|
|
|
264
264
|
<div class="cta">
|
|
265
265
|
<a href="https://www.npmjs.com/package/thumbgate">Install ThumbGate — npx thumbgate init</a>
|
|
266
266
|
<div class="footer-note">Prefer the raw feed? See <a href="https://github.com/IgorGanapolsky/ThumbGate">GitHub</a> or run <code>npm run gate:stats</code> locally.</div>
|
|
267
|
-
<div class="footer-note">Generated at 2026-05-
|
|
267
|
+
<div class="footer-note">Generated at 2026-05-06T21:53:14.685Z UTC.</div>
|
|
268
268
|
</div>
|
|
269
269
|
</main>
|
|
270
270
|
</body>
|
package/public/pro.html
CHANGED
|
@@ -14,7 +14,6 @@ __GOOGLE_SITE_VERIFICATION_META__
|
|
|
14
14
|
<link rel="icon" type="image/png" href="/thumbgate-icon.png">
|
|
15
15
|
<link rel="apple-touch-icon" href="/assets/brand/thumbgate-mark.svg">
|
|
16
16
|
<meta property="og:image" content="/og.png">
|
|
17
|
-
<meta name="keywords" content="ThumbGate Pro, AI agent reliability, pre-action checks, DPO export, local dashboard, review-ready evidence, Claude Code reliability, Codex reliability, Cursor reliability">
|
|
18
17
|
|
|
19
18
|
<script defer data-domain="thumbgate-production.up.railway.app" src="https://plausible.io/js/script.js"></script>
|
|
20
19
|
__GA_BOOTSTRAP__
|
|
@@ -30,91 +29,14 @@ __GA_BOOTSTRAP__
|
|
|
30
29
|
<script type="application/ld+json">
|
|
31
30
|
{
|
|
32
31
|
"@context": "https://schema.org",
|
|
33
|
-
"@type": "SoftwareApplication",
|
|
34
|
-
"name": "ThumbGate Pro",
|
|
35
|
-
"alternateName": "thumbgate pro",
|
|
36
|
-
"applicationCategory": "DeveloperApplication",
|
|
37
|
-
"operatingSystem": "Cross-platform, Node.js >=18.18.0",
|
|
38
|
-
"description": "Paid ThumbGate lane for individual operators who want a personal local dashboard, DPO export, review-ready evidence, and founder support for risky AI coding workflows.",
|
|
39
|
-
"url": "__APP_ORIGIN__/pro",
|
|
40
|
-
"downloadUrl": "https://www.npmjs.com/package/thumbgate",
|
|
41
|
-
"dateModified": "2026-04-20",
|
|
42
|
-
"creator": {
|
|
43
|
-
"@type": "Person",
|
|
44
|
-
"name": "Igor Ganapolsky",
|
|
45
|
-
"url": "https://github.com/IgorGanapolsky",
|
|
46
|
-
"sameAs": [
|
|
47
|
-
"https://github.com/IgorGanapolsky",
|
|
48
|
-
"https://www.linkedin.com/in/igorganapolsky"
|
|
49
|
-
]
|
|
50
|
-
},
|
|
51
|
-
"featureList": [
|
|
52
|
-
"Personal local dashboard",
|
|
53
|
-
"Visual check debugger",
|
|
54
|
-
"DPO export from real thumbs-down corrections",
|
|
55
|
-
"Auto-connect running agents after activation",
|
|
56
|
-
"Founder support on risky workflows",
|
|
57
|
-
"Model Hardening Advisor"
|
|
58
|
-
],
|
|
59
|
-
"offers": [
|
|
60
|
-
{
|
|
61
|
-
"@type": "Offer",
|
|
62
|
-
"name": "ThumbGate Pro Monthly",
|
|
63
|
-
"price": "__PRO_PRICE_DOLLARS__",
|
|
64
|
-
"priceCurrency": "USD",
|
|
65
|
-
"url": "__APP_ORIGIN__/checkout/pro?plan_id=pro&billing_cycle=monthly&landing_path=%2Fpro",
|
|
66
|
-
"description": "Monthly Pro for individual operators who want a personal local dashboard and proof-ready exports."
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
"@type": "Offer",
|
|
70
|
-
"name": "ThumbGate Pro Annual",
|
|
71
|
-
"price": "149",
|
|
72
|
-
"priceCurrency": "USD",
|
|
73
|
-
"url": "__APP_ORIGIN__/checkout/pro?plan_id=pro&billing_cycle=annual&landing_path=%2Fpro",
|
|
74
|
-
"description": "Annual Pro for operators who want the dashboard, DPO export, and founder support at a lower effective monthly price."
|
|
75
|
-
}
|
|
76
|
-
]
|
|
32
|
+
"@type": "SoftwareApplication", "name": "ThumbGate Pro", "applicationCategory": "DeveloperApplication", "operatingSystem": "Cross-platform, Node.js >=18.18.0", "description": "Paid ThumbGate lane for individual operators who want a personal local dashboard, DPO export, review-ready evidence, and founder support for risky AI coding workflows.", "url": "__APP_ORIGIN__/pro", "downloadUrl": "https://www.npmjs.com/package/thumbgate", "dateModified": "2026-04-20", "creator": { "@type": "Person", "name": "Igor Ganapolsky", "url": "https://github.com/IgorGanapolsky" }, "offers": [{ "@type": "Offer", "name": "ThumbGate Pro Monthly", "price": "__PRO_PRICE_DOLLARS__", "priceCurrency": "USD", "url": "__APP_ORIGIN__/checkout/pro?plan_id=pro&billing_cycle=monthly&landing_path=%2Fpro" }, { "@type": "Offer", "name": "ThumbGate Pro Annual", "price": "149", "priceCurrency": "USD", "url": "__APP_ORIGIN__/checkout/pro?plan_id=pro&billing_cycle=annual&landing_path=%2Fpro" }]
|
|
77
33
|
}
|
|
78
34
|
</script>
|
|
79
35
|
|
|
80
36
|
<script type="application/ld+json">
|
|
81
37
|
{
|
|
82
38
|
"@context": "https://schema.org",
|
|
83
|
-
"@type": "FAQPage",
|
|
84
|
-
"mainEntity": [
|
|
85
|
-
{
|
|
86
|
-
"@type": "Question",
|
|
87
|
-
"name": "How is Pro different from the free install?",
|
|
88
|
-
"acceptedAnswer": {
|
|
89
|
-
"@type": "Answer",
|
|
90
|
-
"text": "Free keeps the local recall, checks, and MCP workflow. Pro adds a personal local dashboard, DPO export, auto-connect for running agents, and founder support for risky workflows."
|
|
91
|
-
}
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
"@type": "Question",
|
|
95
|
-
"name": "Does Pro require a cloud account?",
|
|
96
|
-
"acceptedAnswer": {
|
|
97
|
-
"@type": "Answer",
|
|
98
|
-
"text": "No. ThumbGate Pro is still local-first for the individual operator lane. Team is the hosted rollout lane when you need shared lessons, org visibility, and rollout review views."
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
"@type": "Question",
|
|
103
|
-
"name": "What happens after checkout?",
|
|
104
|
-
"acceptedAnswer": {
|
|
105
|
-
"@type": "Answer",
|
|
106
|
-
"text": "You activate Pro, connect your personal local dashboard, and your running agents can appear automatically so you can inspect blocked actions, lessons, and exports without adding a cloud dashboard dependency."
|
|
107
|
-
}
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
"@type": "Question",
|
|
111
|
-
"name": "When should I choose Team instead of Pro?",
|
|
112
|
-
"acceptedAnswer": {
|
|
113
|
-
"@type": "Answer",
|
|
114
|
-
"text": "Choose Team when one correction needs to protect multiple developers or agents, when you need a shared hosted lesson database, org dashboard visibility, or a workflow hardening pilot across shared repositories."
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
]
|
|
39
|
+
"@type": "FAQPage", "mainEntity": [{ "@type": "Question", "name": "How is Pro different from the free install?", "acceptedAnswer": { "@type": "Answer", "text": "Free keeps local recall, checks, and MCP. Pro adds the personal dashboard, DPO export, auto-connect, and founder support." } }, { "@type": "Question", "name": "Does Pro require a cloud account?", "acceptedAnswer": { "@type": "Answer", "text": "No. Pro stays local-first; Team is the hosted rollout lane for shared lessons, org visibility, and reviews." } }, { "@type": "Question", "name": "What happens after checkout?", "acceptedAnswer": { "@type": "Answer", "text": "You activate Pro, connect the local dashboard, and inspect blocked actions, lessons, and exports." } }, { "@type": "Question", "name": "When should I choose Team instead of Pro?", "acceptedAnswer": { "@type": "Answer", "text": "Choose Team when one correction needs to protect multiple developers or agents across shared repositories." } }]
|
|
118
40
|
}
|
|
119
41
|
</script>
|
|
120
42
|
|
|
@@ -796,7 +718,7 @@ __GA_BOOTSTRAP__
|
|
|
796
718
|
<a href="#pricing">Pricing</a>
|
|
797
719
|
<a href="#faq">FAQ</a>
|
|
798
720
|
<a href="/dashboard">Demo</a>
|
|
799
|
-
<a class="nav-cta
|
|
721
|
+
<a class="nav-cta" data-quick-read-link href="https://buy.stripe.com/aFa8wPgH29Lo4lH35V3sI0w" onclick="sendFirstPartyTelemetry('quick_read_checkout_started',{ctaId:'pro_page_nav_quick_read_checkout',price:19});sendGa4Event('begin_checkout',{currency:'USD',value:19,items:[{item_id:'quick_read',item_name:'AI Agent Failure Quick Read'}]});">Pay $19 quick read</a>
|
|
800
722
|
</div>
|
|
801
723
|
</div>
|
|
802
724
|
</nav>
|
|
@@ -807,8 +729,8 @@ __GA_BOOTSTRAP__
|
|
|
807
729
|
<div class="eyebrow">Paid lane for individual operators</div>
|
|
808
730
|
<h1>Buy the operator loop that proves your AI agent stopped repeating the mistake.</h1>
|
|
809
731
|
<p style="font-size:13px;opacity:0.8;margin-bottom:0.5rem;">Updated: <time datetime="2026-04-20">2026-04-20</time> · by <a href="https://github.com/IgorGanapolsky" style="color:inherit;">Igor Ganapolsky</a></p>
|
|
810
|
-
<p>ThumbGate Pro is
|
|
811
|
-
<p>
|
|
732
|
+
<p>ThumbGate Pro is for one operator who already hit a repeated AI-agent failure and now needs proof: what was blocked, why it was blocked, and what changed before the next risky run.</p>
|
|
733
|
+
<p>If you need help today, start with the $19 quick read: send one failed tool call or workflow snippet and get the likely rule shape plus proof check. Use Pro when you want the local dashboard and DPO export.</p>
|
|
812
734
|
<div class="hero-proof">
|
|
813
735
|
<div class="proof-pill">Personal local dashboard</div>
|
|
814
736
|
<div class="proof-pill">DPO export from real corrections</div>
|
|
@@ -816,7 +738,8 @@ __GA_BOOTSTRAP__
|
|
|
816
738
|
<div class="proof-pill">Founder support on risky flows</div>
|
|
817
739
|
</div>
|
|
818
740
|
<div class="hero-actions">
|
|
819
|
-
<a class="btn-primary
|
|
741
|
+
<a class="btn-primary" data-quick-read-link href="https://buy.stripe.com/aFa8wPgH29Lo4lH35V3sI0w" onclick="sendFirstPartyTelemetry('quick_read_checkout_started',{ctaId:'pro_page_hero_quick_read_checkout',price:19});sendGa4Event('begin_checkout',{currency:'USD',value:19,items:[{item_id:'quick_read',item_name:'AI Agent Failure Quick Read'}]});">Pay $19 quick read</a>
|
|
742
|
+
<a class="btn-secondary btn-pro-checkout" href="/checkout/pro?utm_source=website&utm_medium=pro_page_hero&utm_campaign=pro_pack&cta_id=pro_page_primary&cta_placement=hero&plan_id=pro&landing_path=%2Fpro">Start Pro dashboard</a>
|
|
820
743
|
<a class="btn-secondary btn-demo" href="/dashboard?utm_source=website&utm_medium=pro_page&utm_campaign=pro_pack">Open dashboard demo</a>
|
|
821
744
|
<a class="btn-ghost btn-free-path" href="/guide?utm_source=website&utm_medium=pro_page&utm_campaign=free_install">Stay on Free and install locally</a>
|
|
822
745
|
</div>
|
|
@@ -852,6 +775,18 @@ __GA_BOOTSTRAP__
|
|
|
852
775
|
<p>Visual check debugger, DPO export, auto-connect after activation, Model Hardening Advisor, and founder support for the risky flow you need to harden first.</p>
|
|
853
776
|
</div>
|
|
854
777
|
|
|
778
|
+
<div class="aside-card" data-pro-paid-recovery>
|
|
779
|
+
<div class="aside-kicker">Team workflow blocked?</div>
|
|
780
|
+
<h3>Buy the paid diagnostic</h3>
|
|
781
|
+
<p>Skip self-serve Pro and pay for the smallest useful review now.</p>
|
|
782
|
+
<div class="price-stack">
|
|
783
|
+
<a class="btn-secondary" data-first-rule-link href="https://buy.stripe.com/4gM6oHgH2bTw4lH6i73sI0z" onclick="sendFirstPartyTelemetry('first_failure_rule_checkout_started',{ctaId:'pro_page_first_failure_rule_checkout',price:1});sendGa4Event('begin_checkout',{currency:'USD',value:1,items:[{item_id:'first_failure_rule',item_name:'First AI Agent Failure Rule'}]});">Pay $1 first rule</a>
|
|
784
|
+
<a class="btn-secondary" data-quick-read-link href="https://buy.stripe.com/aFa8wPgH29Lo4lH35V3sI0w" onclick="sendFirstPartyTelemetry('quick_read_checkout_started',{ctaId:'pro_page_quick_read_checkout',price:19});">Pay $19 quick read</a>
|
|
785
|
+
<a class="btn-primary" data-sprint-diagnostic-link href="__SPRINT_DIAGNOSTIC_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_diagnostic_checkout_started',{ctaId:'pro_page_sprint_diagnostic_checkout'});sendGa4Event('begin_checkout',{currency:'USD',value:__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__});">Pay $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__ diagnostic</a>
|
|
786
|
+
<a class="btn-secondary" data-workflow-sprint-link href="__WORKFLOW_SPRINT_CHECKOUT_URL__" onclick="sendFirstPartyTelemetry('workflow_sprint_checkout_started',{ctaId:'pro_page_workflow_sprint_checkout'});sendGa4Event('begin_checkout',{currency:'USD',value:__WORKFLOW_SPRINT_PRICE_DOLLARS__});">Pay $__WORKFLOW_SPRINT_PRICE_DOLLARS__ sprint</a>
|
|
787
|
+
</div>
|
|
788
|
+
</div>
|
|
789
|
+
|
|
855
790
|
<div class="aside-card">
|
|
856
791
|
<div class="aside-kicker">Keep the buyer path warm</div>
|
|
857
792
|
<h3>Save your work email before you decide</h3>
|
|
@@ -901,7 +836,7 @@ __GA_BOOTSTRAP__
|
|
|
901
836
|
<div class="grid-3">
|
|
902
837
|
<div class="feature-card">
|
|
903
838
|
<h3>Debug the exact block in minutes</h3>
|
|
904
|
-
<p>The visual
|
|
839
|
+
<p>The visual debugger shows each blocked action and check, so you stop guessing whether the Reliability Gateway is working.</p>
|
|
905
840
|
<ul>
|
|
906
841
|
<li>See the check, evidence, and lesson behind each deny.</li>
|
|
907
842
|
<li>Trust the system faster on deploys, migrations, and CI.</li>
|
|
@@ -909,7 +844,7 @@ __GA_BOOTSTRAP__
|
|
|
909
844
|
</div>
|
|
910
845
|
<div class="feature-card">
|
|
911
846
|
<h3>Turn corrections into DPO export</h3>
|
|
912
|
-
<p>Pro turns real thumbs-down corrections into
|
|
847
|
+
<p>Pro turns real thumbs-down corrections into preference pairs for model hardening, instead of leaving learning trapped in one operator's head.</p>
|
|
913
848
|
<ul>
|
|
914
849
|
<li>DPO export built from actual accepted vs rejected behavior.</li>
|
|
915
850
|
<li>Model Hardening Advisor helps decide when fine-tuning is worth it.</li>
|
|
@@ -917,7 +852,7 @@ __GA_BOOTSTRAP__
|
|
|
917
852
|
</div>
|
|
918
853
|
<div class="feature-card">
|
|
919
854
|
<h3>Ship proof, not just confidence</h3>
|
|
920
|
-
<p>When the next risky
|
|
855
|
+
<p>When the next risky review happens, you have evidence links, reports, and a founder-supported path to harden the failure that keeps returning.</p>
|
|
921
856
|
<ul>
|
|
922
857
|
<li>Review-ready evidence for one operator's high-risk workflows.</li>
|
|
923
858
|
<li>Founder support on force-pushes, deploys, migrations, and CI.</li>
|
|
@@ -1026,7 +961,7 @@ __GA_BOOTSTRAP__
|
|
|
1026
961
|
<h2>Stop losing time to the same AI-agent failure.</h2>
|
|
1027
962
|
<p>Start Pro, harden one repeated mistake, and keep the proof trail: blocked action, lesson, prevention rule, and export path.</p>
|
|
1028
963
|
<div class="hero-actions" style="justify-content:center;">
|
|
1029
|
-
<a class="btn-primary btn-pro-checkout" href="/checkout/pro?utm_source=website&utm_medium=pro_page_final&utm_campaign=pro_pack&cta_id=final_go_pro&cta_placement=final&plan_id=pro&landing_path=%2Fpro">Start
|
|
964
|
+
<a class="btn-primary btn-pro-checkout" href="/checkout/pro?utm_source=website&utm_medium=pro_page_final&utm_campaign=pro_pack&cta_id=final_go_pro&cta_placement=final&plan_id=pro&landing_path=%2Fpro">Start Pro Now</a>
|
|
1030
965
|
<a class="btn-secondary btn-demo" href="/dashboard?utm_source=website&utm_medium=pro_page_final&utm_campaign=pro_pack">Open dashboard demo</a>
|
|
1031
966
|
</div>
|
|
1032
967
|
</div>
|
|
@@ -1088,6 +1023,9 @@ function sendFirstPartyTelemetry(eventType, props) {
|
|
|
1088
1023
|
}).catch(function() {});
|
|
1089
1024
|
}
|
|
1090
1025
|
|
|
1026
|
+
function sendGa4Event(e,p){if(typeof gtag==='function')gtag('event',e,p||{})}
|
|
1027
|
+
function initializeProPaidRecovery(){var c=document.querySelector('[data-pro-paid-recovery]');if(!c)return;var n=0;c.querySelectorAll('a[href]').forEach(function(a){var h=a.getAttribute('href')||'';if(/^https?:\/\//.test(h))n+=1;else a.hidden=true});c.hidden=n===0}
|
|
1028
|
+
|
|
1091
1029
|
function initializeBuyerIntent() {
|
|
1092
1030
|
globalThis.ThumbGateBuyerIntent.initializeBuyerIntent({
|
|
1093
1031
|
page: 'pro',
|
|
@@ -1129,6 +1067,7 @@ trackClick('.btn-pro-checkout', 'pro_checkout_start', { tier: 'pro', page: 'pro'
|
|
|
1129
1067
|
trackClick('.btn-demo', 'pro_demo_click', { page: 'pro' });
|
|
1130
1068
|
trackClick('.btn-free-path', 'pro_free_path_click', { page: 'pro' });
|
|
1131
1069
|
trackClick('.proof-links a', 'pro_proof_click', { page: 'pro' });
|
|
1070
|
+
initializeProPaidRecovery();
|
|
1132
1071
|
initializeBuyerIntent();
|
|
1133
1072
|
globalThis.buyerJourney = globalThis.ThumbGateBuyerIntent.initializeBehaviorAnalytics({
|
|
1134
1073
|
pageType: 'marketing',
|
|
@@ -1145,6 +1084,10 @@ globalThis.buyerJourney = globalThis.ThumbGateBuyerIntent.initializeBehaviorAnal
|
|
|
1145
1084
|
],
|
|
1146
1085
|
ctaImpressions: [
|
|
1147
1086
|
{ selector: '.btn-pro-checkout', ctaId: 'pro_checkout', ctaPlacement: 'pro_page', planId: 'pro' },
|
|
1087
|
+
{ selector: '[data-first-rule-link]', ctaId: 'pro_page_first_failure_rule_checkout', ctaPlacement: 'pro_paid_recovery', planId: 'first_failure_rule' },
|
|
1088
|
+
{ selector: '[data-quick-read-link]', ctaId: 'pro_page_quick_read_checkout', ctaPlacement: 'pro_paid_recovery', planId: 'quick_read' },
|
|
1089
|
+
{ selector: '[data-sprint-diagnostic-link]', ctaId: 'pro_page_sprint_diagnostic_checkout', ctaPlacement: 'pro_paid_recovery', planId: 'sprint_diagnostic' },
|
|
1090
|
+
{ selector: '[data-workflow-sprint-link]', ctaId: 'pro_page_workflow_sprint_checkout', ctaPlacement: 'pro_paid_recovery', planId: 'workflow_sprint' },
|
|
1148
1091
|
{ selector: '.btn-demo', ctaId: 'pro_demo', ctaPlacement: 'pro_page', planId: 'proof' },
|
|
1149
1092
|
{ selector: '.btn-free-path', ctaId: 'pro_free_path', ctaPlacement: 'pro_page', planId: 'free' }
|
|
1150
1093
|
]
|
package/scripts/billing.js
CHANGED
|
@@ -412,9 +412,7 @@ function resolveCheckoutBrandUrls(appOrigin) {
|
|
|
412
412
|
};
|
|
413
413
|
}
|
|
414
414
|
|
|
415
|
-
// Resolve the per-tier product image
|
|
416
|
-
// Keeping three distinct URLs means the Stripe dashboard and checkout surface
|
|
417
|
-
// never show twins for Free/Pro/Team; see tests/billing-tier-icons.test.js.
|
|
415
|
+
// Resolve the per-tier product image used by Stripe Checkout.
|
|
418
416
|
function resolveTierIconUrl(planId, appOrigin) {
|
|
419
417
|
const brandUrls = resolveCheckoutBrandUrls(appOrigin);
|
|
420
418
|
const normalized = typeof planId === 'string' ? planId.toLowerCase() : '';
|
|
@@ -2546,6 +2544,8 @@ function buildCheckoutSessionPayload({ successUrl, cancelUrl, customerEmail, che
|
|
|
2546
2544
|
payment_method_types: ['card', 'link'],
|
|
2547
2545
|
mode: pack ? 'payment' : 'subscription',
|
|
2548
2546
|
line_items: lineItems,
|
|
2547
|
+
allow_promotion_codes: true,
|
|
2548
|
+
after_expiration: { recovery: { enabled: true, allow_promotion_codes: true } },
|
|
2549
2549
|
branding_settings: buildCheckoutBrandingSettings(appOrigin),
|
|
2550
2550
|
metadata: serializeStripeMetadata({
|
|
2551
2551
|
...checkoutMetadata,
|