thumbgate 1.27.19 → 1.27.20
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/commands/dashboard.md +15 -0
- package/.claude/commands/thumbgate-blocked.md +27 -0
- package/.claude/commands/thumbgate-dashboard.md +15 -0
- package/.claude/commands/thumbgate-doctor.md +30 -0
- package/.claude/commands/thumbgate-guard.md +36 -0
- package/.claude/commands/thumbgate-protect.md +30 -0
- package/.claude/commands/thumbgate-rules.md +30 -0
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +0 -3
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/gcp/dfcx-webhook-gate.js +295 -0
- package/adapters/letta/README.md +41 -0
- package/adapters/letta/thumbgate-letta-adapter.js +133 -0
- package/adapters/mcp/server-stdio.js +1 -1
- package/adapters/opencode/opencode.json +1 -1
- package/adapters/policy-engine/ethicore-guardian-client.js +68 -0
- package/adapters/policy-engine/thumbgate-policy-engine-adapter.js +260 -0
- package/bench/observability-eval-suite.json +26 -0
- package/bin/cli.js +27 -1
- package/bin/dashboard-cli.js +7 -0
- package/bin/postinstall.js +14 -23
- package/commands/dashboard.md +15 -0
- package/commands/thumbgate-dashboard.md +15 -0
- package/package.json +225 -100
- package/public/about.html +162 -0
- package/public/agent-manager.html +179 -0
- package/public/agents-cost-savings.html +153 -0
- package/public/ai-malpractice-prevention.html +818 -0
- package/public/assets/brand/github-social-preview.png +0 -0
- package/public/assets/brand/thumbgate-icon-512.png +0 -0
- package/public/assets/brand/thumbgate-icon-pro-512.png +0 -0
- package/public/assets/brand/thumbgate-icon-team-512.png +0 -0
- package/public/assets/brand/thumbgate-logo-1200x360.png +0 -0
- package/public/assets/brand/thumbgate-logo-transparent.svg +28 -0
- package/public/assets/brand/thumbgate-mark-inline-v3.svg +18 -0
- package/public/assets/brand/thumbgate-mark-pro.svg +23 -0
- package/public/assets/brand/thumbgate-mark-team.svg +26 -0
- package/public/assets/brand/thumbgate-mark.svg +21 -0
- package/public/assets/brand/thumbgate-wordmark.svg +20 -0
- package/public/assets/claude-thumbgate-statusbar.svg +8 -0
- package/public/assets/codex-thumbgate-statusbar-test.svg +9 -0
- package/public/assets/legal-intake-control-flow.svg +66 -0
- package/public/brand/thumbgate-mark.svg +19 -0
- package/public/brand/thumbgate-og.svg +16 -0
- package/public/chatgpt-app.html +330 -0
- package/public/codex-enterprise.html +123 -0
- package/public/diagnostic.html +345 -0
- package/public/index.html +2 -2
- package/public/install.html +193 -0
- package/public/js/buyer-intent.js +672 -0
- package/public/numbers.html +2 -2
- package/public/pricing.html +399 -0
- package/scripts/action-receipts.js +324 -0
- package/scripts/activation-quickstart.js +187 -0
- package/scripts/agent-operations-planner.js +621 -0
- package/scripts/ai-component-inventory.js +367 -0
- package/scripts/async-eval-observability.js +236 -0
- package/scripts/audit.js +65 -0
- package/scripts/aws-blocks-guardrails.js +272 -0
- package/scripts/classifier-routing.js +130 -0
- package/scripts/dashboard-chat.js +332 -0
- package/scripts/feedback-aggregate.js +281 -0
- package/scripts/feedback-sanitizer.js +105 -0
- package/scripts/hook-stop-anti-claim.js +301 -0
- package/scripts/install-shim.js +87 -0
- package/scripts/mcp-oauth.js +293 -0
- package/scripts/noop-detect.js +285 -0
- package/scripts/parallel-workflow-orchestrator.js +293 -0
- package/scripts/plan-gate.js +243 -0
- package/scripts/plausible-domain-config.js +99 -0
- package/scripts/qa-scenario-planner.js +136 -0
- package/scripts/repeat-metric.js +137 -0
- package/scripts/secret-fixture-tokens.js +61 -0
- package/scripts/secret-redaction.js +166 -0
- package/scripts/self-harness-optimizer.js +141 -0
- package/scripts/self-healing-check.js +193 -0
- package/scripts/self-protection.js +90 -0
- package/scripts/silent-failure-cluster.js +531 -0
- package/scripts/statusline-cache-read.js +57 -0
- package/scripts/sync-telemetry-from-prod.js +374 -0
- package/scripts/tool-contract-validator.js +76 -0
- package/scripts/trajectory-scorer.js +63 -0
- package/scripts/verify-marketing-pages-deployed.js +212 -0
- package/scripts/visitor-journey.js +172 -0
- package/.claude-plugin/marketplace.json +0 -85
- package/adapters/chatgpt/openapi.yaml +0 -1707
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 360" role="img" aria-labelledby="tg-logo-transparent-title tg-logo-transparent-desc">
|
|
2
|
+
<title id="tg-logo-transparent-title">ThumbGate</title>
|
|
3
|
+
<desc id="tg-logo-transparent-desc">Transparent ThumbGate sponsor logo with premium shield and thumbs-up mark and wordmark for dark or colored event backgrounds.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="tg-logo-transparent-frame" x1="64" y1="72" x2="288" y2="296" gradientUnits="userSpaceOnUse">
|
|
6
|
+
<stop offset="0" stop-color="#8cf5d1"/>
|
|
7
|
+
<stop offset="1" stop-color="#22d3ee"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<filter id="tg-logo-transparent-glow" x="-30%" y="-30%" width="160%" height="160%" color-interpolation-filters="sRGB">
|
|
10
|
+
<feDropShadow dx="0" dy="0" stdDeviation="8" flood-color="#22d3ee" flood-opacity="0.30"/>
|
|
11
|
+
</filter>
|
|
12
|
+
</defs>
|
|
13
|
+
<g filter="url(#tg-logo-transparent-glow)">
|
|
14
|
+
<rect x="66" y="66" width="228" height="228" rx="54" fill="#061015" fill-opacity="0.78"/>
|
|
15
|
+
<g transform="translate(66, 66) scale(3.5625)">
|
|
16
|
+
<!-- Outer Shield / Gate -->
|
|
17
|
+
<path d="M32 9 C20 13 15 20 15 33 C15 45 26 53 32 56 C38 53 49 45 49 33 C49 20 44 13 32 9 Z"
|
|
18
|
+
fill="#0b1820" stroke="url(#tg-logo-transparent-frame)" stroke-width="3.5" stroke-linejoin="round"/>
|
|
19
|
+
|
|
20
|
+
<!-- Proportional Thumbs Up -->
|
|
21
|
+
<g transform="translate(19, 17) scale(1.1)" stroke="#8cf5d1" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none">
|
|
22
|
+
<path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"/>
|
|
23
|
+
</g>
|
|
24
|
+
</g>
|
|
25
|
+
</g>
|
|
26
|
+
<text x="340" y="178" fill="#f4fdff" font-family="Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Arial, sans-serif" font-size="82" font-weight="900">ThumbGate</text>
|
|
27
|
+
<text x="344" y="235" fill="#9ca3af" font-family="Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Arial, sans-serif" font-size="30" font-weight="600">Pre-Action Gates for AI coding agents</text>
|
|
28
|
+
</svg>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-labelledby="tg-inline-title tg-inline-desc">
|
|
2
|
+
<title id="tg-inline-title">ThumbGate</title>
|
|
3
|
+
<desc id="tg-inline-desc">ThumbGate premium shield and thumbs-up mark for inline use in site headers.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="tg-inline-frame" x1="8" y1="8" x2="56" y2="56" gradientUnits="userSpaceOnUse">
|
|
6
|
+
<stop offset="0" stop-color="#8cf5d1"/>
|
|
7
|
+
<stop offset="1" stop-color="#22d3ee"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
</defs>
|
|
10
|
+
<!-- Outer Shield / Gate (Transparent background fill, thicker gradient frame) -->
|
|
11
|
+
<path d="M32 9 C20 13 15 20 15 33 C15 45 26 53 32 56 C38 53 49 45 49 33 C49 20 44 13 32 9 Z"
|
|
12
|
+
fill="none" stroke="url(#tg-inline-frame)" stroke-width="4.5" stroke-linejoin="round"/>
|
|
13
|
+
|
|
14
|
+
<!-- Proportional Thumbs Up in Center (Enlarged and Bolder for high-contrast header visibility) -->
|
|
15
|
+
<g transform="translate(17, 16) scale(1.25)" stroke="#8cf5d1" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" fill="none">
|
|
16
|
+
<path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"/>
|
|
17
|
+
</g>
|
|
18
|
+
</svg>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">ThumbGate Pro mark</title>
|
|
3
|
+
<desc id="desc">ThumbGate TG gate monogram with a gold Pro ribbon badge.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="tg-frame-pro" x1="96" y1="96" x2="416" y2="416" gradientUnits="userSpaceOnUse">
|
|
6
|
+
<stop offset="0" stop-color="#8cf5d1"/>
|
|
7
|
+
<stop offset="1" stop-color="#22d3ee"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<linearGradient id="pro-ribbon" x1="312" y1="48" x2="472" y2="144" gradientUnits="userSpaceOnUse">
|
|
10
|
+
<stop offset="0" stop-color="#fbbf24"/>
|
|
11
|
+
<stop offset="1" stop-color="#f59e0b"/>
|
|
12
|
+
</linearGradient>
|
|
13
|
+
</defs>
|
|
14
|
+
<rect width="512" height="512" rx="112" fill="#061015"/>
|
|
15
|
+
<rect x="78" y="78" width="356" height="356" rx="84" fill="#0b1820" stroke="url(#tg-frame-pro)" stroke-width="18"/>
|
|
16
|
+
<path d="M146 354V192c0-36 29-65 65-65h90c36 0 65 29 65 65v162" fill="none" stroke="#8cf5d1" stroke-width="28" stroke-linecap="round" stroke-linejoin="round"/>
|
|
17
|
+
<text x="256" y="310" text-anchor="middle" fill="#e7fbff" font-family="Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Arial, sans-serif" font-size="132" font-weight="900" letter-spacing="-8">TG</text>
|
|
18
|
+
<rect x="140" y="344" width="232" height="28" rx="14" fill="#22d3ee"/>
|
|
19
|
+
<g transform="translate(296 40)">
|
|
20
|
+
<path d="M0 0 H176 V84 L156 66 L136 84 L116 66 L96 84 L76 66 L56 84 L36 66 L16 84 L0 66 Z" fill="url(#pro-ribbon)"/>
|
|
21
|
+
<text x="88" y="54" text-anchor="middle" fill="#1a1305" font-family="Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Arial, sans-serif" font-size="44" font-weight="900" letter-spacing="4">PRO</text>
|
|
22
|
+
</g>
|
|
23
|
+
</svg>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">ThumbGate Team mark</title>
|
|
3
|
+
<desc id="desc">ThumbGate TG gate monogram with a violet Team badge and three stacked member glyphs.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="tg-frame-team" x1="96" y1="96" x2="416" y2="416" gradientUnits="userSpaceOnUse">
|
|
6
|
+
<stop offset="0" stop-color="#8cf5d1"/>
|
|
7
|
+
<stop offset="1" stop-color="#22d3ee"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<linearGradient id="team-badge" x1="296" y1="40" x2="472" y2="136" gradientUnits="userSpaceOnUse">
|
|
10
|
+
<stop offset="0" stop-color="#a78bfa"/>
|
|
11
|
+
<stop offset="1" stop-color="#7c3aed"/>
|
|
12
|
+
</linearGradient>
|
|
13
|
+
</defs>
|
|
14
|
+
<rect width="512" height="512" rx="112" fill="#061015"/>
|
|
15
|
+
<rect x="78" y="78" width="356" height="356" rx="84" fill="#0b1820" stroke="url(#tg-frame-team)" stroke-width="18"/>
|
|
16
|
+
<path d="M146 354V192c0-36 29-65 65-65h90c36 0 65 29 65 65v162" fill="none" stroke="#8cf5d1" stroke-width="28" stroke-linecap="round" stroke-linejoin="round"/>
|
|
17
|
+
<text x="256" y="310" text-anchor="middle" fill="#e7fbff" font-family="Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Arial, sans-serif" font-size="132" font-weight="900" letter-spacing="-8">TG</text>
|
|
18
|
+
<rect x="140" y="344" width="232" height="28" rx="14" fill="#22d3ee"/>
|
|
19
|
+
<g transform="translate(296 40)">
|
|
20
|
+
<rect x="0" y="0" width="176" height="84" rx="42" fill="url(#team-badge)"/>
|
|
21
|
+
<circle cx="34" cy="42" r="12" fill="#ede9fe"/>
|
|
22
|
+
<circle cx="58" cy="42" r="12" fill="#ede9fe"/>
|
|
23
|
+
<circle cx="82" cy="42" r="12" fill="#ede9fe"/>
|
|
24
|
+
<text x="130" y="54" text-anchor="middle" fill="#1e1033" font-family="Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Arial, sans-serif" font-size="28" font-weight="900" letter-spacing="2">TEAM</text>
|
|
25
|
+
</g>
|
|
26
|
+
</svg>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">ThumbGate mark</title>
|
|
3
|
+
<desc id="desc">A crisp shield and thumbs-up mark for ThumbGate.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="tg-frame" x1="96" y1="96" x2="416" y2="416" gradientUnits="userSpaceOnUse">
|
|
6
|
+
<stop offset="0" stop-color="#8cf5d1"/>
|
|
7
|
+
<stop offset="1" stop-color="#22d3ee"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
</defs>
|
|
10
|
+
<rect width="512" height="512" rx="112" fill="#061015"/>
|
|
11
|
+
<g transform="translate(78, 78) scale(5.5625)">
|
|
12
|
+
<!-- Outer Shield / Gate -->
|
|
13
|
+
<path d="M32 9 C20 13 15 20 15 33 C15 45 26 53 32 56 C38 53 49 45 49 33 C49 20 44 13 32 9 Z"
|
|
14
|
+
fill="#0b1820" stroke="url(#tg-frame)" stroke-width="3.5" stroke-linejoin="round"/>
|
|
15
|
+
|
|
16
|
+
<!-- Proportional Thumbs Up -->
|
|
17
|
+
<g transform="translate(19, 17) scale(1.1)" stroke="#8cf5d1" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none">
|
|
18
|
+
<path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"/>
|
|
19
|
+
</g>
|
|
20
|
+
</g>
|
|
21
|
+
</svg>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 360" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">ThumbGate wordmark</title>
|
|
3
|
+
<desc id="desc">ThumbGate wordmark with the TG gate monogram.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="tg-frame" x1="47" y1="47" x2="205" y2="205" gradientUnits="userSpaceOnUse">
|
|
6
|
+
<stop offset="0" stop-color="#8cf5d1"/>
|
|
7
|
+
<stop offset="1" stop-color="#22d3ee"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
</defs>
|
|
10
|
+
<rect width="1200" height="360" rx="56" fill="#ffffff"/>
|
|
11
|
+
<g transform="translate(54 54)">
|
|
12
|
+
<rect width="252" height="252" rx="56" fill="#061015"/>
|
|
13
|
+
<rect x="39" y="39" width="174" height="174" rx="41" fill="#0b1820" stroke="url(#tg-frame)" stroke-width="9"/>
|
|
14
|
+
<path d="M72 174V95c0-18 14-32 32-32h44c18 0 32 14 32 32v79" fill="none" stroke="#8cf5d1" stroke-width="14" stroke-linecap="round" stroke-linejoin="round"/>
|
|
15
|
+
<text x="126" y="152" text-anchor="middle" fill="#e7fbff" font-family="Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Arial, sans-serif" font-size="66" font-weight="900" letter-spacing="-4">TG</text>
|
|
16
|
+
<rect x="69" y="169" width="114" height="14" rx="7" fill="#22d3ee"/>
|
|
17
|
+
</g>
|
|
18
|
+
<text x="356" y="176" fill="#061015" font-family="Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Arial, sans-serif" font-size="86" font-weight="800" letter-spacing="0">ThumbGate</text>
|
|
19
|
+
<text x="360" y="230" fill="#475569" font-family="Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Arial, sans-serif" font-size="32" font-weight="600" letter-spacing="0">Pre-Action Checks for AI coding agents</text>
|
|
20
|
+
</svg>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="320" viewBox="0 0 1600 320" fill="none">
|
|
2
|
+
<rect width="1600" height="320" rx="24" fill="#050816"/>
|
|
3
|
+
<rect x="24" y="24" width="1552" height="272" rx="20" fill="#0B1220" stroke="#1F2A44"/>
|
|
4
|
+
<text x="56" y="72" fill="#7DD3FC" font-family="SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, monospace" font-size="28">Claude Code · live ThumbGate footer</text>
|
|
5
|
+
<rect x="56" y="116" width="1488" height="108" rx="16" fill="#111827" stroke="#243041"/>
|
|
6
|
+
<text x="88" y="180" fill="#E5E7EB" font-family="SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, monospace" font-size="28">ThumbGate v1.5.1 · Pro · 21👍 107👎 → · Dashboard · Lessons</text>
|
|
7
|
+
<text x="88" y="258" fill="#94A3B8" font-family="SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, monospace" font-size="24">Latest mistake 04/15/2026 20:24:42: Treated user as QA instead of doing TDD. Went in circles ...</text>
|
|
8
|
+
</svg>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1600" height="360" viewBox="0 0 1600 360" fill="none">
|
|
2
|
+
<rect width="1600" height="360" rx="24" fill="#050816"/>
|
|
3
|
+
<rect x="24" y="24" width="1552" height="312" rx="20" fill="#0B1220" stroke="#1F2A44"/>
|
|
4
|
+
<text x="56" y="72" fill="#A78BFA" font-family="SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, monospace" font-size="28">OpenAI Codex v0.120.0 · published ThumbGate test lane</text>
|
|
5
|
+
<rect x="56" y="116" width="1488" height="96" rx="16" fill="#111827" stroke="#243041"/>
|
|
6
|
+
<text x="88" y="176" fill="#E5E7EB" font-family="SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, monospace" font-size="28">gpt-5.4 xhigh fast · fix/codex-statusline · Context [ ] · 0 in · 0 out</text>
|
|
7
|
+
<text x="56" y="270" fill="#7DD3FC" font-family="SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, monospace" font-size="24">Published branch installs ThumbGate PreToolUse, UserPromptSubmit, PostToolUse, SessionStart, and statusLine wiring.</text>
|
|
8
|
+
<text x="56" y="310" fill="#94A3B8" font-family="SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, monospace" font-size="22">Current Codex CLI footer remains native on v0.120.0, so this is the reproducible test lane you can run after npx thumbgate init --agent codex.</text>
|
|
9
|
+
</svg>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="780" viewBox="0 0 1200 780" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">ThumbGate legal intake control flow</title>
|
|
3
|
+
<desc id="desc">A four-step diagram showing a prospect question, a ThumbGate pre-action check, an attorney review handoff, and an exportable audit event.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="bg" x1="0" x2="1" y1="0" y2="1">
|
|
6
|
+
<stop offset="0" stop-color="#101318"/>
|
|
7
|
+
<stop offset="1" stop-color="#08090b"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<filter id="shadow" x="-20%" y="-20%" width="140%" height="140%">
|
|
10
|
+
<feDropShadow dx="0" dy="18" stdDeviation="22" flood-color="#000000" flood-opacity="0.35"/>
|
|
11
|
+
</filter>
|
|
12
|
+
</defs>
|
|
13
|
+
<rect width="1200" height="780" rx="34" fill="url(#bg)"/>
|
|
14
|
+
<rect x="44" y="42" width="1112" height="696" rx="26" fill="#14161a" stroke="#2c313a" stroke-width="2"/>
|
|
15
|
+
<text x="86" y="105" fill="#f2f4f8" font-family="Inter, Arial, sans-serif" font-size="34" font-weight="800">Legal AI intake: pre-action control flow</text>
|
|
16
|
+
<text x="86" y="145" fill="#a7afbd" font-family="Inter, Arial, sans-serif" font-size="19">The agent can help with intake, but risky actions pass through policy checks before execution.</text>
|
|
17
|
+
|
|
18
|
+
<g filter="url(#shadow)">
|
|
19
|
+
<rect x="86" y="210" width="238" height="250" rx="18" fill="#1b1f26" stroke="#2c313a" stroke-width="2"/>
|
|
20
|
+
<circle cx="122" cy="250" r="20" fill="#2dd4bf"/>
|
|
21
|
+
<text x="116" y="257" fill="#071116" font-family="Inter, Arial, sans-serif" font-size="20" font-weight="900">1</text>
|
|
22
|
+
<text x="86" y="504" fill="#a7afbd" font-family="Inter, Arial, sans-serif" font-size="15">Prospect asks</text>
|
|
23
|
+
<text x="116" y="306" fill="#f2f4f8" font-family="Inter, Arial, sans-serif" font-size="24" font-weight="800">Intake question</text>
|
|
24
|
+
<text x="116" y="350" fill="#d8deea" font-family="Inter, Arial, sans-serif" font-size="18">Can I sue my</text>
|
|
25
|
+
<text x="116" y="378" fill="#d8deea" font-family="Inter, Arial, sans-serif" font-size="18">former employer in</text>
|
|
26
|
+
<text x="116" y="406" fill="#d8deea" font-family="Inter, Arial, sans-serif" font-size="18">Florida?</text>
|
|
27
|
+
</g>
|
|
28
|
+
|
|
29
|
+
<path d="M348 334 H430" stroke="#62a4ff" stroke-width="5" stroke-linecap="round"/>
|
|
30
|
+
<path d="M430 334 l-18 -13 v26 z" fill="#62a4ff"/>
|
|
31
|
+
|
|
32
|
+
<g filter="url(#shadow)">
|
|
33
|
+
<rect x="454" y="188" width="292" height="294" rx="18" fill="#21161a" stroke="#fb7185" stroke-opacity="0.72" stroke-width="2"/>
|
|
34
|
+
<circle cx="490" cy="230" r="20" fill="#fb7185"/>
|
|
35
|
+
<text x="484" y="237" fill="#19070a" font-family="Inter, Arial, sans-serif" font-size="20" font-weight="900">2</text>
|
|
36
|
+
<text x="486" y="286" fill="#f2f4f8" font-family="Inter, Arial, sans-serif" font-size="24" font-weight="800">ThumbGate check</text>
|
|
37
|
+
<text x="486" y="329" fill="#d8deea" font-family="Inter, Arial, sans-serif" font-size="18">Advice-shaped response</text>
|
|
38
|
+
<text x="486" y="357" fill="#d8deea" font-family="Inter, Arial, sans-serif" font-size="18">detected before delivery.</text>
|
|
39
|
+
<rect x="486" y="393" width="220" height="42" rx="10" fill="#fb7185" fill-opacity="0.18" stroke="#fb7185" stroke-opacity="0.55"/>
|
|
40
|
+
<text x="508" y="421" fill="#ffd9df" font-family="Inter, Arial, sans-serif" font-size="17" font-weight="800">Route to review</text>
|
|
41
|
+
</g>
|
|
42
|
+
|
|
43
|
+
<path d="M770 334 H852" stroke="#62a4ff" stroke-width="5" stroke-linecap="round"/>
|
|
44
|
+
<path d="M852 334 l-18 -13 v26 z" fill="#62a4ff"/>
|
|
45
|
+
|
|
46
|
+
<g filter="url(#shadow)">
|
|
47
|
+
<rect x="876" y="210" width="238" height="250" rx="18" fill="#16231d" stroke="#72e3a5" stroke-opacity="0.65" stroke-width="2"/>
|
|
48
|
+
<circle cx="912" cy="250" r="20" fill="#72e3a5"/>
|
|
49
|
+
<text x="906" y="257" fill="#06120b" font-family="Inter, Arial, sans-serif" font-size="20" font-weight="900">3</text>
|
|
50
|
+
<text x="906" y="306" fill="#f2f4f8" font-family="Inter, Arial, sans-serif" font-size="24" font-weight="800">Safe handoff</text>
|
|
51
|
+
<text x="906" y="350" fill="#d8deea" font-family="Inter, Arial, sans-serif" font-size="18">Collect neutral facts.</text>
|
|
52
|
+
<text x="906" y="378" fill="#d8deea" font-family="Inter, Arial, sans-serif" font-size="18">Schedule attorney</text>
|
|
53
|
+
<text x="906" y="406" fill="#d8deea" font-family="Inter, Arial, sans-serif" font-size="18">review.</text>
|
|
54
|
+
</g>
|
|
55
|
+
|
|
56
|
+
<path d="M994 484 V566 H724" stroke="#62a4ff" stroke-width="5" stroke-linecap="round" fill="none"/>
|
|
57
|
+
<path d="M724 566 l18 -13 v26 z" fill="#62a4ff"/>
|
|
58
|
+
|
|
59
|
+
<g filter="url(#shadow)">
|
|
60
|
+
<rect x="414" y="548" width="286" height="122" rx="18" fill="#1b1f26" stroke="#2c313a" stroke-width="2"/>
|
|
61
|
+
<circle cx="450" cy="588" r="20" fill="#62a4ff"/>
|
|
62
|
+
<text x="444" y="595" fill="#06111f" font-family="Inter, Arial, sans-serif" font-size="20" font-weight="900">4</text>
|
|
63
|
+
<text x="486" y="592" fill="#f2f4f8" font-family="Inter, Arial, sans-serif" font-size="23" font-weight="800">Audit event</text>
|
|
64
|
+
<text x="486" y="631" fill="#d8deea" font-family="Inter, Arial, sans-serif" font-size="17">Rule, source, action, outcome, reviewer, timestamp.</text>
|
|
65
|
+
</g>
|
|
66
|
+
</svg>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" role="img" aria-labelledby="title desc">
|
|
2
|
+
<title id="title">ThumbGate</title>
|
|
3
|
+
<desc id="desc">ThumbGate premium shield and thumbs-up mark.</desc>
|
|
4
|
+
<defs>
|
|
5
|
+
<linearGradient id="tg-frame" x1="8" y1="8" x2="56" y2="56" gradientUnits="userSpaceOnUse">
|
|
6
|
+
<stop offset="0" stop-color="#8cf5d1"/>
|
|
7
|
+
<stop offset="1" stop-color="#22d3ee"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
</defs>
|
|
10
|
+
<rect width="64" height="64" rx="14" fill="#061015"/>
|
|
11
|
+
<!-- Outer Shield / Gate -->
|
|
12
|
+
<path d="M32 9 C20 13 15 20 15 33 C15 45 26 53 32 56 C38 53 49 45 49 33 C49 20 44 13 32 9 Z"
|
|
13
|
+
fill="#0b1820" stroke="url(#tg-frame)" stroke-width="3.5" stroke-linejoin="round"/>
|
|
14
|
+
|
|
15
|
+
<!-- Proportional Thumbs Up -->
|
|
16
|
+
<g transform="translate(19, 17) scale(1.1)" stroke="#8cf5d1" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none">
|
|
17
|
+
<path d="M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3"/>
|
|
18
|
+
</g>
|
|
19
|
+
</svg>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 630" role="img" aria-label="ThumbGate">
|
|
2
|
+
<title>ThumbGate</title>
|
|
3
|
+
<rect width="1200" height="630" fill="#0a1929"/>
|
|
4
|
+
<!-- Mark, scaled and positioned -->
|
|
5
|
+
<g transform="translate(430 155) scale(5)">
|
|
6
|
+
<rect width="64" height="64" rx="12" fill="#0c2239"/>
|
|
7
|
+
<g fill="#40e0d0">
|
|
8
|
+
<path d="M20 30 h22 a4 4 0 0 1 4 4 v14 a4 4 0 0 1 -4 4 h-22 a4 4 0 0 1 -4 -4 v-14 a4 4 0 0 1 4 -4 z"/>
|
|
9
|
+
<path d="M28 12 a5 5 0 0 1 10 0 v16 a2 2 0 0 1 -2 2 h-6 a2 2 0 0 1 -2 -2 z"/>
|
|
10
|
+
<rect x="18" y="50" width="26" height="4" rx="1.5" fill="#0c2239"/>
|
|
11
|
+
</g>
|
|
12
|
+
</g>
|
|
13
|
+
<!-- Wordmark -->
|
|
14
|
+
<text x="600" y="540" text-anchor="middle" font-family="-apple-system, 'Segoe UI', system-ui, sans-serif" font-weight="700" font-size="72" fill="#f5f7fb" letter-spacing="-2">ThumbGate</text>
|
|
15
|
+
<text x="600" y="590" text-anchor="middle" font-family="-apple-system, 'Segoe UI', system-ui, sans-serif" font-weight="500" font-size="24" fill="#40e0d0" letter-spacing="1">Pre-action checks for AI coding agents</text>
|
|
16
|
+
</svg>
|
|
@@ -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: 28px; height: 28px; }
|
|
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-mark-inline-v3.svg" 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>
|