thumbgate 1.13.0 โ†’ 1.14.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.13.0",
3
+ "version": "1.14.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.13.0",
16
+ "version": "1.14.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.13.0",
4
+ "version": "1.14.1",
5
5
  "author": {
6
6
  "name": "Igor Ganapolsky"
7
7
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.13.0",
3
+ "version": "1.14.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.13.0 thumbgate serve`.
6
+ - `claude/.mcp.json`: example Claude Code MCP config using `npx --yes --package thumbgate@1.14.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.13.0", "thumbgate", "serve"]
5
+ "args": ["--yes", "--package", "thumbgate@1.14.1", "thumbgate", "serve"]
6
6
  }
7
7
  },
8
8
  "hooks": {
9
9
  "preToolUse": {
10
10
  "command": "npx",
11
- "args": ["--yes", "--package", "thumbgate@1.13.0", "thumbgate", "gate-check"]
11
+ "args": ["--yes", "--package", "thumbgate@1.14.1", "thumbgate", "gate-check"]
12
12
  }
13
13
  }
14
14
  }
@@ -132,6 +132,10 @@ const {
132
132
  const { exportHfDataset } = require('../../scripts/export-hf-dataset');
133
133
  const { distributeContextToAgents } = require('../../scripts/swarm-coordinator');
134
134
  const { buildSessionReport } = require('../../scripts/session-report');
135
+ const {
136
+ generateOperatorArtifact,
137
+ formatArtifactMarkdown,
138
+ } = require('../../scripts/operator-artifacts');
135
139
 
136
140
  const PRO_CHECKOUT_URL = 'https://thumbgate-production.up.railway.app/checkout/pro';
137
141
 
@@ -153,7 +157,7 @@ const {
153
157
  finalizeSession: finalizeFeedbackSession,
154
158
  } = require('../../scripts/feedback-session');
155
159
 
156
- const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.13.0' };
160
+ const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.14.1' };
157
161
  const COMMERCE_CATEGORIES = [
158
162
  'product_recommendation',
159
163
  'brand_compliance',
@@ -802,6 +806,16 @@ async function callToolInner(name, args) {
802
806
  }));
803
807
  case 'session_report':
804
808
  return toTextResult(buildSessionReport({ windowHours: args.windowHours }));
809
+ case 'generate_operator_artifact': {
810
+ const artifact = await generateOperatorArtifact({
811
+ type: args.type,
812
+ windowHours: args.windowHours,
813
+ });
814
+ if (args.format === 'markdown') {
815
+ return toTextResult(formatArtifactMarkdown(artifact));
816
+ }
817
+ return toTextResult(artifact);
818
+ }
805
819
  case 'check_operational_integrity':
806
820
  return toTextResult(evaluateOperationalIntegrity({
807
821
  repoPath: args.repoPath,
@@ -7,7 +7,7 @@
7
7
  "npx",
8
8
  "--yes",
9
9
  "--package",
10
- "thumbgate@1.13.0",
10
+ "thumbgate@1.14.1",
11
11
  "thumbgate",
12
12
  "serve"
13
13
  ],
package/bin/cli.js CHANGED
@@ -1670,6 +1670,32 @@ function dashboard() {
1670
1670
  });
1671
1671
  }
1672
1672
 
1673
+ function artifacts() {
1674
+ const argv = process.argv.slice(3);
1675
+ const args = parseArgs(argv);
1676
+ const positionalType = argv.find((arg) => !arg.startsWith('--'));
1677
+ const {
1678
+ generateOperatorArtifact,
1679
+ formatArtifactMarkdown,
1680
+ } = require(path.join(PKG_ROOT, 'scripts', 'operator-artifacts'));
1681
+
1682
+ generateOperatorArtifact({
1683
+ type: args.type || positionalType || 'reliability-pulse',
1684
+ windowHours: args['window-hours'] || args.window,
1685
+ })
1686
+ .then((artifact) => {
1687
+ if (args.json) {
1688
+ console.log(JSON.stringify(artifact, null, 2));
1689
+ return;
1690
+ }
1691
+ process.stdout.write(formatArtifactMarkdown(artifact));
1692
+ })
1693
+ .catch((err) => {
1694
+ console.error(err && err.message ? err.message : err);
1695
+ process.exit(1);
1696
+ });
1697
+ }
1698
+
1673
1699
  function gateStats() {
1674
1700
  const args = parseArgs(process.argv.slice(3));
1675
1701
  const { calculateStats, formatStats } = require(path.join(PKG_ROOT, 'scripts', 'gate-stats'));
@@ -2088,6 +2114,10 @@ switch (COMMAND) {
2088
2114
  case 'dashboard':
2089
2115
  dashboard();
2090
2116
  break;
2117
+ case 'artifact':
2118
+ case 'artifacts':
2119
+ artifacts();
2120
+ break;
2091
2121
  case 'analytics': {
2092
2122
  const { run: runAnalytics } = require(path.join(PKG_ROOT, 'scripts', 'analytics-report'));
2093
2123
  runAnalytics();
@@ -58,6 +58,7 @@
58
58
  "require_evidence_for_claim",
59
59
  "distribute_context_to_agents",
60
60
  "session_report",
61
+ "generate_operator_artifact",
61
62
  "perplexity_search",
62
63
  "perplexity_ask",
63
64
  "perplexity_research",
@@ -91,7 +92,8 @@
91
92
  "estimate_uncertainty",
92
93
  "report_product_issue",
93
94
  "require_evidence_for_claim",
94
- "session_report"
95
+ "session_report",
96
+ "generate_operator_artifact"
95
97
  ],
96
98
  "commerce": [
97
99
  "capture_feedback",
@@ -143,6 +145,7 @@
143
145
  "describe_reliability_entity",
144
146
  "require_evidence_for_claim",
145
147
  "session_report",
148
+ "generate_operator_artifact",
146
149
  "perplexity_search",
147
150
  "perplexity_ask"
148
151
  ],
@@ -176,6 +179,7 @@
176
179
  "describe_reliability_entity",
177
180
  "require_evidence_for_claim",
178
181
  "session_report",
182
+ "generate_operator_artifact",
179
183
  "perplexity_search",
180
184
  "perplexity_ask"
181
185
  ],
@@ -194,7 +198,8 @@
194
198
  "verify_claim",
195
199
  "check_operational_integrity",
196
200
  "workflow_sentinel",
197
- "settings_status"
201
+ "settings_status",
202
+ "generate_operator_artifact"
198
203
  ]
199
204
  }
200
205
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.13.0",
3
+ "version": "1.14.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": {
@@ -148,11 +148,13 @@
148
148
  "scripts/operational-dashboard.js",
149
149
  "scripts/operational-integrity.js",
150
150
  "scripts/operational-summary.js",
151
+ "scripts/operator-artifacts.js",
151
152
  "scripts/optimize-context.js",
152
153
  "scripts/org-dashboard.js",
153
154
  "scripts/partner-orchestration.js",
154
155
  "scripts/perplexity-client.js",
155
156
  "scripts/predictive-insights.js",
157
+ "scripts/pr-manager.js",
156
158
  "scripts/pro-local-dashboard.js",
157
159
  "scripts/problem-detail.js",
158
160
  "scripts/product-feedback.js",
@@ -263,7 +265,7 @@
263
265
  "trace:eval": "node scripts/decision-trace.js eval",
264
266
  "social:reply-monitor": "node scripts/social-reply-monitor.js",
265
267
  "social:reply-monitor:dry": "node scripts/social-reply-monitor.js --dry-run",
266
- "test": "npm run test:schema && npm run test:loop && npm run test:dpo && npm run test:kto && npm run test:api && npm run test:proof && npm run test:e2e && npm run test:rlaif && npm run test:attribution && npm run test:quality && npm run test:intelligence && npm run test:training-export && npm run test:deployment && npm run test:operational-integrity && npm run test:workflow && npm run test:billing && npm run test:cli && npm run test:watcher && npm run test:autoresearch && npm run test:ops && npm run test:session-analyzer && npm run test:tessl && npm run test:gates && npm run test:evoskill && npm run test:gates-hardening && npm run test:workers && npm run test:social-analytics && npm run test:memalign && npm run test:xmemory-lite && npm run test:filesystem-search && npm run test:zernio && npm run test:platform-limits && npm run test:post-video && npm run test:post-everywhere-instagram && npm run test:post-everywhere-channels && npm run test:zernio-canonical-pollers && npm run test:zernio-status && npm run test:obsidian-export && npm run test:lesson-db && npm run test:lesson-rotation && npm run test:memory-dedup && npm run test:feedback-quality && npm run test:sync-version && npm run test:check-congruence && npm run test:tool-registry && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:belief-update && npm run test:hosted-config && npm run test:operational-summary && npm run test:operator-key-auth && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:plan-gate && npm run test:pulse && npm run test:semantic-layer && npm run test:data-pipeline && npm run test:optimize-context && npm run test:principle-extractor && npm run test:analytics-window && npm run test:funnel-analytics && npm run test:experiment-tracker && npm run test:build-metadata && npm run test:context-engine && npm run test:hf-papers && npm run test:marketing-experiment && npm run test:seo-gsd && npm run test:verify-run && npm run test:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:bot-detector && npm run test:postinstall && npm run test:funnel-invariants && npm run test:cli-telemetry && npm run test:pro-parity && npm run test:model-tier-router && npm run test:computer-use-firewall && npm run test:skill-exporter && npm run test:statusline && npm run test:evolution && npm run test:org-dashboard && npm run test:multi-hop-recall && npm run test:synthetic-dpo && npm run test:thumbgate-skill && npm run test:learn-hub && npm run test:feedback-fallback && npm run test:metaclaw && npm run test:server-lock && npm run test:control-tower && npm run test:pii-scanner && npm run test:data-governance && npm run test:lesson-inference && npm run test:semantic-dedup && npm run test:fs-utils && npm run test:cli-schema && npm run test:explore && npm run test:lesson-reranker && npm run test:lesson-retrieval && npm run test:cross-encoder && npm run test:reflector-agent && npm run test:feedback-session && npm run test:feedback-history-distiller && npm run test:hallucination-detector && npm run test:history-distiller && npm run test:predictive-insights && npm run test:prove-predictive-insights && npm run test:statusbar-cli && npm run test:generate-instagram-card && npm run test:instagram-thumbgate-post && npm run test:publish-instagram-thumbgate && npm run test:lesson-synthesis && npm run test:background-governance && npm run test:memory-migration && npm run test:prompt-dlp && npm run test:ephemeral-store && npm run test:agent-security && npm run test:skill-progressive && npm run test:per-step-scoring && npm run test:weekly-auto-post && npm run test:social-post-hourly && npm run test:social-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && npm run test:budget && npm run test:quick-start && npm run test:utm && npm run test:product-feedback && npm run test:feedback-root-consolidator && npm run test:engagement-audit && npm run test:install-growth-automation && npm run test:publish-thumbgate-launch && npm run test:reconcile-thumbgate-campaign && npm run test:reddit-publisher && npm run test:schedule-thumbgate-campaign && npm run test:social-reply-monitor && npm run test:sync-launch-assets && npm run test:ai-search-visibility && npm run test:perplexity && npm run test:security-scanner && npm run test:llm-client && npm run test:managed-lesson-agent && npm run test:self-distill && npm run test:meta-agent && npm run test:harness-selector && npm run test:thumbgate-bench && npm run test:seo-guides && npm run test:enforcement-loop && npm run test:cli-agent-experience && npm run test:bot-detection && npm run test:checkout-bot-guard && npm run test:session-health && npm run test:session-episodes && npm run test:spec-gate && npm run test:decision-trace && npm run test:dashboard-insights && npm run test:prompt-eval && npm run test:demo-voiceover && npm run test:gate-coherence && npm run test:gate-eval && npm run test:high-roi && npm run test:public-static-assets && npm run test:token-savings && npm run test:workflow-gate-checkpoint && npm run test:lesson-export-import && npm run test:landing-page-claims && npm run test:dashboard-deeplink-e2e && npm run test:public-package-parity && npm run test:token-savings-dashboard && npm run test:cursor-wiring && npm run test:pretooluse-injection && npm run test:recent-corrective-context && npm run test:durability-step && npm run test:mailer && npm run test:brand-assets && npm run test:enforcement-teeth && npm run test:bayes-optimal-gate && npm run test:swarm-coordinator && npm run test:session-report && npm run test:require-evidence-gate",
268
+ "test": "npm run test:schema && npm run test:loop && npm run test:dpo && npm run test:kto && npm run test:api && npm run test:proof && npm run test:e2e && npm run test:rlaif && npm run test:attribution && npm run test:quality && npm run test:intelligence && npm run test:training-export && npm run test:deployment && npm run test:operational-integrity && npm run test:workflow && npm run test:billing && npm run test:cli && npm run test:watcher && npm run test:autoresearch && npm run test:ops && npm run test:session-analyzer && npm run test:tessl && npm run test:gates && npm run test:evoskill && npm run test:gates-hardening && npm run test:workers && npm run test:social-analytics && npm run test:memalign && npm run test:xmemory-lite && npm run test:filesystem-search && npm run test:zernio && npm run test:platform-limits && npm run test:post-video && npm run test:post-everywhere-instagram && npm run test:post-everywhere-channels && npm run test:zernio-canonical-pollers && npm run test:zernio-status && npm run test:obsidian-export && npm run test:lesson-db && npm run test:lesson-rotation && npm run test:memory-dedup && npm run test:feedback-quality && npm run test:sync-version && npm run test:check-congruence && npm run test:tool-registry && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:belief-update && npm run test:hosted-config && npm run test:operational-summary && npm run test:operator-artifacts && npm run test:operator-key-auth && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:plan-gate && npm run test:pulse && npm run test:semantic-layer && npm run test:data-pipeline && npm run test:optimize-context && npm run test:principle-extractor && npm run test:analytics-window && npm run test:funnel-analytics && npm run test:experiment-tracker && npm run test:build-metadata && npm run test:context-engine && npm run test:hf-papers && npm run test:marketing-experiment && npm run test:seo-gsd && npm run test:verify-run && npm run test:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:bot-detector && npm run test:postinstall && npm run test:funnel-invariants && npm run test:cli-telemetry && npm run test:pro-parity && npm run test:model-tier-router && npm run test:computer-use-firewall && npm run test:skill-exporter && npm run test:statusline && npm run test:evolution && npm run test:org-dashboard && npm run test:multi-hop-recall && npm run test:synthetic-dpo && npm run test:thumbgate-skill && npm run test:learn-hub && npm run test:feedback-fallback && npm run test:metaclaw && npm run test:server-lock && npm run test:control-tower && npm run test:pii-scanner && npm run test:data-governance && npm run test:lesson-inference && npm run test:semantic-dedup && npm run test:fs-utils && npm run test:cli-schema && npm run test:explore && npm run test:lesson-reranker && npm run test:lesson-retrieval && npm run test:cross-encoder && npm run test:reflector-agent && npm run test:feedback-session && npm run test:feedback-history-distiller && npm run test:hallucination-detector && npm run test:history-distiller && npm run test:predictive-insights && npm run test:prove-predictive-insights && npm run test:statusbar-cli && npm run test:generate-instagram-card && npm run test:instagram-thumbgate-post && npm run test:publish-instagram-thumbgate && npm run test:lesson-synthesis && npm run test:background-governance && npm run test:memory-migration && npm run test:prompt-dlp && npm run test:ephemeral-store && npm run test:agent-security && npm run test:skill-progressive && npm run test:per-step-scoring && npm run test:weekly-auto-post && npm run test:social-post-hourly && npm run test:social-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && npm run test:budget && npm run test:quick-start && npm run test:utm && npm run test:product-feedback && npm run test:feedback-root-consolidator && npm run test:engagement-audit && npm run test:install-growth-automation && npm run test:publish-thumbgate-launch && npm run test:reconcile-thumbgate-campaign && npm run test:reddit-publisher && npm run test:schedule-thumbgate-campaign && npm run test:social-reply-monitor && npm run test:sync-launch-assets && npm run test:ai-search-visibility && npm run test:perplexity && npm run test:security-scanner && npm run test:llm-client && npm run test:managed-lesson-agent && npm run test:self-distill && npm run test:meta-agent && npm run test:harness-selector && npm run test:thumbgate-bench && npm run test:seo-guides && npm run test:enforcement-loop && npm run test:cli-agent-experience && npm run test:bot-detection && npm run test:checkout-bot-guard && npm run test:session-health && npm run test:session-episodes && npm run test:spec-gate && npm run test:decision-trace && npm run test:dashboard-insights && npm run test:prompt-eval && npm run test:demo-voiceover && npm run test:gate-coherence && npm run test:gate-eval && npm run test:high-roi && npm run test:public-static-assets && npm run test:token-savings && npm run test:workflow-gate-checkpoint && npm run test:lesson-export-import && npm run test:landing-page-claims && npm run test:dashboard-deeplink-e2e && npm run test:public-package-parity && npm run test:token-savings-dashboard && npm run test:cursor-wiring && npm run test:pretooluse-injection && npm run test:recent-corrective-context && npm run test:durability-step && npm run test:mailer && npm run test:brand-assets && npm run test:enforcement-teeth && npm run test:bayes-optimal-gate && npm run test:swarm-coordinator && npm run test:session-report && npm run test:require-evidence-gate",
267
269
  "test:swarm-coordinator": "node --test tests/swarm-coordinator.test.js",
268
270
  "test:session-report": "node --test tests/session-report.test.js",
269
271
  "test:require-evidence-gate": "node --test tests/require-evidence-gate.test.js",
@@ -294,6 +296,7 @@
294
296
  "test:belief-update": "node --test tests/belief-update.test.js",
295
297
  "test:hosted-config": "node --test tests/hosted-config.test.js",
296
298
  "test:operational-summary": "node --test tests/operational-summary.test.js",
299
+ "test:operator-artifacts": "node --test tests/operator-artifacts.test.js",
297
300
  "test:operator-key-auth": "node --test tests/api-operator-key-auth.test.js",
298
301
  "test:cloudflare-sandbox": "node --test tests/cloudflare-dynamic-sandbox.test.js tests/cloudflare-sandbox-api.test.js",
299
302
  "test:mcp-config": "node --test tests/mcp-config.test.js",
@@ -576,13 +579,14 @@
576
579
  },
577
580
  "dependencies": {
578
581
  "@anthropic-ai/sdk": "^0.90.0",
579
- "@google/genai": "^1.49.0",
582
+ "@google/genai": "1.49.0",
580
583
  "@huggingface/transformers": "^4.1.0",
581
584
  "@lancedb/lancedb": "^0.27.2",
582
585
  "apache-arrow": "^18.1.0",
583
586
  "better-sqlite3": "^12.9.0",
584
587
  "dotenv": "^17.4.2",
585
588
  "playwright-core": "^1.59.1",
589
+ "protobufjs": "^7.5.5",
586
590
  "stripe": "^22.0.2"
587
591
  },
588
592
  "overrides": {
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.13.0</div>
977
+ <div class="section-label">New in v1.14.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.13.0</span>
1333
+ <span class="footer-copy">ยฉ 2026 Max Smith KDP LLC ยท MIT License ยท v1.14.1</span>
1334
1334
  </div>
1335
1335
  </footer>
1336
1336
 
@@ -77,6 +77,18 @@ const CLI_COMMANDS = [
77
77
  { name: 'json', type: 'boolean', description: 'Output as JSON' },
78
78
  ],
79
79
  },
80
+ {
81
+ name: 'artifacts',
82
+ aliases: ['artifact'],
83
+ description: 'Operator decision artifacts - PR, reliability, revenue, and release pulses',
84
+ group: 'discovery',
85
+ mcpTool: 'generate_operator_artifact',
86
+ flags: [
87
+ { name: 'type', type: 'string', description: 'pr-pulse | reliability-pulse | revenue-pulse | release-readiness' },
88
+ { name: 'window-hours', type: 'number', description: 'Lookback window in hours (default 24)' },
89
+ { name: 'json', type: 'boolean', description: 'Output as JSON' },
90
+ ],
91
+ },
80
92
  {
81
93
  name: 'summary',
82
94
  description: 'Human-readable feedback summary',