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.
Files changed (160) hide show
  1. package/.claude-plugin/README.md +4 -4
  2. package/.claude-plugin/marketplace.json +4 -2
  3. package/.claude-plugin/plugin.json +1 -1
  4. package/.well-known/mcp/server-card.json +1 -1
  5. package/README.md +115 -312
  6. package/adapters/README.md +2 -2
  7. package/adapters/amp/skills/{rlhf-feedback → thumbgate-feedback}/SKILL.md +1 -1
  8. package/adapters/chatgpt/openapi.yaml +2 -2
  9. package/adapters/claude/.mcp.json +3 -3
  10. package/adapters/codex/config.toml +4 -4
  11. package/adapters/gemini/function-declarations.json +1 -1
  12. package/adapters/mcp/server-stdio.js +66 -6
  13. package/adapters/opencode/opencode.json +4 -2
  14. package/bin/cli.js +188 -39
  15. package/config/e2e-critical-flows.json +4 -0
  16. package/config/gates/default.json +74 -2
  17. package/config/github-about.json +1 -1
  18. package/config/mcp-allowlists.json +33 -6
  19. package/config/skill-packs/react-testing.json +1 -1
  20. package/config/tessl-tiles.json +3 -3
  21. package/openapi/openapi.yaml +2 -2
  22. package/package.json +23 -9
  23. package/plugins/amp-skill/INSTALL.md +3 -2
  24. package/plugins/amp-skill/SKILL.md +1 -0
  25. package/plugins/claude-codex-bridge/.claude-plugin/plugin.json +1 -1
  26. package/plugins/claude-codex-bridge/.mcp.json +5 -3
  27. package/plugins/claude-codex-bridge/README.md +1 -1
  28. package/plugins/claude-codex-bridge/skills/setup/SKILL.md +1 -1
  29. package/plugins/claude-skill/INSTALL.md +4 -3
  30. package/plugins/claude-skill/SKILL.md +1 -1
  31. package/plugins/codex-profile/.codex-plugin/plugin.json +1 -1
  32. package/plugins/codex-profile/.mcp.json +5 -3
  33. package/plugins/codex-profile/INSTALL.md +2 -2
  34. package/plugins/codex-profile/README.md +1 -1
  35. package/plugins/cursor-marketplace/.cursor-plugin/plugin.json +1 -1
  36. package/plugins/cursor-marketplace/README.md +5 -5
  37. package/plugins/cursor-marketplace/mcp.json +4 -2
  38. package/plugins/cursor-marketplace/rules/pre-action-gates.mdc +1 -1
  39. package/plugins/cursor-marketplace/scripts/gate-check.sh +15 -5
  40. package/plugins/gemini-extension/INSTALL.md +4 -4
  41. package/plugins/opencode-profile/INSTALL.md +5 -5
  42. package/public/dashboard.html +15 -8
  43. package/public/index.html +134 -375
  44. package/public/js/buyer-intent.js +252 -0
  45. package/public/pro.html +1085 -0
  46. package/scripts/__pycache__/train_from_feedback.cpython-312.pyc +0 -0
  47. package/scripts/adk-consolidator.js +17 -5
  48. package/scripts/agent-readiness.js +3 -1
  49. package/scripts/agent-security-hardening.js +4 -4
  50. package/scripts/auto-promote-gates.js +8 -0
  51. package/scripts/auto-wire-hooks.js +105 -21
  52. package/scripts/billing.js +111 -7
  53. package/scripts/build-metadata.js +14 -0
  54. package/scripts/check-congruence.js +1 -1
  55. package/scripts/context-engine.js +2 -1
  56. package/scripts/daemon-manager.js +2 -2
  57. package/scripts/dashboard.js +2 -2
  58. package/scripts/data-governance.js +1 -1
  59. package/scripts/deploy-gcp.sh +1 -1
  60. package/scripts/deploy-policy.js +22 -4
  61. package/scripts/dispatch-brief.js +1 -1
  62. package/scripts/ensure-repo-bootstrap.js +1 -1
  63. package/scripts/feedback-attribution.js +22 -10
  64. package/scripts/feedback-fallback.js +3 -2
  65. package/scripts/feedback-inbox-read.js +1 -1
  66. package/scripts/feedback-loop.js +41 -3
  67. package/scripts/feedback-paths.js +8 -8
  68. package/scripts/feedback-schema.js +1 -1
  69. package/scripts/feedback-to-memory.js +2 -2
  70. package/scripts/filesystem-search.js +2 -2
  71. package/scripts/gates-engine.js +765 -34
  72. package/scripts/generate-paperbanana-diagrams.sh +3 -3
  73. package/scripts/github-about.js +1 -1
  74. package/scripts/gtm-revenue-loop.js +20 -1
  75. package/scripts/hook-runtime.js +89 -0
  76. package/scripts/hook-stop-self-score.sh +3 -3
  77. package/scripts/hook-thumbgate-cache-updater.js +98 -37
  78. package/scripts/hosted-config.js +12 -10
  79. package/scripts/hybrid-feedback-context.js +54 -13
  80. package/scripts/install-mcp.js +14 -1
  81. package/scripts/intent-router.js +1 -1
  82. package/scripts/internal-agent-bootstrap.js +1 -1
  83. package/scripts/lesson-inference.js +6 -1
  84. package/scripts/license.js +54 -16
  85. package/scripts/mcp-config.js +69 -7
  86. package/scripts/memory-migration.js +1 -1
  87. package/scripts/money-watcher.js +166 -16
  88. package/scripts/operational-integrity.js +480 -0
  89. package/scripts/optimize-context.js +1 -1
  90. package/scripts/perplexity-marketing.js +1 -1
  91. package/scripts/post-everywhere.js +7 -12
  92. package/scripts/post-to-x.js +1 -1
  93. package/scripts/pr-manager.js +14 -11
  94. package/scripts/problem-detail.js +10 -10
  95. package/scripts/profile-router.js +2 -0
  96. package/scripts/prompt-dlp.js +1 -0
  97. package/scripts/prove-adapters.js +6 -6
  98. package/scripts/prove-automation.js +1 -1
  99. package/scripts/prove-autoresearch.js +1 -1
  100. package/scripts/prove-claim-verification.js +3 -3
  101. package/scripts/prove-data-pipeline.js +5 -5
  102. package/scripts/prove-data-quality.js +1 -1
  103. package/scripts/prove-evolution.js +7 -7
  104. package/scripts/prove-harnesses.js +2 -2
  105. package/scripts/prove-lancedb.js +2 -2
  106. package/scripts/prove-local-intelligence.js +1 -1
  107. package/scripts/prove-loop-closure.js +1 -1
  108. package/scripts/prove-predictive-insights.js +2 -2
  109. package/scripts/prove-runtime.js +6 -6
  110. package/scripts/prove-seo-gsd.js +1 -1
  111. package/scripts/prove-settings.js +4 -4
  112. package/scripts/prove-subway-upgrades.js +1 -1
  113. package/scripts/prove-tessl.js +2 -2
  114. package/scripts/prove-xmemory.js +2 -2
  115. package/scripts/publish-decision.js +10 -0
  116. package/scripts/published-cli.js +34 -0
  117. package/scripts/rate-limiter.js +2 -2
  118. package/scripts/reddit-monitor-cron.sh +2 -2
  119. package/scripts/reminder-engine.js +1 -1
  120. package/scripts/schedule-manager.js +3 -3
  121. package/scripts/self-healing-check.js +1 -1
  122. package/scripts/shieldcortex-memory-firewall-runner.mjs +1 -1
  123. package/scripts/skill-quality-tracker.js +1 -1
  124. package/scripts/social-analytics/db/social-analytics.db-shm +0 -0
  125. package/scripts/social-analytics/db/social-analytics.db-wal +0 -0
  126. package/scripts/social-analytics/engagement-audit.js +202 -0
  127. package/scripts/social-analytics/generate-instagram-card.js +1 -1
  128. package/scripts/social-analytics/instagram-thumbgate-post.js +5 -1
  129. package/scripts/social-analytics/install-growth-automation.js +114 -0
  130. package/scripts/social-analytics/publish-instagram-thumbgate.js +8 -2
  131. package/scripts/social-analytics/publish-thumbgate-launch.js +1 -1
  132. package/scripts/social-analytics/publishers/reddit.js +7 -12
  133. package/scripts/social-analytics/publishers/zernio.js +19 -0
  134. package/scripts/social-analytics/reconcile-thumbgate-campaign.js +165 -0
  135. package/scripts/social-analytics/schedule-thumbgate-campaign.js +275 -0
  136. package/scripts/social-analytics/sync-launch-assets.js +185 -0
  137. package/scripts/social-pipeline.js +2 -2
  138. package/scripts/social-post-hourly.js +185 -0
  139. package/scripts/social-quality-gate.js +119 -3
  140. package/scripts/social-reply-monitor.js +150 -34
  141. package/scripts/statusline-cache-path.js +27 -0
  142. package/scripts/statusline-meta.js +22 -0
  143. package/scripts/statusline.sh +24 -32
  144. package/scripts/sync-version.js +24 -12
  145. package/scripts/telemetry-analytics.js +4 -4
  146. package/scripts/tessl-export.js +1 -1
  147. package/scripts/test-coverage.js +20 -13
  148. package/scripts/thumbgate-search.js +2 -2
  149. package/scripts/tool-registry.js +98 -1
  150. package/scripts/train_from_feedback.py +1 -1
  151. package/scripts/user-profile.js +4 -4
  152. package/scripts/validate-feedback.js +1 -1
  153. package/scripts/vector-store.js +1 -1
  154. package/scripts/verification-loop.js +1 -1
  155. package/scripts/verify-run.js +1 -1
  156. package/scripts/weekly-auto-post.js +1 -1
  157. package/skills/{rlhf-feedback → thumbgate-feedback}/SKILL.md +1 -1
  158. package/src/api/server.js +291 -41
  159. package/scripts/__pycache__/train_from_feedback.cpython-314.pyc +0 -0
  160. 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/rlhf-tools.json
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 rlhfTools = JSON.parse(
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: rlhfTools.tools }],
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 callRlhfTool(name, params) {
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
- "rlhf": {
26
+ "thumbgate": {
27
27
  "type": "local",
28
- "command": ["npx", "-y", "thumbgate@0.9.9", "serve"],
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 `rlhf` MCP server is available:
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 `rlhf-review` subagent in `.opencode/agents/rlhf-review.md`
47
- - concise workflow instructions in `.opencode/instructions/rlhf-workflow.md`
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
 
@@ -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
- // Highlight clicked card, clear all others
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' },