thumbgate 1.34.3 → 1.35.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/plugin.json +1 -1
- package/.well-known/mcp/server-card.json +1 -1
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/forge/forge.yaml +3 -3
- package/adapters/mcp/server-stdio.js +1 -1
- package/adapters/opencode/opencode.json +1 -1
- package/bin/cli.js +37 -2
- package/config/gate-templates.json +72 -0
- package/config/gates/default.json +13 -0
- package/config/merge-quality-checks.json +4 -1
- package/config/model-candidates.json +75 -0
- package/package.json +20 -8
- package/public/index.html +2 -2
- package/public/numbers.html +2 -2
- package/scripts/auto-promote-gates.js +178 -27
- package/scripts/cli-progress.js +111 -0
- package/scripts/dashboard-limits.js +27 -0
- package/scripts/dashboard.js +57 -6
- package/scripts/gate-stats.js +2 -2
- package/scripts/gates-engine.js +58 -4
- package/server.json +2 -2
- package/src/api/server.js +80 -34
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thumbgate",
|
|
3
3
|
"description": "One 👎 becomes a hard rule the agent cannot bypass. Captures thumbs-down feedback, distills it into PreToolUse Pre-Action Checks, enforced across every future Claude Code session.",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.35.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Igor Ganapolsky",
|
|
7
7
|
"email": "ig5973700@gmail.com",
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"thumbgate": {
|
|
4
4
|
"command": "npx",
|
|
5
|
-
"args": ["--yes", "--package", "thumbgate@1.
|
|
5
|
+
"args": ["--yes", "--package", "thumbgate@1.35.0", "thumbgate", "serve"]
|
|
6
6
|
}
|
|
7
7
|
},
|
|
8
8
|
"hooks": {
|
|
9
9
|
"preToolUse": {
|
|
10
10
|
"command": "npx",
|
|
11
|
-
"args": ["--yes", "--package", "thumbgate@1.
|
|
11
|
+
"args": ["--yes", "--package", "thumbgate@1.35.0", "thumbgate", "gate-check"]
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
}
|
|
@@ -9,12 +9,12 @@ version: "1"
|
|
|
9
9
|
skills:
|
|
10
10
|
thumbgate-gate-check:
|
|
11
11
|
description: "ThumbGate PreToolUse gate — blocks known-bad tool calls"
|
|
12
|
-
command: "npx --yes --package thumbgate@1.
|
|
12
|
+
command: "npx --yes --package thumbgate@1.35.0 thumbgate gate-check"
|
|
13
13
|
trigger: pre_tool_use
|
|
14
14
|
|
|
15
15
|
thumbgate-feedback:
|
|
16
16
|
description: "ThumbGate feedback capture — logs user prompt context"
|
|
17
|
-
command: "npx --yes --package thumbgate@1.
|
|
17
|
+
command: "npx --yes --package thumbgate@1.35.0 thumbgate hook-auto-capture"
|
|
18
18
|
trigger: user_prompt
|
|
19
19
|
|
|
20
20
|
mcp:
|
|
@@ -23,6 +23,6 @@ mcp:
|
|
|
23
23
|
args:
|
|
24
24
|
- "--yes"
|
|
25
25
|
- "--package"
|
|
26
|
-
- "thumbgate@1.
|
|
26
|
+
- "thumbgate@1.35.0"
|
|
27
27
|
- "thumbgate"
|
|
28
28
|
- "serve"
|
|
@@ -328,7 +328,7 @@ const {
|
|
|
328
328
|
finalizeSession: finalizeFeedbackSession,
|
|
329
329
|
} = require('../../scripts/feedback-session');
|
|
330
330
|
|
|
331
|
-
const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.
|
|
331
|
+
const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.35.0' };
|
|
332
332
|
const COMMERCE_CATEGORIES = [
|
|
333
333
|
'product_recommendation',
|
|
334
334
|
'brand_compliance',
|
package/bin/cli.js
CHANGED
|
@@ -1659,13 +1659,18 @@ function compact() {
|
|
|
1659
1659
|
|
|
1660
1660
|
function cfo() {
|
|
1661
1661
|
const args = parseArgs(process.argv.slice(3));
|
|
1662
|
+
const { createCliProgress } = require(path.join(PKG_ROOT, 'scripts', 'cli-progress'));
|
|
1663
|
+
const progress = createCliProgress();
|
|
1662
1664
|
const { getOperationalBillingSummary } = require(path.join(PKG_ROOT, 'scripts', 'operational-summary'));
|
|
1665
|
+
progress.start('Loading CFO billing summary…');
|
|
1663
1666
|
getOperationalBillingSummary({
|
|
1664
1667
|
window: args.window,
|
|
1665
1668
|
timeZone: args.timezone,
|
|
1666
1669
|
now: args.now,
|
|
1670
|
+
onProgress: (message) => progress.update(message),
|
|
1667
1671
|
})
|
|
1668
1672
|
.then(({ source, summary, fallbackReason }) => {
|
|
1673
|
+
progress.succeed(`Billing summary ready (${source})`);
|
|
1669
1674
|
console.log(JSON.stringify({
|
|
1670
1675
|
source,
|
|
1671
1676
|
fallbackReason,
|
|
@@ -1674,6 +1679,7 @@ function cfo() {
|
|
|
1674
1679
|
process.exit(0);
|
|
1675
1680
|
})
|
|
1676
1681
|
.catch((err) => {
|
|
1682
|
+
progress.fail('CFO billing summary failed');
|
|
1677
1683
|
console.error(err && err.message ? err.message : err);
|
|
1678
1684
|
process.exit(1);
|
|
1679
1685
|
});
|
|
@@ -1691,14 +1697,19 @@ function repairGithubMarketplace() {
|
|
|
1691
1697
|
|
|
1692
1698
|
function northStar() {
|
|
1693
1699
|
const args = parseArgs(process.argv.slice(3));
|
|
1700
|
+
const { createCliProgress } = require(path.join(PKG_ROOT, 'scripts', 'cli-progress'));
|
|
1701
|
+
const progress = createCliProgress();
|
|
1694
1702
|
const { getOperationalDashboard } = require(path.join(PKG_ROOT, 'scripts', 'operational-dashboard'));
|
|
1695
1703
|
|
|
1704
|
+
progress.start('Loading North Star metrics…');
|
|
1696
1705
|
getOperationalDashboard({
|
|
1697
1706
|
window: args.window,
|
|
1698
1707
|
timeZone: args.timezone,
|
|
1699
1708
|
now: args.now,
|
|
1709
|
+
onProgress: (message) => progress.update(message),
|
|
1700
1710
|
})
|
|
1701
1711
|
.then(({ source, data, fallbackReason }) => {
|
|
1712
|
+
progress.succeed(`North Star ready (${source})`);
|
|
1702
1713
|
const summary = data.analytics.northStar || {};
|
|
1703
1714
|
const revenue = data.analytics.revenue || {};
|
|
1704
1715
|
|
|
@@ -1721,6 +1732,7 @@ function northStar() {
|
|
|
1721
1732
|
process.exit(0);
|
|
1722
1733
|
})
|
|
1723
1734
|
.catch((err) => {
|
|
1735
|
+
progress.fail('North Star failed');
|
|
1724
1736
|
console.error(err && err.message ? err.message : err);
|
|
1725
1737
|
process.exit(1);
|
|
1726
1738
|
});
|
|
@@ -3038,21 +3050,35 @@ function installMcp() {
|
|
|
3038
3050
|
|
|
3039
3051
|
function dashboard() {
|
|
3040
3052
|
const args = parseArgs(process.argv.slice(3));
|
|
3053
|
+
const { createCliProgress } = require(path.join(PKG_ROOT, 'scripts', 'cli-progress'));
|
|
3054
|
+
const progress = createCliProgress();
|
|
3055
|
+
|
|
3041
3056
|
if (args.open || args.web) {
|
|
3042
3057
|
const { resolveProjectDir } = require(path.join(PKG_ROOT, 'scripts', 'feedback-paths'));
|
|
3043
3058
|
const projectDir = resolveProjectDir({ cwd: process.cwd(), env: process.env });
|
|
3044
3059
|
const port = process.env.PORT || 3456;
|
|
3045
3060
|
const url = `http://127.0.0.1:${port}/dashboard?project=${encodeURIComponent(projectDir)}`;
|
|
3046
3061
|
|
|
3062
|
+
progress.start(`Starting local dashboard on :${port}…`);
|
|
3047
3063
|
ensureDash(Number(port))
|
|
3048
3064
|
.then((server) => {
|
|
3065
|
+
// Keep the stable stdout contract: scripts/tests parse `API <port> pid <n>`.
|
|
3066
|
+
// Progress stays on stderr so humans still see a spinner without breaking parsers.
|
|
3049
3067
|
if (server.started) {
|
|
3050
3068
|
console.log(`API ${port} pid ${server.pid}`);
|
|
3069
|
+
progress.update(`Local API listening (pid ${server.pid})…`);
|
|
3070
|
+
} else {
|
|
3071
|
+
progress.update('Local API already running…');
|
|
3051
3072
|
}
|
|
3073
|
+
progress.update('Opening browser…');
|
|
3052
3074
|
return openBrowser(url);
|
|
3053
3075
|
})
|
|
3054
|
-
.then(() =>
|
|
3076
|
+
.then(() => {
|
|
3077
|
+
progress.succeed(`Dashboard open: ${url}`);
|
|
3078
|
+
process.exit(0);
|
|
3079
|
+
})
|
|
3055
3080
|
.catch((err) => {
|
|
3081
|
+
progress.fail('Failed to open local dashboard');
|
|
3056
3082
|
console.error(err && err.message ? err.message : err);
|
|
3057
3083
|
process.exit(1);
|
|
3058
3084
|
});
|
|
@@ -3062,16 +3088,25 @@ function dashboard() {
|
|
|
3062
3088
|
const { printDashboard } = require(path.join(PKG_ROOT, 'scripts', 'dashboard'));
|
|
3063
3089
|
const { getOperationalDashboard } = require(path.join(PKG_ROOT, 'scripts', 'operational-dashboard'));
|
|
3064
3090
|
|
|
3091
|
+
progress.start('Loading ThumbGate dashboard…');
|
|
3065
3092
|
getOperationalDashboard({
|
|
3066
3093
|
window: args.window,
|
|
3067
3094
|
timeZone: args.timezone,
|
|
3068
3095
|
now: args.now,
|
|
3096
|
+
onProgress: (message) => progress.update(message),
|
|
3069
3097
|
})
|
|
3070
|
-
.then(({ data }) => {
|
|
3098
|
+
.then(({ data, source }) => {
|
|
3099
|
+
const sourceLabel = source === 'hosted'
|
|
3100
|
+
? 'hosted'
|
|
3101
|
+
: source === 'local-unverified'
|
|
3102
|
+
? 'local (hosted unavailable)'
|
|
3103
|
+
: 'local';
|
|
3104
|
+
progress.succeed(`Dashboard ready (${sourceLabel})`);
|
|
3071
3105
|
printDashboard(data);
|
|
3072
3106
|
process.exit(0);
|
|
3073
3107
|
})
|
|
3074
3108
|
.catch((err) => {
|
|
3109
|
+
progress.fail('Dashboard failed');
|
|
3075
3110
|
console.error(err && err.message ? err.message : err);
|
|
3076
3111
|
process.exit(1);
|
|
3077
3112
|
});
|
|
@@ -660,6 +660,78 @@
|
|
|
660
660
|
"problem": "Blocks any file edit or write tool call that is not within a specified active/target directory.",
|
|
661
661
|
"roi": "Restricts agent edits to a controlled workspace, preventing scope drift, accidental modification of configuration or source files, and unwanted global refactors during focused task debugging.",
|
|
662
662
|
"rollout": "Enable dynamically on-demand using /freeze to specify the only path(s) the agent is allowed to write to during the session."
|
|
663
|
+
},
|
|
664
|
+
{
|
|
665
|
+
"id": "block-vlt-install-vulnerable-deps",
|
|
666
|
+
"name": "Block vlt install of vulnerable dependencies",
|
|
667
|
+
"category": "JavaScript Package Registry Governance",
|
|
668
|
+
"signal": "👎",
|
|
669
|
+
"defaultAction": "block",
|
|
670
|
+
"severity": "critical",
|
|
671
|
+
"pattern": "(vlt\\s+install|vlt\\s+add).*?(--audit\\s+critical|vuln|cve|high-severity|known-vuln|left-pad|event-stream|colors|unsafe|insecure|deprecated|obsolete|legacy|vulnerable|unresolved-cve)",
|
|
672
|
+
"problem": "Blocks vlt install/add of packages flagged with --audit critical or known-vulnerable CVE references (e.g. left-pad, event-stream, colors). vlt's hosted registry provides real-time vulnerability scanning; agents must not bypass the audit pipeline.",
|
|
673
|
+
"roi": "Prevents supply-chain compromise via known-vulnerable dependencies. Direct 1st-order risk: left-pad-style incidents cause cascading production outages. Second-order: agents that install without audit never learn to check. Captured feedback (thumbgate capture --tag supply-chain-security) turns each bypass into a prevention rule.",
|
|
674
|
+
"rollout": "Require --audit critical on all vlt install/add. Block packages with known CVE references. Auto-capture feedback for each bypass attempt."
|
|
675
|
+
},
|
|
676
|
+
{
|
|
677
|
+
"id": "require-review-vlt-registry-override",
|
|
678
|
+
"name": "Require review for vlt registry override to non-approved hosts",
|
|
679
|
+
"category": "JavaScript Package Registry Governance",
|
|
680
|
+
"signal": "👎",
|
|
681
|
+
"defaultAction": "block",
|
|
682
|
+
"severity": "critical",
|
|
683
|
+
"pattern": "(vlt\\s+config\\s+set|vlt\\s+registry\\s+add|vlt\\s+set\\s+registry).*(registry|registry-url|self-host|override|redirect|mirror|vsr)",
|
|
684
|
+
"problem": "Blocks vlt registry configuration that redirects dependency resolution to non-approved self-hosted VSR or mirror hosts. Agents must only pull from allowlisted registries (vlt.sh, registry.npmjs.org, approved internal VSR).",
|
|
685
|
+
"roi": "High: Prevents supply-chain attacks via rogue registry configuration. Critical for enterprise on-prem/air-gapped environments where vlt's self-hosted VSR is the approved source. Captured feedback (thumbgate capture --tag registry-override) generates prevention rules for unauthorized redirect patterns.",
|
|
686
|
+
"rollout": "Block all registry-setting commands for non-allowlisted hosts. Warn (human review) for internal VSR. Allowlist vlt.sh, registry.npmjs.org, and approved internal domains."
|
|
687
|
+
},
|
|
688
|
+
{
|
|
689
|
+
"id": "enforce-vlt-workspace-dep-pinning",
|
|
690
|
+
"name": "Enforce pinned dependency versions in vlt workspace installs",
|
|
691
|
+
"category": "JavaScript Package Registry Governance",
|
|
692
|
+
"signal": "👎",
|
|
693
|
+
"defaultAction": "block",
|
|
694
|
+
"severity": "high",
|
|
695
|
+
"pattern": "(vlt\\s+add|vlt\\s+install).*?(@\\s*(?:\\^|~|>|<|>=|<=|\\*|latest|next))",
|
|
696
|
+
"problem": "Blocks vlt add/install with unpinned (wildcard, range, latest/next) dependency versions. vlt workspace installs with @*, @^, @~, @>, @<, @>=, @<=, @latest, @next resolve to potentially vulnerable latest versions instead of audited pinned versions.",
|
|
697
|
+
"roi": "Pinned dependencies are the bedrock of reproducible builds and vulnerability scanning. vlt's hosted registry provides lockfiles by default; agents must respect them. Feedback (thumbgate capture --tag dep-pinning) from each bypass generates a rule for the specific unpinned package pattern.",
|
|
698
|
+
"rollout": "Enforce exact version pinning in workspace vlt add/install. Block @* ^ ~ > < >= <= latest next. Allow exact versions like @4.18.2."
|
|
699
|
+
},
|
|
700
|
+
{
|
|
701
|
+
"id": "gate-vlt-package-publishing",
|
|
702
|
+
"name": "Gate vlt package publishing for provenance and scope safety",
|
|
703
|
+
"category": "JavaScript Package Registry Governance",
|
|
704
|
+
"signal": "👎",
|
|
705
|
+
"defaultAction": "block",
|
|
706
|
+
"severity": "critical",
|
|
707
|
+
"pattern": "(vlt\\s+publish|vlt\\s+pack|npm\\s+publish).*(no-provenance|unsigned|no-2fa|no-attestation|typosquat|squat|unscoped|no-scope)",
|
|
708
|
+
"problem": "Blocks vlt/npm publish of packages without provenance attestation, 2FA, or proper scope/access controls. vlt's hosted registry supports provenance; agents must not publish unsigned or unscoped packages.",
|
|
709
|
+
"roi": "Prevents typosquatting and supply-chain attacks via unsigned package publishing. Aligns with vlt's security posture and npm provenance ecosystem. Captures high-value feedback for prevention rules.",
|
|
710
|
+
"rollout": "Require provenance attestation and 2FA for all vlt publish operations. Block publishes to scopes matching existing packages (typosquatting detection)."
|
|
711
|
+
},
|
|
712
|
+
{
|
|
713
|
+
"id": "block-vlt-private-registry-bypass",
|
|
714
|
+
"name": "Block vlt private registry bypass via npmrc or env override",
|
|
715
|
+
"category": "JavaScript Package Registry Governance",
|
|
716
|
+
"signal": "👎",
|
|
717
|
+
"defaultAction": "block",
|
|
718
|
+
"severity": "critical",
|
|
719
|
+
"pattern": "(\\.npmrc|vlt.*config|NPM_CONFIG_REGISTRY|VLT_REGISTRY).*(https?://(?!(?:registry\\.npmjs\\.org|vlt\\.sh|localhost|127\\.0\\.0\\.1|\\[::1\\]|0\\.0\\.0\\.0)(?:[:/?#]|$))[\\w.-]+)",
|
|
720
|
+
"problem": "Blocks vlt/npm configuration that redirects dependency resolution to unapproved private or external registries via .npmrc, environment variables, or CLI config overrides.",
|
|
721
|
+
"roi": "High: Prevents data exfil and supply-chain compromise via rogue registry configuration. Critical for enterprise on-prem/air-gapped environments where vlt's self-hosted VSR is used.",
|
|
722
|
+
"rollout": "Block all registry overrides to non-allowlisted hosts. Allowlist vlt.sh, registry.npmjs.org, and approved internal VSR domains."
|
|
723
|
+
},
|
|
724
|
+
{
|
|
725
|
+
"id": "validate-context-before-codegen",
|
|
726
|
+
"name": "Validate context freshness and relevance before code generation",
|
|
727
|
+
"category": "AI Engineering Stack Safety",
|
|
728
|
+
"signal": "👎",
|
|
729
|
+
"defaultAction": "block",
|
|
730
|
+
"severity": "high",
|
|
731
|
+
"pattern": "(Edit|Write|MultiEdit|StrReplace).*",
|
|
732
|
+
"problem": "Agents frequently generate code without first ensuring AGENTS.md, CLAUDE.md, test infrastructure, and ownership context are fresh and relevant. Per the Hugging Face Context Course: 'an agent is only as good as the context it has.' Results in style violations, wrong test commands, and rework.",
|
|
733
|
+
"roi": "Eliminates rework from stale or missing project context. Direct 1st-order improvement to context-engineering workflows (Hugging Face Context Course Units 1-3). Reduces PR churn and review cycles.",
|
|
734
|
+
"rollout": "Before any Edit/Write/MultiEdit, verify AGENTS.md exists and is fresh (modified within last 7 days). Require explicit context-freshness check before code edits. Capture feedback with 'missing-context' and 'stale-context' tags."
|
|
663
735
|
}
|
|
664
736
|
]
|
|
665
737
|
}
|
|
@@ -180,6 +180,19 @@
|
|
|
180
180
|
"CWE-863"
|
|
181
181
|
]
|
|
182
182
|
},
|
|
183
|
+
{
|
|
184
|
+
"id": "outbound-email-send",
|
|
185
|
+
"layer": "Execution",
|
|
186
|
+
"trigger": "any:outbound_email_send",
|
|
187
|
+
"pattern": "(?:(?:^|[_.])send[_-]?(?:message|mail|email|now|draft)s?\\b|emailer[_-]?messages?[_-]?send|(?:^|[_.])send_draft\\b|users\\/[^/\\s\"\\']+\\/messages\\/send|\\bmessages\\/send\\b|messages\\s*\\(\\s*\\)\\s*\\.\\s*send\\s*\\(|users\\s*\\(\\s*\\)\\s*\\.\\s*messages\\s*\\(\\s*\\)\\s*\\.\\s*send\\b|(?:^|[\\s;/])sendmail\\b|\\bmsmtp\\b|\\bmailx?\\s+-s\\b|(?:import\\s+smtplib|from\\s+smtplib\\b|\\bsmtplib\\.SMTP\\b)|(?:require\\s*\\(\\s*[\\'\"]nodemailer[\\'\"]\\s*\\)|from\\s+[\\'\"]nodemailer[\\'\"]|nodemailer\\.createTransport)|createTransport\\s*\\()",
|
|
188
|
+
"action": "block",
|
|
189
|
+
"message": "Outbound email SEND is blocked. Save a draft instead; a human reviews Drafts and sends personally. create_draft / update_draft / list_drafts remain allowed.",
|
|
190
|
+
"severity": "critical",
|
|
191
|
+
"compliance": [
|
|
192
|
+
"SOC2-CC6.1",
|
|
193
|
+
"CWE-285"
|
|
194
|
+
]
|
|
195
|
+
},
|
|
183
196
|
{
|
|
184
197
|
"id": "git-reset-hard",
|
|
185
198
|
"layer": "Execution",
|
|
@@ -133,6 +133,48 @@
|
|
|
133
133
|
"medianLatencyMs",
|
|
134
134
|
"costPerEvolutionUsd"
|
|
135
135
|
]
|
|
136
|
+
},
|
|
137
|
+
"js-package-registry-governance": {
|
|
138
|
+
"label": "JavaScript package registry governance",
|
|
139
|
+
"summary": "Governance, gating, and supply-chain enforcement for agents consuming and publishing JavaScript packages via npm, vlt registry, and self-hosted VSR (serverless registry). Pre-action checks for dependency installation, registry override, provenance attestation, and workspace dependency pinning.",
|
|
140
|
+
"desiredStrengths": ["agentic-coding", "tool-use", "supply-chain-security", "reliability", "security", "audit-trail"],
|
|
141
|
+
"targetContextWindow": 64000,
|
|
142
|
+
"benchmarkCommands": [
|
|
143
|
+
"npx thumbgate eval --from-feedback --json --min-score=0",
|
|
144
|
+
"node scripts/gate-eval.js run",
|
|
145
|
+
"npx thumbgate bench --json --min-score=90"
|
|
146
|
+
],
|
|
147
|
+
"metrics": [
|
|
148
|
+
"passRate",
|
|
149
|
+
"falsePositiveRate",
|
|
150
|
+
"dependencyAuditRecall",
|
|
151
|
+
"typosquattingDetectionRate",
|
|
152
|
+
"registryOverrideBlockRate",
|
|
153
|
+
"provenanceAttestationRate",
|
|
154
|
+
"medianLatencyMs",
|
|
155
|
+
"costPer1kActionsUsd"
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
"context-engineering": {
|
|
159
|
+
"label": "Context engineering for AI code agents",
|
|
160
|
+
"summary": "Evaluating models on context structuring, skill synthesis, MCP tool governance, sub-agent coordination, and hook-based lifecycle automation for AI code agent workflows (Claude Code, Codex, OpenCode). Based on the Hugging Face Context Course curriculum.",
|
|
161
|
+
"desiredStrengths": ["agentic-coding", "tool-use", "context-structuring", "skill-synthesis", "MCP-governance", "reliability", "long-horizon-coding"],
|
|
162
|
+
"targetContextWindow": 128000,
|
|
163
|
+
"benchmarkCommands": [
|
|
164
|
+
"npx thumbgate eval --from-feedback --json --min-score=0",
|
|
165
|
+
"node scripts/gate-eval.js run",
|
|
166
|
+
"npx thumbgate bench --json --min-score=90"
|
|
167
|
+
],
|
|
168
|
+
"metrics": [
|
|
169
|
+
"passRate",
|
|
170
|
+
"contextFreshnessRate",
|
|
171
|
+
"skillValidationAccuracy",
|
|
172
|
+
"mcpToolSafetyRate",
|
|
173
|
+
"subagentCoordinationCompliance",
|
|
174
|
+
"falsePositiveRate",
|
|
175
|
+
"medianLatencyMs",
|
|
176
|
+
"costPer1kActionsUsd"
|
|
177
|
+
]
|
|
136
178
|
}
|
|
137
179
|
},
|
|
138
180
|
"candidates": [
|
|
@@ -329,6 +371,39 @@
|
|
|
329
371
|
"costClass": "medium",
|
|
330
372
|
"strengths": ["agentic-coding", "tool-use", "reliability", "long-context", "data-analysis", "cost-efficiency"],
|
|
331
373
|
"notes": "Google's 3.1 Pro Preview model with 55.5 Coding Index and massive 2M token context window. Strong choice for complex RAG tasks, repository-scale auditing, and long-context trace analysis."
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
"id": "vlt/vlt-registry-hosted",
|
|
377
|
+
"vendor": "vlt",
|
|
378
|
+
"family": "javascript-package-registry",
|
|
379
|
+
"provider": "vlt",
|
|
380
|
+
"model": "hosted-registry",
|
|
381
|
+
"contextWindow": 10000,
|
|
382
|
+
"costClass": "low",
|
|
383
|
+
"strengths": ["supply-chain-security", "package-management", "audit-trail", "reliability", "security"],
|
|
384
|
+
"notes": "vlt's hosted package registry service (launched Aug 2026) with secure npm mirror, private registries, and VSR (self-hosted serverless registry). ThumbGate gates integrate via preToolUse hooks on vlt install/add/publish and registry config overrides. Pair with require-local-dependency-vulnerability-scan and gate-vlt-package-publishing templates. See adapters/vlt/VLT.md and https://vlt.io/blog/1-0."
|
|
385
|
+
},
|
|
386
|
+
{
|
|
387
|
+
"id": "vlt/vlt-vsr-self-hosted",
|
|
388
|
+
"vendor": "vlt",
|
|
389
|
+
"family": "javascript-package-registry",
|
|
390
|
+
"provider": "vlt",
|
|
391
|
+
"model": "self-hosted-vsr",
|
|
392
|
+
"contextWindow": 10000,
|
|
393
|
+
"costClass": "low",
|
|
394
|
+
"strengths": ["supply-chain-security", "package-management", "on-prem", "airgap", "audit-trail", "security"],
|
|
395
|
+
"notes": "vlt's self-hosted VSR (serverless registry) for enterprise on-prem and air-gapped environments. ThumbGate's block-vlt-private-registry-bypass and require-review-vlt-registry-override gate templates enforce approved registry hosts. Critical for enterprises where most data is not cloud-native."
|
|
396
|
+
},
|
|
397
|
+
{
|
|
398
|
+
"id": "huggingface/context-engineering-agent",
|
|
399
|
+
"vendor": "Hugging Face",
|
|
400
|
+
"family": "context-engineering",
|
|
401
|
+
"provider": "huggingface",
|
|
402
|
+
"model": "context-engineering-agent",
|
|
403
|
+
"contextWindow": 200000,
|
|
404
|
+
"costClass": "low",
|
|
405
|
+
"strengths": ["context-structuring", "skill-synthesis", "MCP-governance", "agentic-coding", "tool-use", "reliability"],
|
|
406
|
+
"notes": "Model optimized for the Hugging Face Context Course curriculum — context engineering for AI code agents (Claude Code, Codex, OpenCode). Excels at structuring knowledge so agents find context efficiently. Evaluated on MCP tool governance, skill synthesis validation, and hook-based lifecycle automation. See docs/guides/huggingface-context-course-governance.md and adapters/huggingface-context-course/."
|
|
332
407
|
}
|
|
333
408
|
]
|
|
334
409
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thumbgate",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.35.0",
|
|
4
4
|
"description": "ThumbGate Pre-Action Checks self-improve from ranked lessons and repeated failures, hard-block detected secret leaks, and block matches in strict mode.",
|
|
5
5
|
"homepage": "https://thumbgate.ai",
|
|
6
6
|
"repository": {
|
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
"scripts/cli-status.js",
|
|
65
65
|
"scripts/cli-telemetry.js",
|
|
66
66
|
"scripts/cli-test-block.js",
|
|
67
|
+
"scripts/cli-progress.js",
|
|
67
68
|
"scripts/cloudflare-dynamic-sandbox.js",
|
|
68
69
|
"scripts/code-graph-guardrails.js",
|
|
69
70
|
"scripts/code-mode-mcp-plan.js",
|
|
@@ -81,6 +82,7 @@
|
|
|
81
82
|
"scripts/dashboard-chat.js",
|
|
82
83
|
"scripts/dashboard-render-spec.js",
|
|
83
84
|
"scripts/dashboard.js",
|
|
85
|
+
"scripts/dashboard-limits.js",
|
|
84
86
|
"scripts/decision-journal.js",
|
|
85
87
|
"scripts/deepseek-v4-runtime-guardrails.js",
|
|
86
88
|
"scripts/docker-sandbox-planner.js",
|
|
@@ -463,7 +465,7 @@
|
|
|
463
465
|
"social:prospect:bluesky": "node scripts/social-bluesky-prospecting.js",
|
|
464
466
|
"social:prospect:bluesky:dry": "node scripts/social-bluesky-prospecting.js --dry-run",
|
|
465
467
|
"social:reply-publish:bluesky:dry": "node scripts/social-reply-monitor-bluesky.js --publish-approved --dry-run",
|
|
466
|
-
"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:proof-pack-cadence && npm run test:grafana-revenue-evidence && npm run test:billing && npm run test:billing-setup && 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:canary && 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:platform-limits && npm run test:post-video && npm run test:post-everywhere-instagram && npm run test:post-everywhere-channels && 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:release-window && npm run test:check-congruence && npm run test:tool-registry && npm run test:repeat-metric && npm run test:noop-detect && npm run test:action-receipts && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:memory-scope-readiness && npm run test:belief-update && npm run test:hosted-config && npm run test:operational-summary && npm run test:operational-dashboard && npm run test:operator-artifacts && npm run test:operator-key-auth && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:mcp-tool-annotations && npm run test:mcp-oauth && npm run test:mcp-oauth-flow && npm run test:plan-gate && npm run test:ai-component-inventory && npm run test:verification-evidence && 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:entitlement && npm run test:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:imperative-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:statusline-cache-aggregate && npm run test:public-repo-hygiene && npm run test:no-internal-orchestration-leaks && 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:reconcile-thumbgate-campaign && npm run test:reddit-publisher && npm run test:schedule-thumbgate-campaign && npm run test:social-reply-monitor && npm run test:sync-launch-assets && npm run test:ai-search-visibility && npm run test:perplexity && npm run test:xss-checkout-escape && 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:pricing-page-telemetry && 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: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:universal-claim-evaluator && 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:stop-hook-json-contract && npm run test:plausible-server-events && npm run test:activation-tracker && npm run test:activation-onboarding && 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:jsonl-window && npm run test:observability-env && npm run test:glama-mcp && npm run test:prove-glama-mcp && npm run test:public-bundle-ratchet && npm run test:pack-runtime-integrity && npm run test:hook-self-protection && npm run test:self-protect-enforcement && npm run test:never-bypass-branch-protection && npm run test:stripe-payment-link-update && npm run test:ci-cd-hygiene-audit && npm run test:verify-marketing-pages-deployed && npm run test:install-email-capture && npm run test:install-shim && npm run test:hook-runtime-subcommands && npm run test:implementation-notes && npm run test:daily-block-cap && npm run test:free-to-paid-conversion-units && npm run test:metrics-real-endpoint && npm run test:cli-trial-and-help && npm run test:cost-cli && npm run test:silent-failure-cluster && npm run test:proof:truth && node --test tests/adaptive-reliability.test.js && npm run test:mcp-oauth-reviewer && npm run test:dfcx-gate && npm run test:dfcx-gate-server && npm run test:vertex-scorer && npm run test:dashboard-chat && npm run test:gitar-integration && npm run test:secret-redaction && npm run test:discoverable-skills && npm run test:discoverable-skill-skills && npm run test:sync-telemetry && npm run test:leak-scanner && npm run test:team-sync && npm run test:rag-pipeline && npm run test:autonomous-reliability && npm run test:eval-rag && npm run test:async-eval-observability && npm run test:letta-adapter && npm run test:policy-engine-adapter && npm run test:tool-contract-validator && npm run test:check-update && npm run test:hermes-gate && npm run test:memory-provider-enforcement-bridge && npm run test:publisher-credential-guards && npm run test:reddit-browser-notification-watch && npm run test:payment-rails && npm run test:service-checkout-price-integrity && npm run test:cursor-marketplace-doctor && npm run test:plugin-hooks-manifest && npm run test:okara-money-promo-automation && npm run test:retrieval-window && npm run test:risk-quality && npm run test:eval-mining && npm run test:state-backup && npm run test:eval-golden && npm run test:task-scope-lease && npm run test:evaluations-page && npm run test:agent-install-paths && npm run test:mcp-gate-check && npm run test:adapter-pins && npm run test:secret-egress && npm run test:harness-tool-names && npm run test:feedback-reward && npm run test:capability-wiring",
|
|
468
|
+
"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:proof-pack-cadence && npm run test:grafana-revenue-evidence && npm run test:billing && npm run test:billing-setup && 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:canary && 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:platform-limits && npm run test:post-video && npm run test:post-everywhere-instagram && npm run test:post-everywhere-channels && 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:release-window && npm run test:check-congruence && npm run test:tool-registry && npm run test:repeat-metric && npm run test:noop-detect && npm run test:action-receipts && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:memory-scope-readiness && npm run test:belief-update && npm run test:hosted-config && npm run test:operational-summary && npm run test:operational-dashboard && npm run test:operator-artifacts && npm run test:operator-key-auth && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:mcp-tool-annotations && npm run test:mcp-oauth && npm run test:mcp-oauth-flow && npm run test:plan-gate && npm run test:ai-component-inventory && npm run test:verification-evidence && 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:entitlement && npm run test:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:imperative-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:statusline-cache-aggregate && npm run test:public-repo-hygiene && npm run test:no-internal-orchestration-leaks && 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:reconcile-thumbgate-campaign && npm run test:reddit-publisher && npm run test:schedule-thumbgate-campaign && npm run test:social-reply-monitor && npm run test:sync-launch-assets && npm run test:ai-search-visibility && npm run test:perplexity && npm run test:vlt && npm run test:hf-context && npm run test:proof-common && npm run test:xss-checkout-escape && 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:pricing-page-telemetry && 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: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:universal-claim-evaluator && 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:stop-hook-json-contract && npm run test:plausible-server-events && npm run test:activation-tracker && npm run test:activation-onboarding && 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:jsonl-window && npm run test:observability-env && npm run test:glama-mcp && npm run test:prove-glama-mcp && npm run test:public-bundle-ratchet && npm run test:pack-runtime-integrity && npm run test:hook-self-protection && npm run test:self-protect-enforcement && npm run test:never-bypass-branch-protection && npm run test:stripe-payment-link-update && npm run test:ci-cd-hygiene-audit && npm run test:verify-marketing-pages-deployed && npm run test:install-email-capture && npm run test:install-shim && npm run test:hook-runtime-subcommands && npm run test:implementation-notes && npm run test:daily-block-cap && npm run test:free-to-paid-conversion-units && npm run test:metrics-real-endpoint && npm run test:cli-trial-and-help && npm run test:cost-cli && npm run test:silent-failure-cluster && npm run test:proof:truth && node --test tests/adaptive-reliability.test.js && npm run test:mcp-oauth-reviewer && npm run test:dfcx-gate && npm run test:dfcx-gate-server && npm run test:vertex-scorer && npm run test:dashboard-chat && npm run test:gitar-integration && npm run test:secret-redaction && npm run test:discoverable-skills && npm run test:discoverable-skill-skills && npm run test:sync-telemetry && npm run test:leak-scanner && npm run test:team-sync && npm run test:rag-pipeline && npm run test:autonomous-reliability && npm run test:eval-rag && npm run test:async-eval-observability && npm run test:letta-adapter && npm run test:policy-engine-adapter && npm run test:tool-contract-validator && npm run test:check-update && npm run test:hermes-gate && npm run test:memory-provider-enforcement-bridge && npm run test:publisher-credential-guards && npm run test:reddit-browser-notification-watch && npm run test:payment-rails && npm run test:service-checkout-price-integrity && npm run test:cursor-marketplace-doctor && npm run test:plugin-hooks-manifest && npm run test:okara-money-promo-automation && npm run test:retrieval-window && npm run test:risk-quality && npm run test:eval-mining && npm run test:state-backup && npm run test:eval-golden && npm run test:task-scope-lease && npm run test:evaluations-page && npm run test:agent-install-paths && npm run test:mcp-gate-check && npm run test:adapter-pins && npm run test:secret-egress && npm run test:harness-tool-names && npm run test:feedback-reward && npm run test:capability-wiring",
|
|
467
469
|
"test:python": "python3 -m pytest tests/*.py",
|
|
468
470
|
"test:check-update": "node --test tests/check-update.test.js",
|
|
469
471
|
"test:hook-stop-verify-deploy": "node --test tests/hook-stop-verify-deploy.test.js",
|
|
@@ -617,7 +619,7 @@
|
|
|
617
619
|
"test:ops": "node --test tests/qa-scenario-planner.test.js tests/adk-consolidator.test.js tests/anthropic-partner-strategy.test.js tests/auto-promote-gates.test.js tests/auto-wire-hooks.test.js tests/claude-skill.test.js tests/codegraph-context.test.js tests/commercial-signals.test.js tests/decision-journal.test.js tests/delegation-runtime.test.js tests/disagreement-mining.test.js tests/failure-diagnostics.test.js tests/financial-control-plane.test.js tests/financial-spend-attack-matrix.test.js tests/gate-stats.test.js tests/gates-engine-upgrade-cta.test.js tests/git-hook-installer.test.js tests/github-billing.test.js tests/intervention-policy.test.js tests/markdown-escape.test.js tests/mcp-tools-gates.test.js tests/native-messaging-audit.test.js tests/project-bayes-e2e.test.js tests/project-bayes.test.js tests/rate-limiter.test.js tests/schedule-manager.test.js tests/session-handoff.test.js tests/skill-generator.test.js tests/smart-learning.test.js tests/spike-and-sink.test.js tests/stripe-revenue.test.js tests/stripe-webhook-route.test.js tests/stripe-webhook-rotation.test.js tests/train-from-feedback.test.js tests/workflow-hardening-sprint.test.js tests/workflow-sentinel.test.js tests/test-suite-parity.test.js tests/a2ui-engine.test.js tests/webhook-delivery.test.js tests/auto-context-packs.test.js tests/daily-block-cap.test.js tests/auto-promote-regression-gate.test.js tests/install-spend-guard.test.js tests/spend-guard-path-precision.test.js tests/spend-guard-hook-contract.test.js tests/enforcement-provenance.test.js",
|
|
618
620
|
"test:session-analyzer": "node --test tests/session-analyzer.test.js",
|
|
619
621
|
"test:tessl": "node --test tests/tessl-export.test.js",
|
|
620
|
-
"test:gates": "node --test --test-concurrency=1 tests/gate-templates.test.js tests/gates-engine.test.js tests/claim-verification.test.js tests/universal-claim-evaluator.test.js tests/secret-scanner.test.js tests/secret-fixture-safety.test.js tests/prompt-guard.test.js tests/audit-trail.test.js tests/profile-router.test.js tests/workflow-sentinel.test.js tests/docker-sandbox-planner.test.js tests/mcp-tools-suggest-fix.test.js tests/deny-network-egress-pattern.test.js tests/git-pathspec-scope.test.js tests/git-global-option-bypass.test.js tests/gate-evasion-matrix.test.js",
|
|
622
|
+
"test:gates": "node --test --test-concurrency=1 tests/gate-templates.test.js tests/gates-engine.test.js tests/gates-engine-outbound-email.test.js tests/claim-verification.test.js tests/universal-claim-evaluator.test.js tests/secret-scanner.test.js tests/secret-fixture-safety.test.js tests/prompt-guard.test.js tests/audit-trail.test.js tests/profile-router.test.js tests/workflow-sentinel.test.js tests/docker-sandbox-planner.test.js tests/mcp-tools-suggest-fix.test.js tests/deny-network-egress-pattern.test.js tests/git-pathspec-scope.test.js tests/git-global-option-bypass.test.js tests/gate-evasion-matrix.test.js",
|
|
621
623
|
"test:budget": "node --test tests/budget-guard.test.js tests/budget-enforcer.test.js tests/tokenomics-cost-guard.test.js tests/hook-no-budget-lockout.test.js",
|
|
622
624
|
"test:workers": "npm --prefix workers ci && npm --prefix workers test",
|
|
623
625
|
"test:evoskill": "node --test tests/evoskill.test.js",
|
|
@@ -803,7 +805,10 @@
|
|
|
803
805
|
"test:interaction-model": "node --test tests/interaction-model.test.js tests/interaction-model-e2e.test.js",
|
|
804
806
|
"aws-blocks:guardrails": "node scripts/aws-blocks-guardrails.js",
|
|
805
807
|
"test:aws-blocks-guardrails": "node --test tests/aws-blocks-guardrails.test.js",
|
|
806
|
-
"test:
|
|
808
|
+
"test:vlt": "node --test tests/vlt-proof.test.js",
|
|
809
|
+
"test:hf-context": "node --test tests/hf-context-course.test.js",
|
|
810
|
+
"test:proof-common": "node --test tests/proof-common.test.js",
|
|
811
|
+
"test:high-roi": "node --test tests/high-roi.test.js tests/model-candidates.test.js tests/autonomous-workflow.test.js tests/high-roi-agent-workflows.test.js tests/interaction-model.test.js tests/interaction-model-e2e.test.js tests/code-graph-guardrails.test.js tests/proxy-pointer-rag-guardrails.test.js tests/rag-precision-guardrails.test.js tests/ai-engineering-stack-guardrails.test.js tests/long-running-agent-context-guardrails.test.js tests/reasoning-efficiency-guardrails.test.js tests/deepseek-v4-runtime-guardrails.test.js tests/upstream-contribution-engine.test.js tests/proactive-agent-eval-guardrails.test.js tests/reward-hacking-guardrails.test.js tests/chatgpt-ads-readiness-pack.test.js tests/oss-pr-opportunity-scout.test.js tests/agent-design-governance.test.js tests/gemini-embedding-policy.test.js tests/openclaw-agent-governance-kit.test.js tests/agent-operations-planner.test.js tests/aws-blocks-guardrails.test.js tests/vlt-proof.test.js tests/hf-context-course.test.js tests/proof-common.test.js",
|
|
807
812
|
"test:public-static-assets": "node --test tests/public-static-assets.test.js tests/public-checkout-intent-gate.test.js tests/public-enterprise-capability-boundary.test.js",
|
|
808
813
|
"test:token-savings": "node --test tests/token-savings.test.js",
|
|
809
814
|
"test:cost-cli": "node --test tests/cost-cli.test.js tests/conversion-receipt.test.js",
|
|
@@ -857,7 +862,7 @@
|
|
|
857
862
|
"test:mcp-oauth-reviewer": "node --test tests/mcp-oauth-reviewer.test.js",
|
|
858
863
|
"test:dashboard-chat": "node --test tests/dashboard-chat.test.js",
|
|
859
864
|
"test:gitar-integration": "node --test tests/gitar-integration.test.js",
|
|
860
|
-
"test:api": "node --test --test-concurrency=1 tests/api-server.test.js tests/api-events-sse.test.js tests/api-auth-config.test.js tests/mcp-server.test.js tests/adapters.test.js tests/openapi-parity.test.js tests/budget-guard.test.js tests/context-manager.test.js tests/contextfs.test.js tests/job-api.test.js tests/pack-templates.test.js tests/dashboard.test.js tests/dashboard-render-spec.test.js tests/dashboard-html.test.js tests/agent-readiness.test.js tests/mcp-policy.test.js tests/subagent-profiles.test.js tests/intent-router.test.js tests/internal-agent-bootstrap.test.js tests/lesson-search.test.js tests/thumbgate-search.test.js tests/document-intake.test.js tests/rubric-engine.test.js tests/self-healing-check.test.js tests/self-heal.test.js tests/feedback-schema.test.js tests/thompson-sampling.test.js tests/feedback-sequences.test.js tests/diversity-tracking.test.js tests/vector-store.test.js tests/gemini-embedding-policy.test.js tests/feedback-attribution.test.js tests/hybrid-feedback-context.test.js tests/loop-closure.test.js tests/code-reasoning.test.js tests/feedback-loop.test.js tests/feedback-inbox-read.test.js tests/feedback-to-memory.test.js tests/test-coverage.test.js tests/version-metadata.test.js tests/claude-mcpb.test.js tests/claude-codex-bridge.test.js tests/cursor-plugin.test.js tests/codex-plugin.test.js tests/ide-marketplace-extensions.test.js tests/telemetry-analytics.test.js tests/public-landing.test.js tests/lessons-page.test.js tests/pro-landing.test.js tests/local-model-profile.test.js tests/risk-scorer.test.js tests/context-compaction.test.js tests/reminder-engine.test.js tests/verification-loop.test.js tests/async-job-runner.test.js tests/commerce-quality.test.js tests/recall-limit.test.js tests/problem-detail.test.js tests/natural-language-harness.test.js tests/settings-hierarchy.test.js tests/classifier-routing.test.js",
|
|
865
|
+
"test:api": "node --test --test-concurrency=1 tests/api-server.test.js tests/api-events-sse.test.js tests/api-auth-config.test.js tests/mcp-server.test.js tests/adapters.test.js tests/openapi-parity.test.js tests/budget-guard.test.js tests/context-manager.test.js tests/contextfs.test.js tests/job-api.test.js tests/pack-templates.test.js tests/dashboard.test.js tests/dashboard-jsonl-bound.test.js tests/dashboard-limits.test.js tests/cli-progress.test.js tests/dashboard-render-spec.test.js tests/dashboard-html.test.js tests/agent-readiness.test.js tests/mcp-policy.test.js tests/subagent-profiles.test.js tests/intent-router.test.js tests/internal-agent-bootstrap.test.js tests/lesson-search.test.js tests/thumbgate-search.test.js tests/document-intake.test.js tests/rubric-engine.test.js tests/self-healing-check.test.js tests/self-heal.test.js tests/feedback-schema.test.js tests/thompson-sampling.test.js tests/feedback-sequences.test.js tests/diversity-tracking.test.js tests/vector-store.test.js tests/gemini-embedding-policy.test.js tests/feedback-attribution.test.js tests/hybrid-feedback-context.test.js tests/loop-closure.test.js tests/code-reasoning.test.js tests/feedback-loop.test.js tests/feedback-inbox-read.test.js tests/feedback-to-memory.test.js tests/test-coverage.test.js tests/version-metadata.test.js tests/claude-mcpb.test.js tests/claude-codex-bridge.test.js tests/cursor-plugin.test.js tests/codex-plugin.test.js tests/ide-marketplace-extensions.test.js tests/telemetry-analytics.test.js tests/public-landing.test.js tests/lessons-page.test.js tests/pro-landing.test.js tests/local-model-profile.test.js tests/risk-scorer.test.js tests/context-compaction.test.js tests/reminder-engine.test.js tests/verification-loop.test.js tests/async-job-runner.test.js tests/commerce-quality.test.js tests/recall-limit.test.js tests/problem-detail.test.js tests/natural-language-harness.test.js tests/settings-hierarchy.test.js tests/classifier-routing.test.js",
|
|
861
866
|
"test:leak-scanner": "node --test tests/leak-scanner.test.js",
|
|
862
867
|
"test:tool-contract-validator": "node --test tests/tool-contract-validator.test.js",
|
|
863
868
|
"test:letta-adapter": "node --test tests/letta-adapter.test.js",
|
|
@@ -912,6 +917,10 @@
|
|
|
912
917
|
"explore:reliability:ci": "node scripts/prove-reliability.js --seed=42 --iterations=10",
|
|
913
918
|
"test:glama-mcp": "node --test tests/glama-mcp-start-contract.test.js",
|
|
914
919
|
"prove:glama-mcp": "node scripts/prove-glama-mcp-start.js",
|
|
920
|
+
"prove:vlt-governance": "node --test tests/vlt-proof.test.js",
|
|
921
|
+
"prove:hf-context-course": "node --test tests/hf-context-course.test.js",
|
|
922
|
+
"prove:vlt-governance-harness": "node scripts/prove-vlt.js",
|
|
923
|
+
"prove:hf-context-course-harness": "node scripts/prove-hf-context.js",
|
|
915
924
|
"test:prove-glama-mcp": "node --test tests/prove-glama-mcp-start.test.js",
|
|
916
925
|
"test:agent-install-paths": "node --test tests/agent-install-paths.test.js",
|
|
917
926
|
"test:mcp-gate-check": "node --test tests/mcp-gate-check-tool.test.js",
|
|
@@ -919,7 +928,7 @@
|
|
|
919
928
|
"test:secret-egress": "node --test tests/secret-egress-gate.test.js",
|
|
920
929
|
"test:harness-tool-names": "node --test tests/harness-tool-names.test.js",
|
|
921
930
|
"test:feedback-reward": "node --test tests/feedback-reward-score.test.js",
|
|
922
|
-
"test:capability-wiring": "node --test tests/capability-wiring-ratchet.test.js",
|
|
931
|
+
"test:capability-wiring": "node --test tests/capability-wiring-ratchet.test.js && node --test tests/prove-vlt-dogfood.test.js && node --test tests/context-engineering-checklist.test.js",
|
|
923
932
|
"test:llm-gateway": "node --test tests/llm-gateway-provider.test.js",
|
|
924
933
|
"test:request-envelope": "node --test tests/request-envelope.test.js",
|
|
925
934
|
"test:a-plus-evidence": "node --test tests/a-plus-evidence-scorecard.test.js",
|
|
@@ -928,7 +937,10 @@
|
|
|
928
937
|
"verify:claims": "node scripts/universal-claim-evaluator.js",
|
|
929
938
|
"spend-guard:install": "node scripts/install-spend-guard.js",
|
|
930
939
|
"spend-guard:diff": "node docs/guard/spend-guard-decision-diff.js",
|
|
931
|
-
"enforcement:provenance": "node scripts/enforcement-provenance-check.js"
|
|
940
|
+
"enforcement:provenance": "node scripts/enforcement-provenance-check.js",
|
|
941
|
+
"prove:vlt": "node scripts/prove-vlt-dogfood.js",
|
|
942
|
+
"test:vlt-dogfood": "node --test tests/prove-vlt-dogfood.test.js",
|
|
943
|
+
"test:context-engineering": "node --test tests/context-engineering-checklist.test.js"
|
|
932
944
|
},
|
|
933
945
|
"keywords": [
|
|
934
946
|
"mcp",
|
|
@@ -983,7 +995,7 @@
|
|
|
983
995
|
"node": ">=18.18.0"
|
|
984
996
|
},
|
|
985
997
|
"dependencies": {
|
|
986
|
-
"@anthropic-ai/sdk": "0.
|
|
998
|
+
"@anthropic-ai/sdk": "0.115.0",
|
|
987
999
|
"@google/genai": "2.7.0",
|
|
988
1000
|
"@lancedb/lancedb": "^0.30.0",
|
|
989
1001
|
"apache-arrow": "^18.1.0",
|
package/public/index.html
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
6
|
<meta name="generator" content="ThumbGate">
|
|
7
7
|
<meta name="author" content="Igor Ganapolsky">
|
|
8
|
-
<meta name="thumbgate-version" content="1.
|
|
8
|
+
<meta name="thumbgate-version" content="1.35.0">
|
|
9
9
|
__GOOGLE_SITE_VERIFICATION_META__
|
|
10
10
|
<link rel="icon" type="image/png" href="/thumbgate-icon.png">
|
|
11
11
|
<link rel="canonical" href="__APP_ORIGIN__/">
|
|
@@ -942,7 +942,7 @@ next decision recorded before execution</pre>
|
|
|
942
942
|
|
|
943
943
|
<footer>
|
|
944
944
|
<div class="shell footer-inner">
|
|
945
|
-
<span>ThumbGate · MIT License · npm v1.
|
|
945
|
+
<span>ThumbGate · MIT License · npm v1.35.0</span>
|
|
946
946
|
<div class="footer-links">
|
|
947
947
|
<a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
|
|
948
948
|
<a href="/guide">Technical setup</a>
|
package/public/numbers.html
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"alternateName": "thumbgate",
|
|
26
26
|
"applicationCategory": "DeveloperApplication",
|
|
27
27
|
"operatingSystem": "Cross-platform, Node.js >=18.18.0",
|
|
28
|
-
"softwareVersion": "1.
|
|
28
|
+
"softwareVersion": "1.35.0",
|
|
29
29
|
"url": "https://thumbgate-production.up.railway.app/numbers",
|
|
30
30
|
"dateModified": "2026-08-03",
|
|
31
31
|
"creator": {
|
|
@@ -202,7 +202,7 @@
|
|
|
202
202
|
<main class="container">
|
|
203
203
|
<h1>The Numbers</h1>
|
|
204
204
|
<p class="subtitle">Generated first-party operational snapshot from the ThumbGate runtime. This is not customer traction, install volume, revenue, or proof that a configured gate has fired.</p>
|
|
205
|
-
<div class="freshness">Updated: 2026-08-03 · Version 1.
|
|
205
|
+
<div class="freshness">Updated: 2026-08-03 · Version 1.35.0</div>
|
|
206
206
|
<div class="truth-note"><strong>Read this first:</strong> configured checks are inventory. Recorded blocks and warnings are usage evidence. This snapshot currently reports 0 recorded hard-block event(s) and 0 recorded warning event(s).</div>
|
|
207
207
|
|
|
208
208
|
<h2>Gate enforcement</h2>
|