thumbgate 1.26.7 → 1.27.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 (50) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.well-known/agentic-verify.txt +1 -0
  4. package/.well-known/llms.txt +2 -0
  5. package/.well-known/mcp/server-card.json +1 -1
  6. package/README.md +20 -9
  7. package/adapters/claude/.mcp.json +2 -2
  8. package/adapters/gcp/dfcx-webhook-gate.js +295 -0
  9. package/adapters/mcp/server-stdio.js +28 -1
  10. package/adapters/opencode/opencode.json +1 -1
  11. package/bench/thumbgate-bench.json +2 -2
  12. package/bin/cli.js +147 -10
  13. package/bin/dashboard-cli.js +7 -0
  14. package/config/gate-classifier-routing.json +98 -0
  15. package/config/gate-templates.json +60 -0
  16. package/config/mcp-allowlists.json +8 -7
  17. package/config/model-candidates.json +71 -6
  18. package/package.json +26 -10
  19. package/public/chatgpt-app.html +330 -0
  20. package/public/codex-plugin.html +66 -14
  21. package/public/dashboard.html +203 -17
  22. package/public/index.html +79 -4
  23. package/public/learn.html +70 -0
  24. package/public/lessons.html +129 -6
  25. package/public/numbers.html +2 -2
  26. package/public/pricing.html +20 -2
  27. package/scripts/agent-operations-planner.js +621 -0
  28. package/scripts/agent-reward-model.js +53 -1
  29. package/scripts/ai-component-inventory.js +367 -0
  30. package/scripts/classifier-routing.js +130 -0
  31. package/scripts/cli-schema.js +26 -0
  32. package/scripts/dashboard-chat.js +64 -17
  33. package/scripts/feedback-sanitizer.js +105 -0
  34. package/scripts/gates-engine.js +258 -61
  35. package/scripts/hybrid-feedback-context.js +141 -7
  36. package/scripts/memory-scope-readiness.js +159 -0
  37. package/scripts/parallel-workflow-orchestrator.js +293 -0
  38. package/scripts/plausible-domain-config.js +86 -0
  39. package/scripts/plausible-server-events.js +4 -2
  40. package/scripts/proxy-pointer-rag-guardrails.js +42 -1
  41. package/scripts/qa-scenario-planner.js +136 -0
  42. package/scripts/repeat-metric.js +28 -12
  43. package/scripts/secret-fixture-tokens.js +61 -0
  44. package/scripts/secret-scanner.js +44 -5
  45. package/scripts/security-scanner.js +80 -0
  46. package/scripts/seo-gsd.js +53 -0
  47. package/scripts/thumbgate-bench.js +16 -1
  48. package/scripts/tool-registry.js +37 -0
  49. package/scripts/workflow-sentinel.js +189 -4
  50. package/src/api/server.js +276 -10
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.26.7",
3
+ "version": "1.27.2",
4
4
  "description": "ThumbGate self-improving agent governance: thumbs-up/down turns every mistake into a prevention rule and blocks repeat patterns. 36 pre-action checks, budget enforcement, and self-protection for Claude Code, Cursor, Codex, Gemini CLI, and Amp.",
5
5
  "homepage": "https://thumbgate.ai",
6
6
  "repository": {
@@ -12,7 +12,8 @@
12
12
  },
13
13
  "main": "src/index.js",
14
14
  "bin": {
15
- "thumbgate": "bin/cli.js"
15
+ "thumbgate": "bin/cli.js",
16
+ "thumbgate-dashboard": "bin/dashboard-cli.js"
16
17
  },
17
18
  "files": [
18
19
  "scripts/access-anomaly-detector.js",
@@ -23,10 +24,12 @@
23
24
  "scripts/agent-memory-lifecycle.js",
24
25
  "scripts/agent-readiness-plan.js",
25
26
  "scripts/agent-readiness.js",
27
+ "scripts/agent-operations-planner.js",
26
28
  "scripts/agent-reasoning-traces.js",
27
29
  "scripts/agent-reward-model.js",
28
30
  "scripts/agent-stack-survival-audit.js",
29
31
  "scripts/agentic-data-pipeline.js",
32
+ "scripts/ai-component-inventory.js",
30
33
  "scripts/ai-engineering-stack-guardrails.js",
31
34
  "scripts/ai-search-distribution.js",
32
35
  "scripts/analytics-window.js",
@@ -43,6 +46,7 @@
43
46
  "scripts/bot-detection.js",
44
47
  "scripts/bot-detector.js",
45
48
  "scripts/build-metadata.js",
49
+ "scripts/classifier-routing.js",
46
50
  "scripts/chatgpt-ads-readiness-pack.js",
47
51
  "scripts/claude-feedback-sync.js",
48
52
  "scripts/cli-demo.js",
@@ -84,6 +88,7 @@
84
88
  "scripts/feedback-loop.js",
85
89
  "scripts/feedback-paths.js",
86
90
  "scripts/feedback-quality.js",
91
+ "scripts/feedback-sanitizer.js",
87
92
  "scripts/feedback-schema.js",
88
93
  "scripts/feedback-session.js",
89
94
  "scripts/feedback-to-rules.js",
@@ -139,8 +144,10 @@
139
144
  "scripts/operational-integrity.js",
140
145
  "scripts/oss-pr-opportunity-scout.js",
141
146
  "scripts/otel-declarative-config.js",
147
+ "scripts/parallel-workflow-orchestrator.js",
142
148
  "scripts/perplexity-client.js",
143
149
  "scripts/plan-gate.js",
150
+ "scripts/plausible-domain-config.js",
144
151
  "scripts/plausible-server-events.js",
145
152
  "scripts/pr-manager.js",
146
153
  "scripts/private-core-boundary.js",
@@ -155,6 +162,7 @@
155
162
  "scripts/prompting-operating-system.js",
156
163
  "scripts/provider-action-normalizer.js",
157
164
  "scripts/proxy-pointer-rag-guardrails.js",
165
+ "scripts/qa-scenario-planner.js",
158
166
  "scripts/published-cli.js",
159
167
  "scripts/rag-precision-guardrails.js",
160
168
  "scripts/rate-limiter.js",
@@ -166,6 +174,7 @@
166
174
  "scripts/rubric-engine.js",
167
175
  "scripts/rule-validator.js",
168
176
  "scripts/secret-scanner.js",
177
+ "scripts/secret-fixture-tokens.js",
169
178
  "scripts/security-scanner.js",
170
179
  "scripts/self-distill-agent.js",
171
180
  "scripts/self-heal.js",
@@ -222,12 +231,14 @@
222
231
  "adapters/codex/config.toml",
223
232
  "adapters/forge/forge.yaml",
224
233
  "adapters/gemini/function-declarations.json",
234
+ "adapters/gcp/dfcx-webhook-gate.js",
225
235
  "adapters/mcp/server-stdio.js",
226
236
  "adapters/opencode/opencode.json",
227
237
  "bench/programbench-smoke.json",
228
238
  "bench/prompt-eval-suite.json",
229
239
  "bench/thumbgate-bench.json",
230
240
  "bin/cli.js",
241
+ "bin/dashboard-cli.js",
231
242
  "bin/postinstall.js",
232
243
  "config/",
233
244
  "openapi/",
@@ -236,6 +247,7 @@
236
247
  "public/codex-enterprise.html",
237
248
  "public/agents-cost-savings.html",
238
249
  "public/ai-malpractice-prevention.html",
250
+ "public/chatgpt-app.html",
239
251
  "public/codex-plugin.html",
240
252
  "public/compare.html",
241
253
  "public/dashboard.html",
@@ -347,10 +359,10 @@
347
359
  "social:prospect:bluesky:dry": "node scripts/social-bluesky-prospecting.js --dry-run",
348
360
  "social:reply-publish:bluesky:dry": "node scripts/social-reply-monitor-bluesky.js --publish-approved --dry-run",
349
361
  "test:python": "python3 -m pytest tests/*.py",
350
- "test": "npm run test:python && npm run test:schema && npm run test:loop && npm run test:dpo && npm run test:kto && npm run test:api && npm run test:proof && npm run test:e2e && npm run test:rlaif && npm run test:attribution && npm run test:quality && npm run test:intelligence && npm run test:training-export && npm run test:deployment && npm run test:operational-integrity && npm run test:workflow && npm run test:billing && npm run test:cli && npm run test:watcher && npm run test:autoresearch && npm run test:ops && npm run test:session-analyzer && npm run test:tessl && npm run test:gates && npm run test:evoskill && npm run test:gates-hardening && npm run test:workers && npm run test:social-analytics && npm run test:memalign && npm run test:xmemory-lite && npm run test:filesystem-search && npm run test:zernio && npm run test:platform-limits && npm run test:post-video && npm run test:post-everywhere-instagram && npm run test:post-everywhere-channels && npm run test:post-everywhere-zernio-default && npm run test:zernio-canonical-pollers && npm run test:zernio-status && npm run test:obsidian-export && npm run test:lesson-db && npm run test:lesson-rotation && npm run test:memory-dedup && npm run test:feedback-quality && npm run test:sync-version && npm run test:check-congruence && npm run test:tool-registry && npm run test:repeat-metric && npm run test:noop-detect && npm run test:action-receipts && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:memory-scope-readiness && npm run test:belief-update && npm run test:hosted-config && npm run test:operational-summary && npm run test:operational-dashboard && npm run test:operator-artifacts && npm run test:operator-key-auth && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:mcp-tool-annotations && npm run test:mcp-oauth && npm run test:mcp-oauth-flow && npm run test:plan-gate && npm run test:pulse && npm run test:semantic-layer && npm run test:data-pipeline && npm run test:optimize-context && npm run test:principle-extractor && npm run test:analytics-window && npm run test:funnel-analytics && npm run test:experiment-tracker && npm run test:build-metadata && npm run test:context-engine && npm run test:hf-papers && npm run test:marketing-experiment && npm run test:seo-gsd && npm run test:verify-run && npm run test:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:bot-detector && npm run test:audit-pr-bot-contamination && npm run test:stripe-bootstrap-saas-catalog && npm run test:postinstall && npm run test:funnel-invariants && npm run test:cli-telemetry && npm run test:pro-parity && npm run test:model-tier-router && npm run test:computer-use-firewall && npm run test:skill-exporter && npm run test:statusline && npm run test:evolution && npm run test:org-dashboard && npm run test:multi-hop-recall && npm run test:synthetic-dpo && npm run test:thumbgate-skill && npm run test:learn-hub && npm run test:feedback-fallback && npm run test:metaclaw && npm run test:server-lock && npm run test:control-tower && npm run test:pii-scanner && npm run test:data-governance && npm run test:lesson-inference && npm run test:semantic-dedup && npm run test:fs-utils && npm run test:cli-schema && npm run test:explore && npm run test:lesson-reranker && npm run test:lesson-retrieval && npm run test:lesson-semantic-retrieval && npm run test:cross-encoder && npm run test:reflector-agent && npm run test:feedback-session && npm run test:feedback-history-distiller && npm run test:hallucination-detector && npm run test:history-distiller && npm run test:predictive-insights && npm run test:predictive-credible-range && npm run test:prove-predictive-insights && npm run test:statusbar-cli && npm run test:generate-instagram-card && npm run test:instagram-thumbgate-post && npm run test:publish-instagram-thumbgate && npm run test:lesson-synthesis && npm run test:lesson-canonical && npm run test:background-governance && npm run test:memory-migration && npm run test:prompt-dlp && npm run test:ephemeral-store && npm run test:agent-security && npm run test:skill-progressive && npm run test:per-step-scoring && npm run test:weekly-auto-post && npm run test:social-post-hourly && npm run test:social-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && npm run test:budget && npm run test:quick-start && npm run test:utm && npm run test:product-feedback && npm run test:feedback-root-consolidator && npm run test:engagement-audit && npm run test:install-growth-automation && npm run test:publish-thumbgate-launch && npm run test:community-course-platform-launch-kit && npm run test:reconcile-thumbgate-campaign && npm run test:reddit-publisher && npm run test:schedule-thumbgate-campaign && npm run test:social-reply-monitor && npm run test:social-dedupe-cleanup && npm run test:sync-launch-assets && npm run test:ai-search-visibility && npm run test:perplexity && npm run test:security-scanner && npm run test:llm-client && npm run test:managed-lesson-agent && npm run test:self-distill && npm run test:meta-agent && npm run test:harness-selector && npm run test:thumbgate-bench && npm run test:seo-guides && npm run test:enforcement-loop && npm run test:cli-agent-experience && npm run test:bot-detection && npm run test:checkout-archived-product-guard && npm run test:postgres-guard && npm run test:checkout-bot-guard && npm run test:checkout-pro-confirmation-gate && npm run test:session-health && npm run test:session-episodes && npm run test:spec-gate && npm run test:decision-trace && npm run test:dashboard-insights && npm run test:telemetry-tracked-link-slug && npm run test:prompt-eval && npm run test:demo-voiceover && npm run test:gate-coherence && npm run test:gate-eval && npm run test:high-roi && npm run test:public-static-assets && npm run test:token-savings && npm run test:numbers-page && npm run test:workflow-gate-checkpoint && npm run test:lesson-export-import && npm run test:landing-page-claims && npm run test:competitive-positioning-marketing && npm run test:medium-weekly && npm run test:dashboard-deeplink-e2e && npm run test:public-package-parity && npm run test:token-savings-dashboard && npm run test:cursor-wiring && npm run test:pretooluse-injection && npm run test:recent-corrective-context && npm run test:durability-step && npm run test:mailer && npm run test:brand-assets && npm run test:enforcement-teeth && npm run test:bayes-optimal-gate && npm run test:swarm-coordinator && npm run test:session-report && npm run test:agent-reasoning-traces && npm run test:judge-reward && npm run test:llm-behavior-monitor && npm run test:prompting-os && npm run test:single-use-credential-gate && npm run test:structured-prompt-driven && npm run test:require-evidence-gate && npm run test:rule-validator && npm run test:bluesky-atproto && npm run test:social-reply-monitor-bluesky && npm run test:bluesky-delete-replies && npm run test:architect-kit-memory-bridge && npm run test:sonar-review-hotspots && npm run test:actionable-remediations && npm run test:gemini-embedding-policy && npm run test:agent-design-governance && npm run test:public-core-boundary && npm run test:hook-stop-verify-deploy && npm run test:hook-stop-anti-claim && npm run test:plausible-server-events && npm run test:activation-tracker && npm run test:unified-revenue-rollup && npm run test:conversion-rate-stats && npm run test:external-customer-audit && npm run test:telemetry-export && npm run test:stripe-checkout-diagnostic && npm run test:stripe-business-identity-probe && npm run test:revenue-observability-doctor && npm run test:public-bundle-ratchet && npm run test:stripe-payment-link-update && npm run test:ci-cd-hygiene-audit && npm run test:verify-marketing-pages-deployed && npm run test:install-email-capture && npm run test:install-shim && npm run test:hook-runtime-subcommands && npm run test:implementation-notes && npm run test:daily-block-cap && npm run test:free-to-paid-conversion-units && npm run test:metrics-real-endpoint && npm run test:cli-trial-and-help && npm run test:cost-cli && npm run test:silent-failure-cluster && npm run test:proof:truth && node --test tests/adaptive-reliability.test.js && npm run test:mcp-oauth-reviewer && npm run test:dfcx-gate && npm run test:dfcx-gate-server && npm run test:vertex-scorer",
362
+ "test": "npm run test:python && npm run test:schema && npm run test:loop && npm run test:dpo && npm run test:kto && npm run test:api && npm run test:proof && npm run test:e2e && npm run test:rlaif && npm run test:attribution && npm run test:quality && npm run test:intelligence && npm run test:training-export && npm run test:deployment && npm run test:operational-integrity && npm run test:workflow && npm run test:billing && npm run test:cli && npm run test:watcher && npm run test:autoresearch && npm run test:ops && npm run test:session-analyzer && npm run test:tessl && npm run test:gates && npm run test:evoskill && npm run test:gates-hardening && npm run test:workers && npm run test:social-analytics && npm run test:memalign && npm run test:xmemory-lite && npm run test:filesystem-search && npm run test:zernio && npm run test:platform-limits && npm run test:post-video && npm run test:post-everywhere-instagram && npm run test:post-everywhere-channels && npm run test:post-everywhere-zernio-default && npm run test:zernio-canonical-pollers && npm run test:zernio-status && npm run test:obsidian-export && npm run test:lesson-db && npm run test:lesson-rotation && npm run test:memory-dedup && npm run test:feedback-quality && npm run test:sync-version && npm run test:check-congruence && npm run test:tool-registry && npm run test:repeat-metric && npm run test:noop-detect && npm run test:action-receipts && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:memory-scope-readiness && npm run test:belief-update && npm run test:hosted-config && npm run test:operational-summary && npm run test:operational-dashboard && npm run test:operator-artifacts && npm run test:operator-key-auth && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:mcp-tool-annotations && npm run test:mcp-oauth && npm run test:mcp-oauth-flow && npm run test:plan-gate && npm run test:pulse && npm run test:semantic-layer && npm run test:data-pipeline && npm run test:optimize-context && npm run test:principle-extractor && npm run test:analytics-window && npm run test:funnel-analytics && npm run test:experiment-tracker && npm run test:build-metadata && npm run test:context-engine && npm run test:hf-papers && npm run test:marketing-experiment && npm run test:seo-gsd && npm run test:verify-run && npm run test:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:bot-detector && npm run test:audit-pr-bot-contamination && npm run test:stripe-bootstrap-saas-catalog && npm run test:postinstall && npm run test:funnel-invariants && npm run test:cli-telemetry && npm run test:pro-parity && npm run test:model-tier-router && npm run test:computer-use-firewall && npm run test:skill-exporter && npm run test:statusline && npm run test:evolution && npm run test:org-dashboard && npm run test:multi-hop-recall && npm run test:synthetic-dpo && npm run test:thumbgate-skill && npm run test:learn-hub && npm run test:feedback-fallback && npm run test:metaclaw && npm run test:server-lock && npm run test:control-tower && npm run test:pii-scanner && npm run test:data-governance && npm run test:lesson-inference && npm run test:semantic-dedup && npm run test:fs-utils && npm run test:cli-schema && npm run test:explore && npm run test:lesson-reranker && npm run test:lesson-retrieval && npm run test:lesson-semantic-retrieval && npm run test:cross-encoder && npm run test:reflector-agent && npm run test:feedback-session && npm run test:feedback-history-distiller && npm run test:hallucination-detector && npm run test:history-distiller && npm run test:predictive-insights && npm run test:predictive-credible-range && npm run test:prove-predictive-insights && npm run test:statusbar-cli && npm run test:generate-instagram-card && npm run test:instagram-thumbgate-post && npm run test:publish-instagram-thumbgate && npm run test:lesson-synthesis && npm run test:lesson-canonical && npm run test:background-governance && npm run test:memory-migration && npm run test:prompt-dlp && npm run test:ephemeral-store && npm run test:agent-security && npm run test:skill-progressive && npm run test:per-step-scoring && npm run test:weekly-auto-post && npm run test:social-post-hourly && npm run test:social-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && npm run test:budget && npm run test:quick-start && npm run test:utm && npm run test:product-feedback && npm run test:feedback-root-consolidator && npm run test:engagement-audit && npm run test:install-growth-automation && npm run test:publish-thumbgate-launch && npm run test:community-course-platform-launch-kit && npm run test:reconcile-thumbgate-campaign && npm run test:reddit-publisher && npm run test:schedule-thumbgate-campaign && npm run test:social-reply-monitor && npm run test:social-dedupe-cleanup && npm run test:sync-launch-assets && npm run test:ai-search-visibility && npm run test:perplexity && npm run test:security-scanner && npm run test:llm-client && npm run test:managed-lesson-agent && npm run test:self-distill && npm run test:meta-agent && npm run test:harness-selector && npm run test:thumbgate-bench && npm run test:seo-guides && npm run test:enforcement-loop && npm run test:cli-agent-experience && npm run test:bot-detection && npm run test:checkout-archived-product-guard && npm run test:postgres-guard && npm run test:checkout-bot-guard && npm run test:checkout-pro-confirmation-gate && npm run test:session-health && npm run test:session-episodes && npm run test:spec-gate && npm run test:decision-trace && npm run test:dashboard-insights && npm run test:telemetry-tracked-link-slug && npm run test:prompt-eval && npm run test:demo-voiceover && npm run test:gate-coherence && npm run test:gate-eval && npm run test:ai-component-inventory && npm run test:high-roi && npm run test:public-static-assets && npm run test:token-savings && npm run test:numbers-page && npm run test:workflow-gate-checkpoint && npm run test:lesson-export-import && npm run test:landing-page-claims && npm run test:competitive-positioning-marketing && npm run test:medium-weekly && npm run test:dashboard-deeplink-e2e && npm run test:public-package-parity && npm run test:token-savings-dashboard && npm run test:cursor-wiring && npm run test:pretooluse-injection && npm run test:recent-corrective-context && npm run test:durability-step && npm run test:mailer && npm run test:brand-assets && npm run test:enforcement-teeth && npm run test:bayes-optimal-gate && npm run test:swarm-coordinator && npm run test:session-report && npm run test:agent-reasoning-traces && npm run test:judge-reward && npm run test:llm-behavior-monitor && npm run test:prompting-os && npm run test:single-use-credential-gate && npm run test:structured-prompt-driven && npm run test:require-evidence-gate && npm run test:rule-validator && npm run test:bluesky-atproto && npm run test:social-reply-monitor-bluesky && npm run test:bluesky-delete-replies && npm run test:architect-kit-memory-bridge && npm run test:sonar-review-hotspots && npm run test:actionable-remediations && npm run test:gemini-embedding-policy && npm run test:agent-design-governance && npm run test:public-core-boundary && npm run test:hook-stop-verify-deploy && npm run test:hook-stop-anti-claim && npm run test:plausible-server-events && npm run test:activation-tracker && npm run test:unified-revenue-rollup && npm run test:conversion-rate-stats && npm run test:external-customer-audit && npm run test:telemetry-export && npm run test:stripe-checkout-diagnostic && npm run test:stripe-business-identity-probe && npm run test:revenue-observability-doctor && npm run test:public-bundle-ratchet && npm run test:stripe-payment-link-update && npm run test:ci-cd-hygiene-audit && npm run test:verify-marketing-pages-deployed && npm run test:install-email-capture && npm run test:install-shim && npm run test:hook-runtime-subcommands && npm run test:implementation-notes && npm run test:daily-block-cap && npm run test:free-to-paid-conversion-units && npm run test:metrics-real-endpoint && npm run test:cli-trial-and-help && npm run test:cost-cli && npm run test:silent-failure-cluster && npm run test:proof:truth && node --test tests/adaptive-reliability.test.js && npm run test:mcp-oauth-reviewer && npm run test:dfcx-gate && npm run test:dfcx-gate-server && npm run test:vertex-scorer && npm run test:dashboard-chat && npm run test:gitar-integration",
351
363
  "test:hook-stop-verify-deploy": "node --test tests/hook-stop-verify-deploy.test.js",
352
364
  "test:hook-stop-anti-claim": "node --test tests/hook-stop-anti-claim.test.js",
353
- "test:plausible-server-events": "node --test tests/plausible-server-events.test.js tests/plausible-poller.test.js",
365
+ "test:plausible-server-events": "node --test tests/plausible-server-events.test.js tests/plausible-poller.test.js tests/plausible-domain-config.test.js",
354
366
  "test:activation-tracker": "node --test tests/activation-tracker.test.js",
355
367
  "test:unified-revenue-rollup": "node --test tests/unified-revenue-rollup.test.js",
356
368
  "test:conversion-rate-stats": "node --test tests/conversion-rate-stats.test.js",
@@ -449,7 +461,7 @@
449
461
  "test:loop": "node scripts/feedback-loop.js --test",
450
462
  "test:dpo": "node scripts/export-dpo-pairs.js --test",
451
463
  "test:kto": "node --test tests/export-kto.test.js",
452
- "test:api": "node --test --test-concurrency=1 tests/api-server.test.js tests/api-events-sse.test.js tests/api-auth-config.test.js tests/mcp-server.test.js tests/adapters.test.js tests/openapi-parity.test.js tests/budget-guard.test.js tests/context-manager.test.js tests/contextfs.test.js tests/job-api.test.js tests/pack-templates.test.js tests/dashboard.test.js tests/dashboard-render-spec.test.js tests/dashboard-html.test.js tests/agent-readiness.test.js tests/mcp-policy.test.js tests/subagent-profiles.test.js tests/intent-router.test.js tests/internal-agent-bootstrap.test.js tests/lesson-search.test.js tests/thumbgate-search.test.js tests/document-intake.test.js tests/rubric-engine.test.js tests/self-healing-check.test.js tests/self-heal.test.js tests/feedback-schema.test.js tests/thompson-sampling.test.js tests/feedback-sequences.test.js tests/diversity-tracking.test.js tests/vector-store.test.js tests/gemini-embedding-policy.test.js tests/feedback-attribution.test.js tests/hybrid-feedback-context.test.js tests/loop-closure.test.js tests/code-reasoning.test.js tests/feedback-loop.test.js tests/feedback-inbox-read.test.js tests/feedback-to-memory.test.js tests/test-coverage.test.js tests/version-metadata.test.js tests/claude-mcpb.test.js tests/claude-codex-bridge.test.js tests/cursor-plugin.test.js tests/codex-plugin.test.js tests/ide-marketplace-extensions.test.js tests/telemetry-analytics.test.js tests/public-landing.test.js tests/lessons-page.test.js tests/pro-landing.test.js tests/local-model-profile.test.js tests/risk-scorer.test.js tests/context-compaction.test.js tests/reminder-engine.test.js tests/post-to-x.test.js tests/verification-loop.test.js tests/async-job-runner.test.js tests/commerce-quality.test.js tests/recall-limit.test.js tests/problem-detail.test.js tests/natural-language-harness.test.js tests/settings-hierarchy.test.js",
464
+ "test:api": "node --test --test-concurrency=1 tests/api-server.test.js tests/api-events-sse.test.js tests/api-auth-config.test.js tests/mcp-server.test.js tests/adapters.test.js tests/openapi-parity.test.js tests/budget-guard.test.js tests/context-manager.test.js tests/contextfs.test.js tests/job-api.test.js tests/pack-templates.test.js tests/dashboard.test.js tests/dashboard-render-spec.test.js tests/dashboard-html.test.js tests/agent-readiness.test.js tests/mcp-policy.test.js tests/subagent-profiles.test.js tests/intent-router.test.js tests/internal-agent-bootstrap.test.js tests/lesson-search.test.js tests/thumbgate-search.test.js tests/document-intake.test.js tests/rubric-engine.test.js tests/self-healing-check.test.js tests/self-heal.test.js tests/feedback-schema.test.js tests/thompson-sampling.test.js tests/feedback-sequences.test.js tests/diversity-tracking.test.js tests/vector-store.test.js tests/gemini-embedding-policy.test.js tests/feedback-attribution.test.js tests/hybrid-feedback-context.test.js tests/loop-closure.test.js tests/code-reasoning.test.js tests/feedback-loop.test.js tests/feedback-inbox-read.test.js tests/feedback-to-memory.test.js tests/test-coverage.test.js tests/version-metadata.test.js tests/claude-mcpb.test.js tests/claude-codex-bridge.test.js tests/cursor-plugin.test.js tests/codex-plugin.test.js tests/ide-marketplace-extensions.test.js tests/telemetry-analytics.test.js tests/public-landing.test.js tests/lessons-page.test.js tests/pro-landing.test.js tests/local-model-profile.test.js tests/risk-scorer.test.js tests/context-compaction.test.js tests/reminder-engine.test.js tests/post-to-x.test.js tests/verification-loop.test.js tests/async-job-runner.test.js tests/commerce-quality.test.js tests/recall-limit.test.js tests/problem-detail.test.js tests/natural-language-harness.test.js tests/settings-hierarchy.test.js tests/classifier-routing.test.js",
453
465
  "test:proof": "node --test tests/prove-adapters.test.js tests/prove-attribution.test.js tests/prove-cloudflare-sandbox.test.js tests/prove-data-quality.test.js tests/prove-intelligence.test.js tests/prove-lancedb.test.js tests/prove-loop-closure.test.js tests/prove-training-export.test.js tests/prove-local-intelligence.test.js tests/prove-workflow-contract.test.js tests/prove-autoresearch.test.js tests/prove-claim-verification.test.js tests/prove-data-pipeline.test.js tests/prove-evolution.test.js tests/prove-harnesses.test.js tests/prove-packaged-runtime.test.js tests/prove-runtime.test.js tests/prove-seo-gsd.test.js tests/prove-settings.test.js tests/prove-xmemory.test.js && node --test tests/prove-automation.test.js",
454
466
  "test:e2e": "node --test tests/e2e-pipeline.test.js tests/e2e-product-flows.test.js tests/e2e-coverage-contract.test.js tests/interaction-model-e2e.test.js",
455
467
  "test:rlaif": "node --test tests/rlaif-self-audit.test.js tests/dpo-optimizer.test.js tests/meta-policy.test.js tests/agent-reward-model.test.js",
@@ -459,14 +471,14 @@
459
471
  "test:training-export": "node --test tests/training-export.test.js tests/databricks-export.test.js",
460
472
  "test:deployment": "node --test tests/deployment.test.js tests/deploy-policy.test.js tests/publish-decision.test.js tests/changeset-check.test.js tests/release-notes.test.js tests/sonarcloud-workflow.test.js tests/package-boundary.test.js tests/public-package-boundary.test.js tests/revenue-observability-workflow.test.js",
461
473
  "test:operational-integrity": "node --test tests/operational-integrity.test.js tests/sync-branch-protection.test.js",
462
- "test:workflow": "node --test tests/workflow-contract.test.js tests/social-marketing-assets.test.js tests/social-pipeline.test.js tests/positioning-contract.test.js tests/docs-claim-hygiene.test.js tests/thumbgate-scope.test.js tests/workflow-runs.test.js tests/workflow-sprint-intake.test.js tests/gtm-revenue-loop.test.js tests/may-2026-revenue-machine.test.js tests/customer-discovery-sprint.test.js tests/revenue-pack-utils.test.js tests/aiventyx-marketplace-plan.test.js tests/cursor-marketplace-revenue-pack.test.js tests/codex-marketplace-revenue-pack.test.js tests/codex-plugin-revenue-pack.test.js tests/gemini-cli-demand-pack.test.js tests/roo-sunset-demand-pack.test.js tests/linkedin-workflow-hardening-pack.test.js tests/chatgpt-gpt-revenue-pack.test.js tests/mcp-directory-revenue-pack.test.js tests/money-marketplace-distribution-pack.test.js tests/autonomous-sales-agent.test.js tests/reddit-dm-workflow-hardening-pack.test.js tests/sales-pipeline.test.js tests/reddit-dm-outreach.test.js tests/github-outreach.test.js tests/enterprise-story.test.js tests/ralph-loop.test.js tests/ralph-mode-ci.test.js tests/guide-conversion-path.test.js tests/roo-sunset-marketing.test.js",
474
+ "test:workflow": "node --test tests/parallel-workflow.test.js tests/workflow-contract.test.js tests/social-marketing-assets.test.js tests/social-pipeline.test.js tests/positioning-contract.test.js tests/docs-claim-hygiene.test.js tests/thumbgate-scope.test.js tests/workflow-runs.test.js tests/workflow-sprint-intake.test.js tests/gtm-revenue-loop.test.js tests/may-2026-revenue-machine.test.js tests/customer-discovery-sprint.test.js tests/revenue-pack-utils.test.js tests/aiventyx-marketplace-plan.test.js tests/cursor-marketplace-revenue-pack.test.js tests/codex-marketplace-revenue-pack.test.js tests/codex-plugin-revenue-pack.test.js tests/gemini-cli-demand-pack.test.js tests/roo-sunset-demand-pack.test.js tests/linkedin-workflow-hardening-pack.test.js tests/chatgpt-gpt-revenue-pack.test.js tests/mcp-directory-revenue-pack.test.js tests/money-marketplace-distribution-pack.test.js tests/autonomous-sales-agent.test.js tests/reddit-dm-workflow-hardening-pack.test.js tests/sales-pipeline.test.js tests/reddit-dm-outreach.test.js tests/github-outreach.test.js tests/enterprise-story.test.js tests/ralph-loop.test.js tests/ralph-mode-ci.test.js tests/guide-conversion-path.test.js tests/roo-sunset-marketing.test.js",
463
475
  "test:sales-pipeline": "node --test tests/sales-pipeline.test.js",
464
476
  "test:billing": "node --test tests/billing.test.js tests/stripe-sync-product-images.test.js",
465
477
  "test:cli": "node --test tests/analytics-report.test.js tests/agent-design-governance.test.js tests/codex-self-heal.test.js tests/creator-campaigns.test.js tests/cli.test.js tests/codex-bridge-script.test.js tests/dependabot-changeset.test.js tests/dispatch-brief.test.js tests/feedback-normalize.test.js tests/install-mcp.test.js tests/install-scope-docs.test.js tests/pr-manager.test.js tests/pro-local-dashboard.test.js tests/published-cli.test.js tests/revenue-status.test.js tests/stripe-live-status.test.js tests/creator-dev-and-prune.test.js",
466
478
  "test:evolution": "node --test tests/workspace-evolver.test.js",
467
479
  "test:watcher": "node --test tests/jsonl-watcher.test.js",
468
480
  "test:autoresearch": "node --test tests/autoresearch.test.js",
469
- "test:ops": "node --test tests/adk-consolidator.test.js tests/anthropic-partner-strategy.test.js tests/auto-promote-gates.test.js tests/auto-wire-hooks.test.js tests/claude-skill.test.js tests/codegraph-context.test.js tests/commercial-signals.test.js tests/decision-journal.test.js tests/delegation-runtime.test.js tests/disagreement-mining.test.js tests/failure-diagnostics.test.js tests/gate-stats.test.js tests/gates-engine-upgrade-cta.test.js tests/git-hook-installer.test.js tests/github-billing.test.js tests/intervention-policy.test.js tests/markdown-escape.test.js tests/mcp-tools-gates.test.js tests/native-messaging-audit.test.js tests/project-bayes-e2e.test.js tests/project-bayes.test.js tests/rate-limiter.test.js tests/schedule-manager.test.js tests/session-handoff.test.js tests/skill-generator.test.js tests/smart-learning.test.js tests/spike-and-sink.test.js tests/stripe-revenue.test.js tests/stripe-webhook-route.test.js tests/stripe-webhook-rotation.test.js tests/train-from-feedback.test.js tests/workflow-hardening-sprint.test.js tests/workflow-sentinel.test.js tests/test-suite-parity.test.js tests/a2ui-engine.test.js tests/webhook-delivery.test.js tests/auto-context-packs.test.js tests/daily-block-cap.test.js",
481
+ "test:ops": "node --test tests/qa-scenario-planner.test.js tests/adk-consolidator.test.js tests/anthropic-partner-strategy.test.js tests/auto-promote-gates.test.js tests/auto-wire-hooks.test.js tests/claude-skill.test.js tests/codegraph-context.test.js tests/commercial-signals.test.js tests/decision-journal.test.js tests/delegation-runtime.test.js tests/disagreement-mining.test.js tests/failure-diagnostics.test.js tests/gate-stats.test.js tests/gates-engine-upgrade-cta.test.js tests/git-hook-installer.test.js tests/github-billing.test.js tests/intervention-policy.test.js tests/markdown-escape.test.js tests/mcp-tools-gates.test.js tests/native-messaging-audit.test.js tests/project-bayes-e2e.test.js tests/project-bayes.test.js tests/rate-limiter.test.js tests/schedule-manager.test.js tests/session-handoff.test.js tests/skill-generator.test.js tests/smart-learning.test.js tests/spike-and-sink.test.js tests/stripe-revenue.test.js tests/stripe-webhook-route.test.js tests/stripe-webhook-rotation.test.js tests/train-from-feedback.test.js tests/workflow-hardening-sprint.test.js tests/workflow-sentinel.test.js tests/test-suite-parity.test.js tests/a2ui-engine.test.js tests/webhook-delivery.test.js tests/auto-context-packs.test.js tests/daily-block-cap.test.js",
470
482
  "test:session-analyzer": "node --test tests/session-analyzer.test.js",
471
483
  "test:tessl": "node --test tests/tessl-export.test.js",
472
484
  "test:gates": "node --test tests/gate-templates.test.js tests/gates-engine.test.js tests/claim-verification.test.js tests/secret-scanner.test.js tests/secret-fixture-safety.test.js tests/prompt-guard.test.js tests/audit-trail.test.js tests/profile-router.test.js tests/workflow-sentinel.test.js tests/docker-sandbox-planner.test.js tests/mcp-tools-suggest-fix.test.js",
@@ -654,8 +666,9 @@
654
666
  "test:gate-eval": "node --test tests/gate-eval.test.js",
655
667
  "gate-eval:ci": "node scripts/gate-eval.js run",
656
668
  "test:ai-engineering-stack-guardrails": "node --test tests/ai-engineering-stack-guardrails.test.js",
669
+ "test:ai-component-inventory": "node --test tests/ai-component-inventory.test.js",
657
670
  "test:interaction-model": "node --test tests/interaction-model.test.js tests/interaction-model-e2e.test.js",
658
- "test:high-roi": "node --test tests/high-roi.test.js tests/model-candidates.test.js tests/autonomous-workflow.test.js tests/high-roi-agent-workflows.test.js tests/interaction-model.test.js tests/interaction-model-e2e.test.js tests/code-graph-guardrails.test.js tests/proxy-pointer-rag-guardrails.test.js tests/rag-precision-guardrails.test.js tests/ai-engineering-stack-guardrails.test.js tests/long-running-agent-context-guardrails.test.js tests/reasoning-efficiency-guardrails.test.js tests/deepseek-v4-runtime-guardrails.test.js tests/upstream-contribution-engine.test.js tests/proactive-agent-eval-guardrails.test.js tests/reward-hacking-guardrails.test.js tests/chatgpt-ads-readiness-pack.test.js tests/oss-pr-opportunity-scout.test.js tests/agent-design-governance.test.js tests/gemini-embedding-policy.test.js tests/openclaw-agent-governance-kit.test.js",
671
+ "test:high-roi": "node --test tests/high-roi.test.js tests/model-candidates.test.js tests/autonomous-workflow.test.js tests/high-roi-agent-workflows.test.js tests/interaction-model.test.js tests/interaction-model-e2e.test.js tests/code-graph-guardrails.test.js tests/proxy-pointer-rag-guardrails.test.js tests/rag-precision-guardrails.test.js tests/ai-engineering-stack-guardrails.test.js tests/long-running-agent-context-guardrails.test.js tests/reasoning-efficiency-guardrails.test.js tests/deepseek-v4-runtime-guardrails.test.js tests/upstream-contribution-engine.test.js tests/proactive-agent-eval-guardrails.test.js tests/reward-hacking-guardrails.test.js tests/chatgpt-ads-readiness-pack.test.js tests/oss-pr-opportunity-scout.test.js tests/agent-design-governance.test.js tests/gemini-embedding-policy.test.js tests/openclaw-agent-governance-kit.test.js tests/agent-operations-planner.test.js",
659
672
  "test:public-static-assets": "node --test tests/public-static-assets.test.js",
660
673
  "test:token-savings": "node --test tests/token-savings.test.js",
661
674
  "test:cost-cli": "node --test tests/cost-cli.test.js tests/conversion-receipt.test.js",
@@ -705,7 +718,9 @@
705
718
  "promote:launch": "node scripts/x-autonomous-marketing.js",
706
719
  "feedback:ingest": "node scripts/ingest-manual-feedback.js",
707
720
  "verify-proof": "node scripts/require-proof.js",
708
- "test:mcp-oauth-reviewer": "node --test tests/mcp-oauth-reviewer.test.js"
721
+ "test:mcp-oauth-reviewer": "node --test tests/mcp-oauth-reviewer.test.js",
722
+ "test:dashboard-chat": "node --test tests/dashboard-chat.test.js",
723
+ "test:gitar-integration": "node --test tests/gitar-integration.test.js"
709
724
  },
710
725
  "keywords": [
711
726
  "mcp",
@@ -783,5 +798,6 @@
783
798
  "@playwright/test": "^1.60.0",
784
799
  "c8": "^11.0.0",
785
800
  "undici": "^8.2.0"
786
- }
801
+ },
802
+ "hotfix": "gate-check-bypass-2026-06-03"
787
803
  }
@@ -0,0 +1,330 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>ThumbGate for ChatGPT - GPT Action + Agent Guardrails</title>
7
+ <meta name="description" content="Open the ThumbGate GPT, import the GPT Action schema, and connect ChatGPT lessons to local Codex, Claude Code, Cursor, and MCP agent enforcement.">
8
+ <link rel="canonical" href="https://thumbgate.ai/chatgpt-app">
9
+ <link rel="alternate" type="text/markdown" title="ThumbGate LLM context" href="https://thumbgate.ai/llm-context.md">
10
+ <meta property="og:title" content="ThumbGate for ChatGPT">
11
+ <meta property="og:description" content="A first-class ChatGPT entrypoint for preflighting risky agent actions and feeding typed lessons into ThumbGate enforcement.">
12
+ <meta property="og:type" content="website">
13
+ <meta property="og:url" content="https://thumbgate.ai/chatgpt-app">
14
+ <meta property="og:image" content="https://thumbgate.ai/assets/brand/thumbgate-logo-1200x360.png">
15
+ <meta name="twitter:card" content="summary_large_image">
16
+ <script type="application/ld+json">
17
+ {
18
+ "@context": "https://schema.org",
19
+ "@type": "SoftwareApplication",
20
+ "name": "ThumbGate for ChatGPT",
21
+ "applicationCategory": "DeveloperApplication",
22
+ "operatingSystem": "Web, macOS, Linux, Windows",
23
+ "url": "https://thumbgate.ai/chatgpt-app",
24
+ "description": "ChatGPT GPT Action entrypoint for checking risky agent actions and carrying typed thumbs-up/down lessons into ThumbGate local enforcement.",
25
+ "offers": [
26
+ { "@type": "Offer", "price": "0", "priceCurrency": "USD", "name": "Free GPT entrypoint" },
27
+ { "@type": "Offer", "price": "19", "priceCurrency": "USD", "name": "ThumbGate Pro", "url": "https://thumbgate.ai/checkout/pro" }
28
+ ]
29
+ }
30
+ </script>
31
+ <style>
32
+ :root {
33
+ color-scheme: dark;
34
+ --bg: #050607;
35
+ --panel: #111418;
36
+ --panel-2: #171b20;
37
+ --line: #2a3038;
38
+ --cyan: #20d8ef;
39
+ --green: #55e38b;
40
+ --text: #f3f6f8;
41
+ --muted: #aab3bd;
42
+ --warning: #ffd166;
43
+ }
44
+ * { box-sizing: border-box; }
45
+ body {
46
+ margin: 0;
47
+ background: var(--bg);
48
+ color: var(--text);
49
+ font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
50
+ letter-spacing: 0;
51
+ }
52
+ a { color: inherit; }
53
+ .shell { max-width: 1120px; margin: 0 auto; padding: 28px 20px 72px; }
54
+ .nav { display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 6px 0 28px; }
55
+ .brand { display: inline-flex; align-items: center; gap: 12px; font-weight: 800; text-decoration: none; }
56
+ .brand img { width: 34px; height: 34px; border-radius: 8px; }
57
+ .navlinks { display: flex; gap: 18px; flex-wrap: wrap; color: var(--muted); font-size: 14px; }
58
+ .navlinks a { text-decoration: none; }
59
+ .hero {
60
+ display: grid;
61
+ grid-template-columns: minmax(0, 1.04fr) minmax(320px, 0.96fr);
62
+ gap: 28px;
63
+ align-items: stretch;
64
+ padding: 34px 0 26px;
65
+ }
66
+ .eyebrow { color: var(--cyan); font-size: 13px; font-weight: 800; text-transform: uppercase; margin-bottom: 14px; }
67
+ h1 { font-size: clamp(42px, 6vw, 72px); line-height: 0.98; margin: 0 0 18px; letter-spacing: 0; max-width: 740px; }
68
+ .lead { color: var(--muted); font-size: 19px; line-height: 1.58; max-width: 720px; margin: 0 0 24px; }
69
+ .actions { display: flex; flex-wrap: wrap; gap: 12px; margin: 24px 0; }
70
+ .btn {
71
+ display: inline-flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ min-height: 46px;
75
+ padding: 0 18px;
76
+ border-radius: 8px;
77
+ border: 1px solid var(--line);
78
+ background: var(--panel);
79
+ color: var(--text);
80
+ text-decoration: none;
81
+ font-weight: 800;
82
+ font-size: 14px;
83
+ white-space: nowrap;
84
+ }
85
+ .btn.primary { background: var(--cyan); color: #001316; border-color: var(--cyan); }
86
+ .btn.secondary { border-color: rgba(32, 216, 239, 0.55); color: var(--cyan); }
87
+ .proof {
88
+ display: flex;
89
+ flex-wrap: wrap;
90
+ gap: 10px;
91
+ margin-top: 22px;
92
+ color: var(--muted);
93
+ font-size: 13px;
94
+ }
95
+ .pill { border: 1px solid var(--line); border-radius: 999px; padding: 7px 10px; background: rgba(255,255,255,0.03); }
96
+ .panel {
97
+ border: 1px solid var(--line);
98
+ border-radius: 8px;
99
+ background: var(--panel);
100
+ overflow: hidden;
101
+ min-width: 0;
102
+ }
103
+ .panel-head {
104
+ display: flex;
105
+ justify-content: space-between;
106
+ gap: 12px;
107
+ border-bottom: 1px solid var(--line);
108
+ padding: 13px 14px;
109
+ color: var(--muted);
110
+ font-size: 13px;
111
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
112
+ }
113
+ .screen { padding: 16px; display: grid; gap: 12px; }
114
+ .message {
115
+ background: var(--panel-2);
116
+ border: 1px solid var(--line);
117
+ border-radius: 8px;
118
+ padding: 14px;
119
+ font-size: 14px;
120
+ line-height: 1.55;
121
+ }
122
+ .message strong { color: var(--green); }
123
+ .code {
124
+ display: block;
125
+ background: #07090b;
126
+ border: 1px solid #222932;
127
+ border-radius: 8px;
128
+ padding: 13px;
129
+ overflow-x: auto;
130
+ color: #d8f7ff;
131
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
132
+ font-size: 13px;
133
+ line-height: 1.55;
134
+ }
135
+ section { padding: 34px 0; }
136
+ .section-title { font-size: 28px; margin: 0 0 12px; letter-spacing: 0; }
137
+ .section-copy { margin: 0 0 20px; color: var(--muted); line-height: 1.65; max-width: 840px; }
138
+ .grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; }
139
+ .card {
140
+ border: 1px solid var(--line);
141
+ border-radius: 8px;
142
+ background: var(--panel);
143
+ padding: 18px;
144
+ min-width: 0;
145
+ }
146
+ .card h3 { margin: 0 0 10px; font-size: 18px; letter-spacing: 0; }
147
+ .card p, .card li { color: var(--muted); line-height: 1.6; font-size: 14px; }
148
+ .card ul { padding-left: 18px; margin: 0; }
149
+ .steps { counter-reset: step; display: grid; gap: 12px; }
150
+ .step {
151
+ display: grid;
152
+ grid-template-columns: 46px minmax(0, 1fr);
153
+ gap: 14px;
154
+ align-items: start;
155
+ border: 1px solid var(--line);
156
+ border-radius: 8px;
157
+ background: var(--panel);
158
+ padding: 16px;
159
+ }
160
+ .step::before {
161
+ counter-increment: step;
162
+ content: counter(step);
163
+ display: grid;
164
+ place-items: center;
165
+ width: 34px;
166
+ height: 34px;
167
+ border-radius: 8px;
168
+ background: rgba(32, 216, 239, 0.12);
169
+ color: var(--cyan);
170
+ border: 1px solid rgba(32, 216, 239, 0.4);
171
+ font-weight: 900;
172
+ }
173
+ .step h3 { margin: 2px 0 7px; font-size: 17px; }
174
+ .step p { color: var(--muted); margin: 0; line-height: 1.6; }
175
+ .notice {
176
+ border: 1px solid rgba(255, 209, 102, 0.45);
177
+ background: rgba(255, 209, 102, 0.08);
178
+ color: #fff0bf;
179
+ border-radius: 8px;
180
+ padding: 15px 16px;
181
+ line-height: 1.6;
182
+ margin-top: 18px;
183
+ }
184
+ footer { color: var(--muted); border-top: 1px solid var(--line); padding-top: 24px; margin-top: 24px; font-size: 14px; }
185
+ @media (max-width: 860px) {
186
+ .hero { grid-template-columns: 1fr; }
187
+ .grid { grid-template-columns: 1fr; }
188
+ .nav { align-items: flex-start; flex-direction: column; }
189
+ h1 { font-size: 44px; }
190
+ .btn { width: 100%; }
191
+ }
192
+ </style>
193
+ </head>
194
+ <body>
195
+ <main class="shell">
196
+ <nav class="nav" aria-label="Primary">
197
+ <a class="brand" href="/">
198
+ <img src="/assets/brand/thumbgate-icon-512.png" alt="ThumbGate logo">
199
+ <span>ThumbGate</span>
200
+ </a>
201
+ <div class="navlinks">
202
+ <a href="/codex-plugin">Codex plugin</a>
203
+ <a href="/guide">Install</a>
204
+ <a href="/pricing">Pricing</a>
205
+ <a href="https://github.com/IgorGanapolsky/ThumbGate" rel="noopener">GitHub</a>
206
+ </div>
207
+ </nav>
208
+
209
+ <section class="hero" aria-labelledby="chatgpt-title">
210
+ <div>
211
+ <div class="eyebrow">ChatGPT surface for ThumbGate</div>
212
+ <h1 id="chatgpt-title">ThumbGate for ChatGPT</h1>
213
+ <p class="lead">Use the live ThumbGate GPT to preflight risky agent actions, capture typed thumbs-up/down lessons, and route those lessons into local enforcement for Codex, Claude Code, Cursor, Gemini CLI, and MCP-compatible agents.</p>
214
+ <div class="actions">
215
+ <a class="btn primary" href="/go/gpt?utm_source=chatgpt_app&utm_medium=landing&utm_campaign=chatgpt_app_install&cta_id=chatgpt_app_open_gpt&cta_placement=hero" target="_blank" rel="noopener">Open ThumbGate GPT</a>
216
+ <a class="btn secondary" href="/openapi.yaml?utm_source=chatgpt_app&utm_medium=landing&utm_campaign=chatgpt_action_schema&cta_id=chatgpt_app_openapi&cta_placement=hero">Download GPT Action schema</a>
217
+ <a class="btn" href="/guide?utm_source=chatgpt_app&utm_medium=landing&utm_campaign=local_enforcement&cta_id=chatgpt_app_local_install&cta_placement=hero">Install local enforcement</a>
218
+ </div>
219
+ <div class="proof" aria-label="Current proof">
220
+ <span class="pill">Live GPT link: /go/gpt</span>
221
+ <span class="pill">Action schema: /openapi.yaml</span>
222
+ <span class="pill">Local gate: npx thumbgate init</span>
223
+ </div>
224
+ </div>
225
+
226
+ <div class="panel" aria-label="ThumbGate ChatGPT workflow preview">
227
+ <div class="panel-head">
228
+ <span>ChatGPT + ThumbGate</span>
229
+ <span>typed feedback -> rules</span>
230
+ </div>
231
+ <div class="screen">
232
+ <div class="message">Before I run this migration, check whether this repeats a rejected deploy pattern.</div>
233
+ <div class="message"><strong>ThumbGate:</strong> Require evidence first: test output, rollback path, and the exact affected tables. Then install the local gate so future agents are blocked before execution.</div>
234
+ <code class="code">thumbs down: agent claimed the release was published before checking npm and CI</code>
235
+ <code class="code">npx thumbgate init --agent codex</code>
236
+ </div>
237
+ </div>
238
+ </section>
239
+
240
+ <section aria-labelledby="what-ships">
241
+ <h2 class="section-title" id="what-ships">What ships today</h2>
242
+ <p class="section-copy">This is the ChatGPT-facing distribution page. It keeps the claim precise: ChatGPT is the discovery, advice, checkpointing, and typed-feedback surface. The hard block still runs in the local agent or CI lane.</p>
243
+ <div class="grid">
244
+ <article class="card">
245
+ <h3>Live GPT entrypoint</h3>
246
+ <p>The public GPT lets users paste proposed actions, risky commands, PR steps, deploys, refunds, and agent plans before running them.</p>
247
+ </article>
248
+ <article class="card">
249
+ <h3>GPT Action schema</h3>
250
+ <p>The OpenAPI schema is publicly served for GPT Actions import and kept in the package so installs do not depend on hidden docs.</p>
251
+ </article>
252
+ <article class="card">
253
+ <h3>Local enforcement path</h3>
254
+ <p>ThumbGate still blocks repeated mistakes where work happens: Codex, Claude Code, Cursor, Gemini CLI, Amp, OpenCode, MCP, and CI.</p>
255
+ </article>
256
+ </div>
257
+ </section>
258
+
259
+ <section aria-labelledby="install-flow">
260
+ <h2 class="section-title" id="install-flow">Install flow</h2>
261
+ <div class="steps">
262
+ <div class="step">
263
+ <div>
264
+ <h3>Open the ThumbGate GPT</h3>
265
+ <p>Use the GPT for setup help, action review, and typed feedback. If the direct link does not open, search Explore GPTs for ThumbGate by Igor Ganapolsky.</p>
266
+ </div>
267
+ </div>
268
+ <div class="step">
269
+ <div>
270
+ <h3>Import the GPT Action schema when configuring a custom GPT</h3>
271
+ <p>Use <code>https://thumbgate.ai/openapi.yaml</code> as the Actions schema. API key auth uses a bearer token from the ThumbGate environment.</p>
272
+ </div>
273
+ </div>
274
+ <div class="step">
275
+ <div>
276
+ <h3>Install the local gate</h3>
277
+ <p>Run <code>npx thumbgate init</code> or the agent-specific command so lessons can become pre-action checks in the coding session.</p>
278
+ </div>
279
+ </div>
280
+ </div>
281
+ <div class="notice"><strong>Honest capture note:</strong> ChatGPT's native thumbs rating buttons are not the ThumbGate memory path. Type <code>thumbs up:</code> or <code>thumbs down:</code> with one concrete sentence so ThumbGate can store a structured lesson.</div>
282
+ </section>
283
+
284
+ <section aria-labelledby="enterprise">
285
+ <h2 class="section-title" id="enterprise">Enterprise packaging</h2>
286
+ <p class="section-copy">Teams can use ChatGPT as the human-facing review surface while ThumbGate enforces policy in the local or server-side execution lane. That gives buyers a simple story: one GPT for triage, one Codex plugin for coding, one shared lesson/rule store for repeat prevention.</p>
287
+ <div class="grid">
288
+ <article class="card">
289
+ <h3>Buyer-ready links</h3>
290
+ <ul>
291
+ <li><a href="/chatgpt-app">ChatGPT app page</a></li>
292
+ <li><a href="/codex-plugin">Codex plugin page</a></li>
293
+ <li><a href="/pricing">Team pricing</a></li>
294
+ </ul>
295
+ </article>
296
+ <article class="card">
297
+ <h3>Implementation docs</h3>
298
+ <ul>
299
+ <li><a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/adapters/chatgpt/INSTALL.md" rel="noopener">ChatGPT Actions setup</a></li>
300
+ <li><a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/chatgpt-gpt-instructions.md" rel="noopener">GPT instructions</a></li>
301
+ <li><a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/plugins/codex-profile/INSTALL.md" rel="noopener">Codex plugin install</a></li>
302
+ </ul>
303
+ </article>
304
+ <article class="card">
305
+ <h3>Proof lane</h3>
306
+ <ul>
307
+ <li><a href="/dashboard">Local dashboard</a></li>
308
+ <li><a href="/llm-context.md">LLM context</a></li>
309
+ <li><a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest" rel="noopener">Latest release assets</a></li>
310
+ </ul>
311
+ </article>
312
+ </div>
313
+ </section>
314
+
315
+ <section aria-labelledby="next-step">
316
+ <h2 class="section-title" id="next-step">Use both OpenAI surfaces</h2>
317
+ <p class="section-copy">Codex gets the execution-side plugin. ChatGPT gets the review and lesson-capture entrypoint. Together they make ThumbGate visible before the mistake and enforceable when the agent reaches for tools.</p>
318
+ <div class="actions">
319
+ <a class="btn primary" href="/go/gpt?utm_source=chatgpt_app&utm_medium=landing&utm_campaign=chatgpt_app_install&cta_id=chatgpt_app_footer_gpt&cta_placement=footer" target="_blank" rel="noopener">Open ThumbGate GPT</a>
320
+ <a class="btn secondary" href="/codex-plugin?utm_source=chatgpt_app&utm_medium=landing&utm_campaign=codex_plugin_cross_sell&cta_id=chatgpt_app_footer_codex&cta_placement=footer">Install Codex plugin</a>
321
+ <a class="btn" href="/checkout/pro?utm_source=chatgpt_app&utm_medium=landing&utm_campaign=chatgpt_app_pro&cta_id=chatgpt_app_footer_checkout&cta_placement=footer">Upgrade to Pro</a>
322
+ </div>
323
+ </section>
324
+
325
+ <footer>
326
+ ThumbGate for ChatGPT is an owned ThumbGate distribution surface. It does not claim official OpenAI marketplace approval; it links the live GPT, public GPT Action schema, and local enforcement install path.
327
+ </footer>
328
+ </main>
329
+ </body>
330
+ </html>