thumbgate 0.9.9 → 0.9.11
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/README.md +4 -4
- package/.claude-plugin/marketplace.json +4 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +115 -312
- package/adapters/README.md +2 -2
- package/adapters/amp/skills/{rlhf-feedback → thumbgate-feedback}/SKILL.md +1 -1
- package/adapters/chatgpt/openapi.yaml +2 -2
- package/adapters/claude/.mcp.json +3 -3
- package/adapters/codex/config.toml +4 -4
- package/adapters/gemini/function-declarations.json +1 -1
- package/adapters/mcp/server-stdio.js +66 -6
- package/adapters/opencode/opencode.json +4 -2
- package/bin/cli.js +188 -39
- package/config/e2e-critical-flows.json +4 -0
- package/config/gates/default.json +74 -2
- package/config/github-about.json +1 -1
- package/config/mcp-allowlists.json +33 -6
- package/config/skill-packs/react-testing.json +1 -1
- package/config/tessl-tiles.json +3 -3
- package/openapi/openapi.yaml +2 -2
- package/package.json +23 -9
- package/plugins/amp-skill/INSTALL.md +3 -2
- package/plugins/amp-skill/SKILL.md +1 -0
- package/plugins/claude-codex-bridge/.claude-plugin/plugin.json +1 -1
- package/plugins/claude-codex-bridge/.mcp.json +5 -3
- package/plugins/claude-codex-bridge/README.md +1 -1
- package/plugins/claude-codex-bridge/skills/setup/SKILL.md +1 -1
- package/plugins/claude-skill/INSTALL.md +4 -3
- package/plugins/claude-skill/SKILL.md +1 -1
- package/plugins/codex-profile/.codex-plugin/plugin.json +1 -1
- package/plugins/codex-profile/.mcp.json +5 -3
- package/plugins/codex-profile/INSTALL.md +2 -2
- package/plugins/codex-profile/README.md +1 -1
- package/plugins/cursor-marketplace/.cursor-plugin/plugin.json +1 -1
- package/plugins/cursor-marketplace/README.md +5 -5
- package/plugins/cursor-marketplace/mcp.json +4 -2
- package/plugins/cursor-marketplace/rules/pre-action-gates.mdc +1 -1
- package/plugins/cursor-marketplace/scripts/gate-check.sh +15 -5
- package/plugins/gemini-extension/INSTALL.md +4 -4
- package/plugins/opencode-profile/INSTALL.md +5 -5
- package/public/dashboard.html +15 -8
- package/public/index.html +134 -375
- package/public/js/buyer-intent.js +252 -0
- package/public/pro.html +1085 -0
- package/scripts/__pycache__/train_from_feedback.cpython-312.pyc +0 -0
- package/scripts/adk-consolidator.js +17 -5
- package/scripts/agent-readiness.js +3 -1
- package/scripts/agent-security-hardening.js +4 -4
- package/scripts/auto-promote-gates.js +8 -0
- package/scripts/auto-wire-hooks.js +105 -21
- package/scripts/billing.js +111 -7
- package/scripts/build-metadata.js +14 -0
- package/scripts/check-congruence.js +1 -1
- package/scripts/context-engine.js +2 -1
- package/scripts/daemon-manager.js +2 -2
- package/scripts/dashboard.js +2 -2
- package/scripts/data-governance.js +1 -1
- package/scripts/deploy-gcp.sh +1 -1
- package/scripts/deploy-policy.js +22 -4
- package/scripts/dispatch-brief.js +1 -1
- package/scripts/ensure-repo-bootstrap.js +1 -1
- package/scripts/feedback-attribution.js +22 -10
- package/scripts/feedback-fallback.js +3 -2
- package/scripts/feedback-inbox-read.js +1 -1
- package/scripts/feedback-loop.js +41 -3
- package/scripts/feedback-paths.js +8 -8
- package/scripts/feedback-schema.js +1 -1
- package/scripts/feedback-to-memory.js +2 -2
- package/scripts/filesystem-search.js +2 -2
- package/scripts/gates-engine.js +765 -34
- package/scripts/generate-paperbanana-diagrams.sh +3 -3
- package/scripts/github-about.js +1 -1
- package/scripts/gtm-revenue-loop.js +20 -1
- package/scripts/hook-runtime.js +89 -0
- package/scripts/hook-stop-self-score.sh +3 -3
- package/scripts/hook-thumbgate-cache-updater.js +98 -37
- package/scripts/hosted-config.js +12 -10
- package/scripts/hybrid-feedback-context.js +54 -13
- package/scripts/install-mcp.js +14 -1
- package/scripts/intent-router.js +1 -1
- package/scripts/internal-agent-bootstrap.js +1 -1
- package/scripts/lesson-inference.js +6 -1
- package/scripts/license.js +54 -16
- package/scripts/mcp-config.js +69 -7
- package/scripts/memory-migration.js +1 -1
- package/scripts/money-watcher.js +166 -16
- package/scripts/operational-integrity.js +480 -0
- package/scripts/optimize-context.js +1 -1
- package/scripts/perplexity-marketing.js +1 -1
- package/scripts/post-everywhere.js +7 -12
- package/scripts/post-to-x.js +1 -1
- package/scripts/pr-manager.js +14 -11
- package/scripts/problem-detail.js +10 -10
- package/scripts/profile-router.js +2 -0
- package/scripts/prompt-dlp.js +1 -0
- package/scripts/prove-adapters.js +6 -6
- package/scripts/prove-automation.js +1 -1
- package/scripts/prove-autoresearch.js +1 -1
- package/scripts/prove-claim-verification.js +3 -3
- package/scripts/prove-data-pipeline.js +5 -5
- package/scripts/prove-data-quality.js +1 -1
- package/scripts/prove-evolution.js +7 -7
- package/scripts/prove-harnesses.js +2 -2
- package/scripts/prove-lancedb.js +2 -2
- package/scripts/prove-local-intelligence.js +1 -1
- package/scripts/prove-loop-closure.js +1 -1
- package/scripts/prove-predictive-insights.js +2 -2
- package/scripts/prove-runtime.js +6 -6
- package/scripts/prove-seo-gsd.js +1 -1
- package/scripts/prove-settings.js +4 -4
- package/scripts/prove-subway-upgrades.js +1 -1
- package/scripts/prove-tessl.js +2 -2
- package/scripts/prove-xmemory.js +2 -2
- package/scripts/publish-decision.js +10 -0
- package/scripts/published-cli.js +34 -0
- package/scripts/rate-limiter.js +2 -2
- package/scripts/reddit-monitor-cron.sh +2 -2
- package/scripts/reminder-engine.js +1 -1
- package/scripts/schedule-manager.js +3 -3
- package/scripts/self-healing-check.js +1 -1
- package/scripts/shieldcortex-memory-firewall-runner.mjs +1 -1
- package/scripts/skill-quality-tracker.js +1 -1
- package/scripts/social-analytics/db/social-analytics.db-shm +0 -0
- package/scripts/social-analytics/db/social-analytics.db-wal +0 -0
- package/scripts/social-analytics/engagement-audit.js +202 -0
- package/scripts/social-analytics/generate-instagram-card.js +1 -1
- package/scripts/social-analytics/instagram-thumbgate-post.js +5 -1
- package/scripts/social-analytics/install-growth-automation.js +114 -0
- package/scripts/social-analytics/publish-instagram-thumbgate.js +8 -2
- package/scripts/social-analytics/publish-thumbgate-launch.js +1 -1
- package/scripts/social-analytics/publishers/reddit.js +7 -12
- package/scripts/social-analytics/publishers/zernio.js +19 -0
- package/scripts/social-analytics/reconcile-thumbgate-campaign.js +165 -0
- package/scripts/social-analytics/schedule-thumbgate-campaign.js +275 -0
- package/scripts/social-analytics/sync-launch-assets.js +185 -0
- package/scripts/social-pipeline.js +2 -2
- package/scripts/social-post-hourly.js +185 -0
- package/scripts/social-quality-gate.js +119 -3
- package/scripts/social-reply-monitor.js +150 -34
- package/scripts/statusline-cache-path.js +27 -0
- package/scripts/statusline-meta.js +22 -0
- package/scripts/statusline.sh +24 -32
- package/scripts/sync-version.js +24 -12
- package/scripts/telemetry-analytics.js +4 -4
- package/scripts/tessl-export.js +1 -1
- package/scripts/test-coverage.js +20 -13
- package/scripts/thumbgate-search.js +2 -2
- package/scripts/tool-registry.js +98 -1
- package/scripts/train_from_feedback.py +1 -1
- package/scripts/user-profile.js +4 -4
- package/scripts/validate-feedback.js +1 -1
- package/scripts/vector-store.js +1 -1
- package/scripts/verification-loop.js +1 -1
- package/scripts/verify-run.js +1 -1
- package/scripts/weekly-auto-post.js +1 -1
- package/skills/{rlhf-feedback → thumbgate-feedback}/SKILL.md +1 -1
- package/src/api/server.js +291 -41
- package/scripts/__pycache__/train_from_feedback.cpython-314.pyc +0 -0
- package/scripts/social-analytics/db/social-analytics.db +0 -0
|
@@ -6,7 +6,7 @@ Import the ThumbGate function declarations into your Gemini agent in under 60 se
|
|
|
6
6
|
|
|
7
7
|
```bash
|
|
8
8
|
# Copy declarations to your project
|
|
9
|
-
cp adapters/gemini/function-declarations.json .gemini/
|
|
9
|
+
cp adapters/gemini/function-declarations.json .gemini/thumbgate-tools.json
|
|
10
10
|
```
|
|
11
11
|
|
|
12
12
|
## Import in Your Agent Code
|
|
@@ -15,14 +15,14 @@ cp adapters/gemini/function-declarations.json .gemini/rlhf-tools.json
|
|
|
15
15
|
const fs = require('fs');
|
|
16
16
|
|
|
17
17
|
// Load ThumbGate tool declarations
|
|
18
|
-
const
|
|
18
|
+
const thumbgateTools = JSON.parse(
|
|
19
19
|
fs.readFileSync('adapters/gemini/function-declarations.json', 'utf8')
|
|
20
20
|
);
|
|
21
21
|
|
|
22
22
|
// Pass to Gemini SDK
|
|
23
23
|
const model = genAI.getGenerativeModel({
|
|
24
24
|
model: 'gemini-pro',
|
|
25
|
-
tools: [{ functionDeclarations:
|
|
25
|
+
tools: [{ functionDeclarations: thumbgateTools.tools }],
|
|
26
26
|
});
|
|
27
27
|
```
|
|
28
28
|
|
|
@@ -43,7 +43,7 @@ Set the base URL in your Gemini function handler:
|
|
|
43
43
|
const THUMBGATE_API_URL = process.env.THUMBGATE_API_URL || 'http://localhost:3000';
|
|
44
44
|
const THUMBGATE_API_KEY = process.env.THUMBGATE_API_KEY;
|
|
45
45
|
|
|
46
|
-
async function
|
|
46
|
+
async function callThumbGateTool(name, params) {
|
|
47
47
|
const endpoints = {
|
|
48
48
|
capture_memory_feedback: { method: 'POST', path: '/v1/feedback/capture' },
|
|
49
49
|
get_reliability_rules: { method: 'POST', path: '/v1/feedback/rules' },
|
|
@@ -23,9 +23,9 @@ The portable profile adds this MCP server entry:
|
|
|
23
23
|
{
|
|
24
24
|
"$schema": "https://opencode.ai/config.json",
|
|
25
25
|
"mcp": {
|
|
26
|
-
"
|
|
26
|
+
"thumbgate": {
|
|
27
27
|
"type": "local",
|
|
28
|
-
"command": ["npx", "
|
|
28
|
+
"command": ["npx", "--yes", "--package", "thumbgate@0.9.11", "thumbgate", "serve"],
|
|
29
29
|
"enabled": true
|
|
30
30
|
}
|
|
31
31
|
}
|
|
@@ -34,7 +34,7 @@ The portable profile adds this MCP server entry:
|
|
|
34
34
|
|
|
35
35
|
## Verify
|
|
36
36
|
|
|
37
|
-
Run OpenCode in any project and confirm the `
|
|
37
|
+
Run OpenCode in any project and confirm the `thumbgate` MCP server is available:
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
40
|
opencode
|
|
@@ -43,8 +43,8 @@ opencode
|
|
|
43
43
|
For this repository specifically, the committed `opencode.json` also enables:
|
|
44
44
|
|
|
45
45
|
- repo-local worktree-safe permissions
|
|
46
|
-
- a read-only `
|
|
47
|
-
- concise workflow instructions in `.opencode/instructions/
|
|
46
|
+
- a read-only `thumbgate-review` subagent in `.opencode/agents/thumbgate-review.md`
|
|
47
|
+
- concise workflow instructions in `.opencode/instructions/thumbgate-workflow.md`
|
|
48
48
|
|
|
49
49
|
## Requirements
|
|
50
50
|
|
package/public/dashboard.html
CHANGED
|
@@ -45,8 +45,9 @@
|
|
|
45
45
|
|
|
46
46
|
/* STATS */
|
|
47
47
|
.stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 32px; }
|
|
48
|
-
.stat-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; padding: 20px; transition: border-color 0.15s, transform 0.1s; }
|
|
48
|
+
.stat-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; padding: 20px; transition: border-color 0.15s, background 0.15s, transform 0.1s; }
|
|
49
49
|
.stat-card:hover { border-color: rgba(34,211,238,0.4); transform: translateY(-2px); }
|
|
50
|
+
.stat-card.selected { border-color: rgba(34,211,238,0.6); background: rgba(34,211,238,0.05); }
|
|
50
51
|
.stat-label { font-size: 12px; color: var(--text-muted); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 6px; }
|
|
51
52
|
.stat-value { font-size: 28px; font-weight: 700; letter-spacing: -0.02em; }
|
|
52
53
|
.stat-value.green { color: var(--green); }
|
|
@@ -211,10 +212,10 @@
|
|
|
211
212
|
|
|
212
213
|
<!-- STATS -->
|
|
213
214
|
<div class="stats-grid" id="statsGrid">
|
|
214
|
-
<div class="stat-card" onclick="selectCard(this,'all')" style="cursor:pointer;" title="Show all feedback"><div class="stat-label">Total Feedback</div><div class="stat-value cyan" id="statTotal">—</div></div>
|
|
215
|
-
<div class="stat-card" onclick="selectCard(this,'up')" style="cursor:pointer;" title="Show positive feedback"><div class="stat-label">👍 Positive</div><div class="stat-value green" id="statPositive">—</div></div>
|
|
216
|
-
<div class="stat-card" onclick="selectCard(this,'down')" style="cursor:pointer;" title="Show negative feedback"><div class="stat-label">👎 Negative</div><div class="stat-value red" id="statNegative">—</div></div>
|
|
217
|
-
<div class="stat-card" onclick="selectCard(this,'gates')" style="cursor:pointer;" title="View active gates"><div class="stat-label">Active Gates</div><div class="stat-value cyan" id="statGates">—</div></div>
|
|
215
|
+
<div class="stat-card" data-card-action="all" onclick="selectCard(this,'all')" style="cursor:pointer;" title="Show all feedback"><div class="stat-label">Total Feedback</div><div class="stat-value cyan" id="statTotal">—</div></div>
|
|
216
|
+
<div class="stat-card" data-card-action="up" onclick="selectCard(this,'up')" style="cursor:pointer;" title="Show positive feedback"><div class="stat-label">👍 Positive</div><div class="stat-value green" id="statPositive">—</div></div>
|
|
217
|
+
<div class="stat-card" data-card-action="down" onclick="selectCard(this,'down')" style="cursor:pointer;" title="Show negative feedback"><div class="stat-label">👎 Negative</div><div class="stat-value red" id="statNegative">—</div></div>
|
|
218
|
+
<div class="stat-card" data-card-action="gates" onclick="selectCard(this,'gates')" style="cursor:pointer;" title="View active gates"><div class="stat-label">Active Gates</div><div class="stat-value cyan" id="statGates">—</div></div>
|
|
218
219
|
</div>
|
|
219
220
|
|
|
220
221
|
<!-- TABS -->
|
|
@@ -385,6 +386,7 @@ async function connect(options) {
|
|
|
385
386
|
document.getElementById('authHelp').textContent = 'Local Pro is active on this machine. Your personal dashboard is using the saved license key automatically.';
|
|
386
387
|
}
|
|
387
388
|
renderStats(data);
|
|
389
|
+
setSelectedCard('all');
|
|
388
390
|
await loadDashboardData();
|
|
389
391
|
} catch (e) {
|
|
390
392
|
status.className = 'auth-status err';
|
|
@@ -407,6 +409,12 @@ function renderStats(data) {
|
|
|
407
409
|
document.getElementById('statNegative').textContent = neg;
|
|
408
410
|
}
|
|
409
411
|
|
|
412
|
+
function setSelectedCard(action) {
|
|
413
|
+
document.querySelectorAll('.stat-card').forEach(function(card) {
|
|
414
|
+
card.classList.toggle('selected', card.dataset.cardAction === action);
|
|
415
|
+
});
|
|
416
|
+
}
|
|
417
|
+
|
|
410
418
|
async function search() {
|
|
411
419
|
const query = document.getElementById('searchQuery').value.trim();
|
|
412
420
|
if (!query) return;
|
|
@@ -506,9 +514,7 @@ function highlightText(text) {
|
|
|
506
514
|
|
|
507
515
|
function selectCard(el, action) {
|
|
508
516
|
currentHighlightTerms = [];
|
|
509
|
-
|
|
510
|
-
document.querySelectorAll('.stat-card').forEach(function(c) { c.style.borderColor = ''; });
|
|
511
|
-
el.style.borderColor = 'var(--cyan)';
|
|
517
|
+
setSelectedCard(action);
|
|
512
518
|
|
|
513
519
|
if (action === 'gates') {
|
|
514
520
|
switchTab('gates');
|
|
@@ -920,6 +926,7 @@ function loadDemo() {
|
|
|
920
926
|
document.getElementById('statPositive').textContent = '37';
|
|
921
927
|
document.getElementById('statNegative').textContent = '260';
|
|
922
928
|
document.getElementById('statGates').textContent = '21';
|
|
929
|
+
setSelectedCard('all');
|
|
923
930
|
// Sample memories — realistic scenarios from real agent-driven development
|
|
924
931
|
var demoResults = [
|
|
925
932
|
{ signal: 'down', title: 'Claimed fix worked without running tests', context: 'Agent announced "fixed and pushed" but never ran the test suite. CI failed on 3 tests. Gate now requires test evidence before any completion claim.', tags: ['anti-lying', 'verification-gap', 'ci', 'trust-breach'], timestamp: '2025-06-22T10:20:00Z' },
|