thumbgate 0.9.10

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 (364) hide show
  1. package/.claude-plugin/README.md +134 -0
  2. package/.claude-plugin/bundle/icon.png +0 -0
  3. package/.claude-plugin/bundle/icon.svg +18 -0
  4. package/.claude-plugin/bundle/server/index.js +24 -0
  5. package/.claude-plugin/marketplace.json +36 -0
  6. package/.claude-plugin/plugin.json +21 -0
  7. package/.well-known/mcp/server-card.json +231 -0
  8. package/LICENSE +21 -0
  9. package/README.md +375 -0
  10. package/adapters/README.md +9 -0
  11. package/adapters/amp/skills/thumbgate-feedback/SKILL.md +22 -0
  12. package/adapters/chatgpt/INSTALL.md +83 -0
  13. package/adapters/chatgpt/openapi.yaml +1281 -0
  14. package/adapters/claude/.mcp.json +14 -0
  15. package/adapters/codex/config.toml +9 -0
  16. package/adapters/gemini/function-declarations.json +224 -0
  17. package/adapters/mcp/server-stdio.js +788 -0
  18. package/adapters/opencode/opencode.json +15 -0
  19. package/bin/cli.js +1484 -0
  20. package/bin/memory.sh +64 -0
  21. package/bin/obsidian-sync.sh +20 -0
  22. package/bin/postinstall.js +37 -0
  23. package/config/build-metadata.json +4 -0
  24. package/config/e2e-critical-flows.json +45 -0
  25. package/config/gate-templates.json +77 -0
  26. package/config/gates/claim-verification.json +29 -0
  27. package/config/gates/computer-use.json +39 -0
  28. package/config/gates/default.json +117 -0
  29. package/config/github-about.json +25 -0
  30. package/config/mcp-allowlists.json +135 -0
  31. package/config/model-tiers.json +33 -0
  32. package/config/partner-routing.json +132 -0
  33. package/config/policy-bundles/constrained-v1.json +64 -0
  34. package/config/policy-bundles/default-v1.json +91 -0
  35. package/config/rubrics/default-v1.json +52 -0
  36. package/config/skill-packs/react-testing.json +23 -0
  37. package/config/skill-packs/stripe-integration/references/api-spec.json +1 -0
  38. package/config/skill-packs/stripe-integration/references/webhook-guide.md +3 -0
  39. package/config/skill-specs/pr-reviewer.json +9 -0
  40. package/config/skill-specs/release-status.json +9 -0
  41. package/config/skill-specs/ticket-triage.json +9 -0
  42. package/config/subagent-profiles.json +32 -0
  43. package/config/tessl-tiles.json +29 -0
  44. package/config/thumbgate-settings.managed.json +12 -0
  45. package/openapi/openapi.yaml +1281 -0
  46. package/package.json +283 -0
  47. package/plugins/amp-skill/INSTALL.md +52 -0
  48. package/plugins/amp-skill/SKILL.md +64 -0
  49. package/plugins/claude-codex-bridge/.claude-plugin/plugin.json +22 -0
  50. package/plugins/claude-codex-bridge/.mcp.json +12 -0
  51. package/plugins/claude-codex-bridge/INSTALL.md +43 -0
  52. package/plugins/claude-codex-bridge/README.md +46 -0
  53. package/plugins/claude-codex-bridge/scripts/codex-bridge.js +288 -0
  54. package/plugins/claude-codex-bridge/skills/adversarial-review/SKILL.md +24 -0
  55. package/plugins/claude-codex-bridge/skills/result/SKILL.md +22 -0
  56. package/plugins/claude-codex-bridge/skills/review/SKILL.md +28 -0
  57. package/plugins/claude-codex-bridge/skills/second-pass/SKILL.md +27 -0
  58. package/plugins/claude-codex-bridge/skills/setup/SKILL.md +21 -0
  59. package/plugins/claude-codex-bridge/skills/status/SKILL.md +19 -0
  60. package/plugins/claude-skill/INSTALL.md +55 -0
  61. package/plugins/claude-skill/SKILL.md +46 -0
  62. package/plugins/codex-profile/.codex-plugin/plugin.json +43 -0
  63. package/plugins/codex-profile/.mcp.json +12 -0
  64. package/plugins/codex-profile/AGENTS.md +20 -0
  65. package/plugins/codex-profile/INSTALL.md +66 -0
  66. package/plugins/codex-profile/README.md +37 -0
  67. package/plugins/cursor-marketplace/.cursor-plugin/plugin.json +23 -0
  68. package/plugins/cursor-marketplace/CHANGELOG.md +30 -0
  69. package/plugins/cursor-marketplace/LICENSE +21 -0
  70. package/plugins/cursor-marketplace/README.md +124 -0
  71. package/plugins/cursor-marketplace/agents/reliability-reviewer.md +31 -0
  72. package/plugins/cursor-marketplace/assets/logo-400x400.png +0 -0
  73. package/plugins/cursor-marketplace/commands/capture-feedback.md +33 -0
  74. package/plugins/cursor-marketplace/commands/check-gates.md +25 -0
  75. package/plugins/cursor-marketplace/commands/show-lessons.md +27 -0
  76. package/plugins/cursor-marketplace/hooks/hooks.json +10 -0
  77. package/plugins/cursor-marketplace/mcp.json +12 -0
  78. package/plugins/cursor-marketplace/rules/feedback-capture.mdc +34 -0
  79. package/plugins/cursor-marketplace/rules/pre-action-gates.mdc +30 -0
  80. package/plugins/cursor-marketplace/rules/session-continuity.mdc +28 -0
  81. package/plugins/cursor-marketplace/scripts/gate-check.sh +11 -0
  82. package/plugins/cursor-marketplace/skills/capture-feedback/SKILL.md +47 -0
  83. package/plugins/cursor-marketplace/skills/prevention-rules/SKILL.md +31 -0
  84. package/plugins/cursor-marketplace/skills/recall-context/SKILL.md +30 -0
  85. package/plugins/cursor-marketplace/skills/search-lessons/SKILL.md +33 -0
  86. package/plugins/gemini-extension/INSTALL.md +92 -0
  87. package/plugins/gemini-extension/gemini_prompt.txt +14 -0
  88. package/plugins/gemini-extension/tool_contract.json +45 -0
  89. package/plugins/opencode-profile/INSTALL.md +57 -0
  90. package/public/assets/instagram-card.png +0 -0
  91. package/public/assets/tiktok-agent-memory.mp4 +0 -0
  92. package/public/blog.html +400 -0
  93. package/public/dashboard.html +1093 -0
  94. package/public/guide.html +317 -0
  95. package/public/index.html +1014 -0
  96. package/public/learn/agent-harness-pattern.html +180 -0
  97. package/public/learn/ai-agent-persistent-memory.html +202 -0
  98. package/public/learn/learn.css +45 -0
  99. package/public/learn/mcp-pre-action-gates-explained.html +172 -0
  100. package/public/learn/stop-ai-agent-force-push.html +134 -0
  101. package/public/learn/vibe-coding-safety-net.html +142 -0
  102. package/public/learn.html +213 -0
  103. package/public/lessons.html +650 -0
  104. package/public/vercel.json +8 -0
  105. package/scripts/__pycache__/train_from_feedback.cpython-312.pyc +0 -0
  106. package/scripts/a2ui-engine.js +73 -0
  107. package/scripts/access-anomaly-detector.js +12 -0
  108. package/scripts/adk-consolidator.js +266 -0
  109. package/scripts/agent-readiness.js +220 -0
  110. package/scripts/agent-security-hardening.js +227 -0
  111. package/scripts/agentic-data-pipeline.js +847 -0
  112. package/scripts/analytics-report.js +328 -0
  113. package/scripts/analytics-window.js +158 -0
  114. package/scripts/async-job-runner.js +1001 -0
  115. package/scripts/audit-trail.js +398 -0
  116. package/scripts/auto-promote-gates.js +299 -0
  117. package/scripts/auto-wire-hooks.js +312 -0
  118. package/scripts/autonomous-sales-agent.js +39 -0
  119. package/scripts/autoresearch-runner.js +216 -0
  120. package/scripts/background-agent-governance.js +237 -0
  121. package/scripts/behavioral-extraction.js +97 -0
  122. package/scripts/belief-update.js +84 -0
  123. package/scripts/billing.js +2438 -0
  124. package/scripts/bot-detector.js +50 -0
  125. package/scripts/budget-guard.js +173 -0
  126. package/scripts/build-claude-mcpb.js +189 -0
  127. package/scripts/build-metadata.js +97 -0
  128. package/scripts/check-congruence.js +322 -0
  129. package/scripts/cli-feedback.js +135 -0
  130. package/scripts/cli-telemetry.js +87 -0
  131. package/scripts/cloudflare-dynamic-sandbox.js +315 -0
  132. package/scripts/code-reasoning.js +350 -0
  133. package/scripts/codegraph-context.js +466 -0
  134. package/scripts/commercial-offer.js +56 -0
  135. package/scripts/computer-use-firewall.js +250 -0
  136. package/scripts/context-engine.js +694 -0
  137. package/scripts/contextfs.js +1287 -0
  138. package/scripts/conversation-context.js +119 -0
  139. package/scripts/creator-campaigns.js +239 -0
  140. package/scripts/daemon-manager.js +108 -0
  141. package/scripts/daily-digest.js +11 -0
  142. package/scripts/dashboard-render-spec.js +395 -0
  143. package/scripts/dashboard.js +1058 -0
  144. package/scripts/data-governance.js +173 -0
  145. package/scripts/delegation-runtime.js +900 -0
  146. package/scripts/deploy-gcp.sh +44 -0
  147. package/scripts/deploy-policy.js +263 -0
  148. package/scripts/disagreement-mining.js +315 -0
  149. package/scripts/dispatch-brief.js +159 -0
  150. package/scripts/distribution-surfaces.js +44 -0
  151. package/scripts/dpo-optimizer.js +209 -0
  152. package/scripts/ephemeral-agent-store.js +219 -0
  153. package/scripts/eval-harness.js +56 -0
  154. package/scripts/evolution-state.js +241 -0
  155. package/scripts/experiment-tracker.js +267 -0
  156. package/scripts/export-databricks-bundle.js +242 -0
  157. package/scripts/export-dpo-pairs.js +345 -0
  158. package/scripts/export-kto-pairs.js +310 -0
  159. package/scripts/export-training.js +448 -0
  160. package/scripts/failure-diagnostics.js +558 -0
  161. package/scripts/feedback-attribution.js +313 -0
  162. package/scripts/feedback-fallback.js +111 -0
  163. package/scripts/feedback-history-distiller.js +391 -0
  164. package/scripts/feedback-inbox-read.js +162 -0
  165. package/scripts/feedback-loop.js +1887 -0
  166. package/scripts/feedback-paths.js +145 -0
  167. package/scripts/feedback-quality.js +139 -0
  168. package/scripts/feedback-root-consolidator.js +238 -0
  169. package/scripts/feedback-schema.js +426 -0
  170. package/scripts/feedback-session.js +286 -0
  171. package/scripts/feedback-to-memory.js +185 -0
  172. package/scripts/feedback-to-rules.js +163 -0
  173. package/scripts/filesystem-search.js +404 -0
  174. package/scripts/funnel-analytics.js +35 -0
  175. package/scripts/gate-satisfy.js +42 -0
  176. package/scripts/gate-stats.js +116 -0
  177. package/scripts/gate-templates.js +70 -0
  178. package/scripts/gates-engine.js +816 -0
  179. package/scripts/generate-paperbanana-diagrams.sh +99 -0
  180. package/scripts/generate-pretool-hook.sh +40 -0
  181. package/scripts/github-about.js +350 -0
  182. package/scripts/github-outreach.js +65 -0
  183. package/scripts/gtm-revenue-loop.js +520 -0
  184. package/scripts/hallucination-detector.js +226 -0
  185. package/scripts/hf-papers.js +317 -0
  186. package/scripts/history-distiller.js +200 -0
  187. package/scripts/hook-auto-capture.sh +95 -0
  188. package/scripts/hook-stop-pr-thread-check.sh +68 -0
  189. package/scripts/hook-stop-self-score.sh +51 -0
  190. package/scripts/hook-stop-verify-deploy.sh +31 -0
  191. package/scripts/hook-thumbgate-cache-updater.js +48 -0
  192. package/scripts/hook-verify-before-done.sh +20 -0
  193. package/scripts/hosted-config.js +170 -0
  194. package/scripts/hybrid-feedback-context.js +676 -0
  195. package/scripts/install-mcp.js +159 -0
  196. package/scripts/intent-router.js +392 -0
  197. package/scripts/internal-agent-bootstrap.js +490 -0
  198. package/scripts/jsonl-watcher.js +155 -0
  199. package/scripts/lesson-db.js +613 -0
  200. package/scripts/lesson-inference.js +315 -0
  201. package/scripts/lesson-retrieval.js +95 -0
  202. package/scripts/lesson-rotation.js +137 -0
  203. package/scripts/lesson-search.js +644 -0
  204. package/scripts/lesson-synthesis.js +196 -0
  205. package/scripts/license.js +50 -0
  206. package/scripts/local-model-profile.js +383 -0
  207. package/scripts/markdown-escape.js +12 -0
  208. package/scripts/marketing-experiment.js +671 -0
  209. package/scripts/mcp-config.js +149 -0
  210. package/scripts/mcp-policy.js +99 -0
  211. package/scripts/memalign-recall.js +111 -0
  212. package/scripts/memory-firewall.js +222 -0
  213. package/scripts/memory-migration.js +296 -0
  214. package/scripts/meta-policy.js +194 -0
  215. package/scripts/metered-billing.js +16 -0
  216. package/scripts/model-tier-router.js +301 -0
  217. package/scripts/money-watcher.js +71 -0
  218. package/scripts/multi-hop-recall.js +240 -0
  219. package/scripts/natural-language-harness.js +330 -0
  220. package/scripts/obsidian-export.js +712 -0
  221. package/scripts/operational-dashboard.js +103 -0
  222. package/scripts/operational-summary.js +93 -0
  223. package/scripts/optimize-context.js +17 -0
  224. package/scripts/org-dashboard.js +201 -0
  225. package/scripts/partner-orchestration.js +146 -0
  226. package/scripts/per-step-scoring.js +165 -0
  227. package/scripts/perplexity-marketing.js +466 -0
  228. package/scripts/pii-scanner.js +153 -0
  229. package/scripts/plan-gate.js +154 -0
  230. package/scripts/post-everywhere.js +308 -0
  231. package/scripts/post-to-x-retry.sh +22 -0
  232. package/scripts/post-to-x.js +369 -0
  233. package/scripts/pr-manager.js +236 -0
  234. package/scripts/predictive-insights.js +356 -0
  235. package/scripts/principle-extractor.js +162 -0
  236. package/scripts/pro-features.js +40 -0
  237. package/scripts/pro-local-dashboard.js +174 -0
  238. package/scripts/problem-detail.js +53 -0
  239. package/scripts/product-feedback.js +134 -0
  240. package/scripts/profile-router.js +245 -0
  241. package/scripts/prompt-dlp.js +221 -0
  242. package/scripts/prompt-guard.js +83 -0
  243. package/scripts/prove-adapters.js +863 -0
  244. package/scripts/prove-attribution.js +365 -0
  245. package/scripts/prove-automation.js +653 -0
  246. package/scripts/prove-autoresearch.js +304 -0
  247. package/scripts/prove-claim-verification.js +277 -0
  248. package/scripts/prove-cloudflare-sandbox.js +163 -0
  249. package/scripts/prove-data-pipeline.js +410 -0
  250. package/scripts/prove-data-quality.js +227 -0
  251. package/scripts/prove-evolution.js +352 -0
  252. package/scripts/prove-harnesses.js +287 -0
  253. package/scripts/prove-intelligence.js +259 -0
  254. package/scripts/prove-lancedb.js +371 -0
  255. package/scripts/prove-local-intelligence.js +342 -0
  256. package/scripts/prove-loop-closure.js +263 -0
  257. package/scripts/prove-predictive-insights.js +357 -0
  258. package/scripts/prove-runtime.js +350 -0
  259. package/scripts/prove-seo-gsd.js +234 -0
  260. package/scripts/prove-settings.js +279 -0
  261. package/scripts/prove-subway-upgrades.js +277 -0
  262. package/scripts/prove-tessl.js +229 -0
  263. package/scripts/prove-training-export.js +327 -0
  264. package/scripts/prove-workflow-contract.js +116 -0
  265. package/scripts/prove-xmemory.js +332 -0
  266. package/scripts/publish-decision.js +133 -0
  267. package/scripts/pulse.js +80 -0
  268. package/scripts/rate-limiter.js +125 -0
  269. package/scripts/reddit-dm-outreach.js +182 -0
  270. package/scripts/reddit-monitor-cron.sh +26 -0
  271. package/scripts/reflector-agent.js +221 -0
  272. package/scripts/reminder-engine.js +132 -0
  273. package/scripts/revenue-status.js +472 -0
  274. package/scripts/risk-scorer.js +458 -0
  275. package/scripts/rlaif-self-audit.js +129 -0
  276. package/scripts/rubric-engine.js +230 -0
  277. package/scripts/schedule-manager.js +251 -0
  278. package/scripts/secret-scanner.js +414 -0
  279. package/scripts/self-heal.js +147 -0
  280. package/scripts/self-healing-check.js +188 -0
  281. package/scripts/semantic-layer.js +98 -0
  282. package/scripts/seo-gsd.js +1153 -0
  283. package/scripts/settings-hierarchy.js +214 -0
  284. package/scripts/shieldcortex-memory-firewall-runner.mjs +53 -0
  285. package/scripts/skill-exporter.js +262 -0
  286. package/scripts/skill-generator.js +446 -0
  287. package/scripts/skill-materializer.js +134 -0
  288. package/scripts/skill-packs.js +136 -0
  289. package/scripts/skill-proposer.js +99 -0
  290. package/scripts/skill-quality-tracker.js +284 -0
  291. package/scripts/slo-alert-engine.js +14 -0
  292. package/scripts/slow-loop.js +72 -0
  293. package/scripts/social-analytics/db/schema.sql +32 -0
  294. package/scripts/social-analytics/digest.js +256 -0
  295. package/scripts/social-analytics/generate-instagram-card.js +97 -0
  296. package/scripts/social-analytics/instagram-thumbgate-post.js +73 -0
  297. package/scripts/social-analytics/mcp-server.js +289 -0
  298. package/scripts/social-analytics/normalizer.js +580 -0
  299. package/scripts/social-analytics/notify.js +162 -0
  300. package/scripts/social-analytics/poll-all.js +107 -0
  301. package/scripts/social-analytics/pollers/github.js +195 -0
  302. package/scripts/social-analytics/pollers/instagram.js +253 -0
  303. package/scripts/social-analytics/pollers/linkedin.js +330 -0
  304. package/scripts/social-analytics/pollers/plausible.js +247 -0
  305. package/scripts/social-analytics/pollers/reddit.js +306 -0
  306. package/scripts/social-analytics/pollers/threads.js +233 -0
  307. package/scripts/social-analytics/pollers/tiktok.js +203 -0
  308. package/scripts/social-analytics/pollers/x.js +227 -0
  309. package/scripts/social-analytics/pollers/youtube.js +304 -0
  310. package/scripts/social-analytics/pollers/zernio.js +180 -0
  311. package/scripts/social-analytics/publish-instagram-thumbgate.js +85 -0
  312. package/scripts/social-analytics/publishers/devto.js +122 -0
  313. package/scripts/social-analytics/publishers/instagram.js +317 -0
  314. package/scripts/social-analytics/publishers/linkedin.js +294 -0
  315. package/scripts/social-analytics/publishers/reddit.js +390 -0
  316. package/scripts/social-analytics/publishers/threads.js +275 -0
  317. package/scripts/social-analytics/publishers/tiktok.js +217 -0
  318. package/scripts/social-analytics/publishers/x.js +259 -0
  319. package/scripts/social-analytics/publishers/youtube.js +223 -0
  320. package/scripts/social-analytics/publishers/zernio.js +209 -0
  321. package/scripts/social-analytics/run-digest.js +34 -0
  322. package/scripts/social-analytics/store.js +257 -0
  323. package/scripts/social-analytics/utm.js +143 -0
  324. package/scripts/social-pipeline.js +2628 -0
  325. package/scripts/social-quality-gate.js +18 -0
  326. package/scripts/social-reply-monitor.js +445 -0
  327. package/scripts/status-dashboard.js +155 -0
  328. package/scripts/statusline-lesson.js +16 -0
  329. package/scripts/statusline-tower.js +8 -0
  330. package/scripts/statusline.sh +116 -0
  331. package/scripts/stripe-live-status.js +115 -0
  332. package/scripts/subagent-profiles.js +79 -0
  333. package/scripts/sync-gh-secrets-from-env.sh +70 -0
  334. package/scripts/sync-github-about.js +52 -0
  335. package/scripts/sync-version.js +451 -0
  336. package/scripts/synthetic-dpo.js +234 -0
  337. package/scripts/telemetry-analytics.js +821 -0
  338. package/scripts/tessl-export.js +371 -0
  339. package/scripts/test-coverage.js +120 -0
  340. package/scripts/thompson-sampling.js +417 -0
  341. package/scripts/thumbgate-search.js +189 -0
  342. package/scripts/tool-kpi-tracker.js +12 -0
  343. package/scripts/tool-registry.js +811 -0
  344. package/scripts/train_from_feedback.py +910 -0
  345. package/scripts/user-profile.js +78 -0
  346. package/scripts/validate-feedback.js +580 -0
  347. package/scripts/validate-workflow-contract.js +287 -0
  348. package/scripts/vector-store.js +198 -0
  349. package/scripts/verification-loop.js +291 -0
  350. package/scripts/verify-obsidian-setup.sh +269 -0
  351. package/scripts/verify-run.js +269 -0
  352. package/scripts/webhook-delivery.js +62 -0
  353. package/scripts/weekly-auto-post.js +124 -0
  354. package/scripts/workflow-runs.js +154 -0
  355. package/scripts/workflow-sprint-intake.js +475 -0
  356. package/scripts/workspace-evolver.js +374 -0
  357. package/scripts/x-autonomous-marketing.js +139 -0
  358. package/scripts/xmemory-lite.js +405 -0
  359. package/skills/agent-memory/SKILL.md +97 -0
  360. package/skills/solve-architecture-autonomy/SKILL.md +17 -0
  361. package/skills/solve-architecture-autonomy/tool.js +33 -0
  362. package/skills/thumbgate/SKILL.md +114 -0
  363. package/skills/thumbgate-feedback/SKILL.md +49 -0
  364. package/src/api/server.js +4208 -0
@@ -0,0 +1,92 @@
1
+ # Gemini: ThumbGate Function Declarations Install
2
+
3
+ Import the ThumbGate function declarations into your Gemini agent in under 60 seconds.
4
+
5
+ ## One-Command Install (Node.js)
6
+
7
+ ```bash
8
+ # Copy declarations to your project
9
+ cp adapters/gemini/function-declarations.json .gemini/thumbgate-tools.json
10
+ ```
11
+
12
+ ## Import in Your Agent Code
13
+
14
+ ```javascript
15
+ const fs = require('fs');
16
+
17
+ // Load ThumbGate tool declarations
18
+ const rlhfTools = JSON.parse(
19
+ fs.readFileSync('adapters/gemini/function-declarations.json', 'utf8')
20
+ );
21
+
22
+ // Pass to Gemini SDK
23
+ const model = genAI.getGenerativeModel({
24
+ model: 'gemini-pro',
25
+ tools: [{ functionDeclarations: rlhfTools.tools }],
26
+ });
27
+ ```
28
+
29
+ ## Available Functions
30
+
31
+ | Function | Description |
32
+ |---|---|
33
+ | `capture_memory_feedback` | Capture success/failure feedback — POST `/v1/feedback/capture` |
34
+ | `get_reliability_rules` | Retrieve active prevention rules — POST `/v1/feedback/rules` |
35
+ | `get_business_metrics` | Retrieve high-level metrics — GET `/v1/billing/summary` |
36
+ | `describe_reliability_entity` | Get canonical definitions — GET `/v1/semantic/describe` |
37
+
38
+ ## Point to Your API
39
+
40
+ Set the base URL in your Gemini function handler:
41
+
42
+ ```javascript
43
+ const THUMBGATE_API_URL = process.env.THUMBGATE_API_URL || 'http://localhost:3000';
44
+ const THUMBGATE_API_KEY = process.env.THUMBGATE_API_KEY;
45
+
46
+ async function callRlhfTool(name, params) {
47
+ const endpoints = {
48
+ capture_memory_feedback: { method: 'POST', path: '/v1/feedback/capture' },
49
+ get_reliability_rules: { method: 'POST', path: '/v1/feedback/rules' },
50
+ get_business_metrics: { method: 'GET', path: '/v1/billing/summary' },
51
+ describe_reliability_entity: { method: 'GET', path: '/v1/semantic/describe' },
52
+ plan_intent: { method: 'POST', path: '/v1/intents/plan' },
53
+ };
54
+ const { method, path } = endpoints[name];
55
+
56
+ const url = new URL(`${THUMBGATE_API_URL}${path}`);
57
+ if (method === 'GET' && params) {
58
+ Object.keys(params).forEach(key => url.searchParams.append(key, params[key]));
59
+ }
60
+
61
+ const res = await fetch(url.toString(), {
62
+ method,
63
+ headers: { Authorization: `Bearer ${THUMBGATE_API_KEY}`, 'Content-Type': 'application/json' },
64
+ body: method === 'POST' ? JSON.stringify(params) : undefined,
65
+ });
66
+ return res.json();
67
+ }
68
+ ```
69
+
70
+ ## Requirements
71
+
72
+ - Google Gemini SDK (`@google/generative-ai`)
73
+ - Node.js 18+ or Python 3.9+
74
+ - ThumbGate API running (local or hosted)
75
+
76
+ ## Branding Alignment (Google Cloud)
77
+
78
+ When setting up your Google Cloud Project for this extension:
79
+ 1. **Project Name:** Use `mcp-reliability-gateway` or similar. Avoid placeholder names.
80
+ 2. **OAuth Consent Screen:**
81
+ - **App Name:** Enter `MCP Reliability Gateway`.
82
+ - **Support Email:** Use your professional email.
83
+ - **Logo:** Use the provided asset in `docs/logo-400x400.png`.
84
+
85
+ This ensures that the "App Asking for Consent" matches the product name, providing a professional experience for the CEO and users.
86
+
87
+ ## Verify
88
+
89
+ ```bash
90
+ node -e "const t = require('./adapters/gemini/function-declarations.json'); console.log('Tools:', t.tools.map(x=>x.name))"
91
+ # Expected: Tools: [ 'capture_memory_feedback', 'get_reliability_rules', 'get_business_metrics', 'describe_reliability_entity', ... ]
92
+ ```
@@ -0,0 +1,14 @@
1
+ You are integrated with the MCP Reliability Gateway. Your goal is to ensure 100% reliable execution by following project-specific rules and business metrics.
2
+
3
+ When the user gives success/failure signal (thumbs up/down):
4
+ - call `capture_memory_feedback` with rich context.
5
+ - include tags for entities involved (e.g. 'entity:Revenue', 'entity:Customer').
6
+ - do not accept vague feedback without asking for detail.
7
+
8
+ Before starting a significant task:
9
+ - call `get_reliability_rules` to retrieve prevention rules derived from past mistakes.
10
+ - respect these rules as foundational constraints.
11
+
12
+ When reasoning about the business:
13
+ - use `get_business_metrics` for hard revenue and conversion data.
14
+ - use `describe_reliability_entity` to understand how business concepts are defined.
@@ -0,0 +1,45 @@
1
+ {
2
+ "tools": [
3
+ {
4
+ "name": "capture_memory_feedback",
5
+ "description": "Capture success/failure feedback to harden future workflows and prevent repeated mistakes.",
6
+ "input_schema": {
7
+ "type": "object",
8
+ "properties": {
9
+ "signal": { "type": "string", "enum": ["up", "down"], "description": "Success (up) or failure (down) signal" },
10
+ "context": { "type": "string", "description": "Specific detail about what was achieved or what went wrong" },
11
+ "what_went_wrong": { "type": "string" },
12
+ "what_to_change": { "type": "string" },
13
+ "what_worked": { "type": "string" },
14
+ "tags": { "type": "array", "items": { "type": "string" }, "description": "Keywords like 'revenue', 'deployment', 'refactor'" }
15
+ },
16
+ "required": ["signal", "context"]
17
+ }
18
+ },
19
+ {
20
+ "name": "get_reliability_rules",
21
+ "description": "Retrieve active prevention rules and success patterns to ensure high-quality task execution."
22
+ },
23
+ {
24
+ "name": "get_business_metrics",
25
+ "description": "Retrieve canonical business metrics (Revenue, Conversion, Customers) from the Reliability Gateway.",
26
+ "input_schema": {
27
+ "type": "object",
28
+ "properties": {
29
+ "window": { "type": "string", "enum": ["today", "7d", "30d", "lifetime"], "default": "30d" }
30
+ }
31
+ }
32
+ },
33
+ {
34
+ "name": "describe_reliability_entity",
35
+ "description": "Get the definition and state of a business entity (Customer, Revenue, Funnel).",
36
+ "input_schema": {
37
+ "type": "object",
38
+ "properties": {
39
+ "type": { "type": "string", "enum": ["Customer", "Revenue", "Funnel"] }
40
+ },
41
+ "required": ["type"]
42
+ }
43
+ }
44
+ ]
45
+ }
@@ -0,0 +1,57 @@
1
+ # OpenCode: ThumbGate MCP Profile Install
2
+
3
+ This repo already ships a project-scoped `opencode.json` for local work inside the source tree.
4
+
5
+ If you want the same MCP server in another OpenCode project or in your global OpenCode config, use the portable adapter profile below.
6
+
7
+ ## One-Command Install
8
+
9
+ Create a global OpenCode config if you do not have one yet:
10
+
11
+ ```bash
12
+ mkdir -p ~/.config/opencode
13
+ cp adapters/opencode/opencode.json ~/.config/opencode/opencode.json
14
+ ```
15
+
16
+ If you already have `~/.config/opencode/opencode.json`, merge in the `mcp.thumbgate` block from `adapters/opencode/opencode.json` instead of overwriting your config.
17
+
18
+ ## What Gets Added
19
+
20
+ The portable profile adds this MCP server entry:
21
+
22
+ ```json
23
+ {
24
+ "$schema": "https://opencode.ai/config.json",
25
+ "mcp": {
26
+ "thumbgate": {
27
+ "type": "local",
28
+ "command": ["npx", "-y", "thumbgate@0.9.10", "serve"],
29
+ "enabled": true
30
+ }
31
+ }
32
+ }
33
+ ```
34
+
35
+ ## Verify
36
+
37
+ Run OpenCode in any project and confirm the `thumbgate` MCP server is available:
38
+
39
+ ```bash
40
+ opencode
41
+ ```
42
+
43
+ For this repository specifically, the committed `opencode.json` also enables:
44
+
45
+ - repo-local worktree-safe permissions
46
+ - a read-only `thumbgate-review` subagent in `.opencode/agents/thumbgate-review.md`
47
+ - concise workflow instructions in `.opencode/instructions/thumbgate-workflow.md`
48
+
49
+ ## Requirements
50
+
51
+ - OpenCode with MCP support
52
+ - Node.js 18+ in PATH
53
+ - `npx` available in PATH
54
+
55
+ ## Uninstall
56
+
57
+ Remove the `mcp.thumbgate` entry from your OpenCode config.
Binary file
@@ -0,0 +1,400 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>ThumbGate Blog — Agent Governance Engineering</title>
7
+ <meta
8
+ name="description"
9
+ content="Technical breakdowns, release notes, and agent governance insights from the ThumbGate team."
10
+ />
11
+ <link
12
+ rel="canonical"
13
+ href="https://thumbgate-production.up.railway.app/blog"
14
+ />
15
+ <meta
16
+ property="og:title"
17
+ content="ThumbGate Blog — Agent Governance Engineering"
18
+ />
19
+ <meta
20
+ property="og:description"
21
+ content="Technical breakdowns, release notes, and agent governance insights from the ThumbGate team."
22
+ />
23
+ <meta property="og:type" content="website" />
24
+ <meta
25
+ property="og:url"
26
+ content="https://thumbgate-production.up.railway.app/blog"
27
+ />
28
+ <script type="application/ld+json">
29
+ {
30
+ "@context": "https://schema.org",
31
+ "@type": "Blog",
32
+ "name": "ThumbGate Blog",
33
+ "url": "https://thumbgate-production.up.railway.app/blog",
34
+ "publisher": { "@type": "Organization", "name": "Max Smith KDP LLC" },
35
+ "blogPost": [
36
+ {
37
+ "@type": "BlogPosting",
38
+ "headline": "The Claude Code Leak Proves Why Pre-Action Gates Matter",
39
+ "datePublished": "2026-04-01",
40
+ "keywords": "Claude Code security, Claude Code guardrails, AI agent safety, pre-action gates"
41
+ },
42
+ {
43
+ "@type": "BlogPosting",
44
+ "headline": "v0.8.5: Gate Reasoning Chains, Org Dashboard, and the Checkout Funnel That Didn't Exist",
45
+ "datePublished": "2026-03-31"
46
+ }
47
+ ]
48
+ }
49
+ </script>
50
+ <style>
51
+ :root {
52
+ --bg: #0a0a0a;
53
+ --surface: #141414;
54
+ --border: #2a2a2a;
55
+ --text: #e0e0e0;
56
+ --text-dim: #888;
57
+ --cyan: #00d4aa;
58
+ }
59
+ * {
60
+ margin: 0;
61
+ padding: 0;
62
+ box-sizing: border-box;
63
+ }
64
+ body {
65
+ font-family:
66
+ -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
67
+ background: var(--bg);
68
+ color: var(--text);
69
+ line-height: 1.7;
70
+ }
71
+ .container {
72
+ max-width: 720px;
73
+ margin: 0 auto;
74
+ padding: 0 24px;
75
+ }
76
+ header {
77
+ padding: 24px 0;
78
+ border-bottom: 1px solid var(--border);
79
+ }
80
+ header a {
81
+ color: var(--cyan);
82
+ text-decoration: none;
83
+ font-weight: 600;
84
+ }
85
+ h1 {
86
+ font-size: 18px;
87
+ font-weight: 700;
88
+ }
89
+ .post {
90
+ padding: 48px 0;
91
+ border-bottom: 1px solid var(--border);
92
+ }
93
+ .post-date {
94
+ font-size: 13px;
95
+ color: var(--text-dim);
96
+ margin-bottom: 8px;
97
+ }
98
+ .post h2 {
99
+ font-size: 24px;
100
+ font-weight: 700;
101
+ margin-bottom: 16px;
102
+ letter-spacing: -0.02em;
103
+ }
104
+ .post h3 {
105
+ font-size: 18px;
106
+ font-weight: 600;
107
+ margin: 24px 0 8px;
108
+ }
109
+ .post p {
110
+ margin-bottom: 16px;
111
+ color: var(--text-dim);
112
+ }
113
+ .post ul {
114
+ margin: 0 0 16px 24px;
115
+ color: var(--text-dim);
116
+ }
117
+ .post li {
118
+ margin-bottom: 6px;
119
+ }
120
+ .post code {
121
+ background: var(--surface);
122
+ padding: 2px 6px;
123
+ border-radius: 4px;
124
+ font-size: 14px;
125
+ }
126
+ .post strong {
127
+ color: var(--text);
128
+ }
129
+ .cta {
130
+ display: inline-block;
131
+ margin-top: 16px;
132
+ padding: 10px 20px;
133
+ background: var(--cyan);
134
+ color: #000;
135
+ border-radius: 6px;
136
+ text-decoration: none;
137
+ font-weight: 600;
138
+ font-size: 14px;
139
+ }
140
+ footer {
141
+ padding: 48px 0 24px;
142
+ text-align: center;
143
+ color: var(--text-dim);
144
+ font-size: 13px;
145
+ }
146
+ footer a {
147
+ color: var(--cyan);
148
+ text-decoration: none;
149
+ }
150
+ </style>
151
+ </head>
152
+ <body>
153
+ <header>
154
+ <div
155
+ class="container"
156
+ style="
157
+ display: flex;
158
+ justify-content: space-between;
159
+ align-items: center;
160
+ "
161
+ >
162
+ <h1><a href="/">ThumbGate</a> / Blog</h1>
163
+ <a href="/">Back to home</a>
164
+ </div>
165
+ </header>
166
+
167
+ <div class="container">
168
+ <article class="post">
169
+ <div class="post-date">April 1, 2026</div>
170
+ <h2>Dual-Signal Feedback: Why "What Failed" Isn't Enough</h2>
171
+
172
+ <p>
173
+ Standard thumbs-down tells you <em>something</em> went wrong. But was
174
+ it a bad decision (wrong tool) or bad execution (right tool, wrong
175
+ parameters)?
176
+ </p>
177
+
178
+ <p>
179
+ Inspired by
180
+ <a
181
+ href="https://huggingface.co/papers/2603.28767"
182
+ style="color: var(--cyan)"
183
+ >Gen-Searcher's dual reward system</a
184
+ >, ThumbGate now supports an optional <code>failureType</code> field
185
+ on <code>capture_feedback</code>:
186
+ </p>
187
+
188
+ <ul>
189
+ <li>
190
+ <strong><code>"decision"</code></strong> — the agent chose the wrong
191
+ action entirely
192
+ </li>
193
+ <li>
194
+ <strong><code>"execution"</code></strong> — right action, bad
195
+ parameters or output
196
+ </li>
197
+ </ul>
198
+
199
+ <p>
200
+ Thompson Sampling creates separate sub-arms (e.g.,
201
+ <code>git:decision</code> and <code>git:execution</code>) so
202
+ reliability scores diverge per dimension. An agent might be great at
203
+ choosing git commands but bad at parameterizing them — now you can see
204
+ that distinction.
205
+ </p>
206
+
207
+ <p>
208
+ Backward compatible. Existing feedback without
209
+ <code>failureType</code> works unchanged.
210
+ </p>
211
+
212
+ <a class="cta" href="https://www.npmjs.com/package/thumbgate"
213
+ >Try it now</a
214
+ >
215
+ </article>
216
+
217
+ <article class="post">
218
+ <div class="post-date">April 1, 2026</div>
219
+ <h2>The Claude Code Leak Proves Why Pre-Action Gates Matter</h2>
220
+
221
+ <p>
222
+ Anthropic accidentally shipped 512,000 lines of Claude Code source
223
+ inside an npm package. A missing <code>.npmignore</code> exposed the
224
+ full agent architecture: tool-call loops, permission models, retry
225
+ logic, 44 unreleased feature flags.
226
+ </p>
227
+
228
+ <p>
229
+ Within 24 hours, a clean rewrite called Claw-code hit 100K GitHub
230
+ stars — the fastest-growing repo in GitHub history.
231
+ </p>
232
+
233
+ <h3>What the leak revealed about agent security</h3>
234
+ <p>
235
+ Claude Code has a sophisticated permission model and tool-calling
236
+ pipeline. What it does <strong>not</strong> have is feedback-driven
237
+ enforcement — the ability to learn from past mistakes and physically
238
+ block the agent from repeating them.
239
+ </p>
240
+
241
+ <p>
242
+ That's exactly what ThumbGate does. Every Claude Code user — and every
243
+ Claw-code user — can add pre-action gates today:
244
+ </p>
245
+
246
+ <ul>
247
+ <li>
248
+ <strong>Thumbs-down a mistake</strong> — it auto-generates a
249
+ prevention rule
250
+ </li>
251
+ <li>
252
+ <strong>Gates enforce</strong> — PreToolUse hooks block the action
253
+ before execution
254
+ </li>
255
+ <li>
256
+ <strong>Reasoning chains explain</strong> — every block tells you
257
+ WHY
258
+ </li>
259
+ <li>
260
+ <strong>Thompson Sampling adapts</strong> — confidence tiers prevent
261
+ false blocks
262
+ </li>
263
+ </ul>
264
+
265
+ <h3>Install in 30 seconds</h3>
266
+ <p>
267
+ <code>npx thumbgate init</code> works with Claude Code,
268
+ Claw-code, Cursor, Codex, Gemini, Amp, and any MCP-compatible agent.
269
+ </p>
270
+
271
+ <p>
272
+ The leak proves agents are powerful but fallible software. Memory
273
+ without enforcement is a suggestion.
274
+ <strong>ThumbGate is a guarantee.</strong>
275
+ </p>
276
+
277
+ <a class="cta" href="https://www.npmjs.com/package/thumbgate"
278
+ >Install ThumbGate</a
279
+ >
280
+ </article>
281
+
282
+ <article class="post">
283
+ <div class="post-date">March 31, 2026</div>
284
+ <h2>
285
+ v0.8.5: Gate Reasoning Chains, Org Dashboard, and the Checkout Funnel
286
+ That Didn't Exist
287
+ </h2>
288
+
289
+ <p>
290
+ ThumbGate v0.8.5 is our biggest release yet. Here's what shipped and
291
+ why.
292
+ </p>
293
+
294
+ <h3>The problem we didn't see</h3>
295
+ <p>
296
+ ~1,700 developers install ThumbGate via npm every month.
297
+ <strong>Zero of them ever saw a checkout button.</strong> They find
298
+ the GitHub README, run <code>npx thumbgate init</code>, use
299
+ it for free, and never visit the landing page. The checkout flow
300
+ nobody reaches is irrelevant. We were optimizing a storefront in a
301
+ building with no door.
302
+ </p>
303
+
304
+ <h3>Gate reasoning chains</h3>
305
+ <p>
306
+ Every gate block and warning now explains <strong>WHY</strong> it
307
+ fired. When ThumbGate blocks a <code>git push --force</code>, the
308
+ response includes:
309
+ </p>
310
+ <ul>
311
+ <li>Which pattern matched and what it matched against</li>
312
+ <li>Gate identity: ID, action, layer, severity</li>
313
+ <li>Source: manual policy rule vs auto-promoted from feedback</li>
314
+ <li>
315
+ How to bypass: <code>satisfy_gate("pr_threads_checked")</code>
316
+ </li>
317
+ <li>Historical fire count: "blocked 23x, warned 15x"</li>
318
+ </ul>
319
+ <p>
320
+ This was inspired by the neuro-symbolic explainability trend in
321
+ production AI systems. Gates are the symbolic rules; Thompson Sampling
322
+ provides the statistical confidence. The reasoning chain bridges both.
323
+ </p>
324
+
325
+ <h3>Multi-agent org dashboard</h3>
326
+ <p>
327
+ "I'm not going to have 10,000 agents running in the environment that I
328
+ don't know what they're doing." — CIO.com, March 2026
329
+ </p>
330
+ <p>
331
+ The new <code>org_dashboard</code> MCP tool aggregates gate decisions
332
+ across all registered agent sessions. CIOs and team leads see: total
333
+ active agents, org-wide adherence rate, top blocked gates, and risk
334
+ agents (those with the lowest adherence). Free tier shows 3 agents;
335
+ Pro shows the full org.
336
+ </p>
337
+
338
+ <h3>Multi-hop agentic retrieval</h3>
339
+ <p>
340
+ Inspired by Chroma's Context-1,
341
+ <code>constructMultiHopPack</code> iteratively retrieves context,
342
+ prunes weak chunks, refines the query with expansion terms, and checks
343
+ coverage — stopping when the coverage threshold (60%) is met or max
344
+ hops are reached. Each hop is logged.
345
+ </p>
346
+
347
+ <h3>Thompson Sampling calibration</h3>
348
+ <p>
349
+ <code>MIN_SAMPLES_THRESHOLD</code> (5) prevents low-sample
350
+ overconfidence. <code>getCalibration()</code> reports per-category
351
+ confidence tiers: none (0 samples), low (1-4), medium (5-19), high
352
+ (20+). Callers know when to trust the statistical arm vs fall back to
353
+ rules.
354
+ </p>
355
+
356
+ <h3>The funnel fix</h3>
357
+ <p>
358
+ Four touchpoints now put the checkout URL where 100% of npm users
359
+ actually are:
360
+ </p>
361
+ <ul>
362
+ <li>
363
+ <strong>Post-install banner</strong> — prints after
364
+ <code>npm install</code> (stderr, CI-safe)
365
+ </li>
366
+ <li>
367
+ <strong>Free-tier rate limits</strong> — power features capped,
368
+ upgrade URL in error
369
+ </li>
370
+ <li>
371
+ <strong>MCP enforceLimit</strong> — agents surface the checkout URL
372
+ when limits hit
373
+ </li>
374
+ <li>
375
+ <strong>CLI upgrade nudge</strong> — after <code>init</code>,
376
+ <code>capture</code>, <code>stats</code>
377
+ </li>
378
+ </ul>
379
+ <p>
380
+ 13 funnel invariant CI tests prevent this blindspot from ever
381
+ regressing.
382
+ </p>
383
+
384
+ <a class="cta" href="https://www.npmjs.com/package/thumbgate"
385
+ >Install v0.8.5 on npm</a
386
+ >
387
+ </article>
388
+ </div>
389
+
390
+ <footer>
391
+ <div class="container">
392
+ <a href="/">Home</a> ·
393
+ <a href="https://github.com/IgorGanapolsky/ThumbGate">GitHub</a> ·
394
+ <a href="https://x.com/IgorGanapolsky">X</a> ·
395
+ <a href="https://www.linkedin.com/in/igorganapolsky">LinkedIn</a>
396
+ <br /><br />© 2026 Max Smith KDP LLC · MIT License
397
+ </div>
398
+ </footer>
399
+ </body>
400
+ </html>