thumbgate 1.27.19 → 1.28.0
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 +63 -45
- 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 +52 -9
- 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/config/entitlement-public-keys.json +6 -0
- package/config/gates/default.json +1 -1
- package/config/github-about.json +2 -2
- package/config/merge-quality-checks.json +3 -0
- package/package.json +233 -100
- package/public/about.html +159 -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/blog.html +12 -9
- 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/codex-plugin.html +5 -5
- package/public/compare.html +10 -10
- package/public/dashboard.html +1 -1
- package/public/diagnostic.html +345 -0
- package/public/federal.html +2 -2
- package/public/guide.html +14 -14
- package/public/index.html +81 -70
- package/public/install.html +193 -0
- package/public/js/buyer-intent.js +672 -0
- package/public/learn.html +4 -17
- package/public/numbers.html +2 -2
- package/public/pricing.html +392 -0
- package/public/pro.html +2 -2
- package/scripts/action-receipts.js +324 -0
- package/scripts/activation-quickstart.js +187 -0
- package/scripts/agent-operations-planner.js +621 -0
- package/scripts/agent-reward-model.js +13 -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/bayes-optimal-gate.js +6 -1
- package/scripts/classifier-routing.js +130 -0
- package/scripts/cli-feedback.js +17 -1
- package/scripts/commercial-offer.js +3 -3
- package/scripts/dashboard-chat.js +332 -0
- package/scripts/entitlement.js +250 -0
- package/scripts/export-databricks-bundle.js +5 -0
- package/scripts/export-dpo-pairs.js +6 -0
- package/scripts/export-hf-dataset.js +5 -0
- package/scripts/feedback-aggregate.js +281 -0
- package/scripts/feedback-sanitizer.js +105 -0
- package/scripts/gates-engine.js +15 -3
- package/scripts/hook-stop-anti-claim.js +301 -0
- package/scripts/imperative-detector.js +85 -0
- package/scripts/install-shim.js +87 -0
- package/scripts/intervention-policy.js +13 -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/pr-manager.js +9 -22
- package/scripts/pro-local-dashboard.js +198 -0
- package/scripts/qa-scenario-planner.js +136 -0
- package/scripts/repeat-metric.js +137 -0
- package/scripts/risk-scorer.js +6 -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/seo-gsd.js +2 -2
- 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/thompson-sampling.js +11 -2
- 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/src/api/server.js +81 -10
- 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>
|
package/public/blog.html
CHANGED
|
@@ -213,16 +213,18 @@
|
|
|
213
213
|
<h3>Real examples</h3>
|
|
214
214
|
<ul>
|
|
215
215
|
<li>
|
|
216
|
-
<strong>Force-push to main</strong> — Gate fires
|
|
217
|
-
|
|
216
|
+
<strong>Force-push to main</strong> — Gate fires and logs;
|
|
217
|
+
the agent is redirected to create a branch and open a PR. Hard-blocked
|
|
218
|
+
under strict enforcement.
|
|
218
219
|
</li>
|
|
219
220
|
<li>
|
|
220
221
|
<strong>Unknown dependency install</strong> — Flagged for human
|
|
221
222
|
review. Agent pauses until you approve.
|
|
222
223
|
</li>
|
|
223
224
|
<li>
|
|
224
|
-
<strong>Destructive shell command</strong> —
|
|
225
|
-
prevention rule learned from a prior incident
|
|
225
|
+
<strong>Destructive shell command</strong> — Hard-blocked by a
|
|
226
|
+
prevention rule learned from a prior incident (destructive deletes are
|
|
227
|
+
a hard-block class by default).
|
|
226
228
|
</li>
|
|
227
229
|
</ul>
|
|
228
230
|
|
|
@@ -310,8 +312,9 @@
|
|
|
310
312
|
<p>
|
|
311
313
|
Claude Code has a sophisticated permission model and tool-calling
|
|
312
314
|
pipeline. What it does <strong>not</strong> have is feedback-driven
|
|
313
|
-
enforcement — the ability to learn from past mistakes and
|
|
314
|
-
|
|
315
|
+
enforcement — the ability to learn from past mistakes and flag the
|
|
316
|
+
agent (hard-blocking the catastrophic ones, or any rule under strict
|
|
317
|
+
enforcement) before it repeats them.
|
|
315
318
|
</p>
|
|
316
319
|
|
|
317
320
|
<p>
|
|
@@ -325,8 +328,9 @@
|
|
|
325
328
|
prevention rule
|
|
326
329
|
</li>
|
|
327
330
|
<li>
|
|
328
|
-
<strong>Gates enforce</strong> — PreToolUse hooks
|
|
329
|
-
before execution
|
|
331
|
+
<strong>Gates enforce</strong> — PreToolUse hooks flag and log the
|
|
332
|
+
action before execution, and hard-block the catastrophic ones (or any
|
|
333
|
+
rule under strict enforcement)
|
|
330
334
|
</li>
|
|
331
335
|
<li>
|
|
332
336
|
<strong>Reasoning chains explain</strong> — every block tells you
|
|
@@ -464,7 +468,6 @@
|
|
|
464
468
|
<div class="container">
|
|
465
469
|
<a href="/">Home</a> ·
|
|
466
470
|
<a href="https://github.com/IgorGanapolsky/ThumbGate">GitHub</a> ·
|
|
467
|
-
<a href="https://x.com/IgorGanapolsky">X</a> ·
|
|
468
471
|
<a href="https://www.linkedin.com/in/igorganapolsky">LinkedIn</a>
|
|
469
472
|
<br /><br />© 2026 ThumbGate · MIT License
|
|
470
473
|
</div>
|
|
@@ -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>
|