thumbgate 1.35.0 → 1.37.2

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 (204) hide show
  1. package/.agents/skills/cobble-hot-store-compare-not-clone/SKILL.md +80 -0
  2. package/.agents/skills/colab-compute-honesty-not-clone/SKILL.md +70 -0
  3. package/.agents/skills/cyberstrike-compare-not-clone/SKILL.md +36 -0
  4. package/.agents/skills/gitlab-sandbox-allowlist-not-trust/SKILL.md +77 -0
  5. package/.agents/skills/jit-harness-compare-not-clone/SKILL.md +34 -0
  6. package/.agents/skills/openui-catalog-compose-honesty/SKILL.md +64 -0
  7. package/.agents/skills/token-shunt-honesty-not-clone/SKILL.md +67 -0
  8. package/.agents/skills/typesafe-typed-questions-not-clone/SKILL.md +82 -0
  9. package/.agents/skills/zvec-grep-compare-not-clone/SKILL.md +34 -0
  10. package/.claude-plugin/plugin.json +1 -1
  11. package/.well-known/llms.txt +1 -0
  12. package/.well-known/mcp/server-card.json +1 -1
  13. package/CONTRIBUTING.md +95 -0
  14. package/README.md +195 -632
  15. package/THIRD_PARTY_NOTICES.md +89 -0
  16. package/adapters/claude/.mcp.json +2 -2
  17. package/adapters/forge/forge.yaml +3 -3
  18. package/adapters/future-agi/.mcp.json +8 -0
  19. package/adapters/future-agi/FUTURE_AGI.md +23 -0
  20. package/adapters/future-agi/config.toml +3 -0
  21. package/adapters/future-agi/future-agi-bridge.js +9 -0
  22. package/adapters/future-agi/opencode.json +8 -0
  23. package/adapters/herdr/herdr-plugin.toml +18 -0
  24. package/adapters/mcp/server-stdio.js +238 -25
  25. package/adapters/opencode/opencode.json +1 -1
  26. package/adapters/workos/WORKOS.md +52 -0
  27. package/bin/cli.js +465 -3
  28. package/bin/futureagi-bridge +9 -0
  29. package/config/gate-templates.json +629 -4
  30. package/config/gates/actor-critic-audit.json +34 -0
  31. package/config/gates/default.json +9 -3
  32. package/config/gates/five-walls-governance.json +34 -0
  33. package/config/gates/future-agi-guardrails.json +34 -0
  34. package/config/gates/radware-threat-defense-2026.json +61 -0
  35. package/config/gates/simatree-data-governance.json +33 -0
  36. package/config/mcp-allowlists.json +4 -0
  37. package/config/merge-quality-checks.json +6 -0
  38. package/config/model-candidates.json +312 -29
  39. package/config/model-tiers.json +18 -0
  40. package/config/post-deploy-marketing-pages.json +10 -0
  41. package/config/progressive/01-wire-only.json +11 -0
  42. package/config/progressive/02-dashboard-empty-ok.json +10 -0
  43. package/config/progressive/03-one-lesson.json +10 -0
  44. package/config/progressive/04-warn-fires.json +11 -0
  45. package/config/progressive/05-strict-optional.json +11 -0
  46. package/config/progressive/README.md +15 -0
  47. package/config/schemas/broker-execution-receipt.schema.json +139 -0
  48. package/config/schemas/provider-execution-attestation-v1.schema.json +58 -0
  49. package/conformance/provider-attestation/vectors.json +320 -0
  50. package/docs/specs/provider-execution-attestation-v1.md +69 -0
  51. package/openapi/openapi.yaml +15 -0
  52. package/package.json +408 -150
  53. package/public/about.html +2 -2
  54. package/public/ai-malpractice-prevention.html +7 -7
  55. package/public/blog/a-10-dollar-vps-is-not-a-computer.html +143 -0
  56. package/public/blog/a-receipt-is-not-world-state.html +388 -0
  57. package/public/blog/git-at-agent-scale.html +374 -0
  58. package/public/blog/no-llm-in-the-gate.html +133 -0
  59. package/public/blog.html +80 -0
  60. package/public/case-studies.html +16 -1
  61. package/public/compare.html +28 -0
  62. package/public/diagnostic.html +216 -7
  63. package/public/docs/connectors.html +39 -0
  64. package/public/federal.html +2 -2
  65. package/public/founders.html +639 -0
  66. package/public/index.html +87 -9
  67. package/public/install.html +8 -8
  68. package/public/learn.html +39 -0
  69. package/public/numbers.html +2 -2
  70. package/public/peter.html +310 -0
  71. package/public/platform-partners.html +119 -0
  72. package/public/pricing.html +24 -3
  73. package/public/privacy.html +117 -0
  74. package/public/pro.html +17 -0
  75. package/public/support.html +62 -0
  76. package/public/terms.html +130 -0
  77. package/public/third-party-notices.html +95 -0
  78. package/public/yt.html +351 -0
  79. package/scripts/action-receipts.js +133 -3
  80. package/scripts/adaptive-governance-arena.js +349 -0
  81. package/scripts/admin-override.js +205 -0
  82. package/scripts/agent-action-inventory.js +869 -0
  83. package/scripts/agent-audit-trace.js +42 -2
  84. package/scripts/agent-egress-policy.js +1117 -0
  85. package/scripts/agent-memory-lifecycle.js +141 -2
  86. package/scripts/agent-operations-planner.js +441 -1
  87. package/scripts/agent-readiness.js +68 -0
  88. package/scripts/agent-security-central.js +647 -0
  89. package/scripts/allowlist-bridge-honesty.js +417 -0
  90. package/scripts/async-job-runner.js +102 -11
  91. package/scripts/audit-trail.js +212 -0
  92. package/scripts/billing.js +1 -1
  93. package/scripts/broker-execution-receipts.js +719 -0
  94. package/scripts/budget-aware-gates-proof.js +423 -0
  95. package/scripts/claude-feedback-sync.js +29 -3
  96. package/scripts/claw-harness-production.js +237 -0
  97. package/scripts/cli-schema.js +203 -1
  98. package/scripts/cobble-hot-store-split.js +600 -0
  99. package/scripts/codex-runbook-flywheel.js +318 -0
  100. package/scripts/colab-compute-honesty.js +281 -0
  101. package/scripts/context-footprint.js +186 -0
  102. package/scripts/contextfs.js +143 -61
  103. package/scripts/dashboard.js +251 -32
  104. package/scripts/deepseek-v4-runtime-guardrails.js +72 -6
  105. package/scripts/docker-sandbox-planner.js +18 -0
  106. package/scripts/double-blind-eval-protocol.js +252 -0
  107. package/scripts/edotenv-rl-gateway.js +259 -0
  108. package/scripts/ensure-production-search-corpus.js +162 -0
  109. package/scripts/eval-holdout.js +311 -0
  110. package/scripts/feedback-aggregate.js +21 -2
  111. package/scripts/feedback-loop.js +87 -5
  112. package/scripts/feedback-quality.js +9 -0
  113. package/scripts/file-ledger-lock.js +4 -1
  114. package/scripts/financial-control-plane.js +41 -1
  115. package/scripts/find-dormant-requires.js +118 -0
  116. package/scripts/fs-utils.js +84 -8
  117. package/scripts/gates-engine.js +826 -68
  118. package/scripts/generate-case-study-outreach.js +24 -15
  119. package/scripts/git-at-scale.js +628 -0
  120. package/scripts/governance-conflict-audit.js +1650 -0
  121. package/scripts/governance-difficulty-curriculum.js +328 -0
  122. package/scripts/graphrag-retrieval.js +275 -0
  123. package/scripts/gurobi-optimizer.js +324 -0
  124. package/scripts/gurobi_optimizer.py +485 -0
  125. package/scripts/harness-selector.js +82 -1
  126. package/scripts/hidden-entry-points.js +284 -0
  127. package/scripts/human-escalation.js +199 -1
  128. package/scripts/hybrid-feedback-context.js +152 -19
  129. package/scripts/intent-governed-execution.js +602 -0
  130. package/scripts/intervention-policy.js +123 -20
  131. package/scripts/jit-harness-compose.js +628 -0
  132. package/scripts/jsonl-watcher.js +10 -0
  133. package/scripts/lesson-embedding-index.js +95 -12
  134. package/scripts/lesson-retrieval.js +105 -19
  135. package/scripts/local-model-profile.js +19 -2
  136. package/scripts/mailer/resend-mailer.js +1 -1
  137. package/scripts/matryoshka-embedding.js +235 -0
  138. package/scripts/mcp-oauth.js +42 -4
  139. package/scripts/mcp-session-handles.js +1016 -0
  140. package/scripts/mcp-wiring-doctor.js +314 -0
  141. package/scripts/memory-firewall.js +115 -2
  142. package/scripts/memory-scope-readiness.js +299 -0
  143. package/scripts/memory-vs-rag-route.js +161 -0
  144. package/scripts/model-tier-router.js +148 -21
  145. package/scripts/nvidia-specdecode-al-doctor.js +536 -0
  146. package/scripts/openui-catalog-compose-honesty.js +593 -0
  147. package/scripts/operational-integrity.js +19 -1
  148. package/scripts/override-audit.js +213 -0
  149. package/scripts/package-manager-honesty-doctor.js +458 -0
  150. package/scripts/pr-manager.js +63 -1
  151. package/scripts/prove-herdr-adapter.js +52 -0
  152. package/scripts/prove-memory-pyramid-and-symbolic-canvas.js +95 -0
  153. package/scripts/prove-workos.js +73 -0
  154. package/scripts/provider-attestation-conformance.js +192 -0
  155. package/scripts/provider-receipt-contract.js +136 -0
  156. package/scripts/qwen38-max-cost-optimizer.js +401 -0
  157. package/scripts/radware-threat-defense.js +280 -0
  158. package/scripts/rag-embedding-identity.js +221 -0
  159. package/scripts/rag-precision-guardrails.js +112 -2
  160. package/scripts/remote-feedback-capture.js +159 -0
  161. package/scripts/research-agent-harness.js +256 -0
  162. package/scripts/rsi-safety-hillclimb.js +200 -0
  163. package/scripts/rule-sprawl.js +188 -0
  164. package/scripts/schedule-manager.js +147 -0
  165. package/scripts/self-heal.js +8 -0
  166. package/scripts/session-lease.js +415 -0
  167. package/scripts/simatree-data-governance.js +347 -0
  168. package/scripts/slo-alert-engine.js +172 -7
  169. package/scripts/solver-parity.js +539 -0
  170. package/scripts/stealth-memory-injection-gate.js +333 -0
  171. package/scripts/switchyard-router.js +366 -0
  172. package/scripts/telemetry-analytics.js +84 -27
  173. package/scripts/temporal-decay-weighting.js +138 -0
  174. package/scripts/test-all.js +165 -0
  175. package/scripts/token-savings.js +42 -0
  176. package/scripts/token-shunt-honesty.js +502 -0
  177. package/scripts/tool-kpi-tracker.js +108 -5
  178. package/scripts/tool-registry.js +193 -5
  179. package/scripts/typesafe-typed-questions.js +813 -0
  180. package/scripts/universal-claim-evaluator.js +14 -2
  181. package/scripts/vector-store.js +279 -9
  182. package/scripts/workflow-notebook.js +391 -0
  183. package/scripts/workflow-sentinel.js +111 -12
  184. package/scripts/workos-production-guard.js +260 -0
  185. package/scripts/workspace-search-route.js +515 -0
  186. package/server.json +2 -2
  187. package/src/agent-identity-boundary.js +76 -0
  188. package/src/agent-retrieval-cache.js +155 -0
  189. package/src/alert-noise-ledger.js +502 -0
  190. package/src/api/server.js +724 -153
  191. package/src/git-fast-cache.js +220 -0
  192. package/src/git-wal-sync.js +156 -0
  193. package/src/hash-anchored-edit.js +82 -0
  194. package/src/hermes-platform-protocol.js +475 -0
  195. package/src/hermes-sync-plane.js +241 -0
  196. package/src/index.js +30 -1
  197. package/src/iso42001-compliance-guard.js +97 -0
  198. package/src/latency-budget.js +244 -0
  199. package/src/mcp-writeguard.js +316 -0
  200. package/src/miminions-adapter.js +106 -0
  201. package/src/pipeline-compass.js +104 -0
  202. package/src/ppl-alert-pipeline.js +284 -0
  203. package/src/rendezvous-router.js +90 -0
  204. package/src/security-questionnaire.js +195 -0
@@ -0,0 +1,80 @@
1
+ ---
2
+ name: cobble-hot-store-compare-not-clone
3
+ description: >
4
+ CobbleDB (Perplexity 2026-09) is a batch-read hot store, not a ThumbGate
5
+ clone. Steal the three-plane FORMAT (durable state / batched delivery /
6
+ query-time MultiGet + hedge + hot subset) onto existing lesson rails; never
7
+ vendor RocksDB, YTsaurus, Pillar, or Lorry. Slash: /cobble-hot-store-compare-not-clone.
8
+ ---
9
+
10
+ # CobbleDB — compare, do not clone
11
+
12
+ ## Goal
13
+
14
+ Produce fail-closed honesty for whom: ThumbGate agents writing feedback or
15
+ serving lessons — so processing never contends with PreToolUse reads, batch
16
+ lookups hedge slow sources, and only promoted/matchable records occupy the
17
+ hot path.
18
+
19
+ ## Constraints
20
+
21
+ | NEVER | ALWAYS |
22
+ | --- | --- |
23
+ | Clone CobbleDB / Pillar / Lorry / RocksDB / YTsaurus | Map planes onto existing lesson rails |
24
+ | Write processing output onto `hybrid-feedback-context` | Durable log → `feedback-to-memory` → retrieval |
25
+ | Sequential per-key hot reads of a batch | `batchGetPrepared` (partition + hedge) |
26
+ | Dump raw `feedback-log.jsonl` into retrieval | `promoted_matchable` (or `fresh_high_value`) subset |
27
+ | Overwrite embedding/chunk versions | Coexist representations |
28
+ | Dual-edit DIRTY lesson-graph PR #3650 | Leave graph layer alone |
29
+ | Quote Perplexity 5× / 20% as ours | Measure ThumbGate rails with `perf-budget-check` |
30
+ | Hero Continuity / net-new storage SKU | ECI: existing retrieval rails only |
31
+
32
+ HARD fail closed. REFUSE SKU clones.
33
+
34
+ ## Reference
35
+
36
+ - https://www.perplexity.ai/hub/blog/cobbledb
37
+ - `scripts/cobble-hot-store-split.js`
38
+ - `scripts/lesson-retrieval.js` · `scripts/feedback-to-memory.js` · `scripts/memory-vs-rag-route.js`
39
+ - `docs/agents/cobble-hot-store-split.md`
40
+ - `/high-roi-steal-and-finish` · `/eci-thumbgate-ip-wall`
41
+
42
+ ## Examples (show, don't tell)
43
+
44
+ Weak: Summarize CobbleDB and add a RocksDB cluster class.
45
+
46
+ Gold:
47
+
48
+ ```bash
49
+ $ npx thumbgate cobble-hot-store-split --json
50
+ ok: true
51
+ status: ready
52
+ $ node --test tests/cobble-hot-store-split.test.js
53
+ # processing → hot write → coupled_processing_hot_write deny
54
+ ```
55
+
56
+ ## Procedures
57
+
58
+ ```bash
59
+ npx thumbgate cobble-hot-store-split --json
60
+ npx thumbgate cobble-hot-store-split --map-only
61
+ npx thumbgate cobble-hot-store-split --trace=tests/fixtures/cobble-hot-store-split-coupled.json --json
62
+ npx thumbgate cobble-hot-store-split --keys=lesson-1,lesson-2 --json
63
+ npm run test:cobble-hot-store-split
64
+ ```
65
+
66
+ 1. Classify every write as `durable`, `delivery`, or `hot`.
67
+ 2. Deny processing → hot coupling.
68
+ 3. Require batched MultiGet (+ hedge) for ≥3 serving keys.
69
+ 4. Keep the hot subset to promoted/matchable records.
70
+ 5. Refuse `--clone-cobbledb`.
71
+
72
+ ## Rubric
73
+
74
+ - gold default (this repo) → `ok=true`, `status=ready`
75
+ - `--trace` coupled fixture → `ok=false`, `coupled_processing_hot_write`
76
+ - `--clone-cobbledb` → `ok=false`, `cobble_clone_refused`
77
+ - sequential ≥3-key hot read → `sequential_hot_batch`
78
+ - unbounded hot subset → `unbounded_hot_subset`
79
+ - doctor: `npm run test:cobble-hot-store-split` PASS
80
+ - evidence: command output in the same turn
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: colab-compute-honesty-not-clone
3
+ description: >
4
+ Google Colab /signup is a compute-unit storefront, not a ThumbGate GPU SKU.
5
+ Steal CU-pack honesty (subscribe≠receipt, CU≠dedicated GPU, 24h background
6
+ is Pro+). Never buy Pro/Pro+/PAYG from an agent session. Never clone
7
+ colab-cli. Slash: /colab-compute-honesty-not-clone.
8
+ ---
9
+
10
+ # Colab compute honesty — compare, do not clone
11
+
12
+ ## Goal
13
+
14
+ Fail-closed compute claims for whom: ThumbGate evals and fleet offload talk —
15
+ so "Colab Pro+ A100" cannot pass without a live Current-plan receipt.
16
+ Colab stays a neighbor notebook host, not a product.
17
+
18
+ ## Constraints
19
+
20
+ | NEVER | ALWAYS |
21
+ | --- | --- |
22
+ | Buy Colab Pro / Pro+ / Compute Units | `npx thumbgate colab-compute-honesty --json` |
23
+ | Claim Pro+ because Subscribe is on /signup | `--plan-proof` from a Current-plan receipt |
24
+ | colab-cli / ngrok SSH / zero-cost A100 | GitHub Actions remains the eval runner |
25
+ | Dual-edit unverified `google-colab-pro-runner` theater | Treat that skill as a claim to audit |
26
+
27
+ HARD fail closed. REFUSE SKU clones. Do NOT spend.
28
+
29
+ ## Reference
30
+
31
+ - https://colab.research.google.com/signup (live 2026-09-17, `iganapolsky@gmail.com`)
32
+ - PAYG $9.99/100 CU and $49.99/500 CU (buttons disabled on that account)
33
+ - Pro $9.99/mo and Pro+ $49.99/mo still showed Subscribe
34
+ - `scripts/colab-compute-honesty.js`
35
+
36
+ ## Examples (show, don't tell)
37
+
38
+ Weak: Subscribe to Pro+ and offload gate-eval to A100 via colab-cli.
39
+
40
+ Gold:
41
+
42
+ ```bash
43
+ $ npx thumbgate colab-compute-honesty --json --map-only
44
+ ok: true
45
+ $ npx thumbgate colab-compute-honesty --json --claim='Colab Pro+ A100 eval sweep'
46
+ ok: false # paid_feature_without_plan_proof
47
+ ```
48
+
49
+ ## Procedures
50
+
51
+ ```bash
52
+ npx thumbgate colab-compute-honesty --json --map-only
53
+ npx thumbgate colab-compute-honesty --json --claim='offload to Colab A100'
54
+ npx thumbgate colab-compute-honesty --json --clone-colab
55
+ npm run test:colab-compute-honesty
56
+ ```
57
+
58
+ 1. Open /signup signed in. Subscribe visible ⇒ not a receipt.
59
+ 2. Do not click Buy / Subscribe.
60
+ 3. Run the doctor on any Colab/GPU offload claim.
61
+ 4. Keep ThumbGate tests on GitHub Actions.
62
+
63
+ ## Rubric
64
+
65
+ - `--map-only` → `ok=true`
66
+ - Pro+/A100/24h without `--plan-proof` → fail
67
+ - live snapshot with Subscribe + `--plan-proof=proplus` → `subscribe_button_is_not_receipt`
68
+ - `--buy-pro` / `colab-cli` → fail
69
+ - doctor tests PASS
70
+ - evidence: `--json` in the same turn
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: cyberstrike-compare-not-clone
3
+ description: >
4
+ CyberStrikeAI (Ed1s0nZ) turns NL intent into governed cybersecurity actions
5
+ with HITL + RAG. Steal the FORMAT onto ThumbGate rails; never clone
6
+ CyberStrike, Eino, WebShell, or C2. Slash: /cyberstrike-compare-not-clone.
7
+ ---
8
+
9
+ # CyberStrikeAI — compare, do not clone
10
+
11
+ ## When
12
+ CyberStrikeAI, Ed1s0nZ, tom_doerr Eino agents, intent becomes governed execution,
13
+ evidence becomes operational memory, human oversight pentest agent.
14
+
15
+ ## Do
16
+ ```bash
17
+ npx thumbgate intent-governed-execution --intent="<what to do>" --json
18
+ npx thumbgate intent-governed-execution --map-only
19
+ ```
20
+
21
+ Map FORMAT onto existing rails:
22
+ - **classify** → intent-router + harness-selector
23
+ - **authorize** → session-lease / task-scope; offensive needs `THUMBGATE_ALLOW_OFFENSIVE=1`
24
+ - **gate** → PreToolUse / gates-engine / harness JSON
25
+ - **hitl** → admin-override / protectedApprovals (`--approved` only after a real human grant)
26
+ - **execute** → subagent-profiles + maxChars result governance
27
+ - **evidence** → capture-feedback → lessons → prevention rules
28
+
29
+ ## Never
30
+ - Clone/vendor CyberStrikeAI or CloudWeGo Eino into ThumbGate
31
+ - Ship WebShell / C2 / metasploit recipe packs
32
+ - Invent automation ROI percentages
33
+ - Run offensive tools without authorization grant + HITL
34
+
35
+ ## Source
36
+ https://github.com/Ed1s0nZ/CyberStrikeAI · https://x.com/tom_doerr/status/2094509419929174170 — FORMAT only; not affiliated.
@@ -0,0 +1,77 @@
1
+ ---
2
+ name: gitlab-sandbox-allowlist-not-trust
3
+ description: >
4
+ GitLab 2026-09 FORMAT steal: sandbox allowlists are hops, not trust
5
+ boundaries. Audit package-registry/proxy/HF destinations and trust-handoff
6
+ writes on existing ThumbGate egress rails. Never clone GitLab Duo.
7
+ Slash: /gitlab-sandbox-allowlist-not-trust.
8
+ ---
9
+
10
+ # GitLab sandbox allowlist ≠ trust
11
+
12
+ ## Goal
13
+
14
+ Produce fail-closed honesty for whom: ThumbGate agents treating
15
+ `deny-network-egress` / `agent-egress-policy` allowlists as sandbox
16
+ containment — so a permitted package proxy cannot silently become the
17
+ escape hop GitLab documented.
18
+
19
+ ## Constraints
20
+
21
+ | NEVER | ALWAYS |
22
+ | --- | --- |
23
+ | Clone GitLab Duo Agent Platform / execution sandbox SKU | Classify registry/proxy/HF hosts as `bridge` |
24
+ | Treat allowlisted `registry.npmjs.org` as trusted | Independent auth before credentials ride a hop |
25
+ | Auto-promote observed proxy traffic onto `allowHosts` | Put bridge hosts on `bridgeHosts` only |
26
+ | Claim hook/CI/MCP writes are sandbox-contained | Call them trust-handoff |
27
+ | Dual-edit untracked `scripts/gitlab-ai-sandbox-integration.js` | Use this doctor + existing egress policy |
28
+ | Hero Continuity / net-new governance SKU | Map onto PreToolUse + `agent-egress-policy` |
29
+
30
+ HARD fail closed. REFUSE SKU clones. ECI: maintenance of existing egress rails only.
31
+
32
+ ## Reference
33
+
34
+ - https://www.infoq.com/news/2026/09/gitlab-ai-sandbox-access/
35
+ - https://about.gitlab.com/blog/ai-agent-sandbox/
36
+ - `scripts/allowlist-bridge-honesty.js`
37
+ - `scripts/agent-egress-policy.js` (`STATIC_ALLOW_BRIDGE`, `ALLOWLIST_BRIDGE_CREDENTIAL`)
38
+ - `THREAT_MODEL.md` policy-vs-containment
39
+ - `/high-roi-steal-and-finish` · `/eci-thumbgate-ip-wall`
40
+
41
+ ## Examples (show, don't tell)
42
+
43
+ Weak: Summarize GitLab Duo and add a container sandbox class.
44
+
45
+ Gold:
46
+
47
+ ```bash
48
+ $ npx thumbgate@1.36.1 allowlist-bridge-honesty --json
49
+ allowlistIsTrustBoundary: false
50
+ $ node --test tests/allowlist-bridge-honesty.test.js
51
+ # Authorization to registry.npmjs.org → ALLOWLIST_BRIDGE_CREDENTIAL deny
52
+ ```
53
+
54
+ ## Procedures
55
+
56
+ ```bash
57
+ npx thumbgate@1.36.1 allowlist-bridge-honesty --json
58
+ npx thumbgate@1.36.1 allowlist-bridge-honesty --allow-hosts=registry.npmjs.org --treat-allowlist-as-trust --json
59
+ npx thumbgate@1.36.1 allowlist-bridge-honesty --write=.github/workflows/ci.yml --claimed-contained --json
60
+ npm run test:allowlist-bridge-honesty
61
+ ```
62
+
63
+ 1. Classify every allowlisted host (`bridge` vs `public` vs `ssrf_private`).
64
+ 2. Deny credentialed requests to bridge hops unless `independentAuth` is already granted.
65
+ 3. Keep observe→draft from promoting package proxies onto `allowHosts`.
66
+ 4. Label privileged-consumer writes as trust-handoff.
67
+ 5. Refuse `--clone-gitlab-duo`.
68
+
69
+ ## Rubric
70
+
71
+ - gold fixture (this repo default gate) → `ok=true`, `allowlistIsTrustBoundary=false`
72
+ - `--treat-allowlist-as-trust` with npm registry → `ok=false`
73
+ - `--clone-gitlab-duo` → `ok=false`
74
+ - observe draft of `registry.npmjs.org` → not in `allowHosts`
75
+ - Authorization to allowlisted npm → `ALLOWLIST_BRIDGE_CREDENTIAL`
76
+ - doctor: `npm run test:allowlist-bridge-honesty` PASS
77
+ - evidence: command output in the same turn
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: jit-harness-compare-not-clone
3
+ description: >
4
+ JIT-Agent (arXiv:2608.25593) is a harness-intelligence model, not a ThumbGate
5
+ clone. Steal the four-module FORMAT (memory/planning/action/capability) onto
6
+ existing rails; never train or download JIT-Agent. Slash: /jit-harness-compare-not-clone.
7
+ ---
8
+
9
+ # JIT-Agent — compare, do not clone
10
+
11
+ ## When
12
+ JIT-Agent, arxiv 2608.25593, Rohan Paul harness intelligence, Model-as-a-Harness,
13
+ just-in-time harness evolution, HarnessFactory, four-module agent harness.
14
+
15
+ ## Do
16
+ ```bash
17
+ npx thumbgate jit-harness-compose --task="<what the agent should do>" --json
18
+ npx thumbgate jit-harness-compose --map-only
19
+ ```
20
+
21
+ Map modules to existing rails:
22
+ - **memory** → lesson-retrieval / feedback / contextfs
23
+ - **planning** → `bin/agent-loop` Plan + GSD
24
+ - **action** → PreToolUse gates + `harness-selector` + `switchyard-router`
25
+ - **capability** → `subagent-profiles` + MCP allowlists + skills + model pool
26
+
27
+ ## Never
28
+ - Train, serve, or download JIT-Agent-27B / `huggingface.co/JIT-Agent`
29
+ - Clone `bingreeky/JIT` HarnessFactory into ThumbGate
30
+ - Emit free-form harness programs as a new SKU
31
+ - Claim ThumbGate is JIT-Agent
32
+
33
+ ## Source
34
+ https://arxiv.org/abs/2608.25593 · https://github.com/bingreeky/JIT — FORMAT only; not affiliated.
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: openui-catalog-compose-honesty
3
+ description: >
4
+ OpenUI FORMAT steal: catalog-compose-only, root-first streaming, repair-before-claim.
5
+ Audit agent-composed UI against an allowlisted component catalog; never clone OpenUI,
6
+ Thesys Gateway, or a generative-UI SKU. Slash: /openui-catalog-compose-honesty.
7
+ ---
8
+
9
+ # OpenUI Catalog-Compose Honesty
10
+
11
+ ## Goal
12
+ Keep agent-composed UI honest: only allowlisted components, root-first streams, repair before any ready/done claim. Steal OpenUI FORMAT — do not clone the product.
13
+
14
+ ## Constraints
15
+ - Never install `@openuidev/cli`, OpenUI Gateway, or Thesys Observability as ThumbGate
16
+ - Never invent components outside the catalog or `eval` / `new Function` generated UI
17
+ - Never claim UI/compose ready without `--repair --claim-ready` evidence
18
+ - Never dual-edit a sibling OpenUI/generative-UI WIP PR
19
+ - ECI: no net-new generative-UI SKU
20
+
21
+ ## Reference
22
+ - https://www.openui.com/ (source FORMAT)
23
+ - Gates: `require-catalog-compose-only`, `require-repair-before-compose-claim`
24
+ - Script: `scripts/openui-catalog-compose-honesty.js`
25
+ - Docs: `docs/agents/openui-catalog-compose-honesty.md`
26
+
27
+ ## Examples
28
+ ```bash
29
+ # Clean catalog stream → ready
30
+ npx thumbgate openui-catalog-compose-honesty \
31
+ --catalog=catalog.json \
32
+ --stream=compose.txt \
33
+ --repair --claim-ready --json
34
+
35
+ # Unknown component / missing root → fail
36
+ npx thumbgate openui-catalog-compose-honesty \
37
+ --catalog='{"components":["Stack"]}' \
38
+ --stream=$'header = Ghost()\n' \
39
+ --json
40
+ ```
41
+
42
+ Catalog:
43
+ ```json
44
+ { "components": ["Stack", "Card", "Table"] }
45
+ ```
46
+
47
+ Stream (root first):
48
+ ```
49
+ root = Stack([header, body])
50
+ header = Card()
51
+ body = Table([row])
52
+ ```
53
+
54
+ ## Procedures
55
+ 1. Check sibling WIP for OpenUI/generative-UI PRs — do not duplicate.
56
+ 2. Write or load a component catalog JSON.
57
+ 3. Run doctor with `--catalog` + `--stream` (+ `--repair`).
58
+ 4. Before any UI/compose done claim, re-run with `--claim-ready --strict`.
59
+ 5. Wire gates from `config/gate-templates.json` Agent Honesty pair.
60
+
61
+ ## Rubric
62
+ - ok=true when doctor status is `ready` with `repairClean=true` on the claimed stream
63
+ - ok=false on unknown components, missing root, arbitrary-code markers, or OpenUI SKU clone signals
64
+ - evidence: `--json` report in the same turn
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: token-shunt-honesty-not-clone
3
+ description: >
4
+ Steal Spotify Portal/shunt FORMAT: PreToolUse blocks untargeted Read above
5
+ 350 lines, bare cat of large files, and full-file dumps. Do NOT install
6
+ shunt@portal, buy Portal, or claim 90% savings from GitHub App 162279530.
7
+ Slash: /token-shunt-honesty-not-clone.
8
+ ---
9
+
10
+ # Token shunt FORMAT — intercept, don't clone Portal
11
+
12
+ ## Goal
13
+
14
+ Produce fail-closed bulk-read intercepts for whom: ThumbGate agents — so
15
+ untargeted Read/cat of large files never dump into the frontier context, and
16
+ Spotify Portal stays a compare-not-clone neighbor, not a SKU or cash rail.
17
+
18
+ ## Constraints
19
+
20
+ | NEVER | ALWAYS |
21
+ | --- | --- |
22
+ | Install `shunt@portal` / `@spotify/portal-cli` | `npx thumbgate token-shunt-honesty --json` |
23
+ | Buy Spotify Portal / Contact Sales as "make money" | Local slice (`offset`/`limit`, `cat \| grep`) |
24
+ | Claim 90% token savings from App 162279530 | Measure `--lines` + `--returned-lines` |
25
+ | Delegate architecture to Flash/Portal/AiKA | Frontier for reasoning; `local_slice` for boilerplate |
26
+ | Spam buy links via All-repositories write | ECI: no ThumbGate paid outreach through Portal |
27
+
28
+ ## Reference
29
+
30
+ - https://github.com/spotify/portal-ai-plugins (Apache-2.0 shunt plugin — we do not vendor it)
31
+ - GitHub App install 162279530 = catalog connector, not revenue
32
+ - Marketplace (free cite only): https://github.com/marketplace/actions/thumbgate-agent-governance
33
+
34
+ ```bash
35
+ npx thumbgate token-shunt-honesty --json --lines=800
36
+ npx thumbgate token-shunt-honesty --json --lines=800 --targeted
37
+ npx thumbgate token-shunt-honesty --json --clone-portal
38
+ ```
39
+
40
+ ## Examples (show, don't tell)
41
+
42
+ Weak: "Install Portal, we will save 90% and make money."
43
+
44
+ Gold:
45
+
46
+ ```bash
47
+ $ npx thumbgate token-shunt-honesty --json --lines=800
48
+ {"ok":false,"findings":[{"id":"untargeted_bulk_read"}]}
49
+ $ npx thumbgate token-shunt-honesty --json --lines=800 --targeted
50
+ {"ok":true}
51
+ ```
52
+
53
+ ## Procedures
54
+
55
+ 1. Block untargeted Read above 350 lines.
56
+ 2. Block bare `cat`/`head`/`tail`/`less`/`more` of large files; allow pipes to grep/rg.
57
+ 3. Block returning the whole file to the frontier model.
58
+ 4. Refuse Portal/AiKA/Flash for architecture/debug.
59
+ 5. Treat GitHub App all-repos write as a warn, not a payout.
60
+
61
+ ## Rubric
62
+
63
+ - `--lines=800` → `untargeted_bulk_read`
64
+ - `--targeted` → `ok=true`
65
+ - `--clone-portal` → `portal_clone_refused`
66
+ - doctor: `npm run test:token-shunt-honesty` PASS
67
+ - evidence: command output in the same turn
@@ -0,0 +1,82 @@
1
+ ---
2
+ name: typesafe-typed-questions-not-clone
3
+ description: >
4
+ TypeSafe (console.typesafe.ai/hook, Jev System One) is a calibrated decision
5
+ model, not a ThumbGate clone. Steal typed noul/choice/score + code-owned
6
+ route() + confidence-as-second-axis onto existing PreToolUse rails. Never
7
+ install typesafe-sdk, call api.typesafe.ai, clone Jev, or unpark the LLM
8
+ adjudicator (#3690/#3687). Slash: /typesafe-typed-questions-not-clone.
9
+ ---
10
+
11
+ # TypeSafe typed questions — compare, do not clone
12
+
13
+ ## Goal
14
+
15
+ Produce fail-closed typed-question composition for whom: ThumbGate PreToolUse
16
+ — so a tool-call state is scored with independent noul/choice/score questions
17
+ and **code** routes pass|review|block. TypeSafe/Jev stays a neighbor FORMAT,
18
+ not a SKU, not an LLM adjudicator.
19
+
20
+ ## Constraints
21
+
22
+ | NEVER | ALWAYS |
23
+ | --- | --- |
24
+ | Install `typesafe-sdk` / call `api.typesafe.ai` | `npx thumbgate typesafe-typed-questions --json` |
25
+ | Clone Jev / System One as the gate | Deterministic matchers answer the battery |
26
+ | Unpark LLM adjudicator (#3690/#3687) | Code owns `route()`; model does not emit the verdict |
27
+ | One free-form "should we allow this?" judge | Atomic noul per hazard + score for severity |
28
+ | Dual-edit untracked `llm-adjudicator` theater | Map onto existing `gate-check` rails |
29
+
30
+ HARD fail closed. REFUSE SKU clones. ECI: no net-new governance product.
31
+ Do NOT install `typesafe-sdk`. Do NOT call `api.typesafe.ai` from PreToolUse.
32
+
33
+ Complementary to trading `/typesafe-system-one-not-clone` (AGENT-651 claim gate). Do **not** dual-edit `IgorGanapolsky/trading` `scripts/typesafe_claim_gate.py`. This skill is ThumbGate PreToolUse only.
34
+
35
+ ## Reference
36
+
37
+ - https://console.typesafe.ai/hook (signed-in intro / Replay intro)
38
+ - https://docs.typesafe.ai/cookbooks/llm_guardrails.md
39
+ - https://docs.typesafe.ai/patterns/confidence-routing.md
40
+ - Playground "Support agent audit" (noul battery + choice + score over one state)
41
+ - `scripts/typesafe-typed-questions.js`
42
+ - `/high-roi-steal-and-finish` · `/eci-thumbgate-ip-wall`
43
+
44
+ ## Examples (show, don't tell)
45
+
46
+ Weak: Summarize Jev and `npm install typesafe-sdk` as the new PreToolUse hook.
47
+
48
+ Gold:
49
+
50
+ ```bash
51
+ $ npx thumbgate typesafe-typed-questions --json --map-only
52
+ codeOwnsRoute: true
53
+ $ npx thumbgate typesafe-typed-questions --json --tool-name=Bash --command='git push --force origin main'
54
+ {"route":"block","answers":{"destructive":{"noul":1,"source":"deterministic"}}}
55
+ $ node --test tests/typesafe-typed-questions.test.js
56
+ # --clone-jev / --use-typesafe-api / --llm-adjudicate → fail
57
+ ```
58
+
59
+ ## Procedures
60
+
61
+ ```bash
62
+ npx thumbgate typesafe-typed-questions --json --map-only
63
+ npx thumbgate typesafe-typed-questions --json --tool-name=Bash --command='git push --force origin main'
64
+ npx thumbgate typesafe-typed-questions --json --clone-jev
65
+ npm run test:typesafe-typed-questions
66
+ ```
67
+
68
+ 1. Put the PreToolUse payload in `state`.
69
+ 2. Ask independent typed questions (noul per hazard, choice for family, score for severity).
70
+ 3. Answer them with deterministic matchers — never Jev.
71
+ 4. `route()` in code: action threshold → block, review threshold → review, severity ≥ 2 promotes review to block.
72
+ 5. Refuse `--clone-jev`, `--use-typesafe-api`, `--llm-adjudicate`, and model-emitted verdicts.
73
+
74
+ ## Rubric
75
+
76
+ - empty / ordinary Read → `route=pass`, `ok=true`
77
+ - `git push --force` → `route=block`, `destructive.noul=1`
78
+ - `git add -A` → `route=review` (warn-level noul=0.55)
79
+ - `--clone-jev` / `--use-typesafe-api` / `--llm-adjudicate` → `ok=false`
80
+ - playground-shaped noul without a matcher → `unevaluated_question` (do not call Jev)
81
+ - doctor: `npm run test:typesafe-typed-questions` PASS
82
+ - evidence: command output in the same turn
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: zvec-grep-compare-not-clone
3
+ description: >
4
+ zg (zvec-grep) is a local-first search layer (ripgrep + BM25 + vector), not a
5
+ ThumbGate clone. Steal the four-route FORMAT onto existing rails; never install
6
+ @zvec/zvec-grep. Slash: /zvec-grep-compare-not-clone.
7
+ ---
8
+
9
+ # zvec-grep — compare, do not clone
10
+
11
+ ## When
12
+ Qwen zg, zvec-grep, MarkTechPost zvec, unify ripgrep BM25 vector, local-first search layer.
13
+
14
+ ## Do
15
+ ```bash
16
+ npx thumbgate workspace-search-route --query="<intent or symbol>" --json
17
+ npx thumbgate workspace-search-route --query="<symbol>" --rg --execute
18
+ ```
19
+
20
+ Map routes to existing rails (see `docs/agents/code-search.md`):
21
+ - `--rg` → ripgrep / Grep
22
+ - `--fts` → filesystem-search / BM25F
23
+ - `--vector` → LanceDB (local); remote needs `THUMBGATE_ALLOW_REMOTE_EMBED=1`
24
+ - `--hybrid` → pragmatic-hybrid-search RRF (default)
25
+ - `--graph` → Graphify AST graph
26
+
27
+ ## Never
28
+ - `npm install -g @zvec/zvec-grep` inside ThumbGate
29
+ - Claim ThumbGate is zg / zvec
30
+ - Dual-edit DIRTY lesson-graph PR #3650
31
+ - Silent remote embeddings
32
+
33
+ ## Source
34
+ https://github.com/zvec-ai/zvec-grep (Apache-2.0) — FORMAT only; not affiliated.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "thumbgate",
3
3
  "description": "One 👎 becomes a hard rule the agent cannot bypass. Captures thumbs-down feedback, distills it into PreToolUse Pre-Action Checks, enforced across every future Claude Code session.",
4
- "version": "1.35.0",
4
+ "version": "1.37.2",
5
5
  "author": {
6
6
  "name": "Igor Ganapolsky",
7
7
  "email": "ig5973700@gmail.com",
@@ -62,6 +62,7 @@ npx thumbgate init --agent claude-code
62
62
  - Codex Plugin: https://thumbgate.ai/codex-plugin
63
63
  - Free local CLI: 2 captures/day, 10 total captures, up to 3 active auto-promoted prevention rules, and local Pre-Action Checks after install (recall and lesson search are Pro-only)
64
64
  - Pro: $19/mo or $149/yr — personal enforcement proof, local dashboard, check debugger, DPO export, synced lessons/rules across machines, and review-ready exports
65
+ - Managed AI Agent Workflow Gate: one-time engagement covering one supported workflow — a 60-minute review, one configured local gate, its regression test, and written rollout/rollback proof within two business days. Current terms: https://thumbgate.ai/pricing
65
66
  - Enterprise: custom pricing, scoped after intake — shared hosted lesson database, org-wide dashboard, GCP/DFCX guardrails, VPC gating, and white-glove workflow hardening sprints
66
67
 
67
68
  ## Links
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.35.0",
3
+ "version": "1.37.2",
4
4
  "description": "ThumbGate — 👍👎 feedback that teaches your AI agent. Thumbs down a mistake, it never happens again.",
5
5
  "homepage": "https://thumbgate.ai",
6
6
  "transport": "stdio",
@@ -0,0 +1,95 @@
1
+ # Contributing to ThumbGate
2
+
3
+ Thank you for your interest in improving ThumbGate.
4
+
5
+ This project follows the [Contributor Covenant Code of Conduct](CODE_OF_CONDUCT.md).
6
+
7
+ ## How to Contribute
8
+
9
+ 1. Open an issue to discuss significant changes before writing code.
10
+ 2. Fork the repository and create a feature branch.
11
+ 3. Follow the existing two-space indentation and single-quote style.
12
+ 4. Add or update tests for any changed behavior.
13
+ 5. Run the relevant test suites (`npm test` and targeted tests) before opening a
14
+ pull request.
15
+ 6. Use [Conventional Commits](https://www.conventionalcommits.org/) for commit
16
+ messages.
17
+ 7. Reference the relevant issue in your PR description.
18
+
19
+ ## Contributor License Agreement / Developer Certificate of Origin
20
+
21
+ By contributing code, documentation, diagrams, or other materials to the
22
+ ThumbGate repository, you agree that:
23
+
24
+ - You have the right to submit the contribution.
25
+ - You grant ThumbGate and its maintainers a perpetual, worldwide, royalty-free,
26
+ irrevocable license to use, reproduce, modify, distribute, and sublicense your
27
+ contribution under the MIT License and any future dual-licensing arrangements
28
+ used by the project.
29
+ - Your contribution is your original work or you have obtained all necessary
30
+ rights and permissions from any third-party rights holders.
31
+ - You sign off each commit with `git commit -s`, certifying the
32
+ [Developer Certificate of Origin](https://developercertificate.org/):
33
+
34
+ ```text
35
+ Developer Certificate of Origin
36
+ Version 1.1
37
+
38
+ Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
39
+
40
+ Everyone is permitted to copy and distribute verbatim copies of this
41
+ license document, but changing it is not allowed.
42
+
43
+ Developer's Certificate of Origin 1.1
44
+
45
+ By making a contribution to this project, I certify that:
46
+
47
+ (a) The contribution was created in whole or in part by me and I
48
+ have the right to submit it under the open source license
49
+ indicated in the file; or
50
+
51
+ (b) The contribution is based upon previous work that, to the best
52
+ of my knowledge, is covered under an appropriate open source
53
+ license and I have the right under that license to submit that
54
+ work with modifications, whether created in whole or in part
55
+ by me, under the same open source license (unless I am
56
+ permitted to submit under a different license), as indicated
57
+ in the file; or
58
+
59
+ (c) The contribution was provided directly to me by some other
60
+ person who certified (a), (b) or (c) and I have not modified
61
+ it.
62
+
63
+ (d) I understand and agree that this project and the contribution
64
+ are public and that a record of the contribution (including all
65
+ personal information I submit with it, including my sign-off) is
66
+ maintained indefinitely and may be redistributed consistent with
67
+ this project or the open source license(s) involved.
68
+ ```
69
+
70
+ Pull requests without a Signed-off-by line may be rejected.
71
+
72
+ ## Compensation and Commercial Use
73
+
74
+ Contributions to the public repository are made on a volunteer basis unless a
75
+ separate consulting agreement is signed with ThumbGate. The project maintainers
76
+ may incorporate your contribution into both open-source and commercial hosted
77
+ offerings governed by separate terms.
78
+
79
+ ## Employment / Confidentiality Boundary
80
+
81
+ If you are subject to an employment agreement, non-disclosure agreement, or
82
+ invention-assignment obligation that may overlap with ThumbGate's domain (for
83
+ example, work in agentic AI, engineering acceleration, or AI governance), you
84
+ must certify that each contribution is entirely your own work, created on your
85
+ own time, without using any employer or third-party confidential information,
86
+ trade secrets, equipment, or facilities. See
87
+ `docs/legal/ECI_EMPLOYMENT_BOUNDARY_POLICY.md` for the project-wide policy.
88
+
89
+ Your Signed-off-by line implicitly certifies this boundary in addition to the
90
+ Developer Certificate of Origin.
91
+
92
+ ## Questions
93
+
94
+ Contact the maintainers via the issue tracker at:
95
+ https://github.com/IgorGanapolsky/ThumbGate/issues