thumbgate 1.34.3 → 1.37.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/cyberstrike-compare-not-clone/SKILL.md +36 -0
- package/.agents/skills/gitlab-sandbox-allowlist-not-trust/SKILL.md +77 -0
- package/.agents/skills/jit-harness-compare-not-clone/SKILL.md +34 -0
- package/.agents/skills/openui-catalog-compose-honesty/SKILL.md +64 -0
- package/.agents/skills/zvec-grep-compare-not-clone/SKILL.md +34 -0
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/llms.txt +1 -0
- package/.well-known/mcp/server-card.json +1 -1
- package/CONTRIBUTING.md +95 -0
- package/README.md +195 -632
- package/THIRD_PARTY_NOTICES.md +89 -0
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/forge/forge.yaml +3 -3
- package/adapters/future-agi/.mcp.json +8 -0
- package/adapters/future-agi/FUTURE_AGI.md +23 -0
- package/adapters/future-agi/config.toml +3 -0
- package/adapters/future-agi/future-agi-bridge.js +9 -0
- package/adapters/future-agi/opencode.json +8 -0
- package/adapters/herdr/herdr-plugin.toml +18 -0
- package/adapters/mcp/server-stdio.js +238 -25
- package/adapters/opencode/opencode.json +1 -1
- package/adapters/workos/WORKOS.md +52 -0
- package/bin/cli.js +373 -5
- package/bin/futureagi-bridge +9 -0
- package/config/gate-templates.json +653 -4
- package/config/gates/actor-critic-audit.json +34 -0
- package/config/gates/default.json +21 -2
- package/config/gates/five-walls-governance.json +34 -0
- package/config/gates/future-agi-guardrails.json +34 -0
- package/config/gates/radware-threat-defense-2026.json +61 -0
- package/config/gates/simatree-data-governance.json +33 -0
- package/config/mcp-allowlists.json +4 -0
- package/config/merge-quality-checks.json +10 -1
- package/config/model-candidates.json +382 -24
- package/config/model-tiers.json +18 -0
- package/config/post-deploy-marketing-pages.json +10 -0
- package/config/progressive/01-wire-only.json +11 -0
- package/config/progressive/02-dashboard-empty-ok.json +10 -0
- package/config/progressive/03-one-lesson.json +10 -0
- package/config/progressive/04-warn-fires.json +11 -0
- package/config/progressive/05-strict-optional.json +11 -0
- package/config/progressive/README.md +15 -0
- package/config/schemas/broker-execution-receipt.schema.json +139 -0
- package/config/schemas/provider-execution-attestation-v1.schema.json +58 -0
- package/conformance/provider-attestation/vectors.json +320 -0
- package/docs/specs/provider-execution-attestation-v1.md +69 -0
- package/openapi/openapi.yaml +15 -0
- package/package.json +401 -147
- package/public/about.html +2 -2
- package/public/ai-malpractice-prevention.html +7 -7
- package/public/blog/a-10-dollar-vps-is-not-a-computer.html +143 -0
- package/public/blog/a-receipt-is-not-world-state.html +388 -0
- package/public/blog/git-at-agent-scale.html +374 -0
- package/public/blog/no-llm-in-the-gate.html +133 -0
- package/public/blog.html +80 -0
- package/public/case-studies.html +16 -1
- package/public/compare.html +28 -0
- package/public/diagnostic.html +216 -7
- package/public/docs/connectors.html +39 -0
- package/public/federal.html +2 -2
- package/public/founders.html +639 -0
- package/public/index.html +87 -9
- package/public/install.html +8 -8
- package/public/learn.html +39 -0
- package/public/numbers.html +2 -2
- package/public/peter.html +310 -0
- package/public/platform-partners.html +119 -0
- package/public/pricing.html +24 -3
- package/public/privacy.html +117 -0
- package/public/pro.html +17 -0
- package/public/support.html +62 -0
- package/public/terms.html +130 -0
- package/public/third-party-notices.html +95 -0
- package/public/yt.html +351 -0
- package/scripts/action-receipts.js +133 -3
- package/scripts/adaptive-governance-arena.js +349 -0
- package/scripts/admin-override.js +205 -0
- package/scripts/agent-action-inventory.js +869 -0
- package/scripts/agent-audit-trace.js +42 -2
- package/scripts/agent-egress-policy.js +1117 -0
- package/scripts/agent-memory-lifecycle.js +141 -2
- package/scripts/agent-operations-planner.js +441 -1
- package/scripts/agent-readiness.js +68 -0
- package/scripts/agent-security-central.js +647 -0
- package/scripts/allowlist-bridge-honesty.js +417 -0
- package/scripts/async-job-runner.js +102 -11
- package/scripts/audit-trail.js +212 -0
- package/scripts/auto-promote-gates.js +178 -27
- package/scripts/billing.js +1 -1
- package/scripts/broker-execution-receipts.js +719 -0
- package/scripts/budget-aware-gates-proof.js +423 -0
- package/scripts/claude-feedback-sync.js +29 -3
- package/scripts/claw-harness-production.js +237 -0
- package/scripts/cli-progress.js +111 -0
- package/scripts/cli-schema.js +163 -1
- package/scripts/codex-runbook-flywheel.js +318 -0
- package/scripts/context-footprint.js +186 -0
- package/scripts/contextfs.js +143 -61
- package/scripts/dashboard-limits.js +27 -0
- package/scripts/dashboard.js +279 -9
- package/scripts/deepseek-v4-runtime-guardrails.js +72 -6
- package/scripts/docker-sandbox-planner.js +18 -0
- package/scripts/double-blind-eval-protocol.js +252 -0
- package/scripts/edotenv-rl-gateway.js +259 -0
- package/scripts/ensure-production-search-corpus.js +162 -0
- package/scripts/eval-holdout.js +311 -0
- package/scripts/feedback-aggregate.js +21 -2
- package/scripts/feedback-loop.js +87 -5
- package/scripts/feedback-quality.js +9 -0
- package/scripts/file-ledger-lock.js +4 -1
- package/scripts/financial-control-plane.js +41 -1
- package/scripts/find-dormant-requires.js +118 -0
- package/scripts/fs-utils.js +84 -8
- package/scripts/gate-stats.js +2 -2
- package/scripts/gates-engine.js +859 -58
- package/scripts/generate-case-study-outreach.js +24 -15
- package/scripts/git-at-scale.js +628 -0
- package/scripts/governance-conflict-audit.js +1650 -0
- package/scripts/governance-difficulty-curriculum.js +328 -0
- package/scripts/graphrag-retrieval.js +275 -0
- package/scripts/gurobi-optimizer.js +324 -0
- package/scripts/gurobi_optimizer.py +485 -0
- package/scripts/harness-selector.js +82 -1
- package/scripts/hidden-entry-points.js +284 -0
- package/scripts/human-escalation.js +199 -1
- package/scripts/hybrid-feedback-context.js +152 -19
- package/scripts/intent-governed-execution.js +602 -0
- package/scripts/intervention-policy.js +123 -20
- package/scripts/jit-harness-compose.js +628 -0
- package/scripts/jsonl-watcher.js +10 -0
- package/scripts/lesson-embedding-index.js +95 -12
- package/scripts/lesson-retrieval.js +105 -19
- package/scripts/local-model-profile.js +19 -2
- package/scripts/mailer/resend-mailer.js +1 -1
- package/scripts/matryoshka-embedding.js +235 -0
- package/scripts/mcp-oauth.js +42 -4
- package/scripts/mcp-session-handles.js +1016 -0
- package/scripts/mcp-wiring-doctor.js +314 -0
- package/scripts/memory-firewall.js +115 -2
- package/scripts/memory-scope-readiness.js +299 -0
- package/scripts/memory-vs-rag-route.js +161 -0
- package/scripts/model-tier-router.js +148 -21
- package/scripts/nvidia-specdecode-al-doctor.js +536 -0
- package/scripts/openui-catalog-compose-honesty.js +593 -0
- package/scripts/operational-integrity.js +19 -1
- package/scripts/override-audit.js +213 -0
- package/scripts/package-manager-honesty-doctor.js +458 -0
- package/scripts/pr-manager.js +63 -1
- package/scripts/prove-herdr-adapter.js +52 -0
- package/scripts/prove-memory-pyramid-and-symbolic-canvas.js +95 -0
- package/scripts/prove-workos.js +73 -0
- package/scripts/provider-attestation-conformance.js +192 -0
- package/scripts/provider-receipt-contract.js +136 -0
- package/scripts/qwen38-max-cost-optimizer.js +401 -0
- package/scripts/radware-threat-defense.js +280 -0
- package/scripts/rag-embedding-identity.js +221 -0
- package/scripts/rag-precision-guardrails.js +112 -2
- package/scripts/remote-feedback-capture.js +159 -0
- package/scripts/research-agent-harness.js +256 -0
- package/scripts/rsi-safety-hillclimb.js +200 -0
- package/scripts/rule-sprawl.js +188 -0
- package/scripts/schedule-manager.js +147 -0
- package/scripts/self-heal.js +8 -0
- package/scripts/session-lease.js +415 -0
- package/scripts/simatree-data-governance.js +347 -0
- package/scripts/slo-alert-engine.js +172 -7
- package/scripts/solver-parity.js +539 -0
- package/scripts/stealth-memory-injection-gate.js +333 -0
- package/scripts/switchyard-router.js +366 -0
- package/scripts/telemetry-analytics.js +84 -27
- package/scripts/temporal-decay-weighting.js +138 -0
- package/scripts/test-all.js +165 -0
- package/scripts/token-savings.js +42 -0
- package/scripts/tool-kpi-tracker.js +108 -5
- package/scripts/tool-registry.js +193 -5
- package/scripts/universal-claim-evaluator.js +14 -2
- package/scripts/vector-store.js +279 -9
- package/scripts/workflow-notebook.js +391 -0
- package/scripts/workflow-sentinel.js +111 -12
- package/scripts/workos-production-guard.js +260 -0
- package/scripts/workspace-search-route.js +515 -0
- package/server.json +2 -2
- package/src/agent-identity-boundary.js +76 -0
- package/src/agent-retrieval-cache.js +155 -0
- package/src/alert-noise-ledger.js +502 -0
- package/src/api/server.js +802 -185
- package/src/git-fast-cache.js +220 -0
- package/src/git-wal-sync.js +156 -0
- package/src/hash-anchored-edit.js +82 -0
- package/src/hermes-platform-protocol.js +475 -0
- package/src/hermes-sync-plane.js +241 -0
- package/src/index.js +30 -1
- package/src/iso42001-compliance-guard.js +97 -0
- package/src/latency-budget.js +244 -0
- package/src/mcp-writeguard.js +316 -0
- package/src/miminions-adapter.js +106 -0
- package/src/pipeline-compass.js +104 -0
- package/src/ppl-alert-pipeline.js +284 -0
- package/src/rendezvous-router.js +90 -0
- package/src/security-questionnaire.js +195 -0
package/scripts/mcp-oauth.js
CHANGED
|
@@ -29,7 +29,17 @@ const crypto = require('crypto');
|
|
|
29
29
|
const AUTH_CODE_TTL_MS = 60 * 1000; // 1 minute
|
|
30
30
|
const ACCESS_TOKEN_TTL_MS = 60 * 60 * 1000; // 1 hour
|
|
31
31
|
const DEFAULT_SCOPE = 'mcp:read mcp:write';
|
|
32
|
-
|
|
32
|
+
// Scope hierarchy (WorkOS / MCP Auth alignment): broader grants imply narrower ones.
|
|
33
|
+
// mcp:write covers side-effecting tools AND read-only tools (write ⇒ read).
|
|
34
|
+
// mcp:gates is for gate-evaluation tools; mcp:write implies mcp:gates.
|
|
35
|
+
// mcp:feedback is for feedback-capture tools; mcp:write implies mcp:feedback.
|
|
36
|
+
const SUPPORTED_SCOPES = Object.freeze(['mcp:read', 'mcp:write', 'mcp:gates', 'mcp:feedback']);
|
|
37
|
+
const SCOPE_IMPLIES = Object.freeze({
|
|
38
|
+
'mcp:write': Object.freeze(['mcp:read', 'mcp:gates', 'mcp:feedback', 'mcp:write']),
|
|
39
|
+
'mcp:gates': Object.freeze(['mcp:gates', 'mcp:read']),
|
|
40
|
+
'mcp:feedback': Object.freeze(['mcp:feedback', 'mcp:read']),
|
|
41
|
+
'mcp:read': Object.freeze(['mcp:read']),
|
|
42
|
+
});
|
|
33
43
|
|
|
34
44
|
// Upper bounds on the in-memory store. The registration and authorization
|
|
35
45
|
// endpoints are reachable pre-auth, so without a cap a malicious caller could
|
|
@@ -97,7 +107,7 @@ function buildProtectedResourceMetadata(baseUrl) {
|
|
|
97
107
|
resource: `${base}/mcp`,
|
|
98
108
|
authorization_servers: [base],
|
|
99
109
|
bearer_methods_supported: ['header'],
|
|
100
|
-
scopes_supported: [
|
|
110
|
+
scopes_supported: [...SUPPORTED_SCOPES],
|
|
101
111
|
resource_documentation: `${base}/docs/connectors`,
|
|
102
112
|
};
|
|
103
113
|
}
|
|
@@ -109,7 +119,7 @@ function buildAuthServerMetadata(baseUrl) {
|
|
|
109
119
|
authorization_endpoint: `${base}/oauth/authorize`,
|
|
110
120
|
token_endpoint: `${base}/oauth/token`,
|
|
111
121
|
registration_endpoint: `${base}/oauth/register`,
|
|
112
|
-
scopes_supported: [
|
|
122
|
+
scopes_supported: [...SUPPORTED_SCOPES],
|
|
113
123
|
response_types_supported: ['code'],
|
|
114
124
|
grant_types_supported: ['authorization_code'],
|
|
115
125
|
code_challenge_methods_supported: ['S256'],
|
|
@@ -176,10 +186,36 @@ function normalizeScopes(scope = DEFAULT_SCOPE, allowedScopes = SUPPORTED_SCOPES
|
|
|
176
186
|
};
|
|
177
187
|
}
|
|
178
188
|
|
|
189
|
+
/**
|
|
190
|
+
* True when the session's granted scopes cover `requiredScope`, including
|
|
191
|
+
* hierarchy (e.g. a token with only `mcp:write` may call read-only tools).
|
|
192
|
+
* Mirrors enterprise MCP Auth patterns (WorkOS AuthKit maps OAuth scopes to
|
|
193
|
+
* tool roles with least privilege + natural implication).
|
|
194
|
+
*/
|
|
179
195
|
function scopeAllows(session, requiredScope) {
|
|
180
196
|
if (!session || !requiredScope) return false;
|
|
181
197
|
const normalized = normalizeScopes(session.scope, SUPPORTED_SCOPES);
|
|
182
|
-
|
|
198
|
+
if (!normalized.valid) return false;
|
|
199
|
+
const required = String(requiredScope);
|
|
200
|
+
for (const granted of normalized.scopes) {
|
|
201
|
+
const implies = SCOPE_IMPLIES[granted] || [granted];
|
|
202
|
+
if (implies.includes(required)) return true;
|
|
203
|
+
}
|
|
204
|
+
return false;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Map an MCP tool annotation to the minimum OAuth scope required.
|
|
209
|
+
* - readOnlyHint → mcp:read
|
|
210
|
+
* - openWorld/side-effect tools → mcp:write
|
|
211
|
+
* - gate-eval tools can opt into mcp:gates via annotations.thumbgateScope
|
|
212
|
+
* - feedback tools can opt into mcp:feedback via annotations.thumbgateScope
|
|
213
|
+
*/
|
|
214
|
+
function requiredScopeForTool(tool = {}) {
|
|
215
|
+
const explicit = tool?.annotations?.thumbgateScope;
|
|
216
|
+
if (explicit && SUPPORTED_SCOPES.includes(explicit)) return explicit;
|
|
217
|
+
if (tool?.annotations?.readOnlyHint === true) return 'mcp:read';
|
|
218
|
+
return 'mcp:write';
|
|
183
219
|
}
|
|
184
220
|
|
|
185
221
|
// ---------------------------------------------------------------------------
|
|
@@ -320,8 +356,10 @@ module.exports = {
|
|
|
320
356
|
ACCESS_TOKEN_TTL_MS,
|
|
321
357
|
DEFAULT_SCOPE,
|
|
322
358
|
SUPPORTED_SCOPES,
|
|
359
|
+
SCOPE_IMPLIES,
|
|
323
360
|
normalizeScopes,
|
|
324
361
|
scopeAllows,
|
|
362
|
+
requiredScopeForTool,
|
|
325
363
|
MAX_CLIENTS,
|
|
326
364
|
MAX_CODES,
|
|
327
365
|
MAX_TOKENS,
|