thumbgate 1.0.0 β 1.2.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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +16 -5
- package/adapters/README.md +1 -1
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/codex/config.toml +2 -2
- package/adapters/mcp/server-stdio.js +19 -7
- package/adapters/opencode/opencode.json +1 -1
- package/config/github-about.json +1 -1
- package/config/mcp-allowlists.json +1 -0
- package/package.json +22 -11
- package/plugins/claude-codex-bridge/.claude-plugin/plugin.json +1 -1
- package/plugins/claude-codex-bridge/.mcp.json +1 -1
- package/plugins/codex-profile/.codex-plugin/plugin.json +1 -1
- package/plugins/codex-profile/.mcp.json +1 -1
- package/plugins/codex-profile/INSTALL.md +1 -1
- package/plugins/codex-profile/README.md +1 -1
- package/plugins/cursor-marketplace/.cursor-plugin/plugin.json +1 -1
- package/plugins/opencode-profile/INSTALL.md +1 -1
- package/public/compare.html +302 -0
- package/public/index.html +41 -11
- package/scripts/__pycache__/train_from_feedback.cpython-312.pyc +0 -0
- package/scripts/ai-search-visibility.js +142 -0
- package/scripts/changeset-check.js +372 -0
- package/scripts/check-congruence.js +7 -4
- package/scripts/computer-use-firewall.js +45 -15
- package/scripts/docker-sandbox-planner.js +208 -0
- package/scripts/export-hf-dataset.js +293 -0
- package/scripts/github-about.js +56 -0
- package/scripts/operational-integrity.js +7 -1
- package/scripts/published-cli.js +10 -1
- package/scripts/statusline-links.js +238 -0
- package/scripts/statusline.sh +39 -4
- package/scripts/sync-github-about.js +7 -4
- package/scripts/tool-registry.js +11 -0
- package/scripts/workflow-sentinel.js +83 -35
- package/src/api/server.js +12 -1
|
@@ -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.
|
|
4
|
+
"version": "1.2.0",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Igor Ganapolsky"
|
|
7
7
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thumbgate",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.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,6 +1,6 @@
|
|
|
1
1
|
# ThumbGate
|
|
2
2
|
|
|
3
|
-
Make your AI coding agent self-improving.
|
|
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.
|
|
4
4
|
|
|
5
5
|
[](https://github.com/IgorGanapolsky/ThumbGate/actions/workflows/ci.yml)
|
|
6
6
|
[](https://www.npmjs.com/package/thumbgate)
|
|
@@ -27,6 +27,15 @@ Free for individual developers. Pro adds team dashboards, DPO export, and unlimi
|
|
|
27
27
|
npx thumbgate init
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
## Enterprise Story
|
|
31
|
+
|
|
32
|
+
ThumbGate is the control plane for AI coding agents:
|
|
33
|
+
|
|
34
|
+
- Feedback becomes enforcement, so repeated failures stop at the gate instead of reappearing in review.
|
|
35
|
+
- Workflow Sentinel scores blast radius before execution, so risky PR, release, and publish flows are visible early.
|
|
36
|
+
- High-risk local actions can be routed into Docker Sandboxes, while hosted team automations use a signed isolated sandbox lane.
|
|
37
|
+
- Team rollout stays tied to [Verification Evidence](docs/VERIFICATION_EVIDENCE.md) instead of trust-me operator claims.
|
|
38
|
+
|
|
30
39
|
## Before / After
|
|
31
40
|
|
|
32
41
|
```
|
|
@@ -134,7 +143,7 @@ Free and self-hosted users can invoke `search_lessons` directly through MCP, and
|
|
|
134
143
|
β Unlimited β Unlimited feedback β Shared hosted lesson DB β
|
|
135
144
|
β feedback β captures + search β Org dashboard β
|
|
136
145
|
β captures β DPO export β Gate template library β
|
|
137
|
-
β 5 daily β Personal dashboard β
|
|
146
|
+
β 5 daily β Personal dashboard β Isolated execution guidance β
|
|
138
147
|
β lesson β β β
|
|
139
148
|
β searches β β β
|
|
140
149
|
ββββββββββββββββ΄βββββββββββββββββββββ΄βββββββββββββββββββββββββββββββ
|
|
@@ -142,7 +151,7 @@ Free and self-hosted users can invoke `search_lessons` directly through MCP, and
|
|
|
142
151
|
|
|
143
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.
|
|
144
153
|
|
|
145
|
-
It does not update model weights. It's context engineering
|
|
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.
|
|
146
155
|
|
|
147
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)**
|
|
148
157
|
|
|
@@ -157,18 +166,20 @@ It does not update model weights. It's context engineering β enforcement that
|
|
|
157
166
|
β JSONL logs β Thompson Samplingβ Gates config β
|
|
158
167
|
β ContextFS β β Hook wiring β
|
|
159
168
|
βββββββββββββββββββββΌββββββββββββββββββββΌβββββββββββββββββββ€
|
|
160
|
-
β INTERFACES β BILLING β
|
|
169
|
+
β INTERFACES β BILLING β EXECUTION β
|
|
161
170
|
β β β β
|
|
162
171
|
β MCP stdio β Stripe β Railway β
|
|
163
172
|
β HTTP API β β Cloudflare β
|
|
164
173
|
β CLI β β Workers β
|
|
165
|
-
β Node.js >=18 β β
|
|
174
|
+
β Node.js >=18 β β Docker β
|
|
175
|
+
β β β Sandboxes β
|
|
166
176
|
βββββββββββββββββββββ΄ββββββββββββββββββββ΄βββββββββββββββββββ
|
|
167
177
|
```
|
|
168
178
|
|
|
169
179
|
## Docs
|
|
170
180
|
|
|
171
181
|
- [Commercial Truth](docs/COMMERCIAL_TRUTH.md) β pricing, claims, what we don't say
|
|
182
|
+
- [Changeset Strategy](docs/CHANGESET_STRATEGY.md) β how release notes, version bumps, and customer-facing change records are enforced
|
|
172
183
|
- [SemVer Policy](docs/SEMVER_POLICY.md) β stable vs prerelease channel rules
|
|
173
184
|
- [Verification Evidence](docs/VERIFICATION_EVIDENCE.md) β proof artifacts
|
|
174
185
|
- [WORKFLOW.md](WORKFLOW.md) β agent-run contract (scope, hard stops, proof commands)
|
package/adapters/README.md
CHANGED
|
@@ -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.
|
|
6
|
+
- `claude/.mcp.json`: example Claude Code MCP config using `npx --yes --package thumbgate@1.2.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.
|
|
5
|
+
"args": ["--yes", "--package", "thumbgate@1.2.0", "thumbgate", "serve"]
|
|
6
6
|
}
|
|
7
7
|
},
|
|
8
8
|
"hooks": {
|
|
9
9
|
"preToolUse": {
|
|
10
10
|
"command": "npx",
|
|
11
|
-
"args": ["--yes", "--package", "thumbgate@1.
|
|
11
|
+
"args": ["--yes", "--package", "thumbgate@1.2.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.
|
|
4
|
+
args = ["--yes", "--package", "thumbgate@1.2.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.
|
|
9
|
+
args = ["--yes", "--package", "thumbgate@1.2.0", "thumbgate", "gate-check"]
|
|
@@ -97,6 +97,7 @@ const {
|
|
|
97
97
|
assembleUnifiedContext,
|
|
98
98
|
formatUnifiedContext,
|
|
99
99
|
} = require('../../scripts/context-manager');
|
|
100
|
+
const { exportHfDataset } = require('../../scripts/export-hf-dataset');
|
|
100
101
|
|
|
101
102
|
const PRO_CHECKOUT_URL = 'https://thumbgate-production.up.railway.app/checkout/pro';
|
|
102
103
|
|
|
@@ -118,7 +119,7 @@ const {
|
|
|
118
119
|
finalizeSession: finalizeFeedbackSession,
|
|
119
120
|
} = require('../../scripts/feedback-session');
|
|
120
121
|
|
|
121
|
-
const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.
|
|
122
|
+
const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.2.0' };
|
|
122
123
|
const COMMERCE_CATEGORIES = [
|
|
123
124
|
'product_recommendation',
|
|
124
125
|
'brand_compliance',
|
|
@@ -363,12 +364,14 @@ function buildEstimateUncertaintyResponse(args = {}) {
|
|
|
363
364
|
|
|
364
365
|
async function callTool(name, args = {}) {
|
|
365
366
|
assertToolAllowed(name, getActiveMcpProfile());
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
367
|
+
if (name !== 'workflow_sentinel') {
|
|
368
|
+
const firewallResult = (await evaluateGatesAsync(name, args)) || evaluateSecretGuard({ tool_name: name, tool_input: args });
|
|
369
|
+
if (firewallResult && firewallResult.decision === 'deny') {
|
|
370
|
+
const err = new Error(`Action blocked by Semantic Firewall: ${firewallResult.message}`);
|
|
371
|
+
err.errorCategory = 'permission';
|
|
372
|
+
err.isRetryable = false;
|
|
373
|
+
throw err;
|
|
374
|
+
}
|
|
372
375
|
}
|
|
373
376
|
const startMs = Date.now();
|
|
374
377
|
const result = await callToolInner(name, args);
|
|
@@ -493,6 +496,14 @@ async function callToolInner(name, args) {
|
|
|
493
496
|
case 'export_dpo_pairs':
|
|
494
497
|
enforceLimit('export_dpo');
|
|
495
498
|
return buildExportDpoResponse(args);
|
|
499
|
+
case 'export_hf_dataset': {
|
|
500
|
+
enforceLimit('export_dpo');
|
|
501
|
+
const outputDir = args.outputDir ? resolveSafePath(args.outputDir) : undefined;
|
|
502
|
+
return toTextResult(exportHfDataset({
|
|
503
|
+
outputDir,
|
|
504
|
+
includeProvenance: args.includeProvenance !== false,
|
|
505
|
+
}));
|
|
506
|
+
}
|
|
496
507
|
case 'export_databricks_bundle': {
|
|
497
508
|
enforceLimit('export_databricks');
|
|
498
509
|
const outputPath = args.outputPath ? resolveSafePath(args.outputPath) : undefined;
|
|
@@ -619,6 +630,7 @@ async function callToolInner(name, args) {
|
|
|
619
630
|
affectedFiles: Array.isArray(args.changedFiles) ? args.changedFiles : undefined,
|
|
620
631
|
requirePrForReleaseSensitive: args.requirePrForReleaseSensitive === true,
|
|
621
632
|
requireVersionNotBehindBase: args.requireVersionNotBehindBase === true,
|
|
633
|
+
governanceState: getScopeState(),
|
|
622
634
|
}));
|
|
623
635
|
case 'register_claim_gate':
|
|
624
636
|
return toTextResult(registerClaimGate(args.claimPattern, args.requiredActions, args.message));
|
package/config/github-about.json
CHANGED
|
@@ -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 for AI coding agents. π Thumbs down β prevention rule β mistake permanently blocked. π Thumbs up β pattern reinforced. History-aware lessons from your corrections. Team adds shared lessons and org visibility.",
|
|
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.",
|
|
6
6
|
"topics": [
|
|
7
7
|
"thumbgate",
|
|
8
8
|
"pre-action-gates",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thumbgate",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.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": {
|
|
@@ -32,6 +32,10 @@
|
|
|
32
32
|
"scripts": {
|
|
33
33
|
"postinstall": "node bin/postinstall.js || true",
|
|
34
34
|
"start": "node src/api/server.js",
|
|
35
|
+
"changeset": "changeset",
|
|
36
|
+
"changeset:version": "changeset version && node scripts/sync-version.js",
|
|
37
|
+
"changeset:status": "changeset status",
|
|
38
|
+
"changeset:check": "node scripts/changeset-check.js",
|
|
35
39
|
"build:claude-mcpb": "node scripts/build-claude-mcpb.js",
|
|
36
40
|
"verify:quick": "node scripts/verify-run.js quick",
|
|
37
41
|
"verify:full": "node scripts/verify-run.js full",
|
|
@@ -66,7 +70,7 @@
|
|
|
66
70
|
"social:post-everywhere:dry": "node scripts/post-everywhere.js --dry-run",
|
|
67
71
|
"social:reply-monitor": "node scripts/social-reply-monitor.js",
|
|
68
72
|
"social:reply-monitor:dry": "node scripts/social-reply-monitor.js --dry-run",
|
|
69
|
-
"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: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: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: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: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:lesson-retrieval && 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-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && 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",
|
|
73
|
+
"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: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: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: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:lesson-retrieval && 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-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && 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",
|
|
70
74
|
"test:feedback-fallback": "node --test tests/feedback-fallback.test.js",
|
|
71
75
|
"test:metaclaw": "node --test tests/metaclaw-features.test.js",
|
|
72
76
|
"test:server-lock": "node --test tests/server-stdio-lock.test.js",
|
|
@@ -74,7 +78,7 @@
|
|
|
74
78
|
"test:multi-hop-recall": "node --test tests/multi-hop-recall.test.js",
|
|
75
79
|
"test:synthetic-dpo": "node --test tests/synthetic-dpo.test.js",
|
|
76
80
|
"test:thumbgate-skill": "node --test tests/thumbgate-skill.test.js",
|
|
77
|
-
"test:statusline": "node --test tests/statusline.test.js",
|
|
81
|
+
"test:statusline": "node --test tests/statusline.test.js tests/statusline-links.test.js",
|
|
78
82
|
"test:memory-dedup": "node --test tests/memory-dedup.test.js",
|
|
79
83
|
"test:lesson-db": "node --test tests/lesson-db.test.js",
|
|
80
84
|
"test:lesson-rotation": "node --test tests/lesson-rotation.test.js",
|
|
@@ -105,6 +109,8 @@
|
|
|
105
109
|
"test:seo-gsd": "node --test tests/seo-gsd.test.js",
|
|
106
110
|
"test:verify-run": "node --test tests/verify-run.test.js",
|
|
107
111
|
"test:export-dpo-pairs": "node --test tests/export-dpo-pairs.test.js",
|
|
112
|
+
"test:export-hf-dataset": "node --test tests/export-hf-dataset.test.js",
|
|
113
|
+
"export:hf": "node scripts/export-hf-dataset.js",
|
|
108
114
|
"seo:gsd": "node scripts/seo-gsd.js plan",
|
|
109
115
|
"seo:gsd:write": "node scripts/seo-gsd.js plan --write",
|
|
110
116
|
"test:congruence": "node scripts/check-congruence.js",
|
|
@@ -115,7 +121,7 @@
|
|
|
115
121
|
"test:loop": "node scripts/feedback-loop.js --test",
|
|
116
122
|
"test:dpo": "node scripts/export-dpo-pairs.js --test",
|
|
117
123
|
"test:kto": "node --test tests/export-kto.test.js",
|
|
118
|
-
"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/contextfs.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/
|
|
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",
|
|
119
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",
|
|
120
126
|
"test:e2e": "node --test tests/e2e-pipeline.test.js tests/e2e-product-flows.test.js tests/e2e-coverage-contract.test.js",
|
|
121
127
|
"test:rlaif": "node --test tests/rlaif-self-audit.test.js tests/dpo-optimizer.test.js tests/meta-policy.test.js",
|
|
@@ -123,17 +129,17 @@
|
|
|
123
129
|
"test:quality": "node --test tests/validate-feedback.test.js",
|
|
124
130
|
"test:intelligence": "node --test tests/intelligence.test.js",
|
|
125
131
|
"test:training-export": "node --test tests/training-export.test.js tests/databricks-export.test.js",
|
|
126
|
-
"test:deployment": "node --test tests/deployment.test.js tests/deploy-policy.test.js tests/publish-decision.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",
|
|
127
133
|
"test:operational-integrity": "node --test tests/operational-integrity.test.js",
|
|
128
|
-
"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",
|
|
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",
|
|
129
135
|
"test:billing": "node --test tests/billing.test.js",
|
|
130
|
-
"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/revenue-status.test.js",
|
|
136
|
+
"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",
|
|
131
137
|
"test:evolution": "node --test tests/workspace-evolver.test.js",
|
|
132
138
|
"test:watcher": "node --test tests/jsonl-watcher.test.js",
|
|
133
139
|
"test:autoresearch": "node --test tests/autoresearch.test.js",
|
|
134
|
-
"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/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/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",
|
|
135
141
|
"test:tessl": "node --test tests/tessl-export.test.js",
|
|
136
|
-
"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",
|
|
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",
|
|
137
143
|
"test:workers": "npm --prefix workers ci && npm --prefix workers test",
|
|
138
144
|
"test:evoskill": "node --test tests/evoskill.test.js",
|
|
139
145
|
"test:gates-hardening": "node --test tests/gates-hardening.test.js",
|
|
@@ -234,7 +240,8 @@
|
|
|
234
240
|
"test:social-reply-monitor": "node --test tests/social-reply-monitor.test.js",
|
|
235
241
|
"test:sync-launch-assets": "node --test tests/sync-launch-assets.test.js",
|
|
236
242
|
"test:reddit-publisher": "node --test tests/reddit-publisher.test.js",
|
|
237
|
-
"test:engagement-audit": "node --test tests/engagement-audit.test.js"
|
|
243
|
+
"test:engagement-audit": "node --test tests/engagement-audit.test.js",
|
|
244
|
+
"test:ai-search-visibility": "node --test tests/ai-search-visibility.test.js"
|
|
238
245
|
},
|
|
239
246
|
"keywords": [
|
|
240
247
|
"mcp",
|
|
@@ -296,5 +303,9 @@
|
|
|
296
303
|
"path-to-regexp": "0.1.13"
|
|
297
304
|
}
|
|
298
305
|
},
|
|
299
|
-
"mcpName": "io.github.IgorGanapolsky/thumbgate"
|
|
306
|
+
"mcpName": "io.github.IgorGanapolsky/thumbgate",
|
|
307
|
+
"devDependencies": {
|
|
308
|
+
"@changesets/changelog-github": "^0.5.1",
|
|
309
|
+
"@changesets/cli": "^2.30.0"
|
|
310
|
+
}
|
|
300
311
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-bridge",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.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",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-profile",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.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",
|
|
@@ -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.
|
|
34
|
+
args = ["--yes", "--package", "thumbgate@1.2.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.
|
|
@@ -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.
|
|
5
|
+
"version": "1.2.0",
|
|
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@1.
|
|
28
|
+
"command": ["npx", "--yes", "--package", "thumbgate@1.2.0", "thumbgate", "serve"],
|
|
29
29
|
"enabled": true
|
|
30
30
|
}
|
|
31
31
|
}
|