thumbgate 1.2.0 → 1.3.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.
Files changed (54) hide show
  1. package/.claude-plugin/README.md +4 -4
  2. package/.claude-plugin/marketplace.json +1 -1
  3. package/.claude-plugin/plugin.json +1 -1
  4. package/.well-known/mcp/server-card.json +1 -1
  5. package/README.md +35 -14
  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 +2 -2
  10. package/adapters/opencode/opencode.json +1 -1
  11. package/bin/cli.js +20 -11
  12. package/config/github-about.json +1 -1
  13. package/config/model-tiers.json +11 -0
  14. package/package.json +8 -6
  15. package/plugins/claude-codex-bridge/.claude-plugin/plugin.json +1 -1
  16. package/plugins/claude-codex-bridge/.mcp.json +1 -1
  17. package/plugins/codex-profile/.codex-plugin/plugin.json +1 -1
  18. package/plugins/codex-profile/.mcp.json +1 -1
  19. package/plugins/codex-profile/INSTALL.md +1 -1
  20. package/plugins/codex-profile/README.md +1 -1
  21. package/plugins/cursor-marketplace/.cursor-plugin/plugin.json +1 -1
  22. package/plugins/cursor-marketplace/README.md +2 -2
  23. package/plugins/cursor-marketplace/commands/capture-feedback.md +2 -2
  24. package/plugins/cursor-marketplace/rules/feedback-capture.mdc +3 -3
  25. package/plugins/cursor-marketplace/skills/capture-feedback/SKILL.md +3 -2
  26. package/plugins/opencode-profile/INSTALL.md +1 -1
  27. package/public/compare.html +4 -4
  28. package/public/guide.html +4 -4
  29. package/public/index.html +51 -38
  30. package/public/learn/ai-agent-persistent-memory.html +1 -0
  31. package/public/lessons.html +325 -17
  32. package/scripts/__pycache__/train_from_feedback.cpython-312.pyc +0 -0
  33. package/scripts/audit-trail.js +6 -0
  34. package/scripts/capture-railway-diagnostics.sh +97 -0
  35. package/scripts/check-congruence.js +1 -1
  36. package/scripts/claude-feedback-sync.js +320 -0
  37. package/scripts/cli-telemetry.js +4 -1
  38. package/scripts/contextfs.js +32 -23
  39. package/scripts/dashboard.js +84 -0
  40. package/scripts/feedback-loop.js +16 -0
  41. package/scripts/intervention-policy.js +696 -0
  42. package/scripts/local-model-profile.js +18 -2
  43. package/scripts/model-tier-router.js +10 -1
  44. package/scripts/operational-integrity.js +354 -31
  45. package/scripts/prove-adapters.js +1 -0
  46. package/scripts/prove-automation.js +2 -2
  47. package/scripts/prove-packaged-runtime.js +260 -0
  48. package/scripts/prove-runtime.js +13 -0
  49. package/scripts/rate-limiter.js +3 -3
  50. package/scripts/statusline-local-stats.js +2 -0
  51. package/scripts/statusline.sh +166 -11
  52. package/scripts/tool-registry.js +2 -2
  53. package/scripts/workflow-sentinel.js +114 -4
  54. package/skills/thumbgate/SKILL.md +1 -1
@@ -2,13 +2,13 @@
2
2
 
3
3
  `thumbgate` gives Claude Desktop a local-first **Reliability Gateway** and **Pre-Action Gates** for workflow hardening.
4
4
 
5
- The extension path is useful when a team wants Claude Desktop to keep one workflow sharper over time without adding another orchestration layer. The MCP server captures explicit feedback, recalls past failures, distills lessons from the recent conversation window when a thumbs signal is vague, promotes reusable prevention rules, and produces proof-backed rollout artifacts.
5
+ The extension path is useful when a team wants Claude Desktop to keep one workflow sharper over time without adding another orchestration layer. The MCP server captures explicit feedback, recalls past failures, distills lessons from up to 8 prior recorded entries when the current Claude hook only gets a vague thumbs-down, promotes reusable prevention rules, and produces proof-backed rollout artifacts.
6
6
 
7
7
  ## Features
8
8
 
9
9
  - Workflow hardening for Claude-first engineering and ops workflows
10
10
  - Pre-Action Gates that block repeated mistakes before tool use
11
- - History-aware lesson distillation from the last ~10 messages and failed tool calls
11
+ - History-aware lesson distillation from up to 8 prior recorded entries and failed tool calls in the current Claude auto-capture path
12
12
  - Reliability memory and recall across long sessions
13
13
  - Bounded context packs, provenance, and diagnostics
14
14
  - DPO export and analytics bundle generation after runtime reliability lands
@@ -105,9 +105,9 @@ Optional hosted path:
105
105
 
106
106
  **User prompt:** "👎 That was wrong."
107
107
  **Expected behavior:**
108
- - Claude Desktop can pass the last ~10 messages and the failed tool call into `capture_feedback`
108
+ - Claude Desktop can pass up to 8 prior recorded entries and the failed tool call into `capture_feedback`
109
109
  - ThumbGate distills a proposed `whatWentWrong` and `whatToChange` from recent history
110
- - A linked follow-up note can refine the same feedback record with `relatedFeedbackId`
110
+ - A linked 60-second follow-up session can refine the same feedback record with `relatedFeedbackId`
111
111
 
112
112
  ## Privacy Policy
113
113
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "plugins": [
5
5
  {
6
6
  "name": "thumbgate",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "thumbgate",
3
3
  "description": "Pre-action gates that block AI coding agents from repeating known mistakes. Captures feedback, auto-promotes failures into prevention rules, and enforces them via PreToolUse hooks.",
4
- "version": "1.2.0",
4
+ "version": "1.3.0",
5
5
  "author": {
6
6
  "name": "Igor Ganapolsky"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "ThumbGate — 👍👎 feedback that teaches your AI agent. Thumbs down a mistake, it never happens again.",
5
5
  "homepage": "https://github.com/IgorGanapolsky/thumbgate",
6
6
  "transport": "stdio",
package/README.md CHANGED
@@ -1,23 +1,27 @@
1
1
  # ThumbGate
2
2
 
3
- Make your AI coding agent self-improving. ThumbGate turns thumbs-up and thumbs-down into a control plane for autonomous development: pre-action gates, workflow governance, and isolated execution guidance for high-risk runs.
3
+ Make your AI coding agent self-improving. ThumbGate turns thumbs-up and thumbs-down into a learned control plane for autonomous development: pre-action gates, a trained intervention policy, workflow governance, and isolated execution guidance for high-risk runs.
4
4
 
5
5
  [![CI](https://github.com/IgorGanapolsky/ThumbGate/actions/workflows/ci.yml/badge.svg)](https://github.com/IgorGanapolsky/ThumbGate/actions/workflows/ci.yml)
6
6
  [![npm](https://img.shields.io/npm/v/thumbgate)](https://www.npmjs.com/package/thumbgate)
7
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
8
- [![Try Free](https://img.shields.io/badge/Pro-Try%20Free%20→-635bff?style=for-the-badge&logo=stripe&logoColor=white)](https://thumbgate-production.up.railway.app/checkout/pro?utm_source=github&utm_medium=readme&utm_campaign=badge_cta)
8
+ [![Start Sprint](https://img.shields.io/badge/Workflow%20Hardening%20Sprint-Start%20Intake%20→-16a34a?style=for-the-badge)](https://thumbgate-production.up.railway.app/?utm_source=github&utm_medium=readme&utm_campaign=badge_cta#workflow-sprint-intake)
9
9
 
10
- **[Pro Page](https://thumbgate-production.up.railway.app/pro?utm_source=github&utm_medium=readme&utm_campaign=pro_page)** · **[Live Dashboard](https://thumbgate-production.up.railway.app/dashboard?utm_source=github&utm_medium=readme&utm_campaign=top_cta)** · **[Pricing](https://thumbgate-production.up.railway.app/?utm_source=github&utm_medium=readme&utm_campaign=top_cta#pricing)** · **[Setup Guide](https://thumbgate-production.up.railway.app/guide?utm_source=github&utm_medium=readme&utm_campaign=top_cta)**
10
+ **[Workflow Hardening Sprint](https://thumbgate-production.up.railway.app/?utm_source=github&utm_medium=readme&utm_campaign=top_cta#workflow-sprint-intake)** · **[Pro Page](https://thumbgate-production.up.railway.app/pro?utm_source=github&utm_medium=readme&utm_campaign=pro_page)** · **[Live Dashboard](https://thumbgate-production.up.railway.app/dashboard?utm_source=github&utm_medium=readme&utm_campaign=top_cta)** · **[Setup Guide](https://thumbgate-production.up.railway.app/guide?utm_source=github&utm_medium=readme&utm_campaign=top_cta)**
11
11
 
12
12
  **Popular buyer questions:** **[How to stop repeated AI agent mistakes](https://thumbgate-production.up.railway.app/guides/stop-repeated-ai-agent-mistakes?utm_source=github&utm_medium=readme&utm_campaign=buyer_questions)** · **[Cursor guardrails](https://thumbgate-production.up.railway.app/guides/cursor-agent-guardrails?utm_source=github&utm_medium=readme&utm_campaign=buyer_questions)** · **[Codex CLI guardrails](https://thumbgate-production.up.railway.app/guides/codex-cli-guardrails?utm_source=github&utm_medium=readme&utm_campaign=buyer_questions)** · **[Gemini CLI memory + enforcement](https://thumbgate-production.up.railway.app/guides/gemini-cli-feedback-memory?utm_source=github&utm_medium=readme&utm_campaign=buyer_questions)**
13
13
 
14
14
  ### Get Started
15
15
 
16
- **ThumbGate Pro (Recommended)** zero config, team analytics, shared lesson DB:
16
+ **Best first paid motion for teams:** the **Workflow Hardening Sprint**.
17
17
 
18
- [![Sign up for ThumbGate Pro](https://img.shields.io/badge/>>%20Start%20Free%20→%20ThumbGate%20Pro-635bff?style=for-the-badge)](https://thumbgate-production.up.railway.app/checkout/pro?utm_source=github&utm_medium=readme&utm_campaign=get_started)
18
+ [![Start Workflow Hardening Sprint](https://img.shields.io/badge/>>%20Start%20Intake%20→%20Workflow%20Hardening%20Sprint-16a34a?style=for-the-badge)](https://thumbgate-production.up.railway.app/?utm_source=github&utm_medium=readme&utm_campaign=get_started#workflow-sprint-intake)
19
19
 
20
- Free for individual developers. Pro adds team dashboards, DPO export, and unlimited lesson search. [See pricing →](https://thumbgate-production.up.railway.app/?utm_source=github&utm_medium=readme&utm_campaign=pricing_link#pricing)
20
+ One workflow. One owner. One proof review. That is the fastest path to a paid team engagement because it qualifies a real blocker before anyone tries to sell a full rollout.
21
+
22
+ **Self-serve for individual operators:** [ThumbGate Pro](https://thumbgate-production.up.railway.app/pro?utm_source=github&utm_medium=readme&utm_campaign=pro_page) is the paid lane for the personal local dashboard, DPO export, and review-ready evidence.
23
+
24
+ Free stays for individual developers. Pro is **$19/mo or $149/yr** for solo operators. Team pricing anchors at **$12/seat/mo with a 3-seat minimum**, but the public Team path remains intake-first through the sprint. [See pricing →](https://thumbgate-production.up.railway.app/?utm_source=github&utm_medium=readme&utm_campaign=pricing_link#pricing)
21
25
 
22
26
  **Paid path for individual operators:** [ThumbGate Pro](https://thumbgate-production.up.railway.app/pro?utm_source=github&utm_medium=readme&utm_campaign=pro_page) is the buyer-ready page for the personal local dashboard, DPO export, and review-ready evidence. It makes the paid upgrade legible before checkout while the self-hosted path below stays optimized for open source evaluation.
23
27
 
@@ -36,6 +40,17 @@ ThumbGate is the control plane for AI coding agents:
36
40
  - High-risk local actions can be routed into Docker Sandboxes, while hosted team automations use a signed isolated sandbox lane.
37
41
  - Team rollout stays tied to [Verification Evidence](docs/VERIFICATION_EVIDENCE.md) instead of trust-me operator claims.
38
42
 
43
+ ## Release Confidence
44
+
45
+ Enterprise buyers do not just need a safer runtime. They need legible publishes.
46
+
47
+ - Release-relevant PRs must carry a `.changeset/*.md` entry, so every shipped package version has a customer-readable explanation before publish.
48
+ - [SemVer Policy](docs/SEMVER_POLICY.md) and version-sync checks keep `package.json`, `CHANGELOG.md`, plugin manifests, and installer metadata aligned.
49
+ - CI enforces changeset coverage, version sync, tests, coverage, proof lanes, and operational integrity before merge.
50
+ - Final close-out requires verifying the exact `main` merge commit, with proof anchored in [Verification Evidence](docs/VERIFICATION_EVIDENCE.md).
51
+
52
+ See [Release Confidence](docs/RELEASE_CONFIDENCE.md) for the full trust chain.
53
+
39
54
  ## Before / After
40
55
 
41
56
  ```
@@ -101,7 +116,9 @@ Or wire MCP directly: `claude mcp add thumbgate -- npx -y thumbgate serve`
101
116
 
102
117
  Works with **Claude Code, Cursor, Codex, Gemini, Amp, OpenCode**, and any MCP-compatible agent.
103
118
 
104
- > **Want team analytics and shared lessons?** [Start with ThumbGate Pro →](https://thumbgate-production.up.railway.app/checkout/pro?utm_source=github&utm_medium=readme&utm_campaign=quickstart_cta) Free for individual devs. No credit card required.
119
+ > **Need shared enforcement, auditability, and rollout proof for a team workflow?** [Start with the Workflow Hardening Sprint →](https://thumbgate-production.up.railway.app/?utm_source=github&utm_medium=readme&utm_campaign=quickstart_cta#workflow-sprint-intake)
120
+ >
121
+ > **Need a personal dashboard and DPO export for yourself?** [See ThumbGate Pro →](https://thumbgate-production.up.railway.app/pro?utm_source=github&utm_medium=readme&utm_campaign=quickstart_cta_pro)
105
122
 
106
123
  ## Built-in Gates
107
124
 
@@ -130,7 +147,7 @@ Works with **Claude Code, Cursor, Codex, Gemini, Amp, OpenCode**, and any MCP-co
130
147
  └─► lesson inferred from full conversation
131
148
  ```
132
149
 
133
- History-aware distillation turns vague signals into concrete lessons using the last ~10 messages and the failed tool call.
150
+ History-aware distillation turns vague negative signals into concrete lessons. In the current Claude auto-capture path, ThumbGate can reuse up to 8 prior recorded conversation entries plus the failed tool call, then keep a linked 60-second follow-up session open for later clarification.
134
151
 
135
152
  Free and self-hosted users can invoke `search_lessons` directly through MCP, and via the CLI with `npx thumbgate lessons`.
136
153
 
@@ -143,17 +160,19 @@ Free and self-hosted users can invoke `search_lessons` directly through MCP, and
143
160
  │ Unlimited │ Unlimited feedback │ Shared hosted lesson DB │
144
161
  │ feedback │ captures + search │ Org dashboard │
145
162
  │ captures │ DPO export │ Gate template library │
146
- 5 daily │ Personal dashboard │ Isolated execution guidance │
147
- │ lesson │ │ │
148
- │ searches │ │ │
163
+ 3 captures │ Personal dashboard │ Isolated execution guidance │
164
+ 5 lesson │ │ │
165
+ │ searches/day │ │ │
149
166
  └──────────────┴────────────────────┴──────────────────────────────┘
150
167
  ```
151
168
 
152
- Free includes unlimited feedback captures, 5 daily lesson searches, unlimited recall, and gating. History-aware distillation turns vague feedback into concrete lessons. Feedback sessions (`open_feedback_session` → `append_feedback_context` → `finalize_feedback_session`) link follow-up context to one record.
169
+ Free includes 3 daily feedback captures, 5 daily lesson searches, unlimited recall, and gating. History-aware distillation turns vague feedback into concrete lessons, and feedback sessions (`open_feedback_session` → `append_feedback_context` → `finalize_feedback_session`) keep later clarification linked to one record. The current Claude auto-capture path uses up to 8 prior recorded entries for vague thumbs-down signals; the follow-up session stays open for 60 seconds and resets when more context is appended.
170
+
171
+ It does not update model weights in frontier LLMs. ThumbGate improves runtime behavior by training a local sidecar intervention policy from feedback, gate audits, and diagnostics, then using that policy to strengthen recall, verification, and enforcement decisions on future runs.
153
172
 
154
- It does not update model weights. It's context engineering plus execution control: enforcement that gets smarter every session, with Docker Sandboxes guidance for the riskiest local actions and a hosted isolated lane for team workflows.
173
+ The fastest commercial path is not a generic self-serve subscription pitch. It is the Workflow Hardening Sprint: qualify one repeated failure in one valuable workflow, prove the control plane on that surface, then expand into Team seats when shared enforcement matters.
155
174
 
156
- **[Get Pro](https://thumbgate-production.up.railway.app/checkout/pro?utm_source=github&utm_medium=readme&utm_campaign=thumbgate)** | **[Start Team Rollout](https://thumbgate-production.up.railway.app/?utm_source=github&utm_medium=readme&utm_campaign=team_rollout#workflow-sprint-intake)** | **[Live Dashboard](https://thumbgate-production.up.railway.app/dashboard?utm_source=github&utm_medium=readme&utm_campaign=thumbgate)**
175
+ **[Start Workflow Hardening Sprint](https://thumbgate-production.up.railway.app/?utm_source=github&utm_medium=readme&utm_campaign=team_rollout#workflow-sprint-intake)** | **[Get Pro](https://thumbgate-production.up.railway.app/checkout/pro?utm_source=github&utm_medium=readme&utm_campaign=thumbgate)** | **[Live Dashboard](https://thumbgate-production.up.railway.app/dashboard?utm_source=github&utm_medium=readme&utm_campaign=thumbgate)**
157
176
 
158
177
  ## Tech Stack
159
178
 
@@ -180,6 +199,8 @@ It does not update model weights. It's context engineering plus execution contro
180
199
 
181
200
  - [Commercial Truth](docs/COMMERCIAL_TRUTH.md) — pricing, claims, what we don't say
182
201
  - [Changeset Strategy](docs/CHANGESET_STRATEGY.md) — how release notes, version bumps, and customer-facing change records are enforced
202
+ - [First Dollar Playbook](docs/FIRST_DOLLAR_PLAYBOOK.md) — the operator loop for turning one painful workflow into the next booked pilot
203
+ - [Release Confidence](docs/RELEASE_CONFIDENCE.md) — how Changesets, SemVer, sync checks, proof lanes, and exact-merge verification make publishes inspectable
183
204
  - [SemVer Policy](docs/SEMVER_POLICY.md) — stable vs prerelease channel rules
184
205
  - [Verification Evidence](docs/VERIFICATION_EVIDENCE.md) — proof artifacts
185
206
  - [WORKFLOW.md](WORKFLOW.md) — agent-run contract (scope, hard stops, proof commands)
@@ -3,7 +3,7 @@
3
3
  - `chatgpt/openapi.yaml`: import into GPT Actions.
4
4
  - `gemini/function-declarations.json`: Gemini function-calling definitions.
5
5
  - `mcp/server-stdio.js`: underlying local MCP stdio server implementation.
6
- - `claude/.mcp.json`: example Claude Code MCP config using `npx --yes --package thumbgate@1.2.0 thumbgate serve`.
6
+ - `claude/.mcp.json`: example Claude Code MCP config using `npx --yes --package thumbgate@1.3.0 thumbgate serve`.
7
7
  - `codex/config.toml`: example Codex MCP profile section using the same version-pinned portable launcher.
8
8
  - `amp/skills/thumbgate-feedback/SKILL.md`: Amp skill template.
9
9
  - `opencode/opencode.json`: portable OpenCode MCP profile using the same version-pinned portable launcher.
@@ -2,13 +2,13 @@
2
2
  "mcpServers": {
3
3
  "thumbgate": {
4
4
  "command": "npx",
5
- "args": ["--yes", "--package", "thumbgate@1.2.0", "thumbgate", "serve"]
5
+ "args": ["--yes", "--package", "thumbgate@1.3.0", "thumbgate", "serve"]
6
6
  }
7
7
  },
8
8
  "hooks": {
9
9
  "preToolUse": {
10
10
  "command": "npx",
11
- "args": ["--yes", "--package", "thumbgate@1.2.0", "thumbgate", "gate-check"]
11
+ "args": ["--yes", "--package", "thumbgate@1.3.0", "thumbgate", "gate-check"]
12
12
  }
13
13
  }
14
14
  }
@@ -1,9 +1,9 @@
1
1
  # Codex MCP profile (copy into ~/.codex/config.toml or merge section)
2
2
  [mcp_servers.thumbgate]
3
3
  command = "npx"
4
- args = ["--yes", "--package", "thumbgate@1.2.0", "thumbgate", "serve"]
4
+ args = ["--yes", "--package", "thumbgate@1.3.0", "thumbgate", "serve"]
5
5
 
6
6
  # Hard PreToolUse hook for Codex
7
7
  [hooks.pre_tool_use]
8
8
  command = "npx"
9
- args = ["--yes", "--package", "thumbgate@1.2.0", "thumbgate", "gate-check"]
9
+ args = ["--yes", "--package", "thumbgate@1.3.0", "thumbgate", "gate-check"]
@@ -105,7 +105,7 @@ function enforceLimit(action) {
105
105
  const limit = checkLimit(action);
106
106
  if (!limit.allowed) {
107
107
  const err = new Error(
108
- `Free tier daily limit reached for "${action}". ${UPGRADE_MESSAGE}\nUpgrade now: ${PRO_CHECKOUT_URL}`
108
+ `Free tier limit reached. Upgrade to Pro for unlimited: https://thumbgate-production.up.railway.app/pro\n${UPGRADE_MESSAGE}\nUpgrade now: ${PRO_CHECKOUT_URL}`
109
109
  );
110
110
  err.errorCategory = 'rate_limit';
111
111
  err.isRetryable = false;
@@ -119,7 +119,7 @@ const {
119
119
  finalizeSession: finalizeFeedbackSession,
120
120
  } = require('../../scripts/feedback-session');
121
121
 
122
- const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.2.0' };
122
+ const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.3.0' };
123
123
  const COMMERCE_CATEGORIES = [
124
124
  'product_recommendation',
125
125
  'brand_compliance',
@@ -7,7 +7,7 @@
7
7
  "npx",
8
8
  "--yes",
9
9
  "--package",
10
- "thumbgate@1.2.0",
10
+ "thumbgate@1.3.0",
11
11
  "thumbgate",
12
12
  "serve"
13
13
  ],
package/bin/cli.js CHANGED
@@ -115,6 +115,7 @@ function telemetryPing(installId) {
115
115
  const req = mod.request(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(payload) }, timeout: 3000 }, () => {});
116
116
  req.on('error', () => {});
117
117
  req.on('timeout', () => { req.destroy(); });
118
+ req.on('socket', (s) => s.unref()); // fire-and-forget: never block process exit
118
119
  req.end(payload);
119
120
  } catch (_) { /* telemetry is best-effort */ }
120
121
  }
@@ -134,8 +135,8 @@ function proNudge(context) {
134
135
  function limitNudge(action) {
135
136
  if (process.env.THUMBGATE_NO_NUDGE === '1') return;
136
137
  process.stderr.write(
137
- `\n ⚠️ Free tier: ${action} daily limit reached.\n` +
138
- ` Upgrade to Pro for unlimited usage — ${PRO_PRICE_LABEL}:\n` +
138
+ `\n ⚠️ Free tier limit reached. Upgrade to Pro for unlimited: https://thumbgate-production.up.railway.app/pro\n` +
139
+ ` ${action} daily limit reached. Upgrade to Pro for unlimited usage — ${PRO_PRICE_LABEL}:\n` +
139
140
  ` ${PRO_CHECKOUT_URL}\n\n`
140
141
  );
141
142
  }
@@ -580,13 +581,12 @@ function init() {
580
581
  console.log('Run: npx thumbgate help');
581
582
  trackEvent('cli_init', { command: 'init' });
582
583
  proNudge();
583
- process.stderr.write(
584
- '\n ┌──────────────────────────────────────────────────┐\n' +
585
- ' │ Free: unlimited 👍👎 · 5 searches · 5 gates │\n' +
586
- ' │ Pro: + dashboard + DPO export + full search │\n' +
587
- ' │ $19/mo npx thumbgate pro │\n' +
588
- ' └──────────────────────────────────────────────────┘\n\n'
589
- );
584
+ console.log('');
585
+ console.log(' ┌─────────────────────────────────────────────────────┐');
586
+ console.log(' │ Unlock unlimited captures, searches & dashboard: ');
587
+ console.log(' │ https://thumbgate-production.up.railway.app/pro │');
588
+ console.log(' │ Pro starts at $19/mo 7-day free trial included │');
589
+ console.log(' └─────────────────────────────────────────────────────┘');
590
590
 
591
591
  try {
592
592
  const { appendFunnelEvent } = require(path.join(PKG_ROOT, 'scripts', 'billing'));
@@ -663,7 +663,7 @@ function capture() {
663
663
  const pct = Math.round((capLimit.used / capLimit.limit) * 100);
664
664
  console.log(` Usage : ${capLimit.used}/${capLimit.limit} captures today (${pct}%)`);
665
665
  if (capLimit.remaining <= 1) {
666
- console.log(` ⚠️ Last capture for today. Upgrade to Pro for unlimited.`);
666
+ console.log(` ⚠️ Free tier limit reached. Upgrade to Pro for unlimited: https://thumbgate-production.up.railway.app/pro`);
667
667
  }
668
668
  }
669
669
  console.log('');
@@ -892,7 +892,7 @@ function pro() {
892
892
 
893
893
  if (args.info) {
894
894
  printProInfo();
895
- return;
895
+ process.exit(0);
896
896
  }
897
897
 
898
898
  const resolvedKey = resolveProKey();
@@ -901,6 +901,7 @@ function pro() {
901
901
  }
902
902
 
903
903
  printProInfo();
904
+ process.exit(0);
904
905
  }
905
906
 
906
907
  function summary() {
@@ -1232,6 +1233,10 @@ function cacheUpdate() {
1232
1233
 
1233
1234
  function statuslineRender() {
1234
1235
  syncActiveProjectContext();
1236
+ try {
1237
+ const { syncClaudeHistoryFeedback } = require(path.join(PKG_ROOT, 'scripts', 'claude-feedback-sync'));
1238
+ syncClaudeHistoryFeedback();
1239
+ } catch (_) { /* best-effort fallback sync */ }
1235
1240
  const payload = readStdinText();
1236
1241
  const output = execFileSync('bash', [path.join(PKG_ROOT, 'scripts', 'statusline.sh')], {
1237
1242
  encoding: 'utf8',
@@ -1283,6 +1288,10 @@ function hookAutoCapture() {
1283
1288
 
1284
1289
  function sessionStart() {
1285
1290
  syncActiveProjectContext();
1291
+ try {
1292
+ const { syncClaudeHistoryFeedback } = require(path.join(PKG_ROOT, 'scripts', 'claude-feedback-sync'));
1293
+ syncClaudeHistoryFeedback();
1294
+ } catch (_) { /* best-effort fallback sync */ }
1286
1295
  const { analyzeFeedback } = require(path.join(PKG_ROOT, 'scripts', 'feedback-loop'));
1287
1296
  const { refreshStatuslineCache } = require(path.join(PKG_ROOT, 'scripts', 'hook-thumbgate-cache-updater'));
1288
1297
  refreshStatuslineCache(analyzeFeedback());
@@ -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 and workflow governance for AI coding agents. 👎 Thumbs down prevention rule mistake permanently blocked. 👍 Thumbs up pattern reinforced. History-aware lessons from your corrections. Risky local runs can route into Docker Sandboxes. Team adds shared lessons and org visibility, plus isolated execution guidance.",
5
+ "description": "Pre-action gates, a learned intervention policy, and workflow governance for self-improving AI coding agents. 👎 Thumbs down distills history-aware lessons from up to 8 prior entries and stays linked to a 60-second feedback session. 👍 Thumbs up reinforces safe patterns. Team adds shared lessons and org visibility.",
6
6
  "topics": [
7
7
  "thumbgate",
8
8
  "pre-action-gates",
@@ -22,6 +22,17 @@
22
22
  "tokenCap": 500000,
23
23
  "requireReason": true
24
24
  }
25
+ },
26
+ "localFrontier": {
27
+ "label": "GLM 5.1",
28
+ "taskTypes": [],
29
+ "maxContextTokens": 1000000,
30
+ "costMultiplier": 0.0,
31
+ "budgetDefaults": {
32
+ "tokenCap": 2000000,
33
+ "requireReason": false
34
+ },
35
+ "notes": "Self-hosted open-source tier. Activate via THUMBGATE_LOCAL_MODEL_FAMILY=glm-*. Zero marginal cost; no token budget enforcement needed."
25
36
  }
26
37
  },
27
38
  "escalationRules": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
4
4
  "description": "ThumbGate — 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": {
@@ -78,7 +78,7 @@
78
78
  "test:multi-hop-recall": "node --test tests/multi-hop-recall.test.js",
79
79
  "test:synthetic-dpo": "node --test tests/synthetic-dpo.test.js",
80
80
  "test:thumbgate-skill": "node --test tests/thumbgate-skill.test.js",
81
- "test:statusline": "node --test tests/statusline.test.js tests/statusline-links.test.js",
81
+ "test:statusline": "node --test tests/claude-feedback-sync.test.js tests/statusline.test.js tests/statusline-links.test.js",
82
82
  "test:memory-dedup": "node --test tests/memory-dedup.test.js",
83
83
  "test:lesson-db": "node --test tests/lesson-db.test.js",
84
84
  "test:lesson-rotation": "node --test tests/lesson-rotation.test.js",
@@ -121,7 +121,7 @@
121
121
  "test:loop": "node scripts/feedback-loop.js --test",
122
122
  "test:dpo": "node scripts/export-dpo-pairs.js --test",
123
123
  "test:kto": "node --test tests/export-kto.test.js",
124
- "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/context-manager.test.js tests/contextfs.test.js tests/job-api.test.js tests/pack-templates.test.js tests/dashboard.test.js tests/dashboard-render-spec.test.js tests/dashboard-html.test.js tests/agent-readiness.test.js tests/mcp-policy.test.js tests/subagent-profiles.test.js tests/intent-router.test.js tests/internal-agent-bootstrap.test.js tests/lesson-search.test.js tests/thumbgate-search.test.js tests/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",
124
+ "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/context-manager.test.js tests/contextfs.test.js tests/job-api.test.js tests/pack-templates.test.js tests/dashboard.test.js tests/dashboard-render-spec.test.js tests/dashboard-html.test.js tests/agent-readiness.test.js tests/mcp-policy.test.js tests/subagent-profiles.test.js tests/intent-router.test.js tests/internal-agent-bootstrap.test.js tests/lesson-search.test.js tests/thumbgate-search.test.js tests/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/lessons-page.test.js tests/pro-landing.test.js tests/local-model-profile.test.js tests/risk-scorer.test.js tests/context-compaction.test.js tests/reminder-engine.test.js tests/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",
125
125
  "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",
126
126
  "test:e2e": "node --test tests/e2e-pipeline.test.js tests/e2e-product-flows.test.js tests/e2e-coverage-contract.test.js",
127
127
  "test:rlaif": "node --test tests/rlaif-self-audit.test.js tests/dpo-optimizer.test.js tests/meta-policy.test.js",
@@ -129,7 +129,7 @@
129
129
  "test:quality": "node --test tests/validate-feedback.test.js",
130
130
  "test:intelligence": "node --test tests/intelligence.test.js",
131
131
  "test:training-export": "node --test tests/training-export.test.js tests/databricks-export.test.js",
132
- "test:deployment": "node --test tests/deployment.test.js tests/deploy-policy.test.js tests/publish-decision.test.js tests/changeset-check.test.js",
132
+ "test:deployment": "node --test tests/deployment.test.js tests/deploy-policy.test.js tests/publish-decision.test.js tests/changeset-check.test.js tests/sonarcloud-workflow.test.js",
133
133
  "test:operational-integrity": "node --test tests/operational-integrity.test.js",
134
134
  "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 tests/enterprise-story.test.js",
135
135
  "test:billing": "node --test tests/billing.test.js",
@@ -137,7 +137,7 @@
137
137
  "test:evolution": "node --test tests/workspace-evolver.test.js",
138
138
  "test:watcher": "node --test tests/jsonl-watcher.test.js",
139
139
  "test:autoresearch": "node --test tests/autoresearch.test.js",
140
- "test:ops": "node --test 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/delegation-runtime.test.js tests/disagreement-mining.test.js tests/failure-diagnostics.test.js tests/gate-stats.test.js tests/github-billing.test.js tests/markdown-escape.test.js tests/mcp-tools-gates.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-webhook-route.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",
140
+ "test:ops": "node --test 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/delegation-runtime.test.js tests/disagreement-mining.test.js tests/failure-diagnostics.test.js tests/gate-stats.test.js tests/github-billing.test.js tests/intervention-policy.test.js tests/markdown-escape.test.js tests/mcp-tools-gates.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-webhook-route.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",
141
141
  "test:tessl": "node --test tests/tessl-export.test.js",
142
142
  "test:gates": "node --test tests/gate-templates.test.js tests/gates-engine.test.js tests/claim-verification.test.js tests/secret-scanner.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",
143
143
  "test:workers": "npm --prefix workers ci && npm --prefix workers test",
@@ -176,6 +176,7 @@
176
176
  "prove:harnesses": "node scripts/prove-harnesses.js",
177
177
  "prove:local-intelligence": "node scripts/prove-local-intelligence.js",
178
178
  "prove:runtime": "node scripts/prove-runtime.js",
179
+ "prove:packaged-runtime": "node scripts/prove-packaged-runtime.js",
179
180
  "prove:settings": "node scripts/prove-settings.js",
180
181
  "prove:seo-gsd": "node scripts/prove-seo-gsd.js",
181
182
  "prove:tessl": "node scripts/prove-tessl.js",
@@ -306,6 +307,7 @@
306
307
  "mcpName": "io.github.IgorGanapolsky/thumbgate",
307
308
  "devDependencies": {
308
309
  "@changesets/changelog-github": "^0.5.1",
309
- "@changesets/cli": "^2.30.0"
310
+ "@changesets/cli": "^2.30.0",
311
+ "c8": "^11.0.0"
310
312
  }
311
313
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-bridge",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
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",
@@ -5,7 +5,7 @@
5
5
  "args": [
6
6
  "--yes",
7
7
  "--package",
8
- "thumbgate@1.2.0",
8
+ "thumbgate@1.3.0",
9
9
  "thumbgate",
10
10
  "serve"
11
11
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-profile",
3
- "version": "1.2.0",
3
+ "version": "1.3.0",
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",
@@ -5,7 +5,7 @@
5
5
  "args": [
6
6
  "--yes",
7
7
  "--package",
8
- "thumbgate@1.2.0",
8
+ "thumbgate@1.3.0",
9
9
  "thumbgate",
10
10
  "serve"
11
11
  ]
@@ -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 = ["--yes", "--package", "thumbgate@1.2.0", "thumbgate", "serve"]
34
+ args = ["--yes", "--package", "thumbgate@1.3.0", "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.
@@ -29,7 +29,7 @@ That profile launches:
29
29
  ```toml
30
30
  [mcp_servers.thumbgate]
31
31
  command = "npx"
32
- args = ["--yes", "--package", "thumbgate@1.2.0", "thumbgate", "serve"]
32
+ args = ["--yes", "--package", "thumbgate@1.3.0", "thumbgate", "serve"]
33
33
  ```
34
34
 
35
35
  ## Why this exists
@@ -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": "1.2.0",
5
+ "version": "1.3.0",
6
6
  "author": {
7
7
  "name": "Igor Ganapolsky"
8
8
  },
@@ -11,7 +11,7 @@ How it works:
11
11
 
12
12
  - 👎 **Thumbs down** a mistake — it gets blocked from happening again
13
13
  - 👍 **Thumbs up** good work — the agent remembers the pattern
14
- - **History-aware lesson distillation** — vague thumbs signals can be grounded in the last ~10 messages and failed tool call
14
+ - **History-aware lesson distillation** — vague thumbs-down signals can be grounded in up to 8 prior recorded entries and the failed tool call
15
15
  - **Cross-session memory** — lessons persist between conversations
16
16
  - **Automatic enforcement** — repeated failures become prevention rules
17
17
  - **Zero config** — install and start giving feedback
@@ -108,7 +108,7 @@ Or copy the plugin MCP config into `.cursor/mcp.json`:
108
108
 
109
109
  Use the `/capture-feedback` command or the `capture_feedback` MCP tool to send structured feedback directly to the ThumbGate memory system. Feedback drives prevention rule generation — repeated failure patterns are auto-promoted into enforceable gates.
110
110
 
111
- When the user only gives a quick `thumbs_down`, `wrong`, or `correct`, the Cursor plugin should include the last ~10 messages and the failed tool call in `chatHistory` so ThumbGate can propose the lesson automatically. If the explanation comes later, reuse the earlier event with `relatedFeedbackId` instead of creating an isolated duplicate.
111
+ When the user only gives a quick `thumbs_down`, `wrong`, or `correct`, the Cursor plugin should include up to 8 prior recorded entries and the failed tool call in `chatHistory` so ThumbGate can propose the lesson automatically. If the explanation comes later, reuse the earlier event with `relatedFeedbackId` so the linked 60-second follow-up session refines the same feedback record instead of creating an isolated duplicate.
112
112
 
113
113
  ## What makes this useful in Cursor
114
114
 
@@ -15,7 +15,7 @@ Invoke this command to record a feedback signal with context and tags. If the us
15
15
 
16
16
  1. Specify signal: `thumbs_up` or `thumbs_down`.
17
17
  2. If the user already gave a clear explanation, pass it as `context`.
18
- 3. If the explanation is vague or omitted, gather the last ~10 messages plus the failed tool call into `chatHistory`.
18
+ 3. If the explanation is vague or omitted, gather up to 8 prior recorded entries plus the failed tool call into `chatHistory`.
19
19
  4. Add tags for categorization.
20
20
  5. If this is a later clarification for an existing feedback event, include `relatedFeedbackId`.
21
21
  6. Call the `capture_feedback` MCP tool and show the proposed lesson or corrective rule back to the user.
@@ -30,4 +30,4 @@ Invoke this command to record a feedback signal with context and tags. If the us
30
30
  /capture-feedback thumbs_down
31
31
  ```
32
32
 
33
- In the second example, the command should rely on history-aware distillation instead of refusing the signal outright.
33
+ In the second example, the command should rely on history-aware distillation instead of refusing the signal outright. If the user adds more detail later, reuse `relatedFeedbackId` so the linked 60-second follow-up session updates the same record.
@@ -20,15 +20,15 @@ After any mistake, unexpected behavior, or completed task, prompt to capture str
20
20
  - `signal`: "thumbs_up" or "thumbs_down"
21
21
  - `context`: Brief description of what happened when the explanation is already explicit
22
22
  - `tags`: Relevant tags (e.g., "test-failure", "wrong-approach", "deployment-error")
23
- - `chatHistory`: the last ~10 messages plus the failed tool call when the signal is vague and the lesson should be inferred from recent conversation
23
+ - `chatHistory`: up to 8 prior recorded entries plus the failed tool call when the thumbs-down signal is vague and the lesson should be inferred from recent conversation
24
24
  - `relatedFeedbackId`: use for a later clarification that should refine an existing feedback event
25
25
  - `rubric_scores`: Optional structured scores if a rubric applies
26
26
 
27
27
  2. Include enough context so the feedback is useful for future prevention rule generation.
28
- 3. If the user only gives a bare thumbs signal or short correction, still capture it and let ThumbGate propose `whatWentWrong` / `whatToChange` from recent history.
28
+ 3. If the user only gives a bare thumbs signal or short correction, still capture it and let ThumbGate propose `whatWentWrong` / `whatToChange` from recent history. If the explanation arrives later, reuse `relatedFeedbackId` so the linked 60-second follow-up session refines the same record.
29
29
 
30
30
  ## Examples
31
31
 
32
32
  - Test failure after refactor: signal=thumbs_down, tags=["test-failure", "refactor"], context="Tests broke after extracting helper function — missed internal dependency"
33
33
  - Successful deployment: signal=thumbs_up, tags=["deployment", "success"], context="Clean deploy after running gate checks"
34
- - Vague correction after failed tool use: signal=thumbs_down, chatHistory=[last 10 messages + failed tool call], tags=["wrong-approach", "tool-failure"]
34
+ - Vague correction after failed tool use: signal=thumbs_down, chatHistory=[up to 8 prior recorded entries + failed tool call], tags=["wrong-approach", "tool-failure"]
@@ -21,7 +21,7 @@ Use the `capture_feedback` MCP tool with:
21
21
  - **signal** — `"thumbs_up"` or `"thumbs_down"`
22
22
  - **context** — Description of what happened and why when the user already said it clearly
23
23
  - **tags** — Array of relevant tags for categorization (e.g., `["test-failure", "refactor"]`)
24
- - **chatHistory** — The last ~10 messages plus the failed tool call when the thumbs signal is vague and the lesson must be distilled from recent context
24
+ - **chatHistory** — Up to 8 prior recorded entries plus the failed tool call when the thumbs-down signal is vague and the lesson must be distilled from recent context
25
25
  - **relatedFeedbackId** — Use when the user adds clarifying detail later and it should refine the existing feedback event
26
26
  - **rubric_scores** — Optional object with structured quality scores
27
27
 
@@ -39,8 +39,9 @@ If the user only says `thumbs_down`, `wrong`, `correct`, or `this failed`, do no
39
39
 
40
40
  - the signal
41
41
  - any minimal context the user already gave
42
- - `chatHistory` containing the recent conversation window
42
+ - `chatHistory` containing up to 8 prior recorded entries from the current correction thread
43
43
  - the failed tool call or command when available
44
+ - `relatedFeedbackId` if the user is clarifying an already-open 60-second follow-up session
44
45
 
45
46
  That lets ThumbGate propose `whatWentWrong`, `whatToChange`, and a candidate rule automatically.
46
47
 
@@ -25,7 +25,7 @@ The portable profile adds this MCP server entry:
25
25
  "mcp": {
26
26
  "thumbgate": {
27
27
  "type": "local",
28
- "command": ["npx", "--yes", "--package", "thumbgate@1.2.0", "thumbgate", "serve"],
28
+ "command": ["npx", "--yes", "--package", "thumbgate@1.3.0", "thumbgate", "serve"],
29
29
  "enabled": true
30
30
  }
31
31
  }