thumbgate 0.9.12 → 0.9.13

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "0.9.12",
3
+ "version": "0.9.13",
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": "0.9.12",
4
+ "version": "0.9.13",
5
5
  "author": {
6
6
  "name": "Igor Ganapolsky"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "0.9.12",
3
+ "version": "0.9.13",
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",
@@ -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@0.9.12 thumbgate serve`.
6
+ - `claude/.mcp.json`: example Claude Code MCP config using `npx --yes --package thumbgate@0.9.13 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@0.9.12", "thumbgate", "serve"]
5
+ "args": ["--yes", "--package", "thumbgate@0.9.13", "thumbgate", "serve"]
6
6
  }
7
7
  },
8
8
  "hooks": {
9
9
  "preToolUse": {
10
10
  "command": "npx",
11
- "args": ["--yes", "--package", "thumbgate@0.9.12", "thumbgate", "gate-check"]
11
+ "args": ["--yes", "--package", "thumbgate@0.9.13", "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@0.9.12", "thumbgate", "serve"]
4
+ args = ["--yes", "--package", "thumbgate@0.9.13", "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@0.9.12", "thumbgate", "gate-check"]
9
+ args = ["--yes", "--package", "thumbgate@0.9.13", "thumbgate", "gate-check"]
@@ -111,7 +111,7 @@ const {
111
111
  finalizeSession: finalizeFeedbackSession,
112
112
  } = require('../../scripts/feedback-session');
113
113
 
114
- const SERVER_INFO = { name: 'thumbgate-mcp', version: '0.9.12' };
114
+ const SERVER_INFO = { name: 'thumbgate-mcp', version: '0.9.13' };
115
115
  const COMMERCE_CATEGORIES = [
116
116
  'product_recommendation',
117
117
  'brand_compliance',
@@ -7,7 +7,7 @@
7
7
  "npx",
8
8
  "--yes",
9
9
  "--package",
10
- "thumbgate@0.9.12",
10
+ "thumbgate@0.9.13",
11
11
  "thumbgate",
12
12
  "serve"
13
13
  ],
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "0.9.12",
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.",
3
+ "version": "0.9.13",
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": {
7
7
  "type": "git",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-bridge",
3
- "version": "0.9.12",
3
+ "version": "0.9.13",
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@0.9.12",
8
+ "thumbgate@0.9.13",
9
9
  "thumbgate",
10
10
  "serve"
11
11
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-profile",
3
- "version": "0.9.12",
3
+ "version": "0.9.13",
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@0.9.12",
8
+ "thumbgate@0.9.13",
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@0.9.12", "thumbgate", "serve"]
34
+ args = ["--yes", "--package", "thumbgate@0.9.13", "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@0.9.12", "thumbgate", "serve"]
32
+ args = ["--yes", "--package", "thumbgate@0.9.13", "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": "0.9.12",
5
+ "version": "0.9.13",
6
6
  "author": {
7
7
  "name": "Igor Ganapolsky"
8
8
  },
@@ -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@0.9.12", "thumbgate", "serve"],
28
+ "command": ["npx", "--yes", "--package", "thumbgate@0.9.13", "thumbgate", "serve"],
29
29
  "enabled": true
30
30
  }
31
31
  }
package/public/index.html CHANGED
@@ -554,7 +554,7 @@ __GA_BOOTSTRAP__
554
554
  <!-- HOW IT WORKS -->
555
555
  <section class="how-it-works" id="how-it-works">
556
556
  <div class="container">
557
- <div class="section-label">New in v0.9.12</div>
557
+ <div class="section-label">New in v0.9.13</div>
558
558
  <h2 class="section-title">Three steps to stop repeated AI failures</h2>
559
559
  <div class="steps">
560
560
  <div class="step">
package/src/api/server.js CHANGED
@@ -3811,11 +3811,21 @@ async function addContext(){
3811
3811
  return;
3812
3812
  }
3813
3813
  const body = await parseJsonBody(req);
3814
+ // Auto-include conversation window when caller doesn't provide one
3815
+ let chatHistory = Array.isArray(body.chatHistory) ? body.chatHistory : body.messages;
3816
+ if (!chatHistory || chatHistory.length === 0) {
3817
+ try {
3818
+ chatHistory = readRecentConversationWindow({
3819
+ feedbackDir: getSafeDataDir(),
3820
+ limit: 10,
3821
+ });
3822
+ } catch (_) { /* best-effort — conversation window is optional */ }
3823
+ }
3814
3824
  const result = captureFeedback({
3815
3825
  signal: body.signal,
3816
3826
  context: body.context || '',
3817
3827
  relatedFeedbackId: body.relatedFeedbackId,
3818
- chatHistory: Array.isArray(body.chatHistory) ? body.chatHistory : body.messages,
3828
+ chatHistory,
3819
3829
  whatWentWrong: body.whatWentWrong,
3820
3830
  whatToChange: body.whatToChange,
3821
3831
  whatWorked: body.whatWorked,