thumbgate 0.9.9 → 0.9.11
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/README.md +4 -4
- package/.claude-plugin/marketplace.json +4 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +115 -312
- package/adapters/README.md +2 -2
- package/adapters/amp/skills/{rlhf-feedback → thumbgate-feedback}/SKILL.md +1 -1
- package/adapters/chatgpt/openapi.yaml +2 -2
- package/adapters/claude/.mcp.json +3 -3
- package/adapters/codex/config.toml +4 -4
- package/adapters/gemini/function-declarations.json +1 -1
- package/adapters/mcp/server-stdio.js +66 -6
- package/adapters/opencode/opencode.json +4 -2
- package/bin/cli.js +188 -39
- package/config/e2e-critical-flows.json +4 -0
- package/config/gates/default.json +74 -2
- package/config/github-about.json +1 -1
- package/config/mcp-allowlists.json +33 -6
- package/config/skill-packs/react-testing.json +1 -1
- package/config/tessl-tiles.json +3 -3
- package/openapi/openapi.yaml +2 -2
- package/package.json +23 -9
- package/plugins/amp-skill/INSTALL.md +3 -2
- package/plugins/amp-skill/SKILL.md +1 -0
- package/plugins/claude-codex-bridge/.claude-plugin/plugin.json +1 -1
- package/plugins/claude-codex-bridge/.mcp.json +5 -3
- package/plugins/claude-codex-bridge/README.md +1 -1
- package/plugins/claude-codex-bridge/skills/setup/SKILL.md +1 -1
- package/plugins/claude-skill/INSTALL.md +4 -3
- package/plugins/claude-skill/SKILL.md +1 -1
- package/plugins/codex-profile/.codex-plugin/plugin.json +1 -1
- package/plugins/codex-profile/.mcp.json +5 -3
- package/plugins/codex-profile/INSTALL.md +2 -2
- package/plugins/codex-profile/README.md +1 -1
- package/plugins/cursor-marketplace/.cursor-plugin/plugin.json +1 -1
- package/plugins/cursor-marketplace/README.md +5 -5
- package/plugins/cursor-marketplace/mcp.json +4 -2
- package/plugins/cursor-marketplace/rules/pre-action-gates.mdc +1 -1
- package/plugins/cursor-marketplace/scripts/gate-check.sh +15 -5
- package/plugins/gemini-extension/INSTALL.md +4 -4
- package/plugins/opencode-profile/INSTALL.md +5 -5
- package/public/dashboard.html +15 -8
- package/public/index.html +134 -375
- package/public/js/buyer-intent.js +252 -0
- package/public/pro.html +1085 -0
- package/scripts/__pycache__/train_from_feedback.cpython-312.pyc +0 -0
- package/scripts/adk-consolidator.js +17 -5
- package/scripts/agent-readiness.js +3 -1
- package/scripts/agent-security-hardening.js +4 -4
- package/scripts/auto-promote-gates.js +8 -0
- package/scripts/auto-wire-hooks.js +105 -21
- package/scripts/billing.js +111 -7
- package/scripts/build-metadata.js +14 -0
- package/scripts/check-congruence.js +1 -1
- package/scripts/context-engine.js +2 -1
- package/scripts/daemon-manager.js +2 -2
- package/scripts/dashboard.js +2 -2
- package/scripts/data-governance.js +1 -1
- package/scripts/deploy-gcp.sh +1 -1
- package/scripts/deploy-policy.js +22 -4
- package/scripts/dispatch-brief.js +1 -1
- package/scripts/ensure-repo-bootstrap.js +1 -1
- package/scripts/feedback-attribution.js +22 -10
- package/scripts/feedback-fallback.js +3 -2
- package/scripts/feedback-inbox-read.js +1 -1
- package/scripts/feedback-loop.js +41 -3
- package/scripts/feedback-paths.js +8 -8
- package/scripts/feedback-schema.js +1 -1
- package/scripts/feedback-to-memory.js +2 -2
- package/scripts/filesystem-search.js +2 -2
- package/scripts/gates-engine.js +765 -34
- package/scripts/generate-paperbanana-diagrams.sh +3 -3
- package/scripts/github-about.js +1 -1
- package/scripts/gtm-revenue-loop.js +20 -1
- package/scripts/hook-runtime.js +89 -0
- package/scripts/hook-stop-self-score.sh +3 -3
- package/scripts/hook-thumbgate-cache-updater.js +98 -37
- package/scripts/hosted-config.js +12 -10
- package/scripts/hybrid-feedback-context.js +54 -13
- package/scripts/install-mcp.js +14 -1
- package/scripts/intent-router.js +1 -1
- package/scripts/internal-agent-bootstrap.js +1 -1
- package/scripts/lesson-inference.js +6 -1
- package/scripts/license.js +54 -16
- package/scripts/mcp-config.js +69 -7
- package/scripts/memory-migration.js +1 -1
- package/scripts/money-watcher.js +166 -16
- package/scripts/operational-integrity.js +480 -0
- package/scripts/optimize-context.js +1 -1
- package/scripts/perplexity-marketing.js +1 -1
- package/scripts/post-everywhere.js +7 -12
- package/scripts/post-to-x.js +1 -1
- package/scripts/pr-manager.js +14 -11
- package/scripts/problem-detail.js +10 -10
- package/scripts/profile-router.js +2 -0
- package/scripts/prompt-dlp.js +1 -0
- package/scripts/prove-adapters.js +6 -6
- package/scripts/prove-automation.js +1 -1
- package/scripts/prove-autoresearch.js +1 -1
- package/scripts/prove-claim-verification.js +3 -3
- package/scripts/prove-data-pipeline.js +5 -5
- package/scripts/prove-data-quality.js +1 -1
- package/scripts/prove-evolution.js +7 -7
- package/scripts/prove-harnesses.js +2 -2
- package/scripts/prove-lancedb.js +2 -2
- package/scripts/prove-local-intelligence.js +1 -1
- package/scripts/prove-loop-closure.js +1 -1
- package/scripts/prove-predictive-insights.js +2 -2
- package/scripts/prove-runtime.js +6 -6
- package/scripts/prove-seo-gsd.js +1 -1
- package/scripts/prove-settings.js +4 -4
- package/scripts/prove-subway-upgrades.js +1 -1
- package/scripts/prove-tessl.js +2 -2
- package/scripts/prove-xmemory.js +2 -2
- package/scripts/publish-decision.js +10 -0
- package/scripts/published-cli.js +34 -0
- package/scripts/rate-limiter.js +2 -2
- package/scripts/reddit-monitor-cron.sh +2 -2
- package/scripts/reminder-engine.js +1 -1
- package/scripts/schedule-manager.js +3 -3
- package/scripts/self-healing-check.js +1 -1
- package/scripts/shieldcortex-memory-firewall-runner.mjs +1 -1
- package/scripts/skill-quality-tracker.js +1 -1
- package/scripts/social-analytics/db/social-analytics.db-shm +0 -0
- package/scripts/social-analytics/db/social-analytics.db-wal +0 -0
- package/scripts/social-analytics/engagement-audit.js +202 -0
- package/scripts/social-analytics/generate-instagram-card.js +1 -1
- package/scripts/social-analytics/instagram-thumbgate-post.js +5 -1
- package/scripts/social-analytics/install-growth-automation.js +114 -0
- package/scripts/social-analytics/publish-instagram-thumbgate.js +8 -2
- package/scripts/social-analytics/publish-thumbgate-launch.js +1 -1
- package/scripts/social-analytics/publishers/reddit.js +7 -12
- package/scripts/social-analytics/publishers/zernio.js +19 -0
- package/scripts/social-analytics/reconcile-thumbgate-campaign.js +165 -0
- package/scripts/social-analytics/schedule-thumbgate-campaign.js +275 -0
- package/scripts/social-analytics/sync-launch-assets.js +185 -0
- package/scripts/social-pipeline.js +2 -2
- package/scripts/social-post-hourly.js +185 -0
- package/scripts/social-quality-gate.js +119 -3
- package/scripts/social-reply-monitor.js +150 -34
- package/scripts/statusline-cache-path.js +27 -0
- package/scripts/statusline-meta.js +22 -0
- package/scripts/statusline.sh +24 -32
- package/scripts/sync-version.js +24 -12
- package/scripts/telemetry-analytics.js +4 -4
- package/scripts/tessl-export.js +1 -1
- package/scripts/test-coverage.js +20 -13
- package/scripts/thumbgate-search.js +2 -2
- package/scripts/tool-registry.js +98 -1
- package/scripts/train_from_feedback.py +1 -1
- package/scripts/user-profile.js +4 -4
- package/scripts/validate-feedback.js +1 -1
- package/scripts/vector-store.js +1 -1
- package/scripts/verification-loop.js +1 -1
- package/scripts/verify-run.js +1 -1
- package/scripts/weekly-auto-post.js +1 -1
- package/skills/{rlhf-feedback → thumbgate-feedback}/SKILL.md +1 -1
- package/src/api/server.js +291 -41
- package/scripts/__pycache__/train_from_feedback.cpython-314.pyc +0 -0
- package/scripts/social-analytics/db/social-analytics.db +0 -0
|
@@ -4,10 +4,54 @@
|
|
|
4
4
|
{
|
|
5
5
|
"id": "local-only-git-writes",
|
|
6
6
|
"layer": "Identity",
|
|
7
|
-
"pattern": "^(git\\s+(add|commit|push)|gh\\s+pr\\s+)",
|
|
7
|
+
"pattern": "^(git\\s+(add|commit|push|tag)|gh\\s+pr\\s+|gh\\s+release\\s+create|npm\\s+publish|yarn\\s+publish|pnpm\\s+publish)",
|
|
8
8
|
"action": "block",
|
|
9
9
|
"when": { "constraints": { "local_only": true } },
|
|
10
|
-
"message": "User requested local-only work. Git writes
|
|
10
|
+
"message": "User requested local-only work. Git writes, PR operations, and release actions are blocked.",
|
|
11
|
+
"severity": "critical"
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
"id": "task-scope-required",
|
|
15
|
+
"layer": "Decisions",
|
|
16
|
+
"toolNames": ["Bash"],
|
|
17
|
+
"pattern": "^(git\\s+(add|commit|push)|gh\\s+pr\\s+(create|merge)|gh\\s+release\\s+create|git\\s+tag\\b|npm\\s+publish|yarn\\s+publish|pnpm\\s+publish)",
|
|
18
|
+
"requireTaskScope": true,
|
|
19
|
+
"action": "block",
|
|
20
|
+
"message": "Git write, PR, release, and publish operations require an explicit task scope.",
|
|
21
|
+
"severity": "critical"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "task-scope-edit-boundary",
|
|
25
|
+
"layer": "Decisions",
|
|
26
|
+
"toolNames": ["Edit", "Write", "MultiEdit"],
|
|
27
|
+
"pattern": ".*",
|
|
28
|
+
"requireTaskScope": true,
|
|
29
|
+
"scopeMode": "declared-only",
|
|
30
|
+
"action": "block",
|
|
31
|
+
"message": "Edits outside the declared task scope are blocked once a task scope is active.",
|
|
32
|
+
"severity": "critical"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "protected-file-approval-required",
|
|
36
|
+
"layer": "Decisions",
|
|
37
|
+
"toolNames": ["Edit", "Write", "MultiEdit", "Bash"],
|
|
38
|
+
"pattern": ".*",
|
|
39
|
+
"requireProtectedApproval": true,
|
|
40
|
+
"protectedGlobs": [
|
|
41
|
+
"AGENTS.md",
|
|
42
|
+
"CLAUDE.md",
|
|
43
|
+
"CLAUDE.local.md",
|
|
44
|
+
"GEMINI.md",
|
|
45
|
+
"README.md",
|
|
46
|
+
".gitignore",
|
|
47
|
+
".husky/**",
|
|
48
|
+
".claude/**",
|
|
49
|
+
"skills/**",
|
|
50
|
+
"SKILL.md",
|
|
51
|
+
"config/gates/**"
|
|
52
|
+
],
|
|
53
|
+
"action": "block",
|
|
54
|
+
"message": "Protected files require explicit approval before editing or publishing.",
|
|
11
55
|
"severity": "critical"
|
|
12
56
|
},
|
|
13
57
|
{
|
|
@@ -28,6 +72,34 @@
|
|
|
28
72
|
"message": "PR merging requires explicit 'pr_merge_allowed' satisfaction with evidence of user permission.",
|
|
29
73
|
"severity": "high"
|
|
30
74
|
},
|
|
75
|
+
{
|
|
76
|
+
"id": "branch-governance-required",
|
|
77
|
+
"layer": "Decisions",
|
|
78
|
+
"toolNames": ["Bash"],
|
|
79
|
+
"pattern": "^(gh\\s+pr\\s+(create|merge)|gh\\s+release\\s+create|git\\s+tag\\b|npm\\s+publish|yarn\\s+publish|pnpm\\s+publish)",
|
|
80
|
+
"requireBranchGovernance": true,
|
|
81
|
+
"action": "block",
|
|
82
|
+
"message": "PR, release, and publish actions require explicit branch governance.",
|
|
83
|
+
"severity": "critical"
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
"id": "release-readiness-required",
|
|
87
|
+
"layer": "Execution",
|
|
88
|
+
"toolNames": ["Bash"],
|
|
89
|
+
"pattern": "^(gh\\s+release\\s+create|git\\s+tag\\b|npm\\s+publish|yarn\\s+publish|pnpm\\s+publish)",
|
|
90
|
+
"requireReleaseReadiness": true,
|
|
91
|
+
"action": "block",
|
|
92
|
+
"message": "Release and publish actions require a releasable mainline commit and a matching version plan.",
|
|
93
|
+
"severity": "critical"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "admin-merge-bypass-blocked",
|
|
97
|
+
"layer": "Execution",
|
|
98
|
+
"pattern": "gh\\s+pr\\s+merge.*--admin",
|
|
99
|
+
"action": "block",
|
|
100
|
+
"message": "Admin merge bypass is blocked. Use the merge queue or normal protected-branch flow.",
|
|
101
|
+
"severity": "critical"
|
|
102
|
+
},
|
|
31
103
|
{
|
|
32
104
|
"id": "loop-abuse-prevention",
|
|
33
105
|
"layer": "Decisions",
|
package/config/github-about.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"repo": "IgorGanapolsky/ThumbGate",
|
|
3
3
|
"repositoryUrl": "https://github.com/IgorGanapolsky/ThumbGate",
|
|
4
4
|
"homepageUrl": "https://thumbgate-production.up.railway.app",
|
|
5
|
-
"description": "Pre-action gates for AI coding agents.
|
|
5
|
+
"description": "Pre-action gates for AI coding agents. 👎 Thumbs down → prevention rule → mistake permanently blocked. 👍 Thumbs up → pattern reinforced. History-aware lessons from your corrections. Team adds shared lessons and org visibility.",
|
|
6
6
|
"topics": [
|
|
7
7
|
"thumbgate",
|
|
8
8
|
"pre-action-gates",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"feedback_summary",
|
|
11
11
|
"search_lessons",
|
|
12
12
|
"retrieve_lessons",
|
|
13
|
-
"
|
|
13
|
+
"search_thumbgate",
|
|
14
14
|
"reflect_on_feedback",
|
|
15
15
|
"feedback_stats",
|
|
16
16
|
"diagnose_failure",
|
|
@@ -28,8 +28,14 @@
|
|
|
28
28
|
"commerce_recall",
|
|
29
29
|
"generate_skill",
|
|
30
30
|
"satisfy_gate",
|
|
31
|
+
"set_task_scope",
|
|
32
|
+
"get_scope_state",
|
|
33
|
+
"set_branch_governance",
|
|
34
|
+
"get_branch_governance",
|
|
35
|
+
"approve_protected_action",
|
|
31
36
|
"track_action",
|
|
32
37
|
"verify_claim",
|
|
38
|
+
"check_operational_integrity",
|
|
33
39
|
"register_claim_gate",
|
|
34
40
|
"gate_stats",
|
|
35
41
|
"dashboard",
|
|
@@ -52,11 +58,17 @@
|
|
|
52
58
|
"recall",
|
|
53
59
|
"search_lessons",
|
|
54
60
|
"retrieve_lessons",
|
|
55
|
-
"
|
|
61
|
+
"search_thumbgate",
|
|
56
62
|
"reflect_on_feedback",
|
|
57
63
|
"prevention_rules",
|
|
64
|
+
"set_task_scope",
|
|
65
|
+
"get_scope_state",
|
|
66
|
+
"set_branch_governance",
|
|
67
|
+
"get_branch_governance",
|
|
68
|
+
"approve_protected_action",
|
|
58
69
|
"track_action",
|
|
59
70
|
"verify_claim",
|
|
71
|
+
"check_operational_integrity",
|
|
60
72
|
"feedback_stats",
|
|
61
73
|
"feedback_summary",
|
|
62
74
|
"estimate_uncertainty",
|
|
@@ -66,10 +78,16 @@
|
|
|
66
78
|
"capture_feedback",
|
|
67
79
|
"recall",
|
|
68
80
|
"retrieve_lessons",
|
|
69
|
-
"
|
|
81
|
+
"search_thumbgate",
|
|
70
82
|
"commerce_recall",
|
|
83
|
+
"set_task_scope",
|
|
84
|
+
"get_scope_state",
|
|
85
|
+
"set_branch_governance",
|
|
86
|
+
"get_branch_governance",
|
|
87
|
+
"approve_protected_action",
|
|
71
88
|
"track_action",
|
|
72
89
|
"verify_claim",
|
|
90
|
+
"check_operational_integrity",
|
|
73
91
|
"prevention_rules",
|
|
74
92
|
"feedback_stats",
|
|
75
93
|
"feedback_summary"
|
|
@@ -79,7 +97,7 @@
|
|
|
79
97
|
"feedback_summary",
|
|
80
98
|
"search_lessons",
|
|
81
99
|
"retrieve_lessons",
|
|
82
|
-
"
|
|
100
|
+
"search_thumbgate",
|
|
83
101
|
"feedback_stats",
|
|
84
102
|
"diagnose_failure",
|
|
85
103
|
"list_harnesses",
|
|
@@ -88,7 +106,10 @@
|
|
|
88
106
|
"start_handoff",
|
|
89
107
|
"complete_handoff",
|
|
90
108
|
"context_provenance",
|
|
109
|
+
"get_scope_state",
|
|
110
|
+
"get_branch_governance",
|
|
91
111
|
"verify_claim",
|
|
112
|
+
"check_operational_integrity",
|
|
92
113
|
"gate_stats",
|
|
93
114
|
"dashboard",
|
|
94
115
|
"settings_status",
|
|
@@ -102,7 +123,7 @@
|
|
|
102
123
|
"feedback_summary",
|
|
103
124
|
"search_lessons",
|
|
104
125
|
"retrieve_lessons",
|
|
105
|
-
"
|
|
126
|
+
"search_thumbgate",
|
|
106
127
|
"feedback_stats",
|
|
107
128
|
"diagnose_failure",
|
|
108
129
|
"list_harnesses",
|
|
@@ -110,7 +131,10 @@
|
|
|
110
131
|
"plan_intent",
|
|
111
132
|
"run_harness",
|
|
112
133
|
"context_provenance",
|
|
134
|
+
"get_scope_state",
|
|
135
|
+
"get_branch_governance",
|
|
113
136
|
"verify_claim",
|
|
137
|
+
"check_operational_integrity",
|
|
114
138
|
"gate_stats",
|
|
115
139
|
"dashboard",
|
|
116
140
|
"settings_status",
|
|
@@ -123,12 +147,15 @@
|
|
|
123
147
|
"feedback_summary",
|
|
124
148
|
"search_lessons",
|
|
125
149
|
"retrieve_lessons",
|
|
126
|
-
"
|
|
150
|
+
"search_thumbgate",
|
|
127
151
|
"diagnose_failure",
|
|
128
152
|
"list_intents",
|
|
129
153
|
"plan_intent",
|
|
130
154
|
"list_harnesses",
|
|
155
|
+
"get_scope_state",
|
|
156
|
+
"get_branch_governance",
|
|
131
157
|
"verify_claim",
|
|
158
|
+
"check_operational_integrity",
|
|
132
159
|
"settings_status"
|
|
133
160
|
]
|
|
134
161
|
}
|
package/config/tessl-tiles.json
CHANGED
|
@@ -17,12 +17,12 @@
|
|
|
17
17
|
]
|
|
18
18
|
},
|
|
19
19
|
{
|
|
20
|
-
"id": "
|
|
21
|
-
"tileName": "
|
|
20
|
+
"id": "thumbgate-feedback",
|
|
21
|
+
"tileName": "thumbgate-feedback",
|
|
22
22
|
"summary": "Thumbs up and thumbs down capture that turns agent feedback into structured memories and prevention rules.",
|
|
23
23
|
"private": false,
|
|
24
24
|
"sourceSkills": [
|
|
25
|
-
"
|
|
25
|
+
"thumbgate-feedback"
|
|
26
26
|
]
|
|
27
27
|
}
|
|
28
28
|
]
|
package/openapi/openapi.yaml
CHANGED
|
@@ -1009,7 +1009,7 @@ paths:
|
|
|
1009
1009
|
description: Unauthorized
|
|
1010
1010
|
/v1/search:
|
|
1011
1011
|
get:
|
|
1012
|
-
operationId:
|
|
1012
|
+
operationId: searchThumbgate
|
|
1013
1013
|
parameters:
|
|
1014
1014
|
- in: query
|
|
1015
1015
|
name: q
|
|
@@ -1038,7 +1038,7 @@ paths:
|
|
|
1038
1038
|
'401':
|
|
1039
1039
|
description: Unauthorized
|
|
1040
1040
|
post:
|
|
1041
|
-
operationId:
|
|
1041
|
+
operationId: searchThumbgatePost
|
|
1042
1042
|
requestBody:
|
|
1043
1043
|
required: true
|
|
1044
1044
|
content:
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thumbgate",
|
|
3
|
-
"version": "0.9.
|
|
4
|
-
"description": "ThumbGate
|
|
3
|
+
"version": "0.9.11",
|
|
4
|
+
"description": "ThumbGate \u2014 Make your AI coding agent self-improving. Every mistake becomes a prevention rule that physically blocks the agent from repeating it. Feedback-driven enforcement via PreToolUse hooks, Thompson Sampling for adaptive gates, SQLite+FTS5 lesson DB, and LanceDB vector search. Your agent gets smarter with every session.",
|
|
5
5
|
"homepage": "https://thumbgate-production.up.railway.app",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -12,8 +12,7 @@
|
|
|
12
12
|
},
|
|
13
13
|
"main": "scripts/feedback-loop.js",
|
|
14
14
|
"bin": {
|
|
15
|
-
"thumbgate": "bin/cli.js"
|
|
16
|
-
"rlhf": "bin/cli.js"
|
|
15
|
+
"thumbgate": "bin/cli.js"
|
|
17
16
|
},
|
|
18
17
|
"files": [
|
|
19
18
|
"bin/",
|
|
@@ -65,10 +64,9 @@
|
|
|
65
64
|
"social:mcp": "node scripts/social-analytics/mcp-server.js",
|
|
66
65
|
"social:post-everywhere": "node scripts/post-everywhere.js",
|
|
67
66
|
"social:post-everywhere:dry": "node scripts/post-everywhere.js --dry-run",
|
|
68
|
-
"social:publish:launch": "node scripts/social-analytics/publish-thumbgate-launch.js",
|
|
69
67
|
"social:reply-monitor": "node scripts/social-reply-monitor.js",
|
|
70
68
|
"social:reply-monitor:dry": "node scripts/social-reply-monitor.js --dry-run",
|
|
71
|
-
"test": "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:workflow && npm run test:billing && npm run test:cli && npm run test:watcher && npm run test:autoresearch && npm run test:ops && npm run test:tessl && npm run test:gates && npm run test:evoskill && npm run test:gates-hardening && npm run test:workers && npm run test:social-analytics && npm run test:memalign && npm run test:xmemory-lite && npm run test:filesystem-search && npm run test:zernio && npm run test:obsidian-export && npm run test:lesson-db && npm run test:lesson-rotation && npm run test:memory-dedup && npm run test:feedback-quality && npm run test:sync-version && npm run test:check-congruence && npm run test:tool-registry && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:belief-update && npm run test:hosted-config && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:plan-gate && npm run test:pulse && npm run test:semantic-layer && npm run test:data-pipeline && npm run test:optimize-context && npm run test:principle-extractor && npm run test:analytics-window && npm run test:funnel-analytics && npm run test:experiment-tracker && npm run test:build-metadata && npm run test:context-engine && npm run test:hf-papers && npm run test:marketing-experiment && npm run test:seo-gsd && npm run test:verify-run && npm run test:export-dpo-pairs && npm run test:license && npm run test:bot-detector && npm run test:postinstall && npm run test:funnel-invariants && npm run test:cli-telemetry && npm run test:pro-parity && npm run test:model-tier-router && npm run test:computer-use-firewall && npm run test:skill-exporter && npm run test:statusline && npm run test:evolution && npm run test:org-dashboard && npm run test:multi-hop-recall && npm run test:synthetic-dpo && npm run test:thumbgate-skill && npm run test:learn-hub && npm run test:feedback-fallback && npm run test:metaclaw && npm run test:server-lock && npm run test:control-tower && npm run test:pii-scanner && npm run test:data-governance && npm run test:lesson-inference && npm run test:lesson-retrieval && npm run test:reflector-agent && npm run test:feedback-session && npm run test:feedback-history-distiller && npm run test:hallucination-detector && npm run test:history-distiller && npm run test:predictive-insights && npm run test:prove-predictive-insights && npm run test:statusbar-cli && npm run test:generate-instagram-card && npm run test:instagram-thumbgate-post && npm run test:publish-instagram-thumbgate && npm run test:lesson-synthesis && npm run test: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-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && npm run test:utm && npm run test:product-feedback && npm run test:feedback-root-consolidator",
|
|
69
|
+
"test": "npm run test:schema && npm run test:loop && npm run test:dpo && npm run test:kto && npm run test:api && npm run test:proof && npm run test:e2e && npm run test:rlaif && npm run test:attribution && npm run test:quality && npm run test:intelligence && npm run test:training-export && npm run test:deployment && npm run test:operational-integrity && npm run test:workflow && npm run test:billing && npm run test:cli && npm run test:watcher && npm run test:autoresearch && npm run test:ops && npm run test:tessl && npm run test:gates && npm run test:evoskill && npm run test:gates-hardening && npm run test:workers && npm run test:social-analytics && npm run test:memalign && npm run test:xmemory-lite && npm run test:filesystem-search && npm run test:zernio && npm run test:obsidian-export && npm run test:lesson-db && npm run test:lesson-rotation && npm run test:memory-dedup && npm run test:feedback-quality && npm run test:sync-version && npm run test:check-congruence && npm run test:tool-registry && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:belief-update && npm run test:hosted-config && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:plan-gate && npm run test:pulse && npm run test:semantic-layer && npm run test:data-pipeline && npm run test:optimize-context && npm run test:principle-extractor && npm run test:analytics-window && npm run test:funnel-analytics && npm run test:experiment-tracker && npm run test:build-metadata && npm run test:context-engine && npm run test:hf-papers && npm run test:marketing-experiment && npm run test:seo-gsd && npm run test:verify-run && npm run test:export-dpo-pairs && npm run test:license && npm run test:bot-detector && npm run test:postinstall && npm run test:funnel-invariants && npm run test:cli-telemetry && npm run test:pro-parity && npm run test:model-tier-router && npm run test:computer-use-firewall && npm run test:skill-exporter && npm run test:statusline && npm run test:evolution && npm run test:org-dashboard && npm run test:multi-hop-recall && npm run test:synthetic-dpo && npm run test:thumbgate-skill && npm run test:learn-hub && npm run test:feedback-fallback && npm run test:metaclaw && npm run test:server-lock && npm run test:control-tower && npm run test:pii-scanner && npm run test:data-governance && npm run test:lesson-inference && npm run test:lesson-retrieval && npm run test:reflector-agent && npm run test:feedback-session && npm run test:feedback-history-distiller && npm run test:hallucination-detector && npm run test:history-distiller && npm run test:predictive-insights && npm run test:prove-predictive-insights && npm run test:statusbar-cli && npm run test:generate-instagram-card && npm run test:instagram-thumbgate-post && npm run test:publish-instagram-thumbgate && npm run test:lesson-synthesis && npm run test: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-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && 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",
|
|
72
70
|
"test:feedback-fallback": "node --test tests/feedback-fallback.test.js",
|
|
73
71
|
"test:metaclaw": "node --test tests/metaclaw-features.test.js",
|
|
74
72
|
"test:server-lock": "node --test tests/server-stdio-lock.test.js",
|
|
@@ -117,7 +115,7 @@
|
|
|
117
115
|
"test:loop": "node scripts/feedback-loop.js --test",
|
|
118
116
|
"test:dpo": "node scripts/export-dpo-pairs.js --test",
|
|
119
117
|
"test:kto": "node --test tests/export-kto.test.js",
|
|
120
|
-
"test:api": "node --test --test-concurrency=1 tests/api-server.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/contextfs.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/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/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/telemetry-analytics.test.js tests/public-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/post-to-x.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",
|
|
118
|
+
"test:api": "node --test --test-concurrency=1 tests/api-server.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/contextfs.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/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/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/telemetry-analytics.test.js tests/public-landing.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/post-to-x.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",
|
|
121
119
|
"test:proof": "node --test tests/prove-adapters.test.js tests/prove-attribution.test.js tests/prove-cloudflare-sandbox.test.js tests/prove-data-quality.test.js tests/prove-intelligence.test.js tests/prove-lancedb.test.js tests/prove-loop-closure.test.js tests/prove-subway-upgrades.test.js tests/prove-training-export.test.js tests/prove-local-intelligence.test.js tests/prove-workflow-contract.test.js tests/prove-autoresearch.test.js tests/prove-claim-verification.test.js tests/prove-data-pipeline.test.js tests/prove-evolution.test.js tests/prove-harnesses.test.js tests/prove-runtime.test.js tests/prove-seo-gsd.test.js tests/prove-settings.test.js tests/prove-xmemory.test.js && node --test tests/prove-automation.test.js",
|
|
122
120
|
"test:e2e": "node --test tests/e2e-pipeline.test.js tests/e2e-product-flows.test.js tests/e2e-coverage-contract.test.js",
|
|
123
121
|
"test:rlaif": "node --test tests/rlaif-self-audit.test.js tests/dpo-optimizer.test.js tests/meta-policy.test.js",
|
|
@@ -126,6 +124,7 @@
|
|
|
126
124
|
"test:intelligence": "node --test tests/intelligence.test.js",
|
|
127
125
|
"test:training-export": "node --test tests/training-export.test.js tests/databricks-export.test.js",
|
|
128
126
|
"test:deployment": "node --test tests/deployment.test.js tests/deploy-policy.test.js tests/publish-decision.test.js",
|
|
127
|
+
"test:operational-integrity": "node --test tests/operational-integrity.test.js",
|
|
129
128
|
"test:workflow": "node --test tests/workflow-contract.test.js tests/social-marketing-assets.test.js tests/social-pipeline.test.js tests/positioning-contract.test.js tests/workflow-runs.test.js tests/workflow-sprint-intake.test.js tests/gtm-revenue-loop.test.js",
|
|
130
129
|
"test:billing": "node --test tests/billing.test.js",
|
|
131
130
|
"test:cli": "node --test tests/analytics-report.test.js tests/creator-campaigns.test.js tests/cli.test.js tests/codex-bridge-script.test.js tests/dispatch-brief.test.js tests/feedback-normalize.test.js tests/install-mcp.test.js tests/pr-manager.test.js tests/pro-local-dashboard.test.js tests/revenue-status.test.js",
|
|
@@ -158,6 +157,8 @@
|
|
|
158
157
|
"tessl:export": "node scripts/tessl-export.js export",
|
|
159
158
|
"tessl:verify": "node scripts/tessl-export.js verify",
|
|
160
159
|
"deploy:policy": "node scripts/deploy-policy.js",
|
|
160
|
+
"ops:integrity": "node scripts/operational-integrity.js",
|
|
161
|
+
"ops:integrity:ci": "node scripts/operational-integrity.js --ci",
|
|
161
162
|
"prove:adapters": "node --test tests/prove-adapters.test.js",
|
|
162
163
|
"prove:automation": "node --test tests/prove-automation.test.js",
|
|
163
164
|
"prove:workflow-contract": "node --test tests/prove-workflow-contract.test.js",
|
|
@@ -219,10 +220,23 @@
|
|
|
219
220
|
"test:money-watcher": "node --test tests/money-watcher.test.js",
|
|
220
221
|
"test:utm": "node --test tests/utm.test.js",
|
|
221
222
|
"test:product-feedback": "node --test tests/product-feedback.test.js",
|
|
222
|
-
"test:feedback-root-consolidator": "node --test tests/feedback-root-consolidator.test.js"
|
|
223
|
+
"test:feedback-root-consolidator": "node --test tests/feedback-root-consolidator.test.js",
|
|
224
|
+
"social:publish:launch": "node scripts/social-analytics/publish-thumbgate-launch.js",
|
|
225
|
+
"social:schedule:campaign": "node scripts/social-analytics/schedule-thumbgate-campaign.js",
|
|
226
|
+
"social:install:growth": "node scripts/social-analytics/install-growth-automation.js",
|
|
227
|
+
"social:reconcile:campaign": "node scripts/social-analytics/reconcile-thumbgate-campaign.js",
|
|
228
|
+
"social:sync:launch-assets": "node scripts/social-analytics/sync-launch-assets.js",
|
|
229
|
+
"social:engagement:audit": "node scripts/social-analytics/engagement-audit.js",
|
|
230
|
+
"test:install-growth-automation": "node --test tests/install-growth-automation.test.js",
|
|
231
|
+
"test:publish-thumbgate-launch": "node --test tests/publish-thumbgate-launch.test.js",
|
|
232
|
+
"test:reconcile-thumbgate-campaign": "node --test tests/reconcile-thumbgate-campaign.test.js",
|
|
233
|
+
"test:schedule-thumbgate-campaign": "node --test tests/schedule-thumbgate-campaign.test.js",
|
|
234
|
+
"test:social-reply-monitor": "node --test tests/social-reply-monitor.test.js",
|
|
235
|
+
"test:sync-launch-assets": "node --test tests/sync-launch-assets.test.js",
|
|
236
|
+
"test:reddit-publisher": "node --test tests/reddit-publisher.test.js",
|
|
237
|
+
"test:engagement-audit": "node --test tests/engagement-audit.test.js"
|
|
223
238
|
},
|
|
224
239
|
"keywords": [
|
|
225
|
-
"rlhf",
|
|
226
240
|
"mcp",
|
|
227
241
|
"mcp-server",
|
|
228
242
|
"ai-agents",
|
|
@@ -5,13 +5,14 @@ Install the ThumbGate skill for Amp in under 60 seconds. No manual file editing
|
|
|
5
5
|
## One-Command Install
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
cp plugins/amp-skill/SKILL.md .amp/skills/
|
|
8
|
+
cp plugins/amp-skill/SKILL.md .amp/skills/thumbgate-feedback.md
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
Or from the npm package:
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
npx thumbgate init
|
|
15
|
+
cp node_modules/thumbgate/plugins/amp-skill/SKILL.md .amp/skills/thumbgate-feedback.md
|
|
15
16
|
cp node_modules/thumbgate/plugins/amp-skill/SKILL.md .amp/skills/rlhf-feedback.md
|
|
16
17
|
```
|
|
17
18
|
|
|
@@ -48,5 +49,5 @@ node .thumbgate/capture-feedback.js --feedback=down --context="..." --what-went-
|
|
|
48
49
|
## Uninstall
|
|
49
50
|
|
|
50
51
|
```bash
|
|
51
|
-
rm .amp/skills/
|
|
52
|
+
rm .amp/skills/thumbgate-feedback.md
|
|
52
53
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-bridge",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.11",
|
|
4
4
|
"description": "Run Codex review, adversarial review, and second-pass handoffs from Claude Code while keeping ThumbGate reliability memory in the loop.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Igor Ganapolsky",
|
|
@@ -6,7 +6,7 @@ This repo-local Claude Code plugin brings Codex into the same workflow for three
|
|
|
6
6
|
- skeptical adversarial review before risky merges or deploys
|
|
7
7
|
- second-pass handoff when you want a different agent to take another shot
|
|
8
8
|
|
|
9
|
-
The plugin keeps ThumbGate's local reliability memory available through the bundled `
|
|
9
|
+
The plugin keeps ThumbGate's local reliability memory available through the bundled `thumbgate` MCP server while the bridge script persists Codex artifacts in `${CLAUDE_PLUGIN_DATA}`.
|
|
10
10
|
|
|
11
11
|
## Shipped skills
|
|
12
12
|
|
|
@@ -18,4 +18,4 @@ Then explain:
|
|
|
18
18
|
- whether `codex` is installed
|
|
19
19
|
- whether `codex exec review` is available
|
|
20
20
|
- where the persistent bridge artifact directory lives
|
|
21
|
-
- whether ThumbGate's bundled `
|
|
21
|
+
- whether ThumbGate's bundled `thumbgate` MCP server config is present
|
|
@@ -5,13 +5,14 @@ Install the skill in under 60 seconds. No manual file editing required.
|
|
|
5
5
|
## One-Command Install
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
|
-
cp plugins/claude-skill/SKILL.md .claude/skills/
|
|
8
|
+
cp plugins/claude-skill/SKILL.md .claude/skills/thumbgate-feedback.md
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
Or from the published npm package:
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
npx thumbgate init
|
|
15
|
+
cp node_modules/thumbgate/plugins/claude-skill/SKILL.md .claude/skills/thumbgate-feedback.md
|
|
15
16
|
cp node_modules/thumbgate/plugins/claude-skill/SKILL.md .claude/skills/rlhf-feedback.md
|
|
16
17
|
```
|
|
17
18
|
|
|
@@ -27,7 +28,7 @@ After copying, restart Claude Code and run:
|
|
|
27
28
|
|
|
28
29
|
```bash
|
|
29
30
|
# Claude Code will show available skills:
|
|
30
|
-
#
|
|
31
|
+
# thumbgate-feedback — Capture thumbs up/down feedback into structured memories
|
|
31
32
|
```
|
|
32
33
|
|
|
33
34
|
Then test it:
|
|
@@ -51,5 +52,5 @@ node .thumbgate/capture-feedback.js --feedback=up --context="skill install verif
|
|
|
51
52
|
## Uninstall
|
|
52
53
|
|
|
53
54
|
```bash
|
|
54
|
-
rm .claude/skills/
|
|
55
|
+
rm .claude/skills/thumbgate-feedback.md
|
|
55
56
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-profile",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.11",
|
|
4
4
|
"description": "ThumbGate for Codex: pre-action gates, skill packs, hallucination detection, PII scanning, progressive disclosure (82% token savings), and MCP-backed reliability memory.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Igor Ganapolsky",
|
|
@@ -31,7 +31,7 @@ The following block is appended to `~/.codex/config.toml`:
|
|
|
31
31
|
```toml
|
|
32
32
|
[mcp_servers.thumbgate]
|
|
33
33
|
command = "npx"
|
|
34
|
-
args = ["
|
|
34
|
+
args = ["--yes", "--package", "thumbgate@0.9.11", "thumbgate", "serve"]
|
|
35
35
|
```
|
|
36
36
|
|
|
37
37
|
The repo-local Codex app plugin ships the same runtime path through `plugins/codex-profile/.mcp.json`, so the manual config and plugin metadata stay aligned.
|
|
@@ -46,7 +46,7 @@ node adapters/mcp/server-stdio.js
|
|
|
46
46
|
# Press Ctrl+C to stop
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
-
Then restart Codex. The `
|
|
49
|
+
Then restart Codex. The `thumbgate` MCP server will appear in the tool list.
|
|
50
50
|
|
|
51
51
|
## Available Tools (via MCP)
|
|
52
52
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "thumbgate",
|
|
3
3
|
"displayName": "ThumbGate",
|
|
4
4
|
"description": "👍👎 Thumbs down a mistake — your AI agent won't repeat it. Thumbs up good work — it remembers the pattern.",
|
|
5
|
-
"version": "0.9.
|
|
5
|
+
"version": "0.9.11",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Igor Ganapolsky"
|
|
8
8
|
},
|
|
@@ -22,7 +22,7 @@ How it works:
|
|
|
22
22
|
|
|
23
23
|
| File | Always on | Description |
|
|
24
24
|
|------|-----------|-------------|
|
|
25
|
-
| `rules/pre-action-gates.mdc` | Yes | Before risky tool calls (git push, rm -rf, npm publish, deploy), check prevention rules via the
|
|
25
|
+
| `rules/pre-action-gates.mdc` | Yes | Before risky tool calls (git push, rm -rf, npm publish, deploy), check prevention rules via the thumbgate MCP server. Blocks and explains if a rule matches. |
|
|
26
26
|
| `rules/feedback-capture.mdc` | No | After any mistake or unexpected behavior, prompt to capture structured feedback with context and tags. |
|
|
27
27
|
| `rules/session-continuity.mdc` | No | At session start, recall past context; at session end, hand off state for next session. |
|
|
28
28
|
|
|
@@ -53,13 +53,13 @@ How it works:
|
|
|
53
53
|
|
|
54
54
|
| Hook | Trigger | Description |
|
|
55
55
|
|------|---------|-------------|
|
|
56
|
-
| `beforeShellExecution` | `git push`, `rm -rf`, `npm publish`, `deploy` | Runs `scripts/gate-check.sh` to
|
|
56
|
+
| `beforeShellExecution` | `git push`, `rm -rf`, `npm publish`, `deploy` | Runs `scripts/gate-check.sh` to evaluate the command through ThumbGate `gate-check` before execution. |
|
|
57
57
|
|
|
58
58
|
### MCP Server
|
|
59
59
|
|
|
60
60
|
| Server | Command |
|
|
61
61
|
|--------|---------|
|
|
62
|
-
| `
|
|
62
|
+
| `thumbgate` | `npx --yes --package thumbgate@latest thumbgate serve` |
|
|
63
63
|
|
|
64
64
|
## Install
|
|
65
65
|
|
|
@@ -90,9 +90,9 @@ Or copy the plugin MCP config into `.cursor/mcp.json`:
|
|
|
90
90
|
```json
|
|
91
91
|
{
|
|
92
92
|
"mcpServers": {
|
|
93
|
-
"
|
|
93
|
+
"thumbgate": {
|
|
94
94
|
"command": "npx",
|
|
95
|
-
"args": ["
|
|
95
|
+
"args": ["--yes", "--package", "thumbgate@latest", "thumbgate", "serve"]
|
|
96
96
|
}
|
|
97
97
|
}
|
|
98
98
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Before risky tool calls (git push, rm -rf, npm publish, deploy), check prevention rules via the
|
|
2
|
+
description: Before risky tool calls (git push, rm -rf, npm publish, deploy), check prevention rules via the thumbgate MCP server. If a rule matches, STOP and explain why.
|
|
3
3
|
alwaysApply: true
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -1,11 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env bash
|
|
2
2
|
# Pre-action gate check — runs before risky shell commands.
|
|
3
3
|
# Called by hooks/hooks.json beforeShellExecution hook.
|
|
4
|
-
#
|
|
4
|
+
# Delegates to the published ThumbGate gate-check entrypoint.
|
|
5
5
|
|
|
6
6
|
set -euo pipefail
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
INPUT=$(cat)
|
|
9
|
+
RESULT=$(echo "$INPUT" | npx --yes --package thumbgate@latest thumbgate gate-check 2>/dev/null) || true
|
|
10
|
+
|
|
11
|
+
if [ -z "$RESULT" ]; then
|
|
12
|
+
exit 0
|
|
13
|
+
fi
|
|
14
|
+
|
|
15
|
+
echo "$RESULT"
|
|
16
|
+
|
|
17
|
+
if echo "$RESULT" | grep -q '"permissionDecision":\s*"deny"'; then
|
|
18
|
+
exit 2
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
exit 0
|