thumbgate 1.28.4 → 1.29.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/.claude/commands/dashboard.md +11 -1
  2. package/.claude/commands/thumbgate-dashboard.md +23 -8
  3. package/.claude-plugin/plugin.json +1 -1
  4. package/.well-known/llms.txt +18 -10
  5. package/.well-known/mcp/server-card.json +1 -1
  6. package/README.md +66 -3
  7. package/adapters/claude/.mcp.json +2 -2
  8. package/adapters/forge/forge.yaml +3 -3
  9. package/adapters/mcp/server-stdio.js +88 -2
  10. package/adapters/opencode/opencode.json +1 -1
  11. package/bin/cli.js +8 -8
  12. package/bin/postinstall.js +4 -13
  13. package/commands/dashboard.md +11 -1
  14. package/commands/thumbgate-dashboard.md +23 -8
  15. package/config/agent-outcome-monitor-thresholds.json +63 -0
  16. package/config/evals/agent-outcomes-baseline.json +17 -0
  17. package/config/evals/agent-outcomes-golden.json +412 -0
  18. package/config/evals/prompt-eval-baseline.json +23 -0
  19. package/config/github-about.json +5 -4
  20. package/config/post-deploy-marketing-pages.json +6 -6
  21. package/config/schemas/task-outcome-receipt.schema.json +296 -0
  22. package/docs/integrations/grafana/README.md +109 -0
  23. package/docs/integrations/grafana/thumbgate-revenue-evidence-dashboard.json +1930 -0
  24. package/openapi/openapi.yaml +475 -5
  25. package/package.json +75 -22
  26. package/public/agent-manager.html +10 -11
  27. package/public/agents-cost-savings.html +2 -2
  28. package/public/assets/brand/thumbgate-logo-transparent.svg +6 -11
  29. package/public/assets/brand/thumbgate-mark-inline-v3.svg +11 -10
  30. package/public/assets/brand/thumbgate-mark.svg +10 -11
  31. package/public/blog/inside-your-boundary.html +114 -0
  32. package/public/blog/process-over-outcome-gates.html +119 -0
  33. package/public/blog.html +296 -402
  34. package/public/brand/thumbgate-mark.svg +5 -9
  35. package/public/codex-enterprise.html +2 -2
  36. package/public/compare.html +12 -3
  37. package/public/diagnostic.html +79 -29
  38. package/public/guide.html +4 -4
  39. package/public/index.html +1090 -2098
  40. package/public/install.html +3 -3
  41. package/public/js/buyer-intent.js +33 -18
  42. package/public/numbers.html +2 -2
  43. package/public/pricing.html +268 -408
  44. package/public/pro.html +4 -4
  45. package/scripts/agent-outcome-eval.js +130 -0
  46. package/scripts/agent-outcome-monitor.js +261 -0
  47. package/scripts/agent-reasoning-traces.js +8 -9
  48. package/scripts/async-job-runner.js +107 -13
  49. package/scripts/billing.js +456 -126
  50. package/scripts/buyer-paths.js +102 -0
  51. package/scripts/cli-feedback.js +2 -2
  52. package/scripts/commercial-offer.js +18 -10
  53. package/scripts/durability/step.js +121 -12
  54. package/scripts/external-customer-audit.js +881 -0
  55. package/scripts/feedback-loop.js +26 -0
  56. package/scripts/gates-engine.js +554 -19
  57. package/scripts/grafana-revenue-evidence.js +856 -0
  58. package/scripts/human-escalation.js +265 -0
  59. package/scripts/hybrid-feedback-context.js +93 -50
  60. package/scripts/jsonl-window.js +89 -0
  61. package/scripts/judge-reward-function.js +30 -18
  62. package/scripts/lesson-embedding-index.js +3 -7
  63. package/scripts/meta-agent-loop.js +20 -2
  64. package/scripts/observability-env.js +139 -0
  65. package/scripts/observability-setup.js +55 -0
  66. package/scripts/plausible-domain-config.js +4 -0
  67. package/scripts/prompt-eval.js +81 -4
  68. package/scripts/provider-live-evidence.js +1290 -0
  69. package/scripts/provider-payment-reconciler.js +442 -0
  70. package/scripts/provider-revenue-evidence.js +249 -0
  71. package/scripts/rate-limiter.js +1 -5
  72. package/scripts/revenue-action-eligibility.js +414 -0
  73. package/scripts/revenue-evidence-remediation.js +694 -0
  74. package/scripts/revenue-offer-system.js +709 -0
  75. package/scripts/sales-pipeline.js +1117 -0
  76. package/scripts/schedule-manager.js +249 -0
  77. package/scripts/seo-gsd.js +8 -4
  78. package/scripts/stripe-credentials.js +37 -0
  79. package/scripts/stripe-revenue-catalog-audit.js +363 -0
  80. package/scripts/stripe-revenue-catalog.js +164 -0
  81. package/scripts/task-outcomes.js +425 -0
  82. package/scripts/telemetry-analytics.js +23 -3
  83. package/scripts/tool-contract-validator.js +287 -59
  84. package/scripts/tool-registry.js +143 -0
  85. package/scripts/vector-store.js +83 -7
  86. package/scripts/workflow-intake-queue.js +483 -0
  87. package/src/api/server.js +647 -118
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  __GOOGLE_SITE_VERIFICATION_META__
7
7
  <title>Install ThumbGate | Live agent guardrails for Claude, Cursor, Codex, and VS Code</title>
8
- <meta name="description" content="Install ThumbGate from npm, VS Code Marketplace, Open VSX, GitHub Release, or MCP Registry. See what is live now, what is pending, and when to buy the Workflow Hardening Diagnostic.">
8
+ <meta name="description" content="Install ThumbGate from npm, VS Code Marketplace, Open VSX, GitHub Release, or MCP Registry. See what is live now, what is pending, and when to buy the Managed AI Agent Workflow Gate.">
9
9
  <meta property="og:title" content="Install ThumbGate">
10
10
  <meta property="og:description" content="Proof-backed install paths for ThumbGate agent guardrails, plus the paid diagnostic path for one repeated workflow failure.">
11
11
  <meta property="og:type" content="website">
@@ -133,7 +133,7 @@ __GA_BOOTSTRAP__
133
133
  <div class="container">
134
134
  <span class="eyebrow">Install paths verified for v1.27.20</span>
135
135
  <h1>Install the agent guardrail before the next repeated mistake costs real money.</h1>
136
- <p class="lede">ThumbGate is live on the surfaces developers already use: npm, VS Code Marketplace, Open VSX, GitHub Release assets, and MCP Registry. If the risky workflow is already customer-visible, start with the Workflow Hardening Diagnostic instead of another generic install.</p>
136
+ <p class="lede">ThumbGate is live on the surfaces developers already use: npm, VS Code Marketplace, Open VSX, GitHub Release assets, and MCP Registry. If the risky workflow is already customer-visible, start with the Managed AI Agent Workflow Gate instead of another generic install.</p>
137
137
  <div class="actions">
138
138
  <a class="btn-primary" href="#install">Install now</a>
139
139
  <a class="btn-secondary" href="/diagnostic?utm_source=install_page&utm_medium=owned_page&utm_campaign=marketplace_distribution">Harden one workflow</a>
@@ -180,7 +180,7 @@ npx -y thumbgate@1.27.20 doctor --fix</code></pre></article>
180
180
  <div class="container">
181
181
  <div class="cta-band">
182
182
  <h2>When install is not enough, buy the diagnostic.</h2>
183
- <p>If one AI-agent workflow already touches customers, money, production, outbound messages, browser automation, or deploy approvals, a generic install is not enough. The Workflow Hardening Diagnostic maps the repeated failure, the block/warn/human-review split, and the proof receipt that should exist before the action runs.</p>
183
+ <p>If one AI-agent workflow already touches customers, money, production, outbound messages, browser automation, or deploy approvals, a generic install is not enough. The Managed AI Agent Workflow Gate turns the repeated failure into one configured local gate, a regression test, and rollout and rollback proof.</p>
184
184
  <div class="actions">
185
185
  <a class="btn-primary" href="/diagnostic?utm_source=install_page&utm_medium=owned_page&utm_campaign=workflow_hardening_diagnostic">Start the $499 diagnostic</a>
186
186
  <a class="btn-secondary" href="/guide">Read the setup guide</a>
@@ -1,5 +1,6 @@
1
1
  (function(global) {
2
2
  var BUYER_EMAIL_STORAGE_KEY = 'thumbgateBuyerEmail';
3
+ var REVENUE_ASSIST_CHECKOUT_KEY = 'thumbgateRevenueAssistCheckoutSeen';
3
4
  var CHECKOUT_LINK_SELECTOR = 'a[href*="/checkout/pro"], a[href*="/go/pro"]';
4
5
  var BUYER_EMAIL_SELECTOR = '[data-buyer-email]';
5
6
 
@@ -232,7 +233,6 @@
232
233
  var placement = settings.placement || normalizePlacement(pathname);
233
234
  var campaign = settings.campaign || 'high_traffic_pages';
234
235
  var proHref = appendCampaignParams(settings.proHref || '/checkout/pro', {
235
- confirm: '1',
236
236
  utm_source: 'owned_site',
237
237
  utm_medium: 'sticky_cta',
238
238
  utm_campaign: campaign,
@@ -264,9 +264,9 @@
264
264
 
265
265
  panel.querySelectorAll('[data-assist-cta]').forEach(function(link) {
266
266
  link.addEventListener('click', function() {
267
- try {
268
- global.sessionStorage.setItem('thumbgateRevenueAssistCheckoutSeen', '1');
269
- } catch (_error) {}
267
+ if (link.getAttribute('data-assist-cta') === 'assist_pro_checkout') {
268
+ markCheckoutSeen();
269
+ }
270
270
  trackEvent('assist_cta_click', {
271
271
  ctaId: link.getAttribute('data-assist-cta'),
272
272
  ctaPlacement: placement,
@@ -283,7 +283,6 @@
283
283
  page: pathname,
284
284
  });
285
285
  panel.remove();
286
- showAbandonSurvey('cta_dismiss');
287
286
  });
288
287
  }
289
288
 
@@ -309,22 +308,33 @@
309
308
 
310
309
  function checkoutWasSeen() {
311
310
  try {
312
- return global.sessionStorage.getItem('thumbgateRevenueAssistCheckoutSeen') === '1';
311
+ return global.sessionStorage.getItem(REVENUE_ASSIST_CHECKOUT_KEY) === '1';
313
312
  } catch (_error) {
314
313
  return false;
315
314
  }
316
315
  }
317
316
 
317
+ function markCheckoutSeen() {
318
+ try {
319
+ global.sessionStorage.setItem(REVENUE_ASSIST_CHECKOUT_KEY, '1');
320
+ } catch (_error) {}
321
+ }
322
+
323
+ getCheckoutLinks().forEach(function(link) {
324
+ link.addEventListener('click', markCheckoutSeen);
325
+ });
326
+
318
327
  function showAbandonSurvey(trigger) {
319
- if (wasSurveyShown() || checkoutWasSeen() || global.document.querySelector('[data-thumbgate-abandon-survey]')) {
328
+ if (wasSurveyShown() || !checkoutWasSeen() || global.document.querySelector('[data-thumbgate-abandon-survey]')) {
320
329
  return;
321
330
  }
322
331
  markSurveyShown();
332
+ panel.remove();
323
333
  var survey = global.document.createElement('aside');
324
334
  survey.setAttribute('data-thumbgate-abandon-survey', trigger || 'unknown');
325
335
  survey.setAttribute('aria-label', 'ThumbGate checkout feedback');
326
336
  survey.innerHTML = [
327
- '<strong>What stopped you from buying today?</strong>',
337
+ '<strong>What stopped you from completing checkout?</strong>',
328
338
  '<div>',
329
339
  '<button type="button" data-abandon-reason="fit_unclear">Not sure it fits my agent stack</button>',
330
340
  '<button type="button" data-abandon-reason="need_proof">Need proof before paying</button>',
@@ -351,17 +361,22 @@
351
361
  });
352
362
  }
353
363
 
354
- if (global.setTimeout) {
355
- global.setTimeout(function() {
356
- showAbandonSurvey('dwell_45s');
357
- }, settings.surveyDelayMs || 45000);
364
+ var checkoutReturnTimer = null;
365
+
366
+ function scheduleCheckoutReturnSurvey() {
367
+ if (!checkoutWasSeen() || !global.setTimeout) return;
368
+ if (checkoutReturnTimer && global.clearTimeout) {
369
+ global.clearTimeout(checkoutReturnTimer);
370
+ }
371
+ checkoutReturnTimer = global.setTimeout(function() {
372
+ checkoutReturnTimer = null;
373
+ showAbandonSurvey('checkout_return');
374
+ }, settings.checkoutReturnSurveyDelayMs || 1200);
358
375
  }
359
- if (global.document && global.document.addEventListener) {
360
- global.document.addEventListener('mouseleave', function(event) {
361
- if (event && event.clientY <= 0) {
362
- showAbandonSurvey('exit_intent');
363
- }
364
- });
376
+
377
+ scheduleCheckoutReturnSurvey();
378
+ if (global.addEventListener) {
379
+ global.addEventListener('pageshow', scheduleCheckoutReturnSurvey);
365
380
  }
366
381
 
367
382
  return {
@@ -25,7 +25,7 @@
25
25
  "alternateName": "thumbgate",
26
26
  "applicationCategory": "DeveloperApplication",
27
27
  "operatingSystem": "Cross-platform, Node.js >=18.18.0",
28
- "softwareVersion": "1.28.4",
28
+ "softwareVersion": "1.29.2",
29
29
  "url": "https://thumbgate.ai/numbers",
30
30
  "dateModified": "2026-05-07",
31
31
  "creator": {
@@ -202,7 +202,7 @@
202
202
  <main class="container">
203
203
  <h1>The Numbers</h1>
204
204
  <p class="subtitle">Generated first-party operational snapshot from the ThumbGate runtime. This is not customer traction, install volume, revenue, or proof that a configured gate has fired.</p>
205
- <div class="freshness">Updated: 2026-05-07 · Version 1.28.4</div>
205
+ <div class="freshness">Updated: 2026-05-07 · Version 1.29.2</div>
206
206
  <div class="truth-note"><strong>Read this first:</strong> configured checks are inventory. Recorded blocks and warnings are usage evidence. This snapshot currently reports 0 recorded hard-block event(s) and 0 recorded warning event(s).</div>
207
207
 
208
208
  <h2>Gate enforcement</h2>