thumbgate 1.23.1 → 1.25.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-plugin/marketplace.json +5 -5
- package/.claude-plugin/plugin.json +2 -2
- package/.well-known/llms.txt +26 -11
- package/.well-known/mcp/server-card.json +8 -8
- package/README.md +84 -38
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/mcp/server-stdio.js +1 -1
- package/adapters/opencode/opencode.json +1 -1
- package/bin/cli.js +39 -16
- package/bin/postinstall.js +11 -22
- package/config/gate-templates.json +72 -0
- package/config/github-about.json +1 -1
- package/config/post-deploy-marketing-pages.json +6 -1
- package/package.json +20 -8
- package/public/agent-manager.html +3 -3
- package/public/agents-cost-savings.html +3 -3
- package/public/ai-malpractice-prevention.html +335 -7
- package/public/blog.html +3 -3
- package/public/codex-enterprise.html +3 -3
- package/public/codex-plugin.html +4 -4
- package/public/compare.html +6 -6
- package/public/dashboard.html +211 -126
- package/public/guide.html +5 -5
- package/public/index.html +156 -47
- package/public/learn.html +24 -10
- package/public/lessons.html +2 -2
- package/public/numbers.html +6 -6
- package/public/pricing.html +6 -5
- package/public/pro.html +1 -0
- package/scripts/billing.js +17 -0
- package/scripts/commercial-offer.js +4 -1
- package/scripts/dashboard.js +53 -1
- package/scripts/gates-engine.js +101 -16
- package/scripts/mcp-oauth.js +293 -0
- package/scripts/plausible-server-events.js +2 -1
- package/scripts/rate-limiter.js +16 -12
- package/scripts/security-scanner.js +80 -10
- package/scripts/seo-gsd.js +167 -1
- package/scripts/telemetry-analytics.js +310 -0
- package/scripts/tool-registry.js +35 -1
- package/scripts/vector-store.js +1 -0
- package/scripts/visitor-journey.js +172 -0
- package/src/api/server.js +226 -31
- package/adapters/chatgpt/openapi.yaml +0 -1705
package/bin/postinstall.js
CHANGED
|
@@ -26,32 +26,21 @@ const DASHBOARD_URL = 'https://thumbgate.ai/dashboard?utm_source=npm&utm_medium=
|
|
|
26
26
|
|
|
27
27
|
process.stderr.write(`
|
|
28
28
|
╭─────────────────────────────────────────────────────╮
|
|
29
|
-
│ ThumbGate installed —
|
|
29
|
+
│ ThumbGate installed — 7-day Pro trial is live. │
|
|
30
30
|
│ │
|
|
31
|
-
│
|
|
32
|
-
│
|
|
33
|
-
│ unlimited captures) or upgrade to keep Pro. │
|
|
31
|
+
│ Start now: npx thumbgate init │
|
|
32
|
+
│ Updates: npx thumbgate subscribe you@company.com│
|
|
34
33
|
│ │
|
|
35
|
-
│
|
|
36
|
-
│
|
|
37
|
-
│ npx thumbgate stats │
|
|
38
|
-
│ │
|
|
39
|
-
│ Get the 5-min setup guide + weekly tips: │
|
|
40
|
-
│ npx thumbgate subscribe you@company.com │
|
|
41
|
-
│ │
|
|
42
|
-
│ See your gates firing live: │
|
|
43
|
-
│ ${DASHBOARD_URL.slice(0, 47).padEnd(47, ' ')} │
|
|
34
|
+
│ Free after trial: 3 rules, 5 captures/day. │
|
|
35
|
+
│ Pro ($19/mo): unlimited everything. │
|
|
44
36
|
╰─────────────────────────────────────────────────────╯
|
|
45
37
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
Hosted dashboard — no self-hosting needed
|
|
51
|
-
|
|
52
|
-
After the trial: ${PRO_PRICE_LABEL}
|
|
53
|
-
Upgrade: ${PRO_CTA_URL}
|
|
38
|
+
Trial unlocks: unlimited rules, lesson search, DPO export,
|
|
39
|
+
hosted dashboard. After 7 days, free tier limits apply.
|
|
40
|
+
Subscribe for the 5-min setup guide + weekly tips:
|
|
41
|
+
npx thumbgate subscribe you@company.com
|
|
54
42
|
|
|
55
|
-
|
|
43
|
+
Dashboard: ${DASHBOARD_URL}
|
|
44
|
+
Keep Pro: ${PRO_CTA_URL}
|
|
56
45
|
|
|
57
46
|
`);
|
|
@@ -444,6 +444,78 @@
|
|
|
444
444
|
"problem": "Blocks background agents from cloning, building, testing, or publishing unless they run in an isolated durable environment with logs.",
|
|
445
445
|
"roi": "Lets the team pursue unattended revenue and engineering workflows without turning local developer machines into the execution boundary.",
|
|
446
446
|
"rollout": "Enable for every agent that can run tests, push branches, deploy, publish content, change billing, or touch customer data."
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
"id": "block-unauthorized-practice-of-law",
|
|
450
|
+
"name": "Block unauthorized practice of law",
|
|
451
|
+
"category": "Legal Intake Safety",
|
|
452
|
+
"signal": "👎",
|
|
453
|
+
"defaultAction": "block",
|
|
454
|
+
"severity": "critical",
|
|
455
|
+
"pattern": "(outcome prediction|jurisdictional recommendation|[Yy]ou\\s+(should|could|might)\\s+(file|sue|claim)|strong case|likely\\s+(prevail|win|succeed))",
|
|
456
|
+
"problem": "Stops advice-shaped intake replies under ABA Rule 5.5.",
|
|
457
|
+
"roi": "Prevents malpractice exposure before delivery.",
|
|
458
|
+
"rollout": "Enable on every AI intake channel."
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
"id": "require-conflict-check-before-intake",
|
|
462
|
+
"name": "Require conflict check before intake continues",
|
|
463
|
+
"category": "Legal Intake Safety",
|
|
464
|
+
"signal": "👎",
|
|
465
|
+
"defaultAction": "block",
|
|
466
|
+
"severity": "critical",
|
|
467
|
+
"pattern": "(collect_case_facts|schedule_consultation|intake_continue).*(missing|no|unchecked).*(conflict|adverse[_-]party|clearance)",
|
|
468
|
+
"problem": "Requires adverse-party clearance before sensitive facts.",
|
|
469
|
+
"roi": "Catches conflicts before privileged facts cross ethical walls.",
|
|
470
|
+
"rollout": "Use the firm's conflicts API or a synthetic pilot fixture."
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
"id": "block-privileged-content-egress",
|
|
474
|
+
"name": "Block privileged content egress",
|
|
475
|
+
"category": "Legal Intake Safety",
|
|
476
|
+
"signal": "👎",
|
|
477
|
+
"defaultAction": "block",
|
|
478
|
+
"severity": "critical",
|
|
479
|
+
"pattern": "(send_email|api_call|external_request|schedule|crm_update).*(privileged|attorney[_-]client|work[_-]product|matter[_-]id|confidential)",
|
|
480
|
+
"problem": "Blocks outbound actions with privilege markers.",
|
|
481
|
+
"roi": "Prevents single-action privilege waiver.",
|
|
482
|
+
"rollout": "Define markers, start with hard block, then add in-tenant reroute."
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
"id": "require-approved-disclaimer-before-response",
|
|
486
|
+
"name": "Require approved disclaimer before response",
|
|
487
|
+
"category": "Legal Intake Safety",
|
|
488
|
+
"signal": "👎",
|
|
489
|
+
"defaultAction": "block",
|
|
490
|
+
"severity": "high",
|
|
491
|
+
"pattern": "(intake_response|client_reply).*((missing|no)\\s*(disclaimer|disclosure|non[_-]engagement)|(disclaimer|disclosure|non[_-]engagement)\\s*[:=]?\\s*(missing|none|no))",
|
|
492
|
+
"problem": "Requires firm-approved non-engagement language.",
|
|
493
|
+
"roi": "Reduces inadvertent client-relationship risk.",
|
|
494
|
+
"rollout": "Load approved disclaimer during pilot."
|
|
495
|
+
},
|
|
496
|
+
{
|
|
497
|
+
"id": "restrict-model-endpoint-to-approved-list",
|
|
498
|
+
"name": "Restrict model endpoint to approved list",
|
|
499
|
+
"category": "Legal Intake Safety",
|
|
500
|
+
"signal": "👎",
|
|
501
|
+
"defaultAction": "block",
|
|
502
|
+
"severity": "high",
|
|
503
|
+
"pattern": "(model_call|llm_request|api_endpoint).*(unapproved|unknown|public|consumer)",
|
|
504
|
+
"problem": "Blocks unapproved model endpoints.",
|
|
505
|
+
"roi": "Keeps data inside approved vendor boundaries.",
|
|
506
|
+
"rollout": "Allowlist endpoints during pilot."
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
"id": "require-attorney-review-before-routing",
|
|
510
|
+
"name": "Require attorney review before case routing",
|
|
511
|
+
"category": "Legal Intake Safety",
|
|
512
|
+
"signal": "👎",
|
|
513
|
+
"defaultAction": "block",
|
|
514
|
+
"severity": "high",
|
|
515
|
+
"pattern": "(route_to_attorney|assign_practice_area|schedule_consultation).*(no|missing).*(review|approval|supervisor)",
|
|
516
|
+
"problem": "Requires review before routing or scheduling.",
|
|
517
|
+
"roi": "Prevents bad prospect routing.",
|
|
518
|
+
"rollout": "Start strict; relax after pilot evidence."
|
|
447
519
|
}
|
|
448
520
|
]
|
|
449
521
|
}
|
package/config/github-about.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"repo": "IgorGanapolsky/ThumbGate",
|
|
3
3
|
"repositoryUrl": "https://github.com/IgorGanapolsky/ThumbGate",
|
|
4
|
-
"homepageUrl": "https://thumbgate
|
|
4
|
+
"homepageUrl": "https://thumbgate.ai",
|
|
5
5
|
"githubDescription": "Agent governance for ThumbGate: 👍/👎 become Pre-Action Checks that block repeat mistakes before code, money, or customer systems change.",
|
|
6
6
|
"metaDescription": "Stop paying for the same AI mistake twice. ThumbGate is machine-speed pre-action defense for AI coding agents and vibe coding workflows: 👍 thumbs up and 👎 thumbs down become history-aware lessons, shared lessons and org visibility, actionable remediations, agent surface inventory, and Pre-Action Checks that block repeat mistakes before the next tool call across Claude Code, Cursor, Codex, Gemini, Amp, Cline, and OpenCode.",
|
|
7
7
|
"topics": [
|
|
@@ -29,9 +29,14 @@
|
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
"route": "/ai-malpractice-prevention",
|
|
32
|
-
"sentinel": "
|
|
32
|
+
"sentinel": "Pre-Execution Controls for Legal AI Agents",
|
|
33
33
|
"description": "Legal AI intake risk-controls page for law-firm pilot conversations"
|
|
34
34
|
},
|
|
35
|
+
{
|
|
36
|
+
"route": "/learn/background-agent-control-layer",
|
|
37
|
+
"sentinel": "Background agents need a control layer outside the model",
|
|
38
|
+
"description": "Background-agent AI-SDLC control-layer positioning page"
|
|
39
|
+
},
|
|
35
40
|
{
|
|
36
41
|
"route": "/llm-context.md",
|
|
37
42
|
"sentinel": "## What ThumbGate Is",
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thumbgate",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "ThumbGate self-improving agent governance: thumbs-up/down turns every mistake into a prevention rule and blocks repeat patterns.
|
|
5
|
-
"homepage": "https://thumbgate
|
|
3
|
+
"version": "1.25.0",
|
|
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
|
+
"homepage": "https://thumbgate.ai",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
8
8
|
"url": "https://github.com/IgorGanapolsky/ThumbGate.git"
|
|
@@ -120,6 +120,7 @@
|
|
|
120
120
|
"scripts/mailer/index.js",
|
|
121
121
|
"scripts/mailer/resend-mailer.js",
|
|
122
122
|
"scripts/mcp-config.js",
|
|
123
|
+
"scripts/mcp-oauth.js",
|
|
123
124
|
"scripts/mcp-policy.js",
|
|
124
125
|
"scripts/mcp-transport-strategy.js",
|
|
125
126
|
"scripts/memory-firewall.js",
|
|
@@ -198,6 +199,7 @@
|
|
|
198
199
|
"scripts/verification-loop.js",
|
|
199
200
|
"scripts/verifier-scoring.js",
|
|
200
201
|
"scripts/verify-marketing-pages-deployed.js",
|
|
202
|
+
"scripts/visitor-journey.js",
|
|
201
203
|
"scripts/workflow-runs.js",
|
|
202
204
|
"scripts/workflow-sentinel.js",
|
|
203
205
|
"scripts/workspace-agent-routines.js",
|
|
@@ -209,7 +211,6 @@
|
|
|
209
211
|
"LICENSE",
|
|
210
212
|
"README.md",
|
|
211
213
|
"adapters/amp/skills/thumbgate-feedback/SKILL.md",
|
|
212
|
-
"adapters/chatgpt/openapi.yaml",
|
|
213
214
|
"adapters/claude/.mcp.json",
|
|
214
215
|
"adapters/codex/config.toml",
|
|
215
216
|
"adapters/forge/forge.yaml",
|
|
@@ -258,6 +259,7 @@
|
|
|
258
259
|
"verify:full": "node scripts/verify-run.js full",
|
|
259
260
|
"budget:status": "node scripts/budget-guard.js --status",
|
|
260
261
|
"revenue:status": "node scripts/revenue-status.js",
|
|
262
|
+
"revenue:truth": "bash bin/revenue-truth.sh",
|
|
261
263
|
"revenue:doctor": "node scripts/revenue-observability-doctor.js",
|
|
262
264
|
"revenue:plan": "node scripts/may-2026-revenue-machine.js",
|
|
263
265
|
"revenue:status:local": "node bin/cli.js cfo",
|
|
@@ -338,10 +340,10 @@
|
|
|
338
340
|
"social:prospect:bluesky:dry": "node scripts/social-bluesky-prospecting.js --dry-run",
|
|
339
341
|
"social:reply-publish:bluesky:dry": "node scripts/social-reply-monitor-bluesky.js --publish-approved --dry-run",
|
|
340
342
|
"test:python": "python3 -m pytest tests/*.py",
|
|
341
|
-
"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: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: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: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: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",
|
|
343
|
+
"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: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",
|
|
342
344
|
"test:hook-stop-verify-deploy": "node --test tests/hook-stop-verify-deploy.test.js",
|
|
343
345
|
"test:hook-stop-anti-claim": "node --test tests/hook-stop-anti-claim.test.js",
|
|
344
|
-
"test:plausible-server-events": "node --test tests/plausible-server-events.test.js",
|
|
346
|
+
"test:plausible-server-events": "node --test tests/plausible-server-events.test.js tests/plausible-poller.test.js",
|
|
345
347
|
"test:activation-tracker": "node --test tests/activation-tracker.test.js",
|
|
346
348
|
"test:unified-revenue-rollup": "node --test tests/unified-revenue-rollup.test.js",
|
|
347
349
|
"test:conversion-rate-stats": "node --test tests/conversion-rate-stats.test.js",
|
|
@@ -349,7 +351,7 @@
|
|
|
349
351
|
"test:stripe-checkout-diagnostic": "node --test tests/stripe-checkout-diagnostic.test.js",
|
|
350
352
|
"test:stripe-business-identity-probe": "node --test tests/stripe-business-identity-probe.test.js",
|
|
351
353
|
"test:ci-cd-hygiene-audit": "node --test tests/ci-cd-hygiene-audit.test.js",
|
|
352
|
-
"test:telemetry-export": "node --test tests/telemetry-export.test.js",
|
|
354
|
+
"test:telemetry-export": "node --test tests/telemetry-export.test.js tests/telemetry-analytics-quality.test.js",
|
|
353
355
|
"test:swarm-coordinator": "node --test tests/swarm-coordinator.test.js",
|
|
354
356
|
"test:session-report": "node --test tests/session-report.test.js",
|
|
355
357
|
"test:agent-reasoning-traces": "node --test tests/agent-reasoning-traces.test.js tests/agent-stack-survival-audit.test.js",
|
|
@@ -403,6 +405,9 @@
|
|
|
403
405
|
"test:operator-key-auth": "node --test tests/api-operator-key-auth.test.js",
|
|
404
406
|
"test:cloudflare-sandbox": "node --test tests/cloudflare-dynamic-sandbox.test.js tests/cloudflare-sandbox-api.test.js",
|
|
405
407
|
"test:mcp-config": "node --test tests/mcp-config.test.js",
|
|
408
|
+
"test:mcp-tool-annotations": "node --test tests/mcp-tool-annotations.test.js",
|
|
409
|
+
"test:mcp-oauth": "node --test tests/mcp-oauth.test.js",
|
|
410
|
+
"test:mcp-oauth-flow": "node --test tests/mcp-oauth-flow.test.js",
|
|
406
411
|
"test:plan-gate": "node --test tests/plan-gate.test.js",
|
|
407
412
|
"test:pulse": "node --test tests/pulse.test.js",
|
|
408
413
|
"test:semantic-layer": "node --test tests/semantic-layer.test.js",
|
|
@@ -536,6 +541,7 @@
|
|
|
536
541
|
"test:data-governance": "node --test tests/data-governance.test.js",
|
|
537
542
|
"test:lesson-inference": "node --test tests/conversation-context.test.js tests/lesson-inference.test.js tests/lesson-prompt-shape.test.js",
|
|
538
543
|
"test:lesson-retrieval": "node --test tests/lesson-retrieval.test.js",
|
|
544
|
+
"test:lesson-semantic-retrieval": "node --test tests/lesson-semantic-retrieval.test.js",
|
|
539
545
|
"test:cross-encoder": "node --test tests/cross-encoder-reranker.test.js",
|
|
540
546
|
"test:reflector-agent": "node --test tests/reflector-agent.test.js",
|
|
541
547
|
"test:public-core-boundary": "node --test tests/public-core-boundary.test.js",
|
|
@@ -544,6 +550,7 @@
|
|
|
544
550
|
"test:hallucination-detector": "node --test tests/hallucination-detector.test.js",
|
|
545
551
|
"test:history-distiller": "node --test tests/history-distiller.test.js",
|
|
546
552
|
"test:predictive-insights": "node --test tests/predictive-insights.test.js",
|
|
553
|
+
"test:predictive-credible-range": "node --test tests/predictive-credible-range.test.js",
|
|
547
554
|
"test:prove-predictive-insights": "node --test tests/prove-predictive-insights.test.js",
|
|
548
555
|
"prove:predictive-insights": "node scripts/prove-predictive-insights.js",
|
|
549
556
|
"test:statusbar-cli": "node --test tests/statusbar-cli.test.js",
|
|
@@ -679,7 +686,12 @@
|
|
|
679
686
|
"test:index-page-clickability": "playwright test tests/e2e/index-page-clickability.spec.js",
|
|
680
687
|
"test:dashboard-page-clickability": "playwright test tests/e2e/dashboard-page-clickability.spec.js",
|
|
681
688
|
"test:agent-manager-page-clickability": "playwright test tests/e2e/agent-manager-page-clickability.spec.js",
|
|
682
|
-
"test:pricing-page-clickability": "playwright test tests/e2e/pricing-page-clickability.spec.js"
|
|
689
|
+
"test:pricing-page-clickability": "playwright test tests/e2e/pricing-page-clickability.spec.js",
|
|
690
|
+
"test:proof:truth": "node --test tests/knowledge-entropy.test.js tests/mcp-wiring-doctor.test.js tests/sequence-guard.test.js tests/slopsquat-guard.test.js tests/slopsquat-stress.test.js tests/truth-and-proof.test.js tests/wire-proof-gate.test.js",
|
|
691
|
+
"build:grok-plugin": "node scripts/build-grok-plugin.js",
|
|
692
|
+
"promote:launch": "node scripts/x-autonomous-marketing.js",
|
|
693
|
+
"feedback:ingest": "node scripts/ingest-manual-feedback.js",
|
|
694
|
+
"verify-proof": "node scripts/require-proof.js"
|
|
683
695
|
},
|
|
684
696
|
"keywords": [
|
|
685
697
|
"mcp",
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
<meta property="og:title" content="ThumbGate for the Agent Manager">
|
|
10
10
|
<meta property="og:description" content="The role Anthropic named — Agent Manager — owns CLAUDE.md, the plugin marketplace, permissions, and which skills ship. ThumbGate is the runtime underneath all of that.">
|
|
11
11
|
<meta property="og:type" content="article">
|
|
12
|
-
<meta property="og:image" content="https://thumbgate
|
|
13
|
-
<link rel="canonical" href="https://thumbgate
|
|
12
|
+
<meta property="og:image" content="https://thumbgate.ai/og.png">
|
|
13
|
+
<link rel="canonical" href="https://thumbgate.ai/agent-manager">
|
|
14
14
|
<script type="application/ld+json">
|
|
15
15
|
{
|
|
16
16
|
"@context": "https://schema.org",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"datePublished": "2026-05-19",
|
|
21
21
|
"dateModified": "2026-05-19",
|
|
22
22
|
"author": { "@type": "Person", "name": "Igor Ganapolsky", "url": "https://github.com/IgorGanapolsky" },
|
|
23
|
-
"publisher": { "@type": "Organization", "name": "ThumbGate", "url": "https://thumbgate
|
|
23
|
+
"publisher": { "@type": "Organization", "name": "ThumbGate", "url": "https://thumbgate.ai" },
|
|
24
24
|
"about": [
|
|
25
25
|
{ "@type": "Thing", "name": "Agent Manager" },
|
|
26
26
|
{ "@type": "Thing", "name": "Claude Code rollout" },
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
<meta property="og:title" content="FinOps for AI Agents — Prevention, Not Reporting">
|
|
10
10
|
<meta property="og:description" content="Cost dashboards tell you what your agents wasted last week. ThumbGate's PreToolUse gates stop the wasted tool calls before they fire — and `thumbgate cost` shows you the dollar amount.">
|
|
11
11
|
<meta property="og:type" content="article">
|
|
12
|
-
<meta property="og:image" content="https://thumbgate
|
|
13
|
-
<link rel="canonical" href="https://thumbgate
|
|
12
|
+
<meta property="og:image" content="https://thumbgate.ai/og.png">
|
|
13
|
+
<link rel="canonical" href="https://thumbgate.ai/agents-cost-savings">
|
|
14
14
|
<script type="application/ld+json">
|
|
15
15
|
{
|
|
16
16
|
"@context": "https://schema.org",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"datePublished": "2026-05-21",
|
|
21
21
|
"dateModified": "2026-05-21",
|
|
22
22
|
"author": { "@type": "Person", "name": "Igor Ganapolsky", "url": "https://github.com/IgorGanapolsky" },
|
|
23
|
-
"publisher": { "@type": "Organization", "name": "ThumbGate", "url": "https://thumbgate
|
|
23
|
+
"publisher": { "@type": "Organization", "name": "ThumbGate", "url": "https://thumbgate.ai" },
|
|
24
24
|
"about": [
|
|
25
25
|
{ "@type": "Thing", "name": "FinOps for AI" },
|
|
26
26
|
{ "@type": "Thing", "name": "Agent Cost Optimization" },
|