thumbgate 1.4.3 → 1.4.5

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.
Files changed (270) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.well-known/llms.txt +12 -8
  4. package/.well-known/mcp/server-card.json +1 -1
  5. package/README.md +18 -8
  6. package/adapters/README.md +1 -1
  7. package/adapters/claude/.mcp.json +2 -2
  8. package/adapters/codex/config.toml +2 -2
  9. package/adapters/mcp/server-stdio.js +1 -1
  10. package/adapters/opencode/opencode.json +1 -1
  11. package/config/github-about.json +2 -2
  12. package/package.json +158 -10
  13. package/scripts/billing.js +5 -2
  14. package/scripts/statusline.sh +1 -0
  15. package/src/api/server.js +113 -16
  16. package/src/index.js +3 -0
  17. package/.claude-plugin/bundle/icon.png +0 -0
  18. package/.claude-plugin/bundle/icon.svg +0 -18
  19. package/.claude-plugin/bundle/server/index.js +0 -24
  20. package/adapters/chatgpt/INSTALL.md +0 -158
  21. package/adapters/perplexity/.mcp.json +0 -36
  22. package/adapters/perplexity/config.toml +0 -16
  23. package/adapters/perplexity/opencode.json +0 -29
  24. package/bin/memory.sh +0 -64
  25. package/bin/obsidian-sync.sh +0 -20
  26. package/plugins/amp-skill/INSTALL.md +0 -52
  27. package/plugins/amp-skill/SKILL.md +0 -64
  28. package/plugins/claude-codex-bridge/.claude-plugin/plugin.json +0 -22
  29. package/plugins/claude-codex-bridge/.mcp.json +0 -14
  30. package/plugins/claude-codex-bridge/INSTALL.md +0 -43
  31. package/plugins/claude-codex-bridge/README.md +0 -46
  32. package/plugins/claude-codex-bridge/scripts/codex-bridge.js +0 -286
  33. package/plugins/claude-codex-bridge/skills/adversarial-review/SKILL.md +0 -24
  34. package/plugins/claude-codex-bridge/skills/result/SKILL.md +0 -22
  35. package/plugins/claude-codex-bridge/skills/review/SKILL.md +0 -28
  36. package/plugins/claude-codex-bridge/skills/second-pass/SKILL.md +0 -27
  37. package/plugins/claude-codex-bridge/skills/setup/SKILL.md +0 -21
  38. package/plugins/claude-codex-bridge/skills/status/SKILL.md +0 -19
  39. package/plugins/claude-skill/INSTALL.md +0 -55
  40. package/plugins/claude-skill/SKILL.md +0 -46
  41. package/plugins/codex-profile/.codex-plugin/plugin.json +0 -43
  42. package/plugins/codex-profile/.mcp.json +0 -14
  43. package/plugins/codex-profile/AGENTS.md +0 -20
  44. package/plugins/codex-profile/INSTALL.md +0 -89
  45. package/plugins/codex-profile/README.md +0 -61
  46. package/plugins/cursor-marketplace/.cursor-plugin/plugin.json +0 -23
  47. package/plugins/cursor-marketplace/CHANGELOG.md +0 -30
  48. package/plugins/cursor-marketplace/LICENSE +0 -21
  49. package/plugins/cursor-marketplace/README.md +0 -124
  50. package/plugins/cursor-marketplace/agents/reliability-reviewer.md +0 -31
  51. package/plugins/cursor-marketplace/assets/logo-400x400.png +0 -0
  52. package/plugins/cursor-marketplace/commands/capture-feedback.md +0 -33
  53. package/plugins/cursor-marketplace/commands/check-gates.md +0 -25
  54. package/plugins/cursor-marketplace/commands/show-lessons.md +0 -27
  55. package/plugins/cursor-marketplace/hooks/hooks.json +0 -10
  56. package/plugins/cursor-marketplace/mcp.json +0 -14
  57. package/plugins/cursor-marketplace/rules/feedback-capture.mdc +0 -34
  58. package/plugins/cursor-marketplace/rules/pre-action-gates.mdc +0 -30
  59. package/plugins/cursor-marketplace/rules/session-continuity.mdc +0 -28
  60. package/plugins/cursor-marketplace/scripts/gate-check.sh +0 -21
  61. package/plugins/cursor-marketplace/skills/capture-feedback/SKILL.md +0 -48
  62. package/plugins/cursor-marketplace/skills/prevention-rules/SKILL.md +0 -31
  63. package/plugins/cursor-marketplace/skills/recall-context/SKILL.md +0 -30
  64. package/plugins/cursor-marketplace/skills/search-lessons/SKILL.md +0 -33
  65. package/plugins/gemini-extension/INSTALL.md +0 -92
  66. package/plugins/gemini-extension/gemini_prompt.txt +0 -14
  67. package/plugins/gemini-extension/tool_contract.json +0 -45
  68. package/plugins/opencode-profile/INSTALL.md +0 -57
  69. package/public/assets/instagram-card.png +0 -0
  70. package/public/assets/tiktok-agent-memory.mp4 +0 -0
  71. package/public/blog.html +0 -474
  72. package/public/compare/mem0.html +0 -189
  73. package/public/compare/speclock.html +0 -180
  74. package/public/compare.html +0 -310
  75. package/public/dashboard.html +0 -1100
  76. package/public/guide.html +0 -317
  77. package/public/guides/claude-code-prevent-repeated-mistakes.html +0 -161
  78. package/public/guides/codex-cli-guardrails.html +0 -158
  79. package/public/guides/cursor-prevent-repeated-mistakes.html +0 -161
  80. package/public/guides/pre-action-gates.html +0 -162
  81. package/public/guides/stop-repeated-ai-agent-mistakes.html +0 -159
  82. package/public/index.html +0 -1225
  83. package/public/js/buyer-intent.js +0 -252
  84. package/public/learn/agent-harness-pattern.html +0 -180
  85. package/public/learn/ai-agent-persistent-memory.html +0 -203
  86. package/public/learn/learn.css +0 -45
  87. package/public/learn/mcp-pre-action-gates-explained.html +0 -172
  88. package/public/learn/stop-ai-agent-force-push.html +0 -134
  89. package/public/learn/vibe-coding-safety-net.html +0 -142
  90. package/public/learn.html +0 -274
  91. package/public/lessons.html +0 -967
  92. package/public/llm-context.md +0 -156
  93. package/public/pro.html +0 -1087
  94. package/public/vercel.json +0 -8
  95. package/scripts/a2ui-engine.js +0 -73
  96. package/scripts/adk-consolidator.js +0 -274
  97. package/scripts/agent-security-hardening.js +0 -225
  98. package/scripts/ai-search-visibility.js +0 -116
  99. package/scripts/autonomous-sales-agent.js +0 -39
  100. package/scripts/autoresearch-runner.js +0 -216
  101. package/scripts/background-agent-governance.js +0 -229
  102. package/scripts/behavioral-extraction.js +0 -93
  103. package/scripts/budget-enforcer.js +0 -173
  104. package/scripts/budget-guard.js +0 -173
  105. package/scripts/build-claude-mcpb.js +0 -255
  106. package/scripts/build-codex-plugin.js +0 -152
  107. package/scripts/capture-railway-diagnostics.sh +0 -97
  108. package/scripts/changeset-check.js +0 -372
  109. package/scripts/check-congruence.js +0 -443
  110. package/scripts/computer-use-firewall.js +0 -280
  111. package/scripts/content-engine/linkedin-content-generator.js +0 -154
  112. package/scripts/content-engine/output/linkedin-memento-validation.md +0 -17
  113. package/scripts/content-engine/output/linkedin-posts-2026-04-09.md +0 -175
  114. package/scripts/content-engine/reddit-thread-finder.js +0 -154
  115. package/scripts/context-engine.js +0 -710
  116. package/scripts/daily-digest.js +0 -11
  117. package/scripts/data-governance.js +0 -173
  118. package/scripts/deploy-gcp.sh +0 -44
  119. package/scripts/deploy-policy.js +0 -249
  120. package/scripts/disagreement-mining.js +0 -315
  121. package/scripts/dpo-optimizer.js +0 -206
  122. package/scripts/ensure-repo-bootstrap.js +0 -130
  123. package/scripts/ephemeral-agent-store.js +0 -212
  124. package/scripts/eval-harness.js +0 -56
  125. package/scripts/export-kto-pairs.js +0 -309
  126. package/scripts/export-training.js +0 -446
  127. package/scripts/feedback-fallback.js +0 -111
  128. package/scripts/feedback-inbox-read.js +0 -162
  129. package/scripts/feedback-root-consolidator.js +0 -233
  130. package/scripts/feedback-to-memory.js +0 -185
  131. package/scripts/gate-satisfy.js +0 -42
  132. package/scripts/generate-paperbanana-diagrams.sh +0 -99
  133. package/scripts/generate-pretool-hook.sh +0 -40
  134. package/scripts/github-about.js +0 -430
  135. package/scripts/github-outreach.js +0 -65
  136. package/scripts/gtm-revenue-loop.js +0 -535
  137. package/scripts/hallucination-detector.js +0 -226
  138. package/scripts/hf-papers.js +0 -317
  139. package/scripts/hook-auto-capture.sh +0 -100
  140. package/scripts/hook-stop-pr-thread-check.sh +0 -68
  141. package/scripts/hook-stop-self-score.sh +0 -51
  142. package/scripts/hook-stop-verify-deploy.sh +0 -31
  143. package/scripts/hook-verify-before-done.sh +0 -20
  144. package/scripts/managed-dpo-export.js +0 -91
  145. package/scripts/markdown-escape.js +0 -12
  146. package/scripts/marketing-experiment.js +0 -657
  147. package/scripts/memalign-recall.js +0 -111
  148. package/scripts/memory-migration.js +0 -296
  149. package/scripts/meta-policy.js +0 -190
  150. package/scripts/metered-billing.js +0 -16
  151. package/scripts/model-tier-router.js +0 -310
  152. package/scripts/money-watcher.js +0 -218
  153. package/scripts/multi-hop-recall.js +0 -240
  154. package/scripts/per-step-scoring.js +0 -163
  155. package/scripts/perplexity-command-center.js +0 -644
  156. package/scripts/perplexity-marketing.js +0 -454
  157. package/scripts/pii-scanner.js +0 -153
  158. package/scripts/plan-gate.js +0 -154
  159. package/scripts/post-everywhere.js +0 -341
  160. package/scripts/post-to-x-retry.sh +0 -22
  161. package/scripts/post-to-x.js +0 -369
  162. package/scripts/pr-manager.js +0 -421
  163. package/scripts/principle-extractor.js +0 -162
  164. package/scripts/pro-features.js +0 -41
  165. package/scripts/prompt-dlp.js +0 -222
  166. package/scripts/prove-adapters.js +0 -860
  167. package/scripts/prove-attribution.js +0 -361
  168. package/scripts/prove-automation.js +0 -651
  169. package/scripts/prove-autoresearch.js +0 -304
  170. package/scripts/prove-claim-verification.js +0 -277
  171. package/scripts/prove-cloudflare-sandbox.js +0 -161
  172. package/scripts/prove-data-pipeline.js +0 -408
  173. package/scripts/prove-data-quality.js +0 -227
  174. package/scripts/prove-evolution.js +0 -352
  175. package/scripts/prove-harnesses.js +0 -287
  176. package/scripts/prove-intelligence.js +0 -257
  177. package/scripts/prove-lancedb.js +0 -425
  178. package/scripts/prove-local-intelligence.js +0 -340
  179. package/scripts/prove-loop-closure.js +0 -263
  180. package/scripts/prove-packaged-runtime.js +0 -327
  181. package/scripts/prove-predictive-insights.js +0 -355
  182. package/scripts/prove-runtime.js +0 -363
  183. package/scripts/prove-seo-gsd.js +0 -234
  184. package/scripts/prove-settings.js +0 -279
  185. package/scripts/prove-subway-upgrades.js +0 -277
  186. package/scripts/prove-tessl.js +0 -229
  187. package/scripts/prove-training-export.js +0 -325
  188. package/scripts/prove-workflow-contract.js +0 -112
  189. package/scripts/prove-xmemory.js +0 -332
  190. package/scripts/publish-decision.js +0 -159
  191. package/scripts/ralph-loop.js +0 -376
  192. package/scripts/ralph-mode-ci.js +0 -434
  193. package/scripts/reddit-dm-outreach.js +0 -192
  194. package/scripts/reddit-monitor-cron.sh +0 -26
  195. package/scripts/reminder-engine.js +0 -132
  196. package/scripts/revenue-status.js +0 -472
  197. package/scripts/rotate-stripe-webhook-secret.js +0 -314
  198. package/scripts/schedule-manager.js +0 -249
  199. package/scripts/self-healing-check.js +0 -193
  200. package/scripts/session-analyzer.js +0 -533
  201. package/scripts/shieldcortex-memory-firewall-runner.mjs +0 -53
  202. package/scripts/skill-exporter.js +0 -260
  203. package/scripts/skill-materializer.js +0 -134
  204. package/scripts/skill-packs.js +0 -136
  205. package/scripts/skill-proposer.js +0 -99
  206. package/scripts/skill-quality-tracker.js +0 -282
  207. package/scripts/slow-loop.js +0 -72
  208. package/scripts/social-analytics/db/marketing-db.js +0 -179
  209. package/scripts/social-analytics/db/schema.sql +0 -55
  210. package/scripts/social-analytics/digest.js +0 -256
  211. package/scripts/social-analytics/engagement-audit.js +0 -185
  212. package/scripts/social-analytics/generate-instagram-card.js +0 -123
  213. package/scripts/social-analytics/generate-slides.js +0 -268
  214. package/scripts/social-analytics/instagram-thumbgate-post.js +0 -111
  215. package/scripts/social-analytics/install-growth-automation.js +0 -114
  216. package/scripts/social-analytics/load-env.js +0 -77
  217. package/scripts/social-analytics/mcp-server.js +0 -289
  218. package/scripts/social-analytics/normalizer.js +0 -580
  219. package/scripts/social-analytics/notify.js +0 -162
  220. package/scripts/social-analytics/poll-all.js +0 -107
  221. package/scripts/social-analytics/pollers/github.js +0 -195
  222. package/scripts/social-analytics/pollers/instagram.js +0 -253
  223. package/scripts/social-analytics/pollers/linkedin.js +0 -340
  224. package/scripts/social-analytics/pollers/plausible.js +0 -245
  225. package/scripts/social-analytics/pollers/reddit.js +0 -306
  226. package/scripts/social-analytics/pollers/threads.js +0 -233
  227. package/scripts/social-analytics/pollers/tiktok.js +0 -203
  228. package/scripts/social-analytics/pollers/x.js +0 -227
  229. package/scripts/social-analytics/pollers/youtube.js +0 -304
  230. package/scripts/social-analytics/pollers/zernio.js +0 -183
  231. package/scripts/social-analytics/post-video.js +0 -316
  232. package/scripts/social-analytics/publish-instagram-thumbgate.js +0 -104
  233. package/scripts/social-analytics/publish-thumbgate-launch.js +0 -322
  234. package/scripts/social-analytics/publishers/devto.js +0 -122
  235. package/scripts/social-analytics/publishers/instagram.js +0 -317
  236. package/scripts/social-analytics/publishers/linkedin.js +0 -294
  237. package/scripts/social-analytics/publishers/reddit.js +0 -385
  238. package/scripts/social-analytics/publishers/threads.js +0 -275
  239. package/scripts/social-analytics/publishers/tiktok.js +0 -217
  240. package/scripts/social-analytics/publishers/x.js +0 -259
  241. package/scripts/social-analytics/publishers/youtube.js +0 -223
  242. package/scripts/social-analytics/publishers/zernio.js +0 -568
  243. package/scripts/social-analytics/reconcile-thumbgate-campaign.js +0 -165
  244. package/scripts/social-analytics/run-digest.js +0 -34
  245. package/scripts/social-analytics/schedule-thumbgate-campaign.js +0 -275
  246. package/scripts/social-analytics/store.js +0 -455
  247. package/scripts/social-analytics/sync-launch-assets.js +0 -185
  248. package/scripts/social-analytics/utm.js +0 -143
  249. package/scripts/social-pipeline.js +0 -2626
  250. package/scripts/social-post-hourly.js +0 -228
  251. package/scripts/social-quality-gate.js +0 -134
  252. package/scripts/social-reply-monitor.js +0 -592
  253. package/scripts/status-dashboard.js +0 -155
  254. package/scripts/stripe-live-status.js +0 -115
  255. package/scripts/subagent-profiles.js +0 -79
  256. package/scripts/sync-branch-protection.js +0 -340
  257. package/scripts/sync-gh-secrets-from-env.sh +0 -70
  258. package/scripts/sync-github-about.js +0 -55
  259. package/scripts/sync-version.js +0 -479
  260. package/scripts/synthetic-dpo.js +0 -234
  261. package/scripts/tessl-export.js +0 -369
  262. package/scripts/test-coverage.js +0 -128
  263. package/scripts/thumbgate-bench.js +0 -494
  264. package/scripts/thumbgate_session_start.sh +0 -32
  265. package/scripts/train_from_feedback.py +0 -929
  266. package/scripts/validate-feedback.js +0 -581
  267. package/scripts/verify-obsidian-setup.sh +0 -269
  268. package/scripts/verify-run.js +0 -269
  269. package/scripts/weekly-auto-post.js +0 -124
  270. package/scripts/x-autonomous-marketing.js +0 -139
@@ -1,24 +0,0 @@
1
- #!/usr/bin/env node
2
- 'use strict';
3
-
4
- const path = require('path');
5
- const { spawn } = require('child_process');
6
-
7
- const cliPath = path.join(__dirname, '..', '..', 'bin', 'cli.js');
8
- const child = spawn(process.execPath, [cliPath, 'serve'], {
9
- stdio: 'inherit',
10
- env: process.env,
11
- });
12
-
13
- child.on('exit', (code, signal) => {
14
- if (signal) {
15
- process.kill(process.pid, signal);
16
- return;
17
- }
18
- process.exit(code ?? 1);
19
- });
20
-
21
- child.on('error', (error) => {
22
- console.error(`[thumbgate] Failed to launch Claude Desktop bundle runtime: ${error.message}`);
23
- process.exit(1);
24
- });
@@ -1,158 +0,0 @@
1
- # ChatGPT GPT Actions: ThumbGate Install
2
-
3
- Open the published ThumbGate GPT directly:
4
-
5
- https://chatgpt.com/g/g-69dcfd1cd5f881918ae31874631d6f08-thumbgate
6
-
7
- Use the GPT as the public front door: paste an AI action to check, save a thumbs-up/down lesson, write a Pre-Action Gate, install ThumbGate for an agent, or export proof.
8
-
9
- Users do **not** have to keep chatting inside the ThumbGate GPT for enforcement. The GPT is the fast demo, guided setup path, and ChatGPT memory surface. Real enforcement for coding agents still runs locally through ThumbGate hooks after `npx thumbgate init`.
10
-
11
- Marketing rule: every landing page, README, social post, and plugin listing should point to the live GPT before asking a cold user to read OpenAPI docs.
12
-
13
- ## GPT Store path
14
-
15
- 1. Open the direct GPT URL: https://chatgpt.com/g/g-69dcfd1cd5f881918ae31874631d6f08-thumbgate
16
- 2. If ChatGPT does not open it for your account, open **Explore GPTs**.
17
- 3. Search for `ThumbGate`.
18
- 4. Choose the GPT by **Igor Ganapolsky** in the **Programming** category.
19
-
20
- ## 30-second user flow
21
-
22
- 1. Paste a proposed AI action, command, merge, deploy, file edit, email, payment, or API call.
23
- 2. ThumbGate evaluates whether to allow, block, or require a checkpoint before the action runs.
24
- 3. After any answer or agent run, reply with `thumbs up:` or `thumbs down:` plus one concrete sentence.
25
- 4. ThumbGate saves the lesson, refreshes prevention rules when patterns repeat, and can show what it remembers.
26
- 5. When the user is ready to enforce outside ChatGPT, send them to `npx thumbgate init` for Claude Code, Cursor, Codex, Gemini CLI, Amp, OpenCode, or another MCP-compatible agent.
27
-
28
- Regular users should never need to know MCP, OpenAPI, Actions, DPO, Thompson Sampling, or schema validation. The GPT should explain the loop as: "One signal becomes one remembered rule."
29
-
30
- ## GPT profile card
31
-
32
- Use this copy in GPT Builder instead of the generic "AI safety gate" framing:
33
-
34
- Short description:
35
-
36
- ```text
37
- Turn thumbs-down into prevention gates
38
- ```
39
-
40
- Full description:
41
-
42
- ```text
43
- Paste a proposed AI action or reply thumbs up/down after an answer. ThumbGate captures the lesson, searches prior mistakes, writes Pre-Action Gates, and tells you when to allow, block, or checkpoint. Built for developers using AI agents and proof-backed Reliability Gateway workflows.
44
- ```
45
-
46
- Conversation starters:
47
-
48
- 1. `Check this agent action before it runs: git push --force --tags`
49
- 2. `Turn this mistake into a ThumbGate rule: the agent edited generated files again.`
50
- 3. `Install ThumbGate for Claude Code or Codex in this repo.`
51
- 4. `Search my saved lessons before you answer.`
52
-
53
- Use typed chat replies. ChatGPT's native feedback buttons may send feedback to OpenAI, but they should not be described as the ThumbGate capture path unless OpenAI exposes them to GPT Actions.
54
-
55
- ## Pre-action gate flow
56
-
57
- Use this when the user asks whether an AI agent should run a proposed action, command, file edit, deployment, merge, or publish step:
58
-
59
- 1. The GPT calls `evaluateDecision` (`POST /v1/decisions/evaluate`) before answering.
60
- 2. If the response has `decisionControl.executionMode: "blocked"`, the GPT says the action is blocked and explains the returned reason.
61
- 3. If the response has `decisionControl.executionMode: "checkpoint_required"`, the GPT asks for explicit confirmation before proceeding.
62
- 4. If the response has `decisionControl.executionMode: "auto_execute"`, the GPT can say the action is allowed and summarize why.
63
-
64
- Plain thumbs-up/down feedback is the memory loop. The decision endpoint is the gate loop. Do not claim hard blocking unless the decision endpoint, a saved lesson, or a prevention rule was actually applied.
65
-
66
- ## Best first GPT message
67
-
68
- Use this as the first response:
69
-
70
- ```text
71
- Paste an AI action to check, or tell me what went right/wrong. I can block risky actions, save the lesson, write a prevention gate, or show what ThumbGate already remembers.
72
- ```
73
-
74
- ## Prerequisites
75
-
76
- - A ChatGPT Plus or Team account (Custom GPTs require a paid plan)
77
- - ThumbGate API running at `https://thumbgate-production.up.railway.app`
78
- - Privacy policy URL: `https://thumbgate-production.up.railway.app/privacy`
79
- - Owner-managed `THUMBGATE_API_KEY` for one-time GPT Builder Actions auth
80
-
81
- Regular GPT users should not need an API key, JSON payload, OpenAPI knowledge, or developer setup. They should only see the thumbs-up/down memory loop.
82
-
83
- ## Step 1 — Open GPT Builder
84
-
85
- 1. Go to [https://chat.openai.com/gpts/editor](https://chat.openai.com/gpts/editor)
86
- 2. Click **Create a GPT**
87
- 3. Switch to the **Configure** tab
88
-
89
- ## Step 2 — Add Actions
90
-
91
- 1. Scroll to the **Actions** section
92
- 2. Click **Create new action**
93
- 3. Click **Import from URL** — paste your hosted spec URL:
94
- ```
95
- https://thumbgate-production.up.railway.app/openapi.yaml
96
- ```
97
- Or click **Upload file** and select:
98
- ```
99
- adapters/chatgpt/openapi.yaml
100
- ```
101
-
102
- ## Step 3 — Set Authentication
103
-
104
- In the Actions panel:
105
-
106
- 1. Select **Authentication type: API Key**
107
- 2. **Auth type**: Bearer
108
- 3. **API Key**: paste your `THUMBGATE_API_KEY` value
109
-
110
- This is an owner setup field. Do not ask regular GPT users to provide an API key.
111
-
112
- ## Step 4 — Update the Server URL
113
-
114
- In the imported spec, confirm the `servers.url` points to your deployed API:
115
-
116
- ```yaml
117
- servers:
118
- - url: https://thumbgate-production.up.railway.app
119
- ```
120
-
121
- If you uploaded the file, edit the server URL in the GPT Actions editor.
122
-
123
- ## Step 5 — Verify
124
-
125
- Click **Test** on the `captureFeedback` action:
126
-
127
- ```json
128
- {
129
- "signal": "up",
130
- "context": "GPT Actions install verified with a successful test call",
131
- "whatWorked": "The hosted action returned accepted=true and a promoted status"
132
- }
133
- ```
134
-
135
- Expected response: `200 OK` with `{ "accepted": true, "status": "promoted" }`.
136
-
137
- If you only send a bare `thumbs up/down` style payload, expect `422` with `status: "clarification_required"` and a follow-up `prompt`.
138
-
139
- ## Available Actions
140
-
141
- | Action | Method | Path | Description |
142
- |---|---|---|---|
143
- | `captureFeedback` | POST | `/v1/feedback/capture` | Capture up/down signal plus one-line why |
144
- | `getFeedbackStats` | GET | `/v1/feedback/stats` | Aggregated feedback statistics |
145
- | `getFeedbackSummary` | GET | `/v1/feedback/summary` | Recent feedback summary |
146
- | `generatePreventionRules` | POST | `/v1/feedback/rules` | Generate prevention rules |
147
- | `exportDpoPairs` | POST | `/v1/dpo/export` | Export DPO preference pairs |
148
- | `listIntentCatalog` | GET | `/v1/intents/catalog` | List available intents |
149
- | `planIntent` | POST | `/v1/intents/plan` | Generate policy-scoped plan |
150
- | `constructContextPack` | POST | `/v1/context/construct` | Build context pack |
151
-
152
- Full spec: `adapters/chatgpt/openapi.yaml`
153
-
154
- ## Troubleshooting
155
-
156
- - **401 Unauthorized**: Verify `THUMBGATE_API_KEY` is set and matches the Bearer token
157
- - **Connection refused**: Confirm Railway deployment is live (`curl https://<domain>/health`)
158
- - **Schema errors**: Ensure you are using the latest `openapi.yaml` (version 1.1.0+)
@@ -1,36 +0,0 @@
1
- {
2
- "mcpServers": {
3
- "thumbgate": {
4
- "command": "npx",
5
- "args": [
6
- "--yes",
7
- "--package",
8
- "thumbgate@1.4.1",
9
- "thumbgate",
10
- "serve"
11
- ]
12
- },
13
- "perplexity": {
14
- "command": "npx",
15
- "args": [
16
- "-y",
17
- "@perplexity-ai/mcp-server"
18
- ],
19
- "env": {
20
- "PERPLEXITY_API_KEY": "${PERPLEXITY_API_KEY}"
21
- }
22
- }
23
- },
24
- "hooks": {
25
- "preToolUse": {
26
- "command": "npx",
27
- "args": [
28
- "--yes",
29
- "--package",
30
- "thumbgate@1.4.1",
31
- "thumbgate",
32
- "gate-check"
33
- ]
34
- }
35
- }
36
- }
@@ -1,16 +0,0 @@
1
- # Codex MCP profile: ThumbGate + Perplexity (copy into ~/.codex/config.toml or merge section)
2
- [mcp_servers.thumbgate]
3
- command = "npx"
4
- args = ["--yes", "--package", "thumbgate@1.4.1", "thumbgate", "serve"]
5
-
6
- [mcp_servers.perplexity]
7
- command = "npx"
8
- args = ["-y", "@perplexity-ai/mcp-server"]
9
-
10
- [mcp_servers.perplexity.env]
11
- PERPLEXITY_API_KEY = "${PERPLEXITY_API_KEY}"
12
-
13
- # Hard PreToolUse hook for Codex
14
- [hooks.pre_tool_use]
15
- command = "npx"
16
- args = ["--yes", "--package", "thumbgate@1.4.1", "thumbgate", "gate-check"]
@@ -1,29 +0,0 @@
1
- {
2
- "$schema": "https://opencode.ai/config.json",
3
- "mcp": {
4
- "thumbgate": {
5
- "type": "local",
6
- "command": [
7
- "npx",
8
- "--yes",
9
- "--package",
10
- "thumbgate@1.4.1",
11
- "thumbgate",
12
- "serve"
13
- ],
14
- "enabled": true
15
- },
16
- "perplexity": {
17
- "type": "local",
18
- "command": [
19
- "npx",
20
- "-y",
21
- "@perplexity-ai/mcp-server"
22
- ],
23
- "env": {
24
- "PERPLEXITY_API_KEY": "${PERPLEXITY_API_KEY}"
25
- },
26
- "enabled": true
27
- }
28
- }
29
- }
package/bin/memory.sh DELETED
@@ -1,64 +0,0 @@
1
- #!/bin/bash
2
- # bin/memory.sh - Layer 3 & 4 & 5 Memory Stack Refresher
3
-
4
- PRIMER_FILE="primer.md"
5
-
6
- if [ ! -f "$PRIMER_FILE" ]; then
7
- echo "Error: $PRIMER_FILE not found."
8
- exit 1
9
- fi
10
-
11
- echo "🤖 [Memory Stack] Refreshing context..."
12
-
13
- # 1. Behavioral Extraction (Layer 4)
14
- node scripts/behavioral-extraction.js > /dev/null
15
- TRAITS_FILE="$(node -e "const path = require('path'); const { resolveFeedbackDir } = require('./scripts/feedback-paths'); process.stdout.write(path.join(resolveFeedbackDir(), 'behavioral-traits.json'));" 2>/dev/null)"
16
- if [ -z "$TRAITS_FILE" ]; then
17
- TRAITS_FILE=".thumbgate/behavioral-traits.json"
18
- fi
19
-
20
- # 2. Capture git context (Layer 3)
21
- CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
22
- LAST_COMMITS=$(git log -n 5 --oneline 2>/dev/null || echo "No commits found")
23
- DIRTY_FILES=$(git status --short 2>/dev/null || echo "")
24
-
25
- # 3. Rebuild Primer
26
- TEMP_FILE=$(mktemp)
27
-
28
- # Read primer until "## Behavioral Traits"
29
- sed -n '1,/## Behavioral Traits/p' "$PRIMER_FILE" > "$TEMP_FILE"
30
- echo "" >> "$TEMP_FILE"
31
-
32
- if [ -f "$TRAITS_FILE" ]; then
33
- # Extract trait descriptions from JSON
34
- cat "$TRAITS_FILE" | grep "description" | sed 's/.*: "//;s/".*//' | sed 's/^/- /' >> "$TEMP_FILE"
35
- else
36
- echo "_No strong behavioral patterns identified yet._" >> "$TEMP_FILE"
37
- fi
38
-
39
- echo "" >> "$TEMP_FILE"
40
- echo "## Live Git Context" >> "$TEMP_FILE"
41
- echo "" >> "$TEMP_FILE"
42
- echo "### Branch: $CURRENT_BRANCH" >> "$TEMP_FILE"
43
- echo "" >> "$TEMP_FILE"
44
- echo "### Last 5 Commits:" >> "$TEMP_FILE"
45
- echo '```' >> "$TEMP_FILE"
46
- echo "$LAST_COMMITS" >> "$TEMP_FILE"
47
- echo '```' >> "$TEMP_FILE"
48
- echo "" >> "$TEMP_FILE"
49
- echo "### Modified Files:" >> "$TEMP_FILE"
50
- if [ -z "$DIRTY_FILES" ]; then
51
- echo "_None (Clean working tree)_" >> "$TEMP_FILE"
52
- else
53
- echo '```' >> "$TEMP_FILE"
54
- echo "$DIRTY_FILES" >> "$TEMP_FILE"
55
- echo '```' >> "$TEMP_FILE"
56
- fi
57
-
58
- mv "$TEMP_FILE" "$PRIMER_FILE"
59
-
60
- # 4. Sync to Obsidian (Layer 5)
61
- chmod +x bin/obsidian-sync.sh
62
- ./bin/obsidian-sync.sh
63
-
64
- echo "✅ Context refresh complete."
@@ -1,20 +0,0 @@
1
- #!/bin/bash
2
-
3
- # obsidian-sync.sh
4
- #
5
- # Layer 5: Obsidian Knowledge Bridge
6
- # Exports ThumbGate data as interlinked Obsidian markdown notes to a vault.
7
-
8
- VAULT_PATH=$THUMBGATE_OBSIDIAN_VAULT_PATH
9
- PROJECT_NAME=$(basename "$(pwd)")
10
-
11
- if [ -z "$VAULT_PATH" ]; then
12
- echo "🤖 [Layer 5] THUMBGATE_OBSIDIAN_VAULT_PATH not set. Skipping sync."
13
- exit 0
14
- fi
15
-
16
- echo "🤖 [Layer 5] Exporting memories to Obsidian vault: $VAULT_PATH/AI-Memories/$PROJECT_NAME"
17
-
18
- npx thumbgate obsidian-export --vault-path="$VAULT_PATH" --output-dir="AI-Memories/$PROJECT_NAME"
19
-
20
- echo "✅ Sync complete."
@@ -1,52 +0,0 @@
1
- # Amp: ThumbGate Feedback Skill Install
2
-
3
- Install the ThumbGate skill for Amp in under 60 seconds. No manual file editing required.
4
-
5
- ## One-Command Install
6
-
7
- ```bash
8
- cp plugins/amp-skill/SKILL.md .amp/skills/thumbgate-feedback.md
9
- ```
10
-
11
- Or from the npm package:
12
-
13
- ```bash
14
- npx thumbgate init
15
- cp node_modules/thumbgate/plugins/amp-skill/SKILL.md .amp/skills/thumbgate-feedback.md
16
- ```
17
-
18
- ## What This Does
19
-
20
- Copies the skill definition to `.amp/skills/` so Amp loads it automatically on next launch.
21
-
22
- ## Verify
23
-
24
- After copying, restart Amp. The skill will appear in the active skills list.
25
-
26
- Then test:
27
-
28
- ```bash
29
- npx thumbgate capture --feedback=up --context="amp skill install verified" --tags="install"
30
- ```
31
-
32
- ## Available Commands (via skill)
33
-
34
- ```bash
35
- # Positive feedback
36
- npx thumbgate capture --feedback=up --context="..." --tags="..."
37
-
38
- # Negative feedback
39
- npx thumbgate capture --feedback=down --context="..." --what-went-wrong="..." --what-to-change="..." --tags="..."
40
- ```
41
-
42
- ## Requirements
43
-
44
- - Amp (any version with skills support)
45
- - Node.js 18+ in PATH
46
- - `.thumbgate/` directory (created by `npx thumbgate init`)
47
-
48
- ## Uninstall
49
-
50
- ```bash
51
- rm .amp/skills/thumbgate-feedback.md
52
- ```
@@ -1,64 +0,0 @@
1
- ---
2
- name: thumbgate-feedback
3
- description: Dual-write feedback to Amp MCP memory AND thumbgate for DPO export, analytics, and cross-platform portability
4
- ---
5
-
6
- # ThumbGate Feedback Skill (Dual-Write)
7
-
8
- This skill captures feedback in TWO places simultaneously:
9
- 1. **Amp MCP memory** — for immediate in-session recall (native to Amp)
10
- 2. **thumbgate** — for DPO export, LanceDB vectors, prevention rules, and cross-platform analytics
11
-
12
- ## On thumbs up / positive feedback
13
-
14
- First, store in Amp's native memory for in-session recall:
15
- ```
16
- Use mcp__memory__remember to store: "GOOD: {context}. What worked: {details}"
17
- ```
18
-
19
- Then, pipe to thumbgate for DPO export and analytics:
20
- ```bash
21
- npx -y thumbgate capture --feedback=up --context="..." --what-worked="..." --tags="..."
22
- ```
23
-
24
- ## On thumbs down / negative feedback
25
-
26
- First, store in Amp's native memory so the mistake is recalled immediately:
27
- ```
28
- Use mcp__memory__remember to store: "BAD: {context}. What went wrong: {details}. Fix: {what to change}"
29
- ```
30
-
31
- Then, pipe to thumbgate for prevention rules and DPO pairs:
32
- ```bash
33
- npx -y thumbgate capture --feedback=down --context="..." --what-went-wrong="..." --what-to-change="..." --tags="..."
34
- ```
35
-
36
- ## Before starting a new task
37
-
38
- Recall from Amp's memory (instant, in-session):
39
- ```
40
- Use mcp__memory__recall with query describing the current task
41
- ```
42
-
43
- Also check thumbgate for cross-session prevention rules:
44
- ```bash
45
- npx -y thumbgate rules
46
- ```
47
-
48
- ## Triggers
49
-
50
- - "thumbs up" / "that worked" / "looks good" / "nice" / "perfect"
51
- - "thumbs down" / "that failed" / "that was wrong" / "no" / "fix this"
52
-
53
- ## Negative Triggers (do NOT activate for)
54
-
55
- - "generate code" / "search files" / "explain this" / "run tests"
56
-
57
- ## Why dual-write?
58
-
59
- Amp's MCP memory gives you instant in-session recall. thumbgate gives you:
60
- - **DPO training pairs** for fine-tuning your model
61
- - **Prevention rules** that block repeated mistakes
62
- - **Cross-platform portability** — same feedback works in Claude, Codex, Gemini
63
- - **LanceDB vector search** for semantic similarity across sessions
64
- - **REST API** for team dashboards and analytics
@@ -1,22 +0,0 @@
1
- {
2
- "name": "codex-bridge",
3
- "version": "1.4.3",
4
- "description": "Run Codex review, adversarial review, and second-pass handoffs from Claude Code while keeping ThumbGate reliability memory in the loop.",
5
- "author": {
6
- "name": "Igor Ganapolsky",
7
- "url": "https://github.com/IgorGanapolsky"
8
- },
9
- "homepage": "https://thumbgate-production.up.railway.app",
10
- "repository": "https://github.com/IgorGanapolsky/ThumbGate",
11
- "license": "MIT",
12
- "keywords": [
13
- "claude-code",
14
- "codex",
15
- "codex-review",
16
- "adversarial-review",
17
- "thumbgate",
18
- "pre-action-gates",
19
- "agent-reliability"
20
- ],
21
- "mcpServers": "./.mcp.json"
22
- }
@@ -1,14 +0,0 @@
1
- {
2
- "mcpServers": {
3
- "thumbgate": {
4
- "command": "npx",
5
- "args": [
6
- "--yes",
7
- "--package",
8
- "thumbgate@1.4.3",
9
- "thumbgate",
10
- "serve"
11
- ]
12
- }
13
- }
14
- }
@@ -1,43 +0,0 @@
1
- # Install ThumbGate Codex Bridge for Claude Code
2
-
3
- ## One-command session install
4
-
5
- ```bash
6
- claude --plugin-dir "$(pwd)/plugins/claude-codex-bridge"
7
- ```
8
-
9
- That loads the plugin for the current Claude Code session and makes the following skills available:
10
-
11
- - `/codex-bridge:setup`
12
- - `/codex-bridge:review`
13
- - `/codex-bridge:adversarial-review`
14
- - `/codex-bridge:second-pass`
15
- - `/codex-bridge:status`
16
- - `/codex-bridge:result`
17
-
18
- ## Verify
19
-
20
- ```bash
21
- claude plugin validate plugins/claude-codex-bridge
22
- node plugins/claude-codex-bridge/scripts/codex-bridge.js setup
23
- ```
24
-
25
- Expected setup proof:
26
-
27
- - `codexInstalled: true`
28
- - `reviewCommand: true`
29
- - `execCommand: true`
30
- - `dataDir` points at the plugin data directory
31
-
32
- ## Typical flow
33
-
34
- 1. Run `/codex-bridge:review base=main` before merge.
35
- 2. Run `/codex-bridge:adversarial-review` before deploy or publish.
36
- 3. Run `/codex-bridge:second-pass focus on billing webhook hardening` when you want Codex to take another shot.
37
- 4. Run `/codex-bridge:status` or `/codex-bridge:result` to inspect the saved artifact.
38
-
39
- ## Codex prerequisites
40
-
41
- - `codex` must be installed and authenticated on the machine.
42
- - ThumbGate's existing Codex MCP profile still lives at `plugins/codex-profile/`.
43
- - This bridge plugin does not replace the Codex profile; it gives Claude Code a clean way to call Codex from the same repo.
@@ -1,46 +0,0 @@
1
- # ThumbGate Codex Bridge for Claude Code
2
-
3
- This repo-local Claude Code plugin brings Codex into the same workflow for three high-ROI cases:
4
-
5
- - independent review of uncommitted work or a base diff
6
- - skeptical adversarial review before risky merges or deploys
7
- - second-pass handoff when you want a different agent to take another shot
8
-
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
-
11
- ## Shipped skills
12
-
13
- - `/codex-bridge:setup` — verify Codex CLI, plugin data path, and ThumbGate MCP wiring
14
- - `/codex-bridge:review` — run a normal Codex review against `--uncommitted`, `--base`, or `--commit`
15
- - `/codex-bridge:adversarial-review` — run a stricter review focused on hidden regressions and security risk
16
- - `/codex-bridge:second-pass` — hand off the current task or diff to Codex for a second pass
17
- - `/codex-bridge:status` — show the latest saved bridge artifact metadata
18
- - `/codex-bridge:result` — print the last saved Codex output
19
-
20
- ## Install
21
-
22
- Run Claude Code with the repo-local plugin loaded:
23
-
24
- ```bash
25
- claude --plugin-dir "$(pwd)/plugins/claude-codex-bridge"
26
- ```
27
-
28
- Validate the plugin shape before shipping changes:
29
-
30
- ```bash
31
- claude plugin validate plugins/claude-codex-bridge
32
- ```
33
-
34
- The plugin launches ThumbGate's MCP server automatically through `plugins/claude-codex-bridge/.mcp.json`, so Claude Code gets the reliability tools without extra configuration.
35
-
36
- ## How it works
37
-
38
- 1. Claude invokes a bridge skill such as `/codex-bridge:review`.
39
- 2. The skill runs `plugins/claude-codex-bridge/scripts/codex-bridge.js`.
40
- 3. The bridge script shells out to `codex exec review` or `codex exec`.
41
- 4. Codex output is saved under `${CLAUDE_PLUGIN_DATA}/runs/`.
42
- 5. `/codex-bridge:status` and `/codex-bridge:result` replay the latest artifact without rerunning Codex.
43
-
44
- ## Why this matters
45
-
46
- ThumbGate is not trying to replace Codex. The point is to give Claude Code users a fast second reviewer and adversarial pass while keeping pre-action gates, thumbs-up/down feedback memory, and proof artifacts local-first.