thumbgate 1.1.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 +10 -7
- package/adapters/opencode/opencode.json +1 -1
- package/config/github-about.json +1 -1
- package/package.json +20 -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 +36 -10
- 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/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/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"]
|
|
@@ -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.
|
|
122
|
+
const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.2.0' };
|
|
123
123
|
const COMMERCE_CATEGORIES = [
|
|
124
124
|
'product_recommendation',
|
|
125
125
|
'brand_compliance',
|
|
@@ -364,12 +364,14 @@ function buildEstimateUncertaintyResponse(args = {}) {
|
|
|
364
364
|
|
|
365
365
|
async function callTool(name, args = {}) {
|
|
366
366
|
assertToolAllowed(name, getActiveMcpProfile());
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
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
|
+
}
|
|
373
375
|
}
|
|
374
376
|
const startMs = Date.now();
|
|
375
377
|
const result = await callToolInner(name, args);
|
|
@@ -628,6 +630,7 @@ async function callToolInner(name, args) {
|
|
|
628
630
|
affectedFiles: Array.isArray(args.changedFiles) ? args.changedFiles : undefined,
|
|
629
631
|
requirePrForReleaseSensitive: args.requirePrForReleaseSensitive === true,
|
|
630
632
|
requireVersionNotBehindBase: args.requireVersionNotBehindBase === true,
|
|
633
|
+
governanceState: getScopeState(),
|
|
631
634
|
}));
|
|
632
635
|
case 'register_claim_gate':
|
|
633
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: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",
|
|
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",
|
|
@@ -117,7 +121,7 @@
|
|
|
117
121
|
"test:loop": "node scripts/feedback-loop.js --test",
|
|
118
122
|
"test:dpo": "node scripts/export-dpo-pairs.js --test",
|
|
119
123
|
"test:kto": "node --test tests/export-kto.test.js",
|
|
120
|
-
"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",
|
|
121
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",
|
|
122
126
|
"test:e2e": "node --test tests/e2e-pipeline.test.js tests/e2e-product-flows.test.js tests/e2e-coverage-contract.test.js",
|
|
123
127
|
"test:rlaif": "node --test tests/rlaif-self-audit.test.js tests/dpo-optimizer.test.js tests/meta-policy.test.js",
|
|
@@ -125,17 +129,17 @@
|
|
|
125
129
|
"test:quality": "node --test tests/validate-feedback.test.js",
|
|
126
130
|
"test:intelligence": "node --test tests/intelligence.test.js",
|
|
127
131
|
"test:training-export": "node --test tests/training-export.test.js tests/databricks-export.test.js",
|
|
128
|
-
"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",
|
|
129
133
|
"test:operational-integrity": "node --test tests/operational-integrity.test.js",
|
|
130
|
-
"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",
|
|
131
135
|
"test:billing": "node --test tests/billing.test.js",
|
|
132
|
-
"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",
|
|
133
137
|
"test:evolution": "node --test tests/workspace-evolver.test.js",
|
|
134
138
|
"test:watcher": "node --test tests/jsonl-watcher.test.js",
|
|
135
139
|
"test:autoresearch": "node --test tests/autoresearch.test.js",
|
|
136
|
-
"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",
|
|
137
141
|
"test:tessl": "node --test tests/tessl-export.test.js",
|
|
138
|
-
"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",
|
|
139
143
|
"test:workers": "npm --prefix workers ci && npm --prefix workers test",
|
|
140
144
|
"test:evoskill": "node --test tests/evoskill.test.js",
|
|
141
145
|
"test:gates-hardening": "node --test tests/gates-hardening.test.js",
|
|
@@ -236,7 +240,8 @@
|
|
|
236
240
|
"test:social-reply-monitor": "node --test tests/social-reply-monitor.test.js",
|
|
237
241
|
"test:sync-launch-assets": "node --test tests/sync-launch-assets.test.js",
|
|
238
242
|
"test:reddit-publisher": "node --test tests/reddit-publisher.test.js",
|
|
239
|
-
"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"
|
|
240
245
|
},
|
|
241
246
|
"keywords": [
|
|
242
247
|
"mcp",
|
|
@@ -298,5 +303,9 @@
|
|
|
298
303
|
"path-to-regexp": "0.1.13"
|
|
299
304
|
}
|
|
300
305
|
},
|
|
301
|
-
"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
|
+
}
|
|
302
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
|
}
|