thumbgate 1.11.0 โ†’ 1.11.1

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-marketplace",
3
- "version": "1.11.0",
3
+ "version": "1.11.1",
4
4
  "owner": {
5
5
  "name": "Igor Ganapolsky",
6
6
  "email": "ig5973700@gmail.com"
@@ -13,7 +13,7 @@
13
13
  "source": "npm",
14
14
  "package": "thumbgate"
15
15
  },
16
- "version": "1.11.0",
16
+ "version": "1.11.1",
17
17
  "author": {
18
18
  "name": "Igor Ganapolsky"
19
19
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "thumbgate",
3
3
  "description": "Type ๐Ÿ‘ or ๐Ÿ‘Ž on any agent action. ThumbGate captures it, distills a lesson, and blocks the pattern from repeating. One thumbs-down = the agent physically cannot make that mistake again. 33 pre-action gates, budget enforcement, self-protection, and NIST/SOC2 compliance tags.",
4
- "version": "1.11.0",
4
+ "version": "1.11.1",
5
5
  "author": {
6
6
  "name": "Igor Ganapolsky"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.11.0",
3
+ "version": "1.11.1",
4
4
  "description": "ThumbGate โ€” ๐Ÿ‘๐Ÿ‘Ž feedback that teaches your AI agent. Thumbs down a mistake, it never happens again.",
5
5
  "homepage": "https://thumbgate-production.up.railway.app",
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@1.11.0 thumbgate serve`.
6
+ - `claude/.mcp.json`: example Claude Code MCP config using `npx --yes --package thumbgate@1.11.1 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.11.0", "thumbgate", "serve"]
5
+ "args": ["--yes", "--package", "thumbgate@1.11.1", "thumbgate", "serve"]
6
6
  }
7
7
  },
8
8
  "hooks": {
9
9
  "preToolUse": {
10
10
  "command": "npx",
11
- "args": ["--yes", "--package", "thumbgate@1.11.0", "thumbgate", "gate-check"]
11
+ "args": ["--yes", "--package", "thumbgate@1.11.1", "thumbgate", "gate-check"]
12
12
  }
13
13
  }
14
14
  }
@@ -153,7 +153,7 @@ const {
153
153
  finalizeSession: finalizeFeedbackSession,
154
154
  } = require('../../scripts/feedback-session');
155
155
 
156
- const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.11.0' };
156
+ const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.11.1' };
157
157
  const COMMERCE_CATEGORIES = [
158
158
  'product_recommendation',
159
159
  'brand_compliance',
@@ -7,7 +7,7 @@
7
7
  "npx",
8
8
  "--yes",
9
9
  "--package",
10
- "thumbgate@1.11.0",
10
+ "thumbgate@1.11.1",
11
11
  "thumbgate",
12
12
  "serve"
13
13
  ],
package/bin/cli.js CHANGED
@@ -1481,6 +1481,10 @@ function optimize() {
1481
1481
  }
1482
1482
 
1483
1483
  function serve() {
1484
+ try {
1485
+ const { repairCodexHooks } = require(path.join(PKG_ROOT, 'scripts', 'codex-self-heal'));
1486
+ repairCodexHooks();
1487
+ } catch (_) { /* self-heal is best-effort */ }
1484
1488
  // Start MCP server over stdio
1485
1489
  const mcpServer = path.join(PKG_ROOT, 'adapters', 'mcp', 'server-stdio.js');
1486
1490
  const { startStdioServer } = require(mcpServer);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.11.0",
3
+ "version": "1.11.1",
4
4
  "description": "Self-improving agent governance: type thumbs-up or thumbs-down on any AI agent action. ThumbGate turns every mistake into a prevention rule and blocks the pattern from repeating. One thumbs-down, never again. 33 pre-action gates, budget enforcement, and self-protection for Claude Code, Cursor, Codex, Gemini CLI, and Amp.",
5
5
  "homepage": "https://thumbgate-production.up.railway.app",
6
6
  "repository": {
@@ -77,6 +77,7 @@
77
77
  "scripts/creator-campaigns.js",
78
78
  "scripts/cross-encoder-reranker.js",
79
79
  "scripts/context-footprint.js",
80
+ "scripts/codex-self-heal.js",
80
81
  "scripts/daemon-manager.js",
81
82
  "scripts/dashboard-render-spec.js",
82
83
  "scripts/dashboard.js",
@@ -331,7 +332,7 @@
331
332
  "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/docs-claim-hygiene.test.js tests/thumbgate-scope.test.js tests/workflow-runs.test.js tests/workflow-sprint-intake.test.js tests/gtm-revenue-loop.test.js tests/sales-pipeline.test.js tests/enterprise-story.test.js tests/ralph-loop.test.js tests/ralph-mode-ci.test.js",
332
333
  "test:sales-pipeline": "node --test tests/sales-pipeline.test.js",
333
334
  "test:billing": "node --test tests/billing.test.js",
334
- "test:cli": "node --test tests/analytics-report.test.js tests/creator-campaigns.test.js tests/cli.test.js tests/codex-bridge-script.test.js tests/dispatch-brief.test.js tests/feedback-normalize.test.js tests/install-mcp.test.js tests/pr-manager.test.js tests/pro-local-dashboard.test.js tests/published-cli.test.js tests/revenue-status.test.js tests/stripe-live-status.test.js",
335
+ "test:cli": "node --test tests/analytics-report.test.js tests/codex-self-heal.test.js tests/creator-campaigns.test.js tests/cli.test.js tests/codex-bridge-script.test.js tests/dependabot-changeset.test.js tests/dispatch-brief.test.js tests/feedback-normalize.test.js tests/install-mcp.test.js tests/pr-manager.test.js tests/pro-local-dashboard.test.js tests/published-cli.test.js tests/revenue-status.test.js tests/stripe-live-status.test.js",
335
336
  "test:evolution": "node --test tests/workspace-evolver.test.js",
336
337
  "test:watcher": "node --test tests/jsonl-watcher.test.js",
337
338
  "test:autoresearch": "node --test tests/autoresearch.test.js",
@@ -582,7 +583,7 @@
582
583
  "mcpName": "io.github.IgorGanapolsky/thumbgate",
583
584
  "devDependencies": {
584
585
  "@changesets/changelog-github": "^0.6.0",
585
- "@changesets/cli": "^2.30.0",
586
+ "@changesets/cli": "^2.31.0",
586
587
  "c8": "^11.0.0",
587
588
  "undici": "^8.1.0"
588
589
  }
package/public/index.html CHANGED
@@ -974,7 +974,7 @@ __GA_BOOTSTRAP__
974
974
  <!-- HOW IT WORKS -->
975
975
  <section class="how-it-works" id="how-it-works">
976
976
  <div class="container">
977
- <div class="section-label">New in v1.11.0</div>
977
+ <div class="section-label">New in v1.11.1</div>
978
978
  <h2 class="section-title">Three steps to stop repeated AI failures</h2>
979
979
  <div class="steps">
980
980
  <div class="step">
@@ -1330,7 +1330,7 @@ __GA_BOOTSTRAP__
1330
1330
  <a href="https://www.linkedin.com/in/igorganapolsky" target="_blank" rel="noopener">LinkedIn</a>
1331
1331
  <a href="/blog">Blog</a>
1332
1332
  </div>
1333
- <span class="footer-copy">ยฉ 2026 Max Smith KDP LLC ยท MIT License ยท v1.11.0</span>
1333
+ <span class="footer-copy">ยฉ 2026 Max Smith KDP LLC ยท MIT License ยท v1.11.1</span>
1334
1334
  </div>
1335
1335
  </footer>
1336
1336
 
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const { wireCodexHooks } = require('./auto-wire-hooks');
6
+
7
+ function codexDir(homeDir) {
8
+ return path.join(homeDir, '.codex');
9
+ }
10
+
11
+ function codexConfigPath(homeDir) {
12
+ return path.join(codexDir(homeDir), 'config.json');
13
+ }
14
+
15
+ function shouldAttemptCodexSelfHeal(options = {}) {
16
+ const env = options.env || process.env;
17
+ const homeDir = options.homeDir || env.HOME || env.USERPROFILE || '';
18
+ if (!homeDir) return false;
19
+ if (env.THUMBGATE_DISABLE_CODEX_SELF_HEAL === '1') return false;
20
+ return fs.existsSync(codexDir(homeDir));
21
+ }
22
+
23
+ function repairCodexHooks(options = {}) {
24
+ const env = options.env || process.env;
25
+ const homeDir = options.homeDir || env.HOME || env.USERPROFILE || '';
26
+ if (!shouldAttemptCodexSelfHeal({ env, homeDir })) {
27
+ return { changed: false, skipped: true, reason: 'codex-not-detected' };
28
+ }
29
+
30
+ const settingsPath = options.settingsPath || codexConfigPath(homeDir);
31
+ try {
32
+ return wireCodexHooks({ settingsPath, dryRun: options.dryRun });
33
+ } catch (error) {
34
+ return { changed: false, skipped: true, reason: 'repair-failed', error };
35
+ }
36
+ }
37
+
38
+ module.exports = {
39
+ codexConfigPath,
40
+ repairCodexHooks,
41
+ shouldAttemptCodexSelfHeal,
42
+ };