thumbgate 1.28.0 → 1.28.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.
- package/.claude-plugin/plugin.json +2 -1
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +96 -122
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/mcp/server-stdio.js +54 -34
- package/adapters/opencode/opencode.json +1 -1
- package/bin/cli.js +100 -77
- package/config/gates/default.json +2 -2
- package/config/github-about.json +2 -5
- package/config/mcp-allowlists.json +5 -0
- package/config/post-deploy-marketing-pages.json +1 -1
- package/hooks/hooks.json +38 -0
- package/package.json +19 -8
- package/public/chatgpt-app.html +2 -2
- package/public/codex-enterprise.html +1 -1
- package/public/codex-plugin.html +1 -1
- package/public/diagnostic.html +23 -1
- package/public/guide.html +1 -1
- package/public/index.html +172 -201
- package/public/numbers.html +2 -2
- package/public/partner-intake.html +198 -0
- package/public/pricing.html +51 -14
- package/scripts/auto-wire-hooks.js +58 -2
- package/scripts/billing.js +815 -137
- package/scripts/checkout-attribution-reference.js +85 -0
- package/scripts/claude-feedback-sync.js +23 -6
- package/scripts/cli-feedback.js +20 -10
- package/scripts/feedback-history-distiller.js +385 -0
- package/scripts/feedback-loop.js +290 -1
- package/scripts/feedback-quality.js +25 -26
- package/scripts/feedback-sanitizer.js +151 -3
- package/scripts/gates-engine.js +128 -49
- package/scripts/hosted-config.js +9 -2
- package/scripts/mailer/resend-mailer.js +11 -5
- package/scripts/secret-scanner.js +363 -68
- package/scripts/self-protection.js +21 -36
- package/src/api/server.js +121 -12
- package/public/assets/brand/github-social-preview.png +0 -0
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thumbgate",
|
|
3
|
-
"version": "1.28.
|
|
4
|
-
"description": "ThumbGate
|
|
3
|
+
"version": "1.28.2",
|
|
4
|
+
"description": "ThumbGate Pre-Action Checks derive rules from repeated failures, flag risky tool calls, hard-block detected secret leaks, and block matches in strict mode.",
|
|
5
5
|
"homepage": "https://thumbgate.ai",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
"scripts/bayes-optimal-gate.js",
|
|
47
47
|
"scripts/belief-update.js",
|
|
48
48
|
"scripts/billing.js",
|
|
49
|
+
"scripts/checkout-attribution-reference.js",
|
|
49
50
|
"scripts/bot-detection.js",
|
|
50
51
|
"scripts/build-metadata.js",
|
|
51
52
|
"scripts/classifier-routing.js",
|
|
@@ -89,6 +90,7 @@
|
|
|
89
90
|
"scripts/export-hf-dataset.js",
|
|
90
91
|
"scripts/failure-diagnostics.js",
|
|
91
92
|
"scripts/feedback-aggregate.js",
|
|
93
|
+
"scripts/feedback-history-distiller.js",
|
|
92
94
|
"scripts/feedback-attribution.js",
|
|
93
95
|
"scripts/feedback-loop.js",
|
|
94
96
|
"scripts/feedback-paths.js",
|
|
@@ -235,6 +237,7 @@
|
|
|
235
237
|
"scripts/workspace-evolver.js",
|
|
236
238
|
"scripts/xmemory-lite.js",
|
|
237
239
|
".claude-plugin/plugin.json",
|
|
240
|
+
"hooks/hooks.json",
|
|
238
241
|
".claude/commands/",
|
|
239
242
|
"commands/",
|
|
240
243
|
".well-known/",
|
|
@@ -280,9 +283,11 @@
|
|
|
280
283
|
"public/learn.html",
|
|
281
284
|
"public/lessons.html",
|
|
282
285
|
"public/numbers.html",
|
|
286
|
+
"public/partner-intake.html",
|
|
283
287
|
"public/pricing.html",
|
|
284
288
|
"public/pro.html",
|
|
285
289
|
"public/assets/brand/",
|
|
290
|
+
"!public/assets/brand/github-social-preview.png",
|
|
286
291
|
"public/assets/claude-thumbgate-statusbar.svg",
|
|
287
292
|
"public/assets/codex-thumbgate-statusbar-test.svg",
|
|
288
293
|
"public/assets/legal-intake-control-flow.svg",
|
|
@@ -383,7 +388,7 @@
|
|
|
383
388
|
"social:prospect:bluesky": "node scripts/social-bluesky-prospecting.js",
|
|
384
389
|
"social:prospect:bluesky:dry": "node scripts/social-bluesky-prospecting.js --dry-run",
|
|
385
390
|
"social:reply-publish:bluesky:dry": "node scripts/social-reply-monitor-bluesky.js --publish-approved --dry-run",
|
|
386
|
-
"test": "npm run test:python && npm run test:schema && npm run test:loop && npm run test:dpo && npm run test:kto && npm run test:api && npm run test:proof && npm run test:e2e && npm run test:rlaif && npm run test:attribution && npm run test:quality && npm run test:intelligence && npm run test:training-export && npm run test:deployment && npm run test:operational-integrity && npm run test:workflow && npm run test:billing && npm run test:billing-setup && npm run test:cli && npm run test:watcher && npm run test:autoresearch && npm run test:ops && npm run test:session-analyzer && npm run test:tessl && npm run test:gates && npm run test:evoskill && npm run test:gates-hardening && npm run test:workers && npm run test:social-analytics && npm run test:memalign && npm run test:xmemory-lite && npm run test:filesystem-search && npm run test:platform-limits && npm run test:post-video && npm run test:post-everywhere-instagram && npm run test:post-everywhere-channels && npm run test:obsidian-export && npm run test:lesson-db && npm run test:lesson-rotation && npm run test:memory-dedup && npm run test:feedback-quality && npm run test:sync-version && npm run test:release-window && npm run test:check-congruence && npm run test:tool-registry && npm run test:repeat-metric && npm run test:noop-detect && npm run test:action-receipts && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:memory-scope-readiness && npm run test:belief-update && npm run test:hosted-config && npm run test:operational-summary && npm run test:operational-dashboard && npm run test:operator-artifacts && npm run test:operator-key-auth && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:mcp-tool-annotations && npm run test:mcp-oauth && npm run test:mcp-oauth-flow && npm run test:plan-gate && npm run test:ai-component-inventory && npm run test:pulse && npm run test:semantic-layer && npm run test:data-pipeline && npm run test:optimize-context && npm run test:principle-extractor && npm run test:analytics-window && npm run test:funnel-analytics && npm run test:experiment-tracker && npm run test:build-metadata && npm run test:context-engine && npm run test:hf-papers && npm run test:marketing-experiment && npm run test:seo-gsd && npm run test:verify-run && npm run test:entitlement && npm run test:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:imperative-detector && npm run test:audit-pr-bot-contamination && npm run test:stripe-bootstrap-saas-catalog && npm run test:postinstall && npm run test:funnel-invariants && npm run test:cli-telemetry && npm run test:pro-parity && npm run test:model-tier-router && npm run test:computer-use-firewall && npm run test:skill-exporter && npm run test:statusline && npm run test:statusline-cache-aggregate && npm run test:public-repo-hygiene && npm run test:no-internal-orchestration-leaks && npm run test:evolution && npm run test:org-dashboard && npm run test:multi-hop-recall && npm run test:synthetic-dpo && npm run test:thumbgate-skill && npm run test:learn-hub && npm run test:feedback-fallback && npm run test:metaclaw && npm run test:server-lock && npm run test:control-tower && npm run test:pii-scanner && npm run test:data-governance && npm run test:lesson-inference && npm run test:semantic-dedup && npm run test:fs-utils && npm run test:cli-schema && npm run test:explore && npm run test:lesson-reranker && npm run test:lesson-retrieval && npm run test:lesson-semantic-retrieval && npm run test:cross-encoder && npm run test:reflector-agent && npm run test:feedback-session && npm run test:feedback-history-distiller && npm run test:hallucination-detector && npm run test:history-distiller && npm run test:predictive-insights && npm run test:predictive-credible-range && npm run test:prove-predictive-insights && npm run test:statusbar-cli && npm run test:generate-instagram-card && npm run test:instagram-thumbgate-post && npm run test:publish-instagram-thumbgate && npm run test:lesson-synthesis && npm run test:lesson-canonical && npm run test:background-governance && npm run test:memory-migration && npm run test:prompt-dlp && npm run test:ephemeral-store && npm run test:agent-security && npm run test:skill-progressive && npm run test:per-step-scoring && npm run test:weekly-auto-post && npm run test:social-post-hourly && npm run test:social-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && npm run test:budget && npm run test:quick-start && npm run test:utm && npm run test:product-feedback && npm run test:feedback-root-consolidator && npm run test:engagement-audit && npm run test:install-growth-automation && npm run test:publish-thumbgate-launch && npm run test:reconcile-thumbgate-campaign && npm run test:reddit-publisher && npm run test:schedule-thumbgate-campaign && npm run test:social-reply-monitor && npm run test:sync-launch-assets && npm run test:ai-search-visibility && npm run test:perplexity && npm run test:xss-checkout-escape && npm run test:security-scanner && npm run test:llm-client && npm run test:managed-lesson-agent && npm run test:self-distill && npm run test:meta-agent && npm run test:harness-selector && npm run test:thumbgate-bench && npm run test:seo-guides && npm run test:enforcement-loop && npm run test:cli-agent-experience && npm run test:bot-detection && npm run test:checkout-archived-product-guard && npm run test:postgres-guard && npm run test:checkout-bot-guard && npm run test:checkout-pro-confirmation-gate && npm run test:pricing-page-telemetry && npm run test:session-health && npm run test:session-episodes && npm run test:spec-gate && npm run test:decision-trace && npm run test:dashboard-insights && npm run test:telemetry-tracked-link-slug && npm run test:prompt-eval && npm run test:gate-coherence && npm run test:gate-eval && npm run test:high-roi && npm run test:public-static-assets && npm run test:token-savings && npm run test:numbers-page && npm run test:workflow-gate-checkpoint && npm run test:lesson-export-import && npm run test:landing-page-claims && npm run test:competitive-positioning-marketing && npm run test:medium-weekly && npm run test:dashboard-deeplink-e2e && npm run test:public-package-parity && npm run test:token-savings-dashboard && npm run test:cursor-wiring && npm run test:pretooluse-injection && npm run test:recent-corrective-context && npm run test:durability-step && npm run test:mailer && npm run test:brand-assets && npm run test:enforcement-teeth && npm run test:bayes-optimal-gate && npm run test:swarm-coordinator && npm run test:session-report && npm run test:agent-reasoning-traces && npm run test:judge-reward && npm run test:llm-behavior-monitor && npm run test:prompting-os && npm run test:single-use-credential-gate && npm run test:structured-prompt-driven && npm run test:require-evidence-gate && npm run test:rule-validator && npm run test:bluesky-atproto && npm run test:social-reply-monitor-bluesky && npm run test:bluesky-delete-replies && npm run test:architect-kit-memory-bridge && npm run test:sonar-review-hotspots && npm run test:actionable-remediations && npm run test:gemini-embedding-policy && npm run test:agent-design-governance && npm run test:public-core-boundary && npm run test:hook-stop-verify-deploy && npm run test:hook-stop-anti-claim && npm run test:plausible-server-events && npm run test:activation-tracker && npm run test:activation-onboarding && npm run test:unified-revenue-rollup && npm run test:conversion-rate-stats && npm run test:external-customer-audit && npm run test:telemetry-export && npm run test:stripe-checkout-diagnostic && npm run test:stripe-business-identity-probe && npm run test:revenue-observability-doctor && npm run test:public-bundle-ratchet && npm run test:pack-runtime-integrity && npm run test:hook-self-protection && npm run test:self-protect-enforcement && npm run test:stripe-payment-link-update && npm run test:ci-cd-hygiene-audit && npm run test:verify-marketing-pages-deployed && npm run test:install-email-capture && npm run test:install-shim && npm run test:hook-runtime-subcommands && npm run test:implementation-notes && npm run test:daily-block-cap && npm run test:free-to-paid-conversion-units && npm run test:metrics-real-endpoint && npm run test:cli-trial-and-help && npm run test:cost-cli && npm run test:silent-failure-cluster && npm run test:proof:truth && node --test tests/adaptive-reliability.test.js && npm run test:mcp-oauth-reviewer && npm run test:dfcx-gate && npm run test:dfcx-gate-server && npm run test:vertex-scorer && npm run test:dashboard-chat && npm run test:gitar-integration && npm run test:secret-redaction && npm run test:discoverable-skills && npm run test:discoverable-skill-skills && npm run test:sync-telemetry && npm run test:leak-scanner && npm run test:team-sync && npm run test:eval-rag && npm run test:async-eval-observability && npm run test:letta-adapter && npm run test:policy-engine-adapter && npm run test:tool-contract-validator && npm run test:check-update && npm run test:hermes-gate && npm run test:memory-provider-enforcement-bridge && npm run test:publisher-credential-guards && npm run test:reddit-browser-notification-watch && npm run test:payment-rails && npm run test:cursor-marketplace-doctor && npm run test:okara-money-promo-automation",
|
|
391
|
+
"test": "npm run test:python && npm run test:schema && npm run test:loop && npm run test:dpo && npm run test:kto && npm run test:api && npm run test:proof && npm run test:e2e && npm run test:rlaif && npm run test:attribution && npm run test:quality && npm run test:intelligence && npm run test:training-export && npm run test:deployment && npm run test:operational-integrity && npm run test:workflow && npm run test:billing && npm run test:billing-setup && npm run test:cli && npm run test:watcher && npm run test:autoresearch && npm run test:ops && npm run test:session-analyzer && npm run test:tessl && npm run test:gates && npm run test:evoskill && npm run test:gates-hardening && npm run test:workers && npm run test:social-analytics && npm run test:memalign && npm run test:xmemory-lite && npm run test:filesystem-search && npm run test:platform-limits && npm run test:post-video && npm run test:post-everywhere-instagram && npm run test:post-everywhere-channels && npm run test:obsidian-export && npm run test:lesson-db && npm run test:lesson-rotation && npm run test:memory-dedup && npm run test:feedback-quality && npm run test:sync-version && npm run test:release-window && npm run test:check-congruence && npm run test:tool-registry && npm run test:repeat-metric && npm run test:noop-detect && npm run test:action-receipts && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:memory-scope-readiness && npm run test:belief-update && npm run test:hosted-config && npm run test:operational-summary && npm run test:operational-dashboard && npm run test:operator-artifacts && npm run test:operator-key-auth && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:mcp-tool-annotations && npm run test:mcp-oauth && npm run test:mcp-oauth-flow && npm run test:plan-gate && npm run test:ai-component-inventory && npm run test:pulse && npm run test:semantic-layer && npm run test:data-pipeline && npm run test:optimize-context && npm run test:principle-extractor && npm run test:analytics-window && npm run test:funnel-analytics && npm run test:experiment-tracker && npm run test:build-metadata && npm run test:context-engine && npm run test:hf-papers && npm run test:marketing-experiment && npm run test:seo-gsd && npm run test:verify-run && npm run test:entitlement && npm run test:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:imperative-detector && npm run test:audit-pr-bot-contamination && npm run test:stripe-bootstrap-saas-catalog && npm run test:postinstall && npm run test:funnel-invariants && npm run test:cli-telemetry && npm run test:pro-parity && npm run test:model-tier-router && npm run test:computer-use-firewall && npm run test:skill-exporter && npm run test:statusline && npm run test:statusline-cache-aggregate && npm run test:public-repo-hygiene && npm run test:no-internal-orchestration-leaks && npm run test:evolution && npm run test:org-dashboard && npm run test:multi-hop-recall && npm run test:synthetic-dpo && npm run test:thumbgate-skill && npm run test:learn-hub && npm run test:feedback-fallback && npm run test:metaclaw && npm run test:server-lock && npm run test:control-tower && npm run test:pii-scanner && npm run test:data-governance && npm run test:lesson-inference && npm run test:semantic-dedup && npm run test:fs-utils && npm run test:cli-schema && npm run test:explore && npm run test:lesson-reranker && npm run test:lesson-retrieval && npm run test:lesson-semantic-retrieval && npm run test:cross-encoder && npm run test:reflector-agent && npm run test:feedback-session && npm run test:feedback-history-distiller && npm run test:hallucination-detector && npm run test:history-distiller && npm run test:predictive-insights && npm run test:predictive-credible-range && npm run test:prove-predictive-insights && npm run test:statusbar-cli && npm run test:generate-instagram-card && npm run test:instagram-thumbgate-post && npm run test:publish-instagram-thumbgate && npm run test:lesson-synthesis && npm run test:lesson-canonical && npm run test:background-governance && npm run test:memory-migration && npm run test:prompt-dlp && npm run test:ephemeral-store && npm run test:agent-security && npm run test:skill-progressive && npm run test:per-step-scoring && npm run test:weekly-auto-post && npm run test:social-post-hourly && npm run test:social-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && npm run test:budget && npm run test:quick-start && npm run test:utm && npm run test:product-feedback && npm run test:feedback-root-consolidator && npm run test:engagement-audit && npm run test:install-growth-automation && npm run test:publish-thumbgate-launch && npm run test:reconcile-thumbgate-campaign && npm run test:reddit-publisher && npm run test:schedule-thumbgate-campaign && npm run test:social-reply-monitor && npm run test:sync-launch-assets && npm run test:ai-search-visibility && npm run test:perplexity && npm run test:xss-checkout-escape && npm run test:security-scanner && npm run test:llm-client && npm run test:managed-lesson-agent && npm run test:self-distill && npm run test:meta-agent && npm run test:harness-selector && npm run test:thumbgate-bench && npm run test:seo-guides && npm run test:enforcement-loop && npm run test:cli-agent-experience && npm run test:bot-detection && npm run test:checkout-archived-product-guard && npm run test:postgres-guard && npm run test:checkout-bot-guard && npm run test:checkout-pro-confirmation-gate && npm run test:pricing-page-telemetry && npm run test:session-health && npm run test:session-episodes && npm run test:spec-gate && npm run test:decision-trace && npm run test:dashboard-insights && npm run test:telemetry-tracked-link-slug && npm run test:prompt-eval && npm run test:gate-coherence && npm run test:gate-eval && npm run test:high-roi && npm run test:public-static-assets && npm run test:token-savings && npm run test:numbers-page && npm run test:workflow-gate-checkpoint && npm run test:lesson-export-import && npm run test:landing-page-claims && npm run test:competitive-positioning-marketing && npm run test:medium-weekly && npm run test:dashboard-deeplink-e2e && npm run test:public-package-parity && npm run test:token-savings-dashboard && npm run test:cursor-wiring && npm run test:pretooluse-injection && npm run test:recent-corrective-context && npm run test:durability-step && npm run test:mailer && npm run test:brand-assets && npm run test:enforcement-teeth && npm run test:bayes-optimal-gate && npm run test:swarm-coordinator && npm run test:session-report && npm run test:agent-reasoning-traces && npm run test:judge-reward && npm run test:llm-behavior-monitor && npm run test:prompting-os && npm run test:single-use-credential-gate && npm run test:structured-prompt-driven && npm run test:require-evidence-gate && npm run test:rule-validator && npm run test:bluesky-atproto && npm run test:social-reply-monitor-bluesky && npm run test:bluesky-delete-replies && npm run test:architect-kit-memory-bridge && npm run test:sonar-review-hotspots && npm run test:actionable-remediations && npm run test:gemini-embedding-policy && npm run test:agent-design-governance && npm run test:public-core-boundary && npm run test:hook-stop-verify-deploy && npm run test:hook-stop-anti-claim && npm run test:plausible-server-events && npm run test:activation-tracker && npm run test:activation-onboarding && npm run test:unified-revenue-rollup && npm run test:conversion-rate-stats && npm run test:external-customer-audit && npm run test:telemetry-export && npm run test:stripe-checkout-diagnostic && npm run test:stripe-business-identity-probe && npm run test:revenue-observability-doctor && npm run test:public-bundle-ratchet && npm run test:pack-runtime-integrity && npm run test:hook-self-protection && npm run test:self-protect-enforcement && npm run test:never-bypass-branch-protection && npm run test:stripe-payment-link-update && npm run test:ci-cd-hygiene-audit && npm run test:verify-marketing-pages-deployed && npm run test:install-email-capture && npm run test:install-shim && npm run test:hook-runtime-subcommands && npm run test:implementation-notes && npm run test:daily-block-cap && npm run test:free-to-paid-conversion-units && npm run test:metrics-real-endpoint && npm run test:cli-trial-and-help && npm run test:cost-cli && npm run test:silent-failure-cluster && npm run test:proof:truth && node --test tests/adaptive-reliability.test.js && npm run test:mcp-oauth-reviewer && npm run test:dfcx-gate && npm run test:dfcx-gate-server && npm run test:vertex-scorer && npm run test:dashboard-chat && npm run test:gitar-integration && npm run test:secret-redaction && npm run test:discoverable-skills && npm run test:discoverable-skill-skills && npm run test:sync-telemetry && npm run test:leak-scanner && npm run test:team-sync && npm run test:eval-rag && npm run test:async-eval-observability && npm run test:letta-adapter && npm run test:policy-engine-adapter && npm run test:tool-contract-validator && npm run test:check-update && npm run test:hermes-gate && npm run test:memory-provider-enforcement-bridge && npm run test:publisher-credential-guards && npm run test:reddit-browser-notification-watch && npm run test:payment-rails && npm run test:service-checkout-price-integrity && npm run test:cursor-marketplace-doctor && npm run test:plugin-hooks-manifest && npm run test:okara-money-promo-automation",
|
|
387
392
|
"test:python": "python3 -m pytest tests/*.py",
|
|
388
393
|
"test:check-update": "node --test tests/check-update.test.js",
|
|
389
394
|
"test:hook-stop-verify-deploy": "node --test tests/hook-stop-verify-deploy.test.js",
|
|
@@ -444,7 +449,7 @@
|
|
|
444
449
|
"test:memory-dedup": "node --test tests/memory-dedup.test.js",
|
|
445
450
|
"test:lesson-db": "node --test tests/lesson-db.test.js",
|
|
446
451
|
"test:lesson-rotation": "node --test tests/lesson-rotation.test.js",
|
|
447
|
-
"test:feedback-quality": "node --test tests/feedback-quality.test.js",
|
|
452
|
+
"test:feedback-quality": "node --test tests/feedback-quality.test.js tests/feedback-event-idempotency.test.js",
|
|
448
453
|
"test:sync-version": "node --test tests/sync-version.test.js",
|
|
449
454
|
"test:release-window": "node --test tests/release-window.test.js",
|
|
450
455
|
"test:team-sync": "node --test tests/team-sync.test.js",
|
|
@@ -512,11 +517,11 @@
|
|
|
512
517
|
"test:training-export": "node --test tests/training-export.test.js tests/databricks-export.test.js",
|
|
513
518
|
"test:deployment": "node --test tests/deployment.test.js tests/deploy-policy.test.js tests/publish-decision.test.js tests/changeset-check.test.js tests/release-notes.test.js tests/sonarcloud-workflow.test.js tests/package-boundary.test.js tests/public-package-boundary.test.js",
|
|
514
519
|
"test:operational-integrity": "node --test tests/operational-integrity.test.js tests/sync-branch-protection.test.js",
|
|
515
|
-
"test:workflow": "node --test tests/parallel-workflow.test.js tests/workflow-contract.test.js tests/positioning-contract.test.js tests/docs-claim-hygiene.test.js tests/thumbgate-scope.test.js tests/workflow-runs.test.js tests/workflow-sprint-intake.test.js tests/revenue-pack-utils.test.js tests/sales-pipeline.test.js tests/github-outreach.test.js tests/enterprise-story.test.js tests/guide-conversion-path.test.js tests/buyer-intent-revenue-assist.test.js",
|
|
520
|
+
"test:workflow": "node --test tests/parallel-workflow.test.js tests/workflow-contract.test.js tests/positioning-contract.test.js tests/docs-claim-hygiene.test.js tests/thumbgate-scope.test.js tests/workflow-runs.test.js tests/workflow-sprint-intake.test.js tests/revenue-pack-utils.test.js tests/apollo-acquisition.test.js tests/sales-pipeline.test.js tests/github-outreach.test.js tests/enterprise-story.test.js tests/guide-conversion-path.test.js tests/buyer-intent-revenue-assist.test.js",
|
|
516
521
|
"test:sales-pipeline": "node --test tests/sales-pipeline.test.js",
|
|
517
|
-
"test:billing": "node --test tests/billing.test.js tests/stripe-sync-product-images.test.js",
|
|
522
|
+
"test:billing": "node --test tests/billing.test.js tests/stripe-sync-product-images.test.js tests/checkout-attribution-reference.test.js",
|
|
518
523
|
"test:billing-setup": "node --test tests/billing-setup-redaction.test.js",
|
|
519
|
-
"test:cli": "node --test tests/analytics-report.test.js tests/agent-design-governance.test.js tests/codex-self-heal.test.js tests/creator-campaigns.test.js tests/cli.test.js tests/codex-bridge-script.test.js tests/dependabot-changeset.test.js tests/dispatch-brief.test.js tests/feedback-normalize.test.js tests/install-mcp.test.js tests/install-scope-docs.test.js tests/pr-manager.test.js tests/pro-local-dashboard.test.js tests/published-cli.test.js tests/revenue-status.test.js tests/stripe-live-status.test.js tests/creator-dev-and-prune.test.js",
|
|
524
|
+
"test:cli": "node --test tests/analytics-report.test.js tests/agent-design-governance.test.js tests/codex-self-heal.test.js tests/creator-campaigns.test.js tests/cli.test.js tests/codex-bridge-script.test.js tests/dependabot-changeset.test.js tests/dispatch-brief.test.js tests/feedback-normalize.test.js tests/feedback-lesson-sanitization.test.js tests/install-mcp.test.js tests/install-scope-docs.test.js tests/pr-manager.test.js tests/pro-local-dashboard.test.js tests/published-cli.test.js tests/revenue-status.test.js tests/stripe-live-status.test.js tests/creator-dev-and-prune.test.js",
|
|
520
525
|
"test:evolution": "node --test tests/workspace-evolver.test.js",
|
|
521
526
|
"test:watcher": "node --test tests/jsonl-watcher.test.js",
|
|
522
527
|
"test:autoresearch": "node --test tests/autoresearch.test.js",
|
|
@@ -637,13 +642,16 @@
|
|
|
637
642
|
"test:product-feedback": "node --test tests/product-feedback.test.js",
|
|
638
643
|
"test:feedback-root-consolidator": "node --test tests/feedback-root-consolidator.test.js",
|
|
639
644
|
"social:publish:launch": "node scripts/social-analytics/publish-thumbgate-launch.js",
|
|
645
|
+
"social:publish:latest-release-article": "node scripts/social-analytics/publish-latest-release-article.js",
|
|
646
|
+
"social:publish:latest-release-fallbacks": "node scripts/social-analytics/publish-latest-release-fallbacks.js",
|
|
647
|
+
"social:verify:latest-release": "node scripts/social-analytics/verify-latest-release-posts.js",
|
|
640
648
|
"social:schedule:campaign": "node scripts/social-analytics/schedule-thumbgate-campaign.js",
|
|
641
649
|
"social:install:growth": "node scripts/social-analytics/install-growth-automation.js",
|
|
642
650
|
"social:reconcile:campaign": "node scripts/social-analytics/reconcile-thumbgate-campaign.js",
|
|
643
651
|
"social:sync:launch-assets": "node scripts/social-analytics/sync-launch-assets.js",
|
|
644
652
|
"social:engagement:audit": "node scripts/social-analytics/engagement-audit.js",
|
|
645
653
|
"test:install-growth-automation": "node --test tests/install-growth-automation.test.js",
|
|
646
|
-
"test:publish-thumbgate-launch": "node --test tests/publish-thumbgate-launch.test.js",
|
|
654
|
+
"test:publish-thumbgate-launch": "node --test tests/publish-thumbgate-launch.test.js tests/publish-latest-release-article.test.js tests/latest-release-campaign-ops.test.js",
|
|
647
655
|
"test:reconcile-thumbgate-campaign": "node --test tests/reconcile-thumbgate-campaign.test.js",
|
|
648
656
|
"test:schedule-thumbgate-campaign": "node --test tests/schedule-thumbgate-campaign.test.js",
|
|
649
657
|
"test:social-reply-monitor": "node --test tests/social-reply-monitor.test.js tests/reddit-monitor-launchd.test.js",
|
|
@@ -762,12 +770,15 @@
|
|
|
762
770
|
"eval:observability": "node scripts/async-eval-observability.js",
|
|
763
771
|
"test:memory-provider-enforcement-bridge": "node --test tests/memory-provider-enforcement-bridge.test.js",
|
|
764
772
|
"test:payment-rails": "node --test tests/payment-rails.test.js",
|
|
773
|
+
"test:service-checkout-price-integrity": "node --test tests/service-checkout-price-integrity.test.js",
|
|
765
774
|
"test:publisher-credential-guards": "node --test tests/publisher-credential-guards.test.js",
|
|
766
775
|
"test:reddit-browser-notification-watch": "node --test tests/reddit-browser-notification-watch.test.js",
|
|
767
776
|
"cursor:marketplace:doctor": "node scripts/cursor-marketplace-doctor.js",
|
|
768
777
|
"cursor:marketplace:doctor:json": "node scripts/cursor-marketplace-doctor.js --json",
|
|
769
778
|
"test:cursor-marketplace-doctor": "node --test tests/cursor-marketplace-doctor.test.js",
|
|
779
|
+
"test:plugin-hooks-manifest": "node --test tests/plugin-hooks-manifest.test.js",
|
|
770
780
|
"test:hook-self-protection": "node --test tests/hook-self-protection.test.js",
|
|
781
|
+
"test:never-bypass-branch-protection": "node --test tests/never-bypass-branch-protection.test.js",
|
|
771
782
|
"test:self-protect-enforcement": "node --test tests/self-protect-enforcement.test.js",
|
|
772
783
|
"test:pack-runtime-integrity": "node --test tests/pack-runtime-integrity.test.js",
|
|
773
784
|
"test:entitlement": "node --test tests/entitlement.test.js",
|
package/public/chatgpt-app.html
CHANGED
|
@@ -230,7 +230,7 @@
|
|
|
230
230
|
</div>
|
|
231
231
|
<div class="screen">
|
|
232
232
|
<div class="message">Before I run this migration, check whether this repeats a rejected deploy pattern.</div>
|
|
233
|
-
<div class="message"><strong>ThumbGate:</strong> Require evidence first: test output, rollback path, and the exact affected tables. Then install the local gate so future risky actions are flagged and logged before execution (and hard-blocked for
|
|
233
|
+
<div class="message"><strong>ThumbGate:</strong> Require evidence first: test output, rollback path, and the exact affected tables. Then install the local gate so future risky actions are flagged and logged before execution (and hard-blocked for secret exfiltration and guardrail-tampering by default, or under strict mode).</div>
|
|
234
234
|
<code class="code">thumbs down: agent claimed the release was published before checking npm and CI</code>
|
|
235
235
|
<code class="code">npx thumbgate init --agent codex</code>
|
|
236
236
|
</div>
|
|
@@ -239,7 +239,7 @@
|
|
|
239
239
|
|
|
240
240
|
<section aria-labelledby="what-ships">
|
|
241
241
|
<h2 class="section-title" id="what-ships">What ships today</h2>
|
|
242
|
-
<p class="section-copy">This is the ChatGPT-facing distribution page. It keeps the claim precise: ChatGPT is the discovery, advice, checkpointing, and typed-feedback surface. The enforcement — flag and log by default, hard-block for
|
|
242
|
+
<p class="section-copy">This is the ChatGPT-facing distribution page. It keeps the claim precise: ChatGPT is the discovery, advice, checkpointing, and typed-feedback surface. The enforcement — flag and log by default, hard-block for secret exfiltration and guardrail-tampering by default, or every rule under strict mode — still runs in the local agent or CI lane.</p>
|
|
243
243
|
<div class="grid">
|
|
244
244
|
<article class="card">
|
|
245
245
|
<h3>Live GPT entrypoint</h3>
|
|
@@ -78,7 +78,7 @@
|
|
|
78
78
|
</div>
|
|
79
79
|
<div class="card">
|
|
80
80
|
<h3>Promote repeat failures to PreToolUse gates</h3>
|
|
81
|
-
<p>When the same agent mistake shows up twice, ThumbGate distills it into a prevention rule and flags the next attempt at the tool-call boundary — hard-blocking it for
|
|
81
|
+
<p>When the same agent mistake shows up twice, ThumbGate distills it into a prevention rule and flags the next attempt at the tool-call boundary — hard-blocking it for secret exfiltration and guardrail-tampering by default, or every rule under strict enforcement — with the rule that fired in the agent's reasoning trace, so Codex chooses a safer plan instead of being told to "be more careful."</p>
|
|
82
82
|
</div>
|
|
83
83
|
<div class="card">
|
|
84
84
|
<h3>Audit trail enterprise procurement requires</h3>
|
package/public/codex-plugin.html
CHANGED
|
@@ -256,7 +256,7 @@ $ npx thumbgate feedback-self-test
|
|
|
256
256
|
</div>
|
|
257
257
|
<div class="tile">
|
|
258
258
|
<h3>Checks before action</h3>
|
|
259
|
-
<p>Pre-Action Checks evaluate commands, file edits, publishes, merges, and other high-risk actions before execution. Bad repeats are flagged and logged before they burn time or tokens — and hard-blocked for
|
|
259
|
+
<p>Pre-Action Checks evaluate commands, file edits, publishes, merges, and other high-risk actions before execution. Bad repeats are flagged and logged before they burn time or tokens — and hard-blocked for secret exfiltration and guardrail-tampering by default (destructive deletes, force-push, and supply-chain warn by default) or when strict enforcement is enabled.</p>
|
|
260
260
|
</div>
|
|
261
261
|
</section>
|
|
262
262
|
|
package/public/diagnostic.html
CHANGED
|
@@ -252,7 +252,7 @@ footer { padding: 32px 0 44px; color: var(--muted); }
|
|
|
252
252
|
<option>We need an independent proof checklist first</option>
|
|
253
253
|
</select>
|
|
254
254
|
<button type="submit" data-revenue-cta data-cta-id="diagnostic_page_submit" data-cta-placement="intake">Submit for diagnostic scope</button>
|
|
255
|
-
<p class="hint">Ready to pay now? Use the $499 diagnostic checkout above. If the workflow needs fit review first, submit it here and we will route you to the diagnostic or sprint only when the scope is real.</p>
|
|
255
|
+
<p class="hint" data-diagnostic-payment-hint>Ready to pay now? Use the $499 diagnostic checkout above. If the workflow needs fit review first, submit it here and we will route you to the diagnostic or sprint only when the scope is real.</p>
|
|
256
256
|
</form>
|
|
257
257
|
</div>
|
|
258
258
|
<section>
|
|
@@ -295,6 +295,28 @@ footer { padding: 32px 0 44px; color: var(--muted); }
|
|
|
295
295
|
<script>
|
|
296
296
|
(function () {
|
|
297
297
|
const search = new URLSearchParams(window.location.search);
|
|
298
|
+
const paidCta = document.querySelector('[data-cta-id="diagnostic_hero_paid"]');
|
|
299
|
+
const inboundSource = search.get('utm_source') || search.get('source');
|
|
300
|
+
const isAiventyxTraffic = String(inboundSource || '').trim().toLowerCase() === 'aiventyx';
|
|
301
|
+
if (paidCta && isAiventyxTraffic) {
|
|
302
|
+
paidCta.remove();
|
|
303
|
+
const paymentHint = document.querySelector('[data-diagnostic-payment-hint]');
|
|
304
|
+
if (paymentHint) {
|
|
305
|
+
paymentHint.textContent = 'Submit the workflow here. Aiventyx will collect payment on its checkout once the scope is accepted.';
|
|
306
|
+
}
|
|
307
|
+
} else if (paidCta) {
|
|
308
|
+
const href = new URL(paidCta.getAttribute('href'), window.location.origin);
|
|
309
|
+
const passthrough = /^(utm_(source|medium|campaign|content|term)|source|acquisition_id|visitor_id|session_id|visitor_session_id|install_id|trace_id|creator|community|post_id|comment_id|campaign_variant|offer_code|referrer_host)$/i;
|
|
310
|
+
for (const [key, value] of search.entries()) {
|
|
311
|
+
if (!passthrough.test(key) || !value.trim()) continue;
|
|
312
|
+
href.searchParams.set(key, value.trim());
|
|
313
|
+
}
|
|
314
|
+
if (inboundSource && inboundSource.trim()) {
|
|
315
|
+
href.searchParams.set('utm_source', inboundSource.trim());
|
|
316
|
+
}
|
|
317
|
+
paidCta.setAttribute('href', `${href.pathname}${href.search}${href.hash}`);
|
|
318
|
+
}
|
|
319
|
+
|
|
298
320
|
const form = document.querySelector('[data-diagnostic-intake-form]');
|
|
299
321
|
if (form) {
|
|
300
322
|
for (const [key, value] of search.entries()) {
|
package/public/guide.html
CHANGED
|
@@ -223,7 +223,7 @@
|
|
|
223
223
|
<p>This happens because <strong>prompt rules are suggestions</strong>. The agent can read them, forget them, or override them. There is no enforcement at the tool-call level.</p>
|
|
224
224
|
|
|
225
225
|
<h2>The Fix: Pre-Action Checks</h2>
|
|
226
|
-
<p>ThumbGate adds an enforcement layer between your agent and its tools. When the agent tries to execute a tool call, a <code>PreToolUse</code> hook fires <em>before</em> the action runs. The hook checks the call against known failure patterns. If it matches a check, the action is flagged and logged — and hard-blocked for
|
|
226
|
+
<p>ThumbGate adds an enforcement layer between your agent and its tools. When the agent tries to execute a tool call, a <code>PreToolUse</code> hook fires <em>before</em> the action runs. The hook checks the call against known failure patterns. If it matches a check, the action is flagged and logged — and hard-blocked for secret exfiltration and guardrail-tampering by default (destructive deletes, force-push, and supply-chain warn by default) or when strict enforcement (<code>THUMBGATE_STRICT_ENFORCEMENT=1</code>) is on.</p>
|
|
227
227
|
|
|
228
228
|
<div class="card">
|
|
229
229
|
<h3>Before ThumbGate</h3>
|