thumbgate 1.31.0 โ 1.34.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 +40 -3
- package/adapters/opencode/opencode.json +1 -1
- package/bin/cli.js +21 -0
- package/config/gates/claim-verifiers.example.json +42 -0
- package/config/gates/claim-verifiers.json +25 -0
- package/config/mcp-allowlists.json +21 -0
- package/hooks/hooks.json +1 -1
- package/package.json +14 -9
- package/public/index.html +2 -2
- package/public/numbers.html +2 -2
- package/scripts/agent-readiness.js +110 -0
- package/scripts/auto-wire-hooks.js +20 -8
- package/scripts/cli-schema.js +14 -0
- package/scripts/feedback-schema.js +3 -0
- package/scripts/file-ledger-lock.js +130 -0
- package/scripts/financial-control-plane.js +1514 -0
- package/scripts/gates-engine.js +185 -7
- package/scripts/gemini-embedding-policy.js +1 -0
- package/scripts/hook-runtime.js +5 -0
- package/scripts/hook-stop-anti-claim.js +63 -3
- package/scripts/human-escalation.js +353 -41
- package/scripts/provider-action-normalizer.js +11 -4
- package/scripts/tool-registry.js +95 -5
- package/scripts/universal-claim-evaluator.js +767 -0
- package/scripts/vector-store.js +60 -27
- package/scripts/workflow-sentinel.js +77 -11
- package/server.json +2 -2
- package/src/api/server.js +2 -0
|
@@ -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.34.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.34.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.34.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.34.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.34.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.34.0"
|
|
27
27
|
- "thumbgate"
|
|
28
28
|
- "serve"
|
|
@@ -95,6 +95,19 @@ const {
|
|
|
95
95
|
listEscalations,
|
|
96
96
|
requestEscalation,
|
|
97
97
|
} = require('../../scripts/human-escalation');
|
|
98
|
+
const {
|
|
99
|
+
createPurchaseRequisition,
|
|
100
|
+
getFinancialControlRuntimeOptions,
|
|
101
|
+
getRuntimePrincipal,
|
|
102
|
+
listPurchaseRequisitions,
|
|
103
|
+
reconcilePurchaseLedger,
|
|
104
|
+
reservePurchaseRequisition,
|
|
105
|
+
settlePurchaseRequisition,
|
|
106
|
+
} = require('../../scripts/financial-control-plane');
|
|
107
|
+
const MCP_FINANCIAL_PRINCIPAL = getRuntimePrincipal();
|
|
108
|
+
const MCP_FINANCIAL_OPTIONS = getFinancialControlRuntimeOptions({
|
|
109
|
+
authenticatedPrincipal: MCP_FINANCIAL_PRINCIPAL,
|
|
110
|
+
});
|
|
98
111
|
const { recordReasoningTrace } = require('../../scripts/agent-reasoning-traces');
|
|
99
112
|
const { recordToolCall } = require('../../scripts/tool-kpi-tracker');
|
|
100
113
|
const {
|
|
@@ -315,7 +328,7 @@ const {
|
|
|
315
328
|
finalizeSession: finalizeFeedbackSession,
|
|
316
329
|
} = require('../../scripts/feedback-session');
|
|
317
330
|
|
|
318
|
-
const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.
|
|
331
|
+
const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.34.0' };
|
|
319
332
|
const COMMERCE_CATEGORIES = [
|
|
320
333
|
'product_recommendation',
|
|
321
334
|
'brand_compliance',
|
|
@@ -1368,6 +1381,20 @@ async function callToolInner(name, args) {
|
|
|
1368
1381
|
return toTextResult(requestEscalation(args));
|
|
1369
1382
|
case 'list_human_escalations':
|
|
1370
1383
|
return toTextResult(listEscalations({ status: args.status }).slice(0, Number(args.limit || 20)));
|
|
1384
|
+
case 'create_purchase_requisition':
|
|
1385
|
+
return toTextResult(createPurchaseRequisition(args, MCP_FINANCIAL_OPTIONS));
|
|
1386
|
+
case 'list_purchase_requisitions': {
|
|
1387
|
+
const rows = listPurchaseRequisitions(MCP_FINANCIAL_OPTIONS)
|
|
1388
|
+
.filter((entry) => !args.status || entry.status === args.status)
|
|
1389
|
+
.slice(0, Number(args.limit || 20));
|
|
1390
|
+
return toTextResult(rows);
|
|
1391
|
+
}
|
|
1392
|
+
case 'reserve_purchase_requisition':
|
|
1393
|
+
return toTextResult(reservePurchaseRequisition(args, MCP_FINANCIAL_OPTIONS));
|
|
1394
|
+
case 'settle_purchase_requisition':
|
|
1395
|
+
return toTextResult(settlePurchaseRequisition(args, MCP_FINANCIAL_OPTIONS));
|
|
1396
|
+
case 'reconcile_purchase_ledger':
|
|
1397
|
+
return toTextResult(reconcilePurchaseLedger(MCP_FINANCIAL_OPTIONS));
|
|
1371
1398
|
case 'verify_claim':
|
|
1372
1399
|
return toTextResult(verifyClaimEvidence(args.claim, { goalContract: args.goalContract }));
|
|
1373
1400
|
case 'require_evidence_for_claim': {
|
|
@@ -1382,6 +1409,9 @@ async function callToolInner(name, args) {
|
|
|
1382
1409
|
const missingActions = hasMatchingChecks
|
|
1383
1410
|
? Array.from(new Set(verification.checks.flatMap((check) => check.missing || [])))
|
|
1384
1411
|
: [];
|
|
1412
|
+
const factualMismatches = Array.isArray(verification.universal && verification.universal.checks)
|
|
1413
|
+
? verification.universal.checks.filter((check) => !check.passed)
|
|
1414
|
+
: [];
|
|
1385
1415
|
try {
|
|
1386
1416
|
const { recordAuditEvent } = require('../../scripts/audit-trail');
|
|
1387
1417
|
recordAuditEvent({
|
|
@@ -1393,13 +1423,16 @@ async function callToolInner(name, args) {
|
|
|
1393
1423
|
goalContract: verification.goalContract && verification.goalContract.matched
|
|
1394
1424
|
? verification.goalContract
|
|
1395
1425
|
: null,
|
|
1426
|
+
universalParsed: verification.universal ? verification.universal.parsedCount : 0,
|
|
1396
1427
|
},
|
|
1397
1428
|
decision: blocking ? 'deny' : 'allow',
|
|
1398
1429
|
gateId: verification.goalContract && verification.goalContract.matched
|
|
1399
1430
|
? 'completion_goal_contract'
|
|
1400
|
-
: 'completion_claim',
|
|
1431
|
+
: (factualMismatches.length > 0 ? 'completion_claim_factual' : 'completion_claim'),
|
|
1401
1432
|
message: blocking
|
|
1402
|
-
?
|
|
1433
|
+
? (factualMismatches.length > 0
|
|
1434
|
+
? `Completion claim blocked โ factual mismatch/unconfigured: ${factualMismatches.map((c) => c.message).join('; ')}`
|
|
1435
|
+
: `Completion claim blocked โ missing evidence: ${missingActions.join(', ') || 'unknown'}`)
|
|
1403
1436
|
: `Completion claim verified (${verification.verified ? 'evidence present' : 'no matching gate'})`,
|
|
1404
1437
|
source: 'completion-gate',
|
|
1405
1438
|
});
|
|
@@ -1413,6 +1446,8 @@ async function callToolInner(name, args) {
|
|
|
1413
1446
|
missingActions,
|
|
1414
1447
|
checks: verification.checks,
|
|
1415
1448
|
goalContract: verification.goalContract,
|
|
1449
|
+
universal: verification.universal,
|
|
1450
|
+
factualMismatches,
|
|
1416
1451
|
sessionId: args.sessionId || null,
|
|
1417
1452
|
});
|
|
1418
1453
|
}
|
|
@@ -1477,6 +1512,7 @@ async function callToolInner(name, args) {
|
|
|
1477
1512
|
mcp: args.mcp,
|
|
1478
1513
|
mcpToolCall: args.mcpToolCall,
|
|
1479
1514
|
budget: args.budget,
|
|
1515
|
+
financialControl: args.financialControl,
|
|
1480
1516
|
usage: args.usage,
|
|
1481
1517
|
}, {
|
|
1482
1518
|
provider: args.provider,
|
|
@@ -1486,6 +1522,7 @@ async function callToolInner(name, args) {
|
|
|
1486
1522
|
tokenEstimate: args.tokenEstimate,
|
|
1487
1523
|
costUsd: args.costUsd,
|
|
1488
1524
|
budget: args.budget,
|
|
1525
|
+
financialControl: args.financialControl,
|
|
1489
1526
|
repoPath: args.repoPath,
|
|
1490
1527
|
baseBranch: args.baseBranch,
|
|
1491
1528
|
affectedFiles: changedFiles.length > 0 ? changedFiles : undefined,
|
package/bin/cli.js
CHANGED
|
@@ -3236,6 +3236,16 @@ function aiInventory() {
|
|
|
3236
3236
|
console.log(payload);
|
|
3237
3237
|
}
|
|
3238
3238
|
|
|
3239
|
+
function verifyClaimsCmd() {
|
|
3240
|
+
const { runCli } = require(path.join(PKG_ROOT, 'scripts', 'universal-claim-evaluator'));
|
|
3241
|
+
process.exitCode = runCli(process.argv.slice(3));
|
|
3242
|
+
}
|
|
3243
|
+
|
|
3244
|
+
function claimStopCheckCmd() {
|
|
3245
|
+
const { main } = require(path.join(PKG_ROOT, 'scripts', 'hook-stop-anti-claim'));
|
|
3246
|
+
main();
|
|
3247
|
+
}
|
|
3248
|
+
|
|
3239
3249
|
function help() {
|
|
3240
3250
|
const v = pkgVersion();
|
|
3241
3251
|
const helpArgs = process.argv.slice(3);
|
|
@@ -3258,6 +3268,7 @@ function help() {
|
|
|
3258
3268
|
console.log(' explore Interactive TUI for lessons, gates, stats');
|
|
3259
3269
|
console.log(' dashboard Open the local ThumbGate dashboard');
|
|
3260
3270
|
console.log(' ai-inventory Scan AI/ML components and export ML-BOM evidence');
|
|
3271
|
+
console.log(' verify-claims --claim="..." Recheck factual claims against configured sources');
|
|
3261
3272
|
console.log(' doctor Audit runtime isolation + bootstrap context');
|
|
3262
3273
|
console.log(' break-glass --reason="..." Short TTL recovery if gates over-fire');
|
|
3263
3274
|
console.log(' brain [--write] Build the agent-readable context brain (lessons + rules + gates)');
|
|
@@ -3304,6 +3315,7 @@ function help() {
|
|
|
3304
3315
|
console.log(' cache-update Refresh Claude statusline cache from stdin');
|
|
3305
3316
|
console.log(' statusline-render Render ThumbGate Claude status line');
|
|
3306
3317
|
console.log(' hook-auto-capture Process Claude UserPromptSubmit inline feedback');
|
|
3318
|
+
console.log(' claim-stop-check Recheck configured factual claims before Claude stops');
|
|
3307
3319
|
console.log(' session-start Refresh local ThumbGate session cache');
|
|
3308
3320
|
console.log('');
|
|
3309
3321
|
|
|
@@ -3412,6 +3424,8 @@ const SUBCOMMAND_HELP = {
|
|
|
3412
3424
|
lessons: 'Usage: npx thumbgate lessons [--query="..."] [--limit=N]\n\nSearch the lesson database (Pro feature).',
|
|
3413
3425
|
search: 'Usage: npx thumbgate search <query>\n\nSearch ThumbGate knowledge base (Pro feature).',
|
|
3414
3426
|
'gate-check': 'Usage: npx thumbgate gate-check\n\nPreToolUse hook interface: reads tool call JSON from stdin, outputs gate verdict.',
|
|
3427
|
+
'claim-stop-check': 'Usage: npx thumbgate claim-stop-check\n\nClaude Stop-hook interface: reads the hook payload from stdin and blocks factual claims that disagree with configured sources.',
|
|
3428
|
+
'verify-claims': 'Usage: npx thumbgate verify-claims --claim="the row count is 1,284" [--config=.thumbgate/claim-verifiers.json] [--cwd=path] [--json]\n\nRecheck supported factual claims against operator-configured SQLite, filesystem, and JSON sources. Exits non-zero on mismatch, missing verifier, or verifier error.',
|
|
3415
3429
|
'hermes-gate': 'Usage: npx thumbgate hermes-gate\n\nNous Research Hermes Agent pre_tool_call shell hook: reads Hermes tool-call JSON from stdin, runs the ThumbGate gate pipeline (strict by default), and outputs {"decision":"block","reason":...} to veto or {} to allow. Gates terminal/patch/skill_manage etc. See adapters/hermes/config.yaml.',
|
|
3416
3430
|
'break-glass': 'Usage: npx thumbgate break-glass --reason="why" [--ttl=5m] [--json]\n\nShort-lived recovery path for over-firing gates. Allows hook settings edits and satisfies PR-create/thread-check gates without disabling core destructive-action protections.',
|
|
3417
3431
|
serve: 'Usage: npx thumbgate serve\n\nStart the MCP stdio server. This is for agent runtimes, not the local HTTP dashboard.',
|
|
@@ -3690,6 +3704,9 @@ switch (COMMAND) {
|
|
|
3690
3704
|
case 'hook-auto-capture':
|
|
3691
3705
|
hookAutoCapture();
|
|
3692
3706
|
break;
|
|
3707
|
+
case 'claim-stop-check':
|
|
3708
|
+
claimStopCheckCmd();
|
|
3709
|
+
break;
|
|
3693
3710
|
case 'session-start':
|
|
3694
3711
|
sessionStart();
|
|
3695
3712
|
break;
|
|
@@ -4185,6 +4202,10 @@ switch (COMMAND) {
|
|
|
4185
4202
|
case 'gate-stats':
|
|
4186
4203
|
gateStats();
|
|
4187
4204
|
break;
|
|
4205
|
+
case 'verify-claims':
|
|
4206
|
+
case 'verify-claim':
|
|
4207
|
+
verifyClaimsCmd();
|
|
4208
|
+
break;
|
|
4188
4209
|
case 'eval':
|
|
4189
4210
|
case 'prompt-eval':
|
|
4190
4211
|
evalCmd();
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"description": "Configured sources of truth for the universal claim evaluator. Copy to .thumbgate/claim-verifiers.json or config/gates/claim-verifiers.json. Queries and paths come only from this file โ never from claim text.",
|
|
4
|
+
"verifiers": [
|
|
5
|
+
{
|
|
6
|
+
"id": "orders-row-count",
|
|
7
|
+
"kind": "sqlite_count",
|
|
8
|
+
"match": {
|
|
9
|
+
"kinds": ["count"],
|
|
10
|
+
"subjects": ["row count", "rows", "orders", "order count", "total rows"]
|
|
11
|
+
},
|
|
12
|
+
"dbPath": "data/app.sqlite",
|
|
13
|
+
"query": "SELECT COUNT(*) AS n FROM orders"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "readme-line-count",
|
|
17
|
+
"kind": "file_lines",
|
|
18
|
+
"match": {
|
|
19
|
+
"kinds": ["file_lines"],
|
|
20
|
+
"paths": ["README.md"]
|
|
21
|
+
},
|
|
22
|
+
"path": "README.md"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "package-version",
|
|
26
|
+
"kind": "json_path",
|
|
27
|
+
"match": {
|
|
28
|
+
"kinds": ["value"],
|
|
29
|
+
"subjects": ["version", "package version"]
|
|
30
|
+
},
|
|
31
|
+
"path": "package.json",
|
|
32
|
+
"jsonPath": "version"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "nightly-invoices",
|
|
36
|
+
"kind": "json_path",
|
|
37
|
+
"claimTemplate": "The nightly batch built {{value}} invoices",
|
|
38
|
+
"path": "metrics.json",
|
|
39
|
+
"jsonPath": "nightly.invoices"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"description": "Default factual claim verifiers shipped with ThumbGate. Override with .thumbgate/claim-verifiers.json or THUMBGATE_CLAIM_VERIFIERS_PATH. Queries and paths are operator-owned โ never taken from claim text.",
|
|
4
|
+
"verifiers": [
|
|
5
|
+
{
|
|
6
|
+
"id": "package-version",
|
|
7
|
+
"kind": "json_path",
|
|
8
|
+
"match": {
|
|
9
|
+
"kinds": ["value"],
|
|
10
|
+
"subjects": ["version", "package version"]
|
|
11
|
+
},
|
|
12
|
+
"path": "package.json",
|
|
13
|
+
"jsonPath": "version"
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"id": "package-json-exists",
|
|
17
|
+
"kind": "file_exists",
|
|
18
|
+
"match": {
|
|
19
|
+
"kinds": ["file_exists"],
|
|
20
|
+
"paths": ["package.json"]
|
|
21
|
+
},
|
|
22
|
+
"path": "package.json"
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
"construct_context_pack",
|
|
14
14
|
"context_provenance",
|
|
15
15
|
"context_stuff_lessons",
|
|
16
|
+
"create_purchase_requisition",
|
|
16
17
|
"dashboard",
|
|
17
18
|
"describe_reliability_entity",
|
|
18
19
|
"describe_semantic_entity",
|
|
@@ -41,6 +42,7 @@
|
|
|
41
42
|
"list_harnesses",
|
|
42
43
|
"list_human_escalations",
|
|
43
44
|
"list_intents",
|
|
45
|
+
"list_purchase_requisitions",
|
|
44
46
|
"managed_agent_status",
|
|
45
47
|
"native_messaging_audit",
|
|
46
48
|
"open_feedback_session",
|
|
@@ -61,10 +63,12 @@
|
|
|
61
63
|
"recall",
|
|
62
64
|
"record_action_receipt",
|
|
63
65
|
"record_task_outcome",
|
|
66
|
+
"reconcile_purchase_ledger",
|
|
64
67
|
"reflect_on_feedback",
|
|
65
68
|
"register_claim_gate",
|
|
66
69
|
"report_product_issue",
|
|
67
70
|
"request_human_escalation",
|
|
71
|
+
"reserve_purchase_requisition",
|
|
68
72
|
"require_evidence_for_claim",
|
|
69
73
|
"retrieve_lessons",
|
|
70
74
|
"run_autoresearch",
|
|
@@ -76,6 +80,7 @@
|
|
|
76
80
|
"search_thumbgate",
|
|
77
81
|
"self_distill_status",
|
|
78
82
|
"session_report",
|
|
83
|
+
"settle_purchase_requisition",
|
|
79
84
|
"set_branch_governance",
|
|
80
85
|
"set_task_scope",
|
|
81
86
|
"settings_status",
|
|
@@ -91,6 +96,7 @@
|
|
|
91
96
|
"approve_protected_action",
|
|
92
97
|
"capture_feedback",
|
|
93
98
|
"check_operational_integrity",
|
|
99
|
+
"create_purchase_requisition",
|
|
94
100
|
"estimate_uncertainty",
|
|
95
101
|
"feedback_stats",
|
|
96
102
|
"feedback_summary",
|
|
@@ -102,6 +108,7 @@
|
|
|
102
108
|
"get_scope_state",
|
|
103
109
|
"get_task_outcomes",
|
|
104
110
|
"list_human_escalations",
|
|
111
|
+
"list_purchase_requisitions",
|
|
105
112
|
"open_feedback_session",
|
|
106
113
|
"parallel_workflow",
|
|
107
114
|
"plan_agent_design_governance",
|
|
@@ -114,15 +121,18 @@
|
|
|
114
121
|
"prevention_rules",
|
|
115
122
|
"recall",
|
|
116
123
|
"record_task_outcome",
|
|
124
|
+
"reconcile_purchase_ledger",
|
|
117
125
|
"reflect_on_feedback",
|
|
118
126
|
"report_product_issue",
|
|
119
127
|
"request_human_escalation",
|
|
128
|
+
"reserve_purchase_requisition",
|
|
120
129
|
"require_evidence_for_claim",
|
|
121
130
|
"retrieve_lessons",
|
|
122
131
|
"satisfy_gate",
|
|
123
132
|
"search_lessons",
|
|
124
133
|
"search_thumbgate",
|
|
125
134
|
"session_report",
|
|
135
|
+
"settle_purchase_requisition",
|
|
126
136
|
"set_branch_governance",
|
|
127
137
|
"set_task_scope",
|
|
128
138
|
"suggest_fix",
|
|
@@ -136,6 +146,7 @@
|
|
|
136
146
|
"capture_feedback",
|
|
137
147
|
"check_operational_integrity",
|
|
138
148
|
"commerce_recall",
|
|
149
|
+
"create_purchase_requisition",
|
|
139
150
|
"feedback_stats",
|
|
140
151
|
"feedback_summary",
|
|
141
152
|
"gate_check",
|
|
@@ -144,14 +155,18 @@
|
|
|
144
155
|
"get_scope_state",
|
|
145
156
|
"get_task_outcomes",
|
|
146
157
|
"list_human_escalations",
|
|
158
|
+
"list_purchase_requisitions",
|
|
147
159
|
"prevention_rules",
|
|
148
160
|
"recall",
|
|
149
161
|
"record_task_outcome",
|
|
162
|
+
"reconcile_purchase_ledger",
|
|
150
163
|
"request_human_escalation",
|
|
164
|
+
"reserve_purchase_requisition",
|
|
151
165
|
"retrieve_lessons",
|
|
152
166
|
"search_thumbgate",
|
|
153
167
|
"set_branch_governance",
|
|
154
168
|
"set_task_scope",
|
|
169
|
+
"settle_purchase_requisition",
|
|
155
170
|
"suggest_fix",
|
|
156
171
|
"track_action",
|
|
157
172
|
"verify_claim",
|
|
@@ -178,6 +193,7 @@
|
|
|
178
193
|
"list_harnesses",
|
|
179
194
|
"list_human_escalations",
|
|
180
195
|
"list_intents",
|
|
196
|
+
"list_purchase_requisitions",
|
|
181
197
|
"native_messaging_audit",
|
|
182
198
|
"perplexity_ask",
|
|
183
199
|
"perplexity_search",
|
|
@@ -190,6 +206,7 @@
|
|
|
190
206
|
"plan_proactive_agent_eval_guardrails",
|
|
191
207
|
"plan_reward_hacking_guardrails",
|
|
192
208
|
"recall",
|
|
209
|
+
"reconcile_purchase_ledger",
|
|
193
210
|
"require_evidence_for_claim",
|
|
194
211
|
"retrieve_lessons",
|
|
195
212
|
"search_lessons",
|
|
@@ -222,6 +239,7 @@
|
|
|
222
239
|
"list_harnesses",
|
|
223
240
|
"list_human_escalations",
|
|
224
241
|
"list_intents",
|
|
242
|
+
"list_purchase_requisitions",
|
|
225
243
|
"native_messaging_audit",
|
|
226
244
|
"perplexity_ask",
|
|
227
245
|
"perplexity_search",
|
|
@@ -234,6 +252,7 @@
|
|
|
234
252
|
"plan_proactive_agent_eval_guardrails",
|
|
235
253
|
"plan_reward_hacking_guardrails",
|
|
236
254
|
"recall",
|
|
255
|
+
"reconcile_purchase_ledger",
|
|
237
256
|
"require_evidence_for_claim",
|
|
238
257
|
"retrieve_lessons",
|
|
239
258
|
"run_harness",
|
|
@@ -259,6 +278,7 @@
|
|
|
259
278
|
"list_harnesses",
|
|
260
279
|
"list_human_escalations",
|
|
261
280
|
"list_intents",
|
|
281
|
+
"list_purchase_requisitions",
|
|
262
282
|
"native_messaging_audit",
|
|
263
283
|
"plan_agent_design_governance",
|
|
264
284
|
"plan_chatgpt_ads_readiness",
|
|
@@ -268,6 +288,7 @@
|
|
|
268
288
|
"plan_proactive_agent_eval_guardrails",
|
|
269
289
|
"plan_reward_hacking_guardrails",
|
|
270
290
|
"retrieve_lessons",
|
|
291
|
+
"reconcile_purchase_ledger",
|
|
271
292
|
"search_lessons",
|
|
272
293
|
"search_thumbgate",
|
|
273
294
|
"settings_status",
|
package/hooks/hooks.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thumbgate",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.34.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": {
|
|
@@ -117,6 +117,8 @@
|
|
|
117
117
|
"scripts/feedback-session.js",
|
|
118
118
|
"scripts/feedback-to-rules.js",
|
|
119
119
|
"scripts/feedback_quality_eval.py",
|
|
120
|
+
"scripts/file-ledger-lock.js",
|
|
121
|
+
"scripts/financial-control-plane.js",
|
|
120
122
|
"scripts/filesystem-search.js",
|
|
121
123
|
"scripts/fs-utils.js",
|
|
122
124
|
"scripts/grafana-revenue-evidence.js",
|
|
@@ -268,6 +270,7 @@
|
|
|
268
270
|
"scripts/task-outcomes.js",
|
|
269
271
|
"scripts/tool-kpi-tracker.js",
|
|
270
272
|
"scripts/upstream-contribution-engine.js",
|
|
273
|
+
"scripts/universal-claim-evaluator.js",
|
|
271
274
|
"scripts/user-profile.js",
|
|
272
275
|
"scripts/validate-workflow-contract.js",
|
|
273
276
|
"scripts/vector-store.js",
|
|
@@ -460,7 +463,7 @@
|
|
|
460
463
|
"social:prospect:bluesky": "node scripts/social-bluesky-prospecting.js",
|
|
461
464
|
"social:prospect:bluesky:dry": "node scripts/social-bluesky-prospecting.js --dry-run",
|
|
462
465
|
"social:reply-publish:bluesky:dry": "node scripts/social-reply-monitor-bluesky.js --publish-approved --dry-run",
|
|
463
|
-
"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: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",
|
|
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",
|
|
464
467
|
"test:python": "python3 -m pytest tests/*.py",
|
|
465
468
|
"test:check-update": "node --test tests/check-update.test.js",
|
|
466
469
|
"test:hook-stop-verify-deploy": "node --test tests/hook-stop-verify-deploy.test.js",
|
|
@@ -510,7 +513,7 @@
|
|
|
510
513
|
"eval:feedback": "node scripts/prompt-eval.js --from-feedback",
|
|
511
514
|
"eval:feedback-quality": "python3 scripts/feedback_quality_eval.py",
|
|
512
515
|
"eval:classifier": "python3 scripts/eval_gate_classifier.py",
|
|
513
|
-
"eval:rag": "node scripts/eval-rag.js",
|
|
516
|
+
"eval:rag": "node -r dotenv/config scripts/eval-rag.js",
|
|
514
517
|
"eval:quality": "node scripts/eval-quality-suite.js",
|
|
515
518
|
"test:eval-quality": "node --test tests/ragas-style-metrics.test.js tests/retrieval-ranking-eval.test.js tests/ir-metrics.test.js",
|
|
516
519
|
"test:eval-rag": "node --test tests/eval-rag.test.js tests/retrieval-hybrid-ablation.test.js",
|
|
@@ -599,7 +602,7 @@
|
|
|
599
602
|
"test:quality": "node --test tests/validate-feedback.test.js tests/feedback-quality-eval-python.test.js tests/eval-gate-classifier.test.js",
|
|
600
603
|
"test:intelligence": "node --test tests/intelligence.test.js",
|
|
601
604
|
"test:training-export": "node --test tests/training-export.test.js tests/databricks-export.test.js",
|
|
602
|
-
"test:deployment": "node --test tests/deployment.test.js tests/deploy-policy.test.js tests/publish-decision.test.js tests/changeset-check.test.js tests/release-notes.test.js tests/sonarcloud-workflow.test.js tests/package-boundary.test.js tests/public-package-boundary.test.js tests/packed-feedback-retrieval-e2e.test.js tests/packed-provider-payment-reconciler-e2e.test.js tests/packed-revenue-remediation-e2e.test.js",
|
|
605
|
+
"test:deployment": "node --test tests/deployment.test.js tests/deploy-policy.test.js tests/publish-decision.test.js tests/changeset-check.test.js tests/release-notes.test.js tests/sonarcloud-workflow.test.js tests/package-boundary.test.js tests/public-package-boundary.test.js tests/packed-feedback-retrieval-e2e.test.js tests/packed-provider-payment-reconciler-e2e.test.js tests/packed-revenue-remediation-e2e.test.js tests/prove-production-authenticated.test.js tests/verify-npm-githead.test.js",
|
|
603
606
|
"test:operational-integrity": "node --test tests/operational-integrity.test.js tests/sync-branch-protection.test.js",
|
|
604
607
|
"test:workflow": "node --test tests/parallel-workflow.test.js tests/parallel-workflow-public.test.js tests/workflow-contract.test.js tests/positioning-contract.test.js tests/docs-claim-hygiene.test.js tests/thumbgate-scope.test.js tests/workflow-runs.test.js tests/workflow-sprint-intake.test.js tests/workflow-intake-queue.test.js tests/revenue-pack-utils.test.js tests/apollo-acquisition.test.js tests/sales-pipeline.test.js tests/provider-payment-reconciler.test.js tests/reddit-dm-outreach-evidence.test.js tests/gtm-sales-evidence-commands.test.js tests/revenue-action-eligibility.test.js tests/revenue-evidence-remediation.test.js tests/gtm-revenue-action-eligibility.test.js tests/revenue-offer-ladder.test.js tests/revenue-offer-system.test.js tests/buyer-paths.test.js tests/github-outreach.test.js tests/enterprise-story.test.js tests/guide-conversion-path.test.js tests/buyer-intent-revenue-assist.test.js && node --test tests/eval-proof-pack-pages.test.js && npm run test:proof-pack-cadence",
|
|
605
608
|
"test:revenue-evidence-remediation": "node --test tests/revenue-evidence-remediation.test.js",
|
|
@@ -611,10 +614,10 @@
|
|
|
611
614
|
"test:evolution": "node --test tests/workspace-evolver.test.js",
|
|
612
615
|
"test:watcher": "node --test tests/jsonl-watcher.test.js",
|
|
613
616
|
"test:autoresearch": "node --test tests/autoresearch.test.js",
|
|
614
|
-
"test:ops": "node --test tests/qa-scenario-planner.test.js tests/adk-consolidator.test.js tests/anthropic-partner-strategy.test.js tests/auto-promote-gates.test.js tests/auto-wire-hooks.test.js tests/claude-skill.test.js tests/codegraph-context.test.js tests/commercial-signals.test.js tests/decision-journal.test.js tests/delegation-runtime.test.js tests/disagreement-mining.test.js tests/failure-diagnostics.test.js tests/gate-stats.test.js tests/gates-engine-upgrade-cta.test.js tests/git-hook-installer.test.js tests/github-billing.test.js tests/intervention-policy.test.js tests/markdown-escape.test.js tests/mcp-tools-gates.test.js tests/native-messaging-audit.test.js tests/project-bayes-e2e.test.js tests/project-bayes.test.js tests/rate-limiter.test.js tests/schedule-manager.test.js tests/session-handoff.test.js tests/skill-generator.test.js tests/smart-learning.test.js tests/spike-and-sink.test.js tests/stripe-revenue.test.js tests/stripe-webhook-route.test.js tests/stripe-webhook-rotation.test.js tests/train-from-feedback.test.js tests/workflow-hardening-sprint.test.js tests/workflow-sentinel.test.js tests/test-suite-parity.test.js tests/a2ui-engine.test.js tests/webhook-delivery.test.js tests/auto-context-packs.test.js tests/daily-block-cap.test.js tests/auto-promote-regression-gate.test.js",
|
|
617
|
+
"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/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",
|
|
615
618
|
"test:session-analyzer": "node --test tests/session-analyzer.test.js",
|
|
616
619
|
"test:tessl": "node --test tests/tessl-export.test.js",
|
|
617
|
-
"test:gates": "node --test --test-concurrency=1 tests/gate-templates.test.js tests/gates-engine.test.js tests/claim-verification.test.js tests/secret-scanner.test.js tests/secret-fixture-safety.test.js tests/prompt-guard.test.js tests/audit-trail.test.js tests/profile-router.test.js tests/workflow-sentinel.test.js tests/docker-sandbox-planner.test.js tests/mcp-tools-suggest-fix.test.js 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",
|
|
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",
|
|
618
621
|
"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",
|
|
619
622
|
"test:workers": "npm --prefix workers ci && npm --prefix workers test",
|
|
620
623
|
"test:evoskill": "node --test tests/evoskill.test.js",
|
|
@@ -898,8 +901,8 @@
|
|
|
898
901
|
"outreach:case-study": "node scripts/generate-case-study-outreach.js",
|
|
899
902
|
"test:proof-pack-cadence": "node --test tests/refresh-proof-pack.test.js tests/case-study-outreach.test.js",
|
|
900
903
|
"test:evaluations-page": "node --test tests/evaluations-page.test.js",
|
|
901
|
-
"prove:rag": "node scripts/prove-rag-pipeline.js",
|
|
902
|
-
"test:rag-pipeline": "node --test tests/rag-document-pipeline.test.js tests/rag-structured-output.test.js tests/rag-stage-contracts.test.js tests/prove-rag-pipeline.test.js tests/ir-metrics.test.js tests/retrieval-ranking-eval.test.js tests/pragmatic-hybrid-search.test.js",
|
|
904
|
+
"prove:rag": "node -r dotenv/config scripts/prove-rag-pipeline.js",
|
|
905
|
+
"test:rag-pipeline": "node --require dotenv/config --test tests/rag-document-pipeline.test.js tests/rag-structured-output.test.js tests/rag-stage-contracts.test.js tests/prove-rag-pipeline.test.js tests/ir-metrics.test.js tests/retrieval-ranking-eval.test.js tests/pragmatic-hybrid-search.test.js",
|
|
903
906
|
"eval:ranking": "node scripts/retrieval-ranking-eval.js",
|
|
904
907
|
"test:ir-metrics": "node --test tests/ir-metrics.test.js tests/retrieval-ranking-eval.test.js",
|
|
905
908
|
"test:pragmatic-hybrid": "node --test tests/pragmatic-hybrid-search.test.js",
|
|
@@ -920,7 +923,9 @@
|
|
|
920
923
|
"test:llm-gateway": "node --test tests/llm-gateway-provider.test.js",
|
|
921
924
|
"test:request-envelope": "node --test tests/request-envelope.test.js",
|
|
922
925
|
"test:a-plus-evidence": "node --test tests/a-plus-evidence-scorecard.test.js",
|
|
923
|
-
"score:a-plus": "node scripts/a-plus-evidence-scorecard.js"
|
|
926
|
+
"score:a-plus": "node scripts/a-plus-evidence-scorecard.js",
|
|
927
|
+
"test:universal-claim-evaluator": "node --test tests/universal-claim-evaluator.test.js",
|
|
928
|
+
"verify:claims": "node scripts/universal-claim-evaluator.js"
|
|
924
929
|
},
|
|
925
930
|
"keywords": [
|
|
926
931
|
"mcp",
|
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.34.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.34.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.34.0",
|
|
29
29
|
"url": "https://thumbgate.ai/numbers",
|
|
30
30
|
"dateModified": "2026-05-07",
|
|
31
31
|
"creator": {
|
|
@@ -203,7 +203,7 @@
|
|
|
203
203
|
<main class="container">
|
|
204
204
|
<h1>The Numbers</h1>
|
|
205
205
|
<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>
|
|
206
|
-
<div class="freshness">Updated: 2026-05-07 ยท Version 1.
|
|
206
|
+
<div class="freshness">Updated: 2026-05-07 ยท Version 1.34.0</div>
|
|
207
207
|
<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>
|
|
208
208
|
|
|
209
209
|
<h2>Gate enforcement</h2>
|