thumbgate 1.3.0 → 1.4.0

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 (146) hide show
  1. package/.claude-plugin/marketplace.json +32 -13
  2. package/.claude-plugin/plugin.json +15 -2
  3. package/.well-known/llms.txt +60 -0
  4. package/.well-known/mcp/server-card.json +1 -1
  5. package/README.md +109 -20
  6. package/adapters/README.md +1 -1
  7. package/adapters/chatgpt/openapi.yaml +168 -0
  8. package/adapters/claude/.mcp.json +2 -2
  9. package/adapters/codex/config.toml +2 -2
  10. package/adapters/mcp/server-stdio.js +84 -1
  11. package/adapters/opencode/opencode.json +1 -1
  12. package/bin/cli.js +200 -13
  13. package/bin/postinstall.js +8 -2
  14. package/config/budget.json +18 -0
  15. package/config/gates/code-edit.json +61 -0
  16. package/config/gates/db-write.json +61 -0
  17. package/config/gates/default.json +154 -3
  18. package/config/gates/deploy.json +61 -0
  19. package/config/github-about.json +2 -1
  20. package/config/merge-quality-checks.json +23 -0
  21. package/openapi/openapi.yaml +168 -0
  22. package/package.json +42 -10
  23. package/plugins/claude-codex-bridge/.claude-plugin/plugin.json +1 -1
  24. package/plugins/claude-codex-bridge/.mcp.json +1 -1
  25. package/plugins/claude-codex-bridge/scripts/codex-bridge.js +1 -3
  26. package/plugins/codex-profile/.codex-plugin/plugin.json +1 -1
  27. package/plugins/codex-profile/.mcp.json +1 -1
  28. package/plugins/codex-profile/INSTALL.md +27 -4
  29. package/plugins/codex-profile/README.md +33 -9
  30. package/plugins/cursor-marketplace/.cursor-plugin/plugin.json +1 -1
  31. package/plugins/opencode-profile/INSTALL.md +1 -1
  32. package/public/blog.html +73 -0
  33. package/public/compare/mem0.html +189 -0
  34. package/public/compare/speclock.html +180 -0
  35. package/public/compare.html +10 -2
  36. package/public/guide.html +2 -2
  37. package/public/guides/claude-code-prevent-repeated-mistakes.html +161 -0
  38. package/public/guides/codex-cli-guardrails.html +158 -0
  39. package/public/guides/cursor-prevent-repeated-mistakes.html +161 -0
  40. package/public/guides/pre-action-gates.html +162 -0
  41. package/public/guides/stop-repeated-ai-agent-mistakes.html +159 -0
  42. package/public/index.html +136 -50
  43. package/public/lessons.html +33 -24
  44. package/public/llm-context.md +140 -0
  45. package/public/pro.html +24 -22
  46. package/scripts/__pycache__/train_from_feedback.cpython-312.pyc +0 -0
  47. package/scripts/access-anomaly-detector.js +1 -1
  48. package/scripts/adk-consolidator.js +1 -5
  49. package/scripts/agent-security-hardening.js +4 -6
  50. package/scripts/agentic-data-pipeline.js +1 -3
  51. package/scripts/async-job-runner.js +1 -5
  52. package/scripts/audit-trail.js +1 -5
  53. package/scripts/background-agent-governance.js +2 -10
  54. package/scripts/billing.js +2 -16
  55. package/scripts/budget-enforcer.js +173 -0
  56. package/scripts/build-codex-plugin.js +152 -0
  57. package/scripts/check-congruence.js +132 -14
  58. package/scripts/commercial-offer.js +5 -7
  59. package/scripts/content-engine/linkedin-content-generator.js +154 -0
  60. package/scripts/content-engine/output/linkedin-memento-validation.md +17 -0
  61. package/scripts/content-engine/output/linkedin-posts-2026-04-09.md +175 -0
  62. package/scripts/content-engine/reddit-thread-finder.js +154 -0
  63. package/scripts/context-engine.js +21 -6
  64. package/scripts/contextfs.js +1 -21
  65. package/scripts/dashboard.js +20 -0
  66. package/scripts/decision-journal.js +341 -0
  67. package/scripts/delegation-runtime.js +1 -5
  68. package/scripts/distribution-surfaces.js +26 -0
  69. package/scripts/document-intake.js +927 -0
  70. package/scripts/ephemeral-agent-store.js +1 -8
  71. package/scripts/evolution-state.js +1 -5
  72. package/scripts/experiment-tracker.js +1 -5
  73. package/scripts/export-databricks-bundle.js +1 -5
  74. package/scripts/export-hf-dataset.js +1 -5
  75. package/scripts/export-training.js +1 -5
  76. package/scripts/feedback-attribution.js +1 -16
  77. package/scripts/feedback-history-distiller.js +1 -16
  78. package/scripts/feedback-loop.js +1 -5
  79. package/scripts/feedback-root-consolidator.js +2 -21
  80. package/scripts/feedback-session.js +49 -0
  81. package/scripts/feedback-to-rules.js +188 -28
  82. package/scripts/filesystem-search.js +1 -9
  83. package/scripts/fs-utils.js +104 -0
  84. package/scripts/gates-engine.js +149 -4
  85. package/scripts/github-about.js +32 -8
  86. package/scripts/gtm-revenue-loop.js +1 -5
  87. package/scripts/harness-selector.js +148 -0
  88. package/scripts/hosted-job-launcher.js +1 -5
  89. package/scripts/hybrid-feedback-context.js +7 -33
  90. package/scripts/intervention-policy.js +58 -1
  91. package/scripts/lesson-db.js +3 -18
  92. package/scripts/lesson-inference.js +194 -16
  93. package/scripts/lesson-retrieval.js +60 -24
  94. package/scripts/llm-client.js +59 -0
  95. package/scripts/managed-lesson-agent.js +183 -0
  96. package/scripts/marketing-experiment.js +8 -22
  97. package/scripts/meta-agent-loop.js +624 -0
  98. package/scripts/metered-billing.js +1 -1
  99. package/scripts/money-watcher.js +1 -4
  100. package/scripts/obsidian-export.js +1 -5
  101. package/scripts/operational-integrity.js +15 -3
  102. package/scripts/org-dashboard.js +6 -1
  103. package/scripts/per-step-scoring.js +2 -4
  104. package/scripts/pr-manager.js +201 -19
  105. package/scripts/pro-features.js +3 -2
  106. package/scripts/prompt-dlp.js +3 -3
  107. package/scripts/prove-adapters.js +1 -5
  108. package/scripts/prove-attribution.js +1 -5
  109. package/scripts/prove-automation.js +1 -3
  110. package/scripts/prove-cloudflare-sandbox.js +1 -3
  111. package/scripts/prove-data-pipeline.js +1 -3
  112. package/scripts/prove-intelligence.js +1 -3
  113. package/scripts/prove-lancedb.js +1 -5
  114. package/scripts/prove-local-intelligence.js +1 -3
  115. package/scripts/prove-packaged-runtime.js +75 -9
  116. package/scripts/prove-predictive-insights.js +1 -3
  117. package/scripts/prove-training-export.js +1 -3
  118. package/scripts/prove-workflow-contract.js +1 -5
  119. package/scripts/rate-limiter.js +3 -1
  120. package/scripts/reddit-dm-outreach.js +14 -4
  121. package/scripts/schedule-manager.js +3 -5
  122. package/scripts/security-scanner.js +448 -0
  123. package/scripts/self-distill-agent.js +579 -0
  124. package/scripts/semantic-dedup.js +115 -0
  125. package/scripts/skill-exporter.js +1 -3
  126. package/scripts/skill-generator.js +1 -5
  127. package/scripts/social-analytics/engagement-audit.js +1 -18
  128. package/scripts/social-analytics/pollers/linkedin.js +26 -16
  129. package/scripts/social-analytics/publishers/linkedin.js +1 -1
  130. package/scripts/social-analytics/publishers/zernio.js +51 -0
  131. package/scripts/social-pipeline.js +1 -3
  132. package/scripts/social-post-hourly.js +47 -4
  133. package/scripts/statusline-links.js +6 -5
  134. package/scripts/statusline.sh +29 -153
  135. package/scripts/sync-branch-protection.js +340 -0
  136. package/scripts/tessl-export.js +1 -3
  137. package/scripts/thumbgate-search.js +32 -1
  138. package/scripts/tool-kpi-tracker.js +1 -1
  139. package/scripts/tool-registry.js +106 -2
  140. package/scripts/vector-store.js +1 -5
  141. package/scripts/weekly-auto-post.js +1 -1
  142. package/scripts/workflow-sentinel.js +91 -0
  143. package/skills/thumbgate/SKILL.md +1 -1
  144. package/src/api/server.js +273 -4
  145. package/scripts/social-analytics/db/social-analytics.db-shm +0 -0
  146. /package/scripts/social-analytics/db/{social-analytics.db-wal → analytics.sqlite} +0 -0
@@ -10,6 +10,15 @@
10
10
  "message": "User requested local-only work. Git writes, PR operations, and release actions are blocked.",
11
11
  "severity": "critical"
12
12
  },
13
+ {
14
+ "id": "raw-gh-auto-merge-blocked",
15
+ "layer": "Execution",
16
+ "toolNames": ["Bash"],
17
+ "pattern": "gh\\s+pr\\s+merge\\b[^\\n]*--auto",
18
+ "action": "block",
19
+ "message": "Raw GitHub auto-merge is blocked. Use npm run pr:manage after all critical quality checks have terminal success.",
20
+ "severity": "critical"
21
+ },
13
22
  {
14
23
  "id": "task-scope-required",
15
24
  "layer": "Decisions",
@@ -134,7 +143,8 @@
134
143
  "pattern": "git\\s+push\\s+(--force|-f)",
135
144
  "action": "block",
136
145
  "message": "Force push blocked. This is destructive and irreversible.",
137
- "severity": "critical"
146
+ "severity": "critical",
147
+ "compliance": ["NIST-CM-5", "SOC2-CC8.1", "CWE-863"]
138
148
  },
139
149
  {
140
150
  "id": "protected-branch-push",
@@ -152,7 +162,8 @@
152
162
  "pattern": "\\.env",
153
163
  "action": "warn",
154
164
  "message": "Editing .env file — verify you are not deleting existing tokens",
155
- "severity": "medium"
165
+ "severity": "medium",
166
+ "compliance": ["NIST-IA-5", "SOC2-CC6.1", "CWE-798"]
156
167
  },
157
168
  {
158
169
  "id": "deny-network-egress",
@@ -161,7 +172,8 @@
161
172
  "action": "warn",
162
173
  "unless": "egress_approved",
163
174
  "message": "Potential unauthorized network egress detected.",
164
- "severity": "medium"
175
+ "severity": "medium",
176
+ "compliance": ["NIST-SC-7", "SOC2-CC6.6", "OWASP-A10"]
165
177
  },
166
178
  {
167
179
  "id": "unverified-skill-use",
@@ -174,6 +186,16 @@
174
186
  "message": "Skill provenance check failed. Run 'npm run skill:verify' or satisfy 'skill_verified' with a valid signature to proceed.",
175
187
  "severity": "high"
176
188
  },
189
+ {
190
+ "id": "supply-chain-dep-add",
191
+ "layer": "Supply Chain",
192
+ "toolNames": ["Edit", "Write"],
193
+ "pattern": "package\\.json$",
194
+ "action": "warn",
195
+ "message": "Dependency mutation detected in package.json. Security scanner will audit for typosquatting, wildcard versions, and suspicious install scripts.",
196
+ "severity": "high",
197
+ "compliance": ["NIST-SA-12", "OWASP-A06", "CWE-1357"]
198
+ },
177
199
  {
178
200
  "id": "blocked-npx-content",
179
201
  "layer": "Supply Chain",
@@ -184,6 +206,135 @@
184
206
  "action": "block",
185
207
  "message": "Blocked npx execution by content hash. Renaming the binary does not bypass this gate.",
186
208
  "severity": "critical"
209
+ },
210
+ {
211
+ "id": "production-deploy-approval",
212
+ "layer": "Execution",
213
+ "toolNames": ["Bash"],
214
+ "pattern": "(?:railway|fly|heroku|vercel|render|kubectl|helm)\\s+(?:deploy|up|apply|release|push|rollout)",
215
+ "action": "approve",
216
+ "message": "Production deploy detected. Human approval required before this action can proceed.",
217
+ "severity": "high",
218
+ "compliance": ["NIST-CM-3", "SOC2-CC8.1", "OWASP-A05"]
219
+ },
220
+ {
221
+ "id": "schema-migration-approval",
222
+ "layer": "Execution",
223
+ "toolNames": ["Bash"],
224
+ "pattern": "(?:npx\\s+(?:sequelize|typeorm|prisma|knex|drizzle|flyway|liquibase)|alembic\\s+upgrade|rails\\s+db:migrate|php\\s+artisan\\s+migrate)\\b",
225
+ "action": "approve",
226
+ "message": "Database schema migration detected. Human approval required before this action can proceed.",
227
+ "severity": "high",
228
+ "compliance": ["NIST-CM-3", "SOC2-CC8.1", "CWE-89"]
229
+ },
230
+ {
231
+ "id": "permission-change-approval",
232
+ "layer": "Execution",
233
+ "toolNames": ["Bash"],
234
+ "pattern": "(?:chmod|chown|setfacl|iam|policy|role|grant|revoke)\\s+",
235
+ "action": "approve",
236
+ "message": "Permission or IAM change detected. Human approval required before this action can proceed.",
237
+ "severity": "high",
238
+ "compliance": ["NIST-AC-6", "SOC2-CC6.1", "CWE-732"]
239
+ },
240
+ {
241
+ "id": "style-violation-log",
242
+ "layer": "Decisions",
243
+ "toolNames": ["Edit", "Write", "MultiEdit"],
244
+ "pattern": ".*",
245
+ "action": "log",
246
+ "when": { "constraints": { "THUMBGATE_STYLE_AUDIT": true } },
247
+ "message": "Style audit mode active. Action recorded for review but allowed to proceed.",
248
+ "severity": "low"
249
+ },
250
+ {
251
+ "id": "large-file-creation-log",
252
+ "layer": "Execution",
253
+ "toolNames": ["Write"],
254
+ "pattern": ".*",
255
+ "action": "log",
256
+ "when": { "constraints": { "THUMBGATE_LARGE_FILE_AUDIT": true } },
257
+ "message": "Large file write detected. Action recorded for audit trail but allowed to proceed.",
258
+ "severity": "low"
259
+ },
260
+ {
261
+ "id": "non-critical-warning-log",
262
+ "layer": "Decisions",
263
+ "toolNames": ["Bash"],
264
+ "pattern": "(?:console\\.log|debugger|TODO|FIXME|HACK|XXX)",
265
+ "action": "log",
266
+ "message": "Non-critical code pattern detected. Action recorded for audit trail but allowed to proceed.",
267
+ "severity": "low"
268
+ },
269
+ {
270
+ "id": "mcp-sql-delete-block",
271
+ "layer": "Execution",
272
+ "toolNames": ["delete_record"],
273
+ "pattern": ".*",
274
+ "requireTaskScope": true,
275
+ "action": "block",
276
+ "message": "SQL MCP delete_record requires explicit task scope. Destructive database operations must be scoped to prevent accidental data loss.",
277
+ "severity": "critical",
278
+ "compliance": ["NIST-AC-3", "SOC2-CC6.1", "CWE-89"]
279
+ },
280
+ {
281
+ "id": "mcp-sql-execute-warn",
282
+ "layer": "Execution",
283
+ "toolNames": ["execute_entity"],
284
+ "pattern": "(?:drop|truncate|alter|grant|revoke)",
285
+ "action": "warn",
286
+ "message": "SQL MCP execute_entity matches a potentially destructive DDL pattern. Review before proceeding.",
287
+ "severity": "high"
288
+ },
289
+ {
290
+ "id": "mcp-sql-bulk-update-warn",
291
+ "layer": "Execution",
292
+ "toolNames": ["update_record"],
293
+ "pattern": "(?:WHERE\\s+1\\s*=\\s*1|WHERE\\s+true|WITHOUT\\s+WHERE)",
294
+ "action": "block",
295
+ "message": "SQL MCP bulk update without a safe WHERE clause. This could modify all records in the table.",
296
+ "severity": "critical",
297
+ "compliance": ["NIST-AC-3", "CWE-89"]
298
+ },
299
+ {
300
+ "id": "self-protect-config",
301
+ "layer": "Execution",
302
+ "toolNames": ["Edit", "Write", "MultiEdit"],
303
+ "pattern": "(?:config/gates/|config/budget\\.json|\\.thumbgate/|thumbgate\\.json)",
304
+ "action": "block",
305
+ "message": "Self-protection: agent cannot modify ThumbGate configuration, gate rules, or budget settings.",
306
+ "severity": "critical",
307
+ "compliance": ["NIST-AC-3", "OWASP-A01", "SOC2-CC6.1"]
308
+ },
309
+ {
310
+ "id": "self-protect-kill",
311
+ "layer": "Execution",
312
+ "toolNames": ["Bash"],
313
+ "pattern": "(?:kill|pkill|killall)\\s+.*(?:thumbgate|gates-engine|budget-enforcer)",
314
+ "action": "block",
315
+ "message": "Self-protection: agent cannot terminate ThumbGate processes.",
316
+ "severity": "critical",
317
+ "compliance": ["NIST-AC-3", "OWASP-A01"]
318
+ },
319
+ {
320
+ "id": "self-protect-env-override",
321
+ "layer": "Execution",
322
+ "toolNames": ["Bash"],
323
+ "pattern": "(?:export|unset)\\s+(?:THUMBGATE_|LANEKEEP_)",
324
+ "action": "block",
325
+ "message": "Self-protection: agent cannot modify ThumbGate environment variables.",
326
+ "severity": "critical",
327
+ "compliance": ["NIST-AC-3", "SOC2-CC6.1"]
328
+ },
329
+ {
330
+ "id": "self-protect-hooks-disable",
331
+ "layer": "Execution",
332
+ "toolNames": ["Edit", "Write", "Bash"],
333
+ "pattern": "(?:settings\\.json|settings\\.local\\.json).*(?:hooks|PreToolUse|PostToolUse)",
334
+ "action": "block",
335
+ "message": "Self-protection: agent cannot modify hook registrations.",
336
+ "severity": "critical",
337
+ "compliance": ["NIST-AC-3", "OWASP-A01", "SOC2-CC6.1"]
187
338
  }
188
339
  ]
189
340
  }
@@ -0,0 +1,61 @@
1
+ {
2
+ "version": 1,
3
+ "harness": "deploy",
4
+ "description": "Specialized gates for deployment operations. Loaded when tool context matches deploy patterns (Railway, Docker, npm publish, git push to main).",
5
+ "gates": [
6
+ {
7
+ "id": "deploy-unverified-claim",
8
+ "layer": "Execution",
9
+ "pattern": "(?:deployed|live|shipped|pushed to prod)",
10
+ "toolNames": ["Bash"],
11
+ "action": "warn",
12
+ "severity": "critical",
13
+ "message": "Deployment claim detected. Run the verification gate first: curl -s $PROD_URL/health | grep version"
14
+ },
15
+ {
16
+ "id": "deploy-force-push-main",
17
+ "layer": "Execution",
18
+ "pattern": "git\\s+push\\s+.*--force(?!-with-lease)|git\\s+push\\s+--force(?!-with-lease).*main|git\\s+push\\s+--force(?!-with-lease).*master",
19
+ "toolNames": ["Bash"],
20
+ "action": "block",
21
+ "severity": "critical",
22
+ "message": "Force-push to a protected branch is blocked. Use --force-with-lease if you need to force-push a feature branch."
23
+ },
24
+ {
25
+ "id": "deploy-skip-ci",
26
+ "layer": "Execution",
27
+ "pattern": "--no-verify|--no-gpg-sign|-c\\s+commit\\.gpgsign=false",
28
+ "toolNames": ["Bash"],
29
+ "action": "block",
30
+ "severity": "critical",
31
+ "message": "Bypassing commit hooks or signing is blocked. Fix the underlying issue instead."
32
+ },
33
+ {
34
+ "id": "deploy-publish-without-test",
35
+ "layer": "Execution",
36
+ "pattern": "npm\\s+publish|yarn\\s+publish|pnpm\\s+publish",
37
+ "toolNames": ["Bash"],
38
+ "action": "warn",
39
+ "severity": "high",
40
+ "message": "Publishing to npm. Confirm tests pass (npm test) and version is synced (node scripts/sync-version.js --check) before proceeding."
41
+ },
42
+ {
43
+ "id": "deploy-version-drift-risk",
44
+ "layer": "Execution",
45
+ "pattern": "railway\\s+(deploy|up|run)|docker\\s+(push|build\\s+.*&&\\s*.*push)",
46
+ "toolNames": ["Bash"],
47
+ "action": "warn",
48
+ "severity": "medium",
49
+ "message": "Deploying to Railway/Docker. Verify version sync: node scripts/sync-version.js --check"
50
+ },
51
+ {
52
+ "id": "deploy-env-secret-exposure",
53
+ "layer": "Execution",
54
+ "pattern": "(?:ANTHROPIC_API_KEY|STRIPE_SECRET|JWT_SECRET|DATABASE_URL|RAILWAY_TOKEN)\\s*=",
55
+ "toolNames": ["Bash", "Edit", "Write"],
56
+ "action": "block",
57
+ "severity": "critical",
58
+ "message": "Secret value detected in command or file edit. Use environment variables or secret managers instead."
59
+ }
60
+ ]
61
+ }
@@ -2,7 +2,8 @@
2
2
  "repo": "IgorGanapolsky/ThumbGate",
3
3
  "repositoryUrl": "https://github.com/IgorGanapolsky/ThumbGate",
4
4
  "homepageUrl": "https://thumbgate-production.up.railway.app",
5
- "description": "Pre-action gates, a learned intervention policy, and workflow governance for self-improving AI coding agents. 👎 Thumbs down distills history-aware lessons from up to 8 prior entries and stays linked to a 60-second feedback session. 👍 Thumbs up reinforces safe patterns. Team adds shared lessons and org visibility.",
5
+ "githubDescription": "CLI-first agent governance for AI coding workflows: pre-action gates, shared lessons, and team safeguards that stop repeated agent mistakes.",
6
+ "metaDescription": "CLI-first agent governance for teams shipping AI-generated changes. 👎 Thumbs down distills history-aware lessons from up to 8 prior entries and stays linked to a 60-second feedback session. 👍 Thumbs up reinforces safe patterns. Pre-action gates, workflow governance, shared lessons and org visibility, release confidence, and isolated execution guidance turn vibe coding mistakes into shared enforcement and proof-ready rollout.",
6
7
  "topics": [
7
8
  "thumbgate",
8
9
  "pre-action-gates",
@@ -0,0 +1,23 @@
1
+ {
2
+ "requiredStatusCheckContexts": [
3
+ "test",
4
+ "CodeQL",
5
+ "Analyze JavaScript (javascript-typescript)",
6
+ "Verify changeset",
7
+ "SonarCloud Code Analysis",
8
+ "GitGuardian Security Checks",
9
+ "Socket Security: Project Report",
10
+ "Socket Security: Pull Request Alerts"
11
+ ],
12
+ "passingBuckets": [
13
+ "pass",
14
+ "skipping"
15
+ ],
16
+ "pendingBuckets": [
17
+ "pending"
18
+ ],
19
+ "failingBuckets": [
20
+ "fail",
21
+ "cancel"
22
+ ]
23
+ }
@@ -814,6 +814,98 @@ paths:
814
814
  description: Invalid dashboard render view or query
815
815
  '401':
816
816
  description: Unauthorized
817
+ /v1/decisions/evaluate:
818
+ post:
819
+ operationId: evaluateDecision
820
+ requestBody:
821
+ required: true
822
+ content:
823
+ application/json:
824
+ schema:
825
+ type: object
826
+ required: [toolName]
827
+ properties:
828
+ toolName:
829
+ type: string
830
+ command:
831
+ type: string
832
+ filePath:
833
+ type: string
834
+ changedFiles:
835
+ type: array
836
+ items:
837
+ type: string
838
+ repoPath:
839
+ type: string
840
+ baseBranch:
841
+ type: string
842
+ requirePrForReleaseSensitive:
843
+ type: boolean
844
+ requireVersionNotBehindBase:
845
+ type: boolean
846
+ responses:
847
+ '200':
848
+ description: Persisted workflow-sentinel recommendation with decision-control metadata and actionId
849
+ content:
850
+ application/json:
851
+ schema:
852
+ type: object
853
+ additionalProperties: true
854
+ '400':
855
+ description: Invalid decision evaluation request
856
+ '401':
857
+ description: Unauthorized
858
+ /v1/decisions/outcome:
859
+ post:
860
+ operationId: recordDecisionOutcome
861
+ requestBody:
862
+ required: true
863
+ content:
864
+ application/json:
865
+ schema:
866
+ type: object
867
+ required: [actionId, outcome]
868
+ properties:
869
+ actionId:
870
+ type: string
871
+ outcome:
872
+ type: string
873
+ actualDecision:
874
+ type: string
875
+ actor:
876
+ type: string
877
+ notes:
878
+ type: string
879
+ latencyMs:
880
+ type: number
881
+ metadata:
882
+ type: object
883
+ additionalProperties: true
884
+ responses:
885
+ '200':
886
+ description: Recorded a decision override, rollback, completion, or block outcome
887
+ content:
888
+ application/json:
889
+ schema:
890
+ type: object
891
+ additionalProperties: true
892
+ '400':
893
+ description: Invalid decision outcome request
894
+ '401':
895
+ description: Unauthorized
896
+ /v1/decisions/metrics:
897
+ get:
898
+ operationId: getDecisionMetrics
899
+ responses:
900
+ '200':
901
+ description: Decision-loop metrics derived from recorded evaluations and outcomes
902
+ content:
903
+ application/json:
904
+ schema:
905
+ type: object
906
+ additionalProperties: true
907
+ '401':
908
+ description: Unauthorized
817
909
  /v1/settings/status:
818
910
  get:
819
911
  operationId: getSettingsStatus
@@ -1115,6 +1207,82 @@ paths:
1115
1207
  description: DPO export accepted as a hosted background job
1116
1208
  '401':
1117
1209
  description: Unauthorized
1210
+ /v1/documents:
1211
+ get:
1212
+ operationId: listImportedDocuments
1213
+ parameters:
1214
+ - in: query
1215
+ name: query
1216
+ schema:
1217
+ type: string
1218
+ - in: query
1219
+ name: q
1220
+ schema:
1221
+ type: string
1222
+ - in: query
1223
+ name: tag
1224
+ schema:
1225
+ type: string
1226
+ - in: query
1227
+ name: limit
1228
+ schema:
1229
+ type: integer
1230
+ default: 20
1231
+ responses:
1232
+ '200':
1233
+ description: Imported policy and runbook documents
1234
+ '401':
1235
+ description: Unauthorized
1236
+ /v1/documents/import:
1237
+ post:
1238
+ operationId: importDocument
1239
+ requestBody:
1240
+ required: true
1241
+ content:
1242
+ application/json:
1243
+ schema:
1244
+ type: object
1245
+ properties:
1246
+ filePath:
1247
+ type: string
1248
+ content:
1249
+ type: string
1250
+ title:
1251
+ type: string
1252
+ sourceFormat:
1253
+ type: string
1254
+ enum: [markdown, text, yaml, json, html]
1255
+ sourceUrl:
1256
+ type: string
1257
+ tags:
1258
+ type: array
1259
+ items:
1260
+ type: string
1261
+ proposeGates:
1262
+ type: boolean
1263
+ responses:
1264
+ '201':
1265
+ description: Document imported
1266
+ '400':
1267
+ description: Invalid document import request
1268
+ '401':
1269
+ description: Unauthorized
1270
+ /v1/documents/{documentId}:
1271
+ get:
1272
+ operationId: getImportedDocument
1273
+ parameters:
1274
+ - in: path
1275
+ name: documentId
1276
+ required: true
1277
+ schema:
1278
+ type: string
1279
+ responses:
1280
+ '200':
1281
+ description: Imported document with proposed gates
1282
+ '401':
1283
+ description: Unauthorized
1284
+ '404':
1285
+ description: Imported document not found
1118
1286
  /v1/jobs:
1119
1287
  get:
1120
1288
  operationId: listHostedJobs
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "thumbgate",
3
- "version": "1.3.0",
4
- "description": "ThumbGate Make your AI coding agent self-improving. Every mistake becomes a prevention rule that physically blocks the agent from repeating it. Feedback-driven enforcement via PreToolUse hooks, Thompson Sampling for adaptive gates, SQLite+FTS5 lesson DB, and LanceDB vector search. Your agent gets smarter with every session.",
3
+ "version": "1.4.0",
4
+ "description": "ThumbGate: self-improving agent governance for engineering teams. Three-tier approval routing (block/approve/log), shared enforcement, CI gates, and audit trails. Every mistake becomes a prevention rule. PreToolUse hooks, Thompson Sampling, SQLite+FTS5 lesson DB, and LanceDB vector search.",
5
5
  "homepage": "https://thumbgate-production.up.railway.app",
6
6
  "repository": {
7
7
  "type": "git",
@@ -37,6 +37,7 @@
37
37
  "changeset:status": "changeset status",
38
38
  "changeset:check": "node scripts/changeset-check.js",
39
39
  "build:claude-mcpb": "node scripts/build-claude-mcpb.js",
40
+ "build:codex-plugin": "node scripts/build-codex-plugin.js",
40
41
  "verify:quick": "node scripts/verify-run.js quick",
41
42
  "verify:full": "node scripts/verify-run.js full",
42
43
  "budget:status": "node scripts/budget-guard.js --status",
@@ -70,7 +71,7 @@
70
71
  "social:post-everywhere:dry": "node scripts/post-everywhere.js --dry-run",
71
72
  "social:reply-monitor": "node scripts/social-reply-monitor.js",
72
73
  "social:reply-monitor:dry": "node scripts/social-reply-monitor.js --dry-run",
73
- "test": "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:cli && npm run test:watcher && npm run test:autoresearch && npm run test:ops && 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:zernio && 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:check-congruence && npm run test:tool-registry && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:belief-update && npm run test:hosted-config && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:plan-gate && 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:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:bot-detector && 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: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:lesson-retrieval && 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: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: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-quality-gate && npm run test:a2ui-engine && npm run test:gate-satisfy && npm run test:money-watcher && 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",
74
+ "test": "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:cli && npm run test:watcher && npm run test:autoresearch && npm run test:ops && 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:zernio && 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:check-congruence && npm run test:tool-registry && npm run test:feedback-to-rules && npm run test:memory-firewall && npm run test:belief-update && npm run test:hosted-config && npm run test:cloudflare-sandbox && npm run test:mcp-config && npm run test:plan-gate && 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:export-dpo-pairs && npm run test:export-hf-dataset && npm run test:license && npm run test:bot-detector && 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: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:lesson-retrieval && 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: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: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: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:seo-guides",
74
75
  "test:feedback-fallback": "node --test tests/feedback-fallback.test.js",
75
76
  "test:metaclaw": "node --test tests/metaclaw-features.test.js",
76
77
  "test:server-lock": "node --test tests/server-stdio-lock.test.js",
@@ -121,8 +122,8 @@
121
122
  "test:loop": "node scripts/feedback-loop.js --test",
122
123
  "test:dpo": "node scripts/export-dpo-pairs.js --test",
123
124
  "test:kto": "node --test tests/export-kto.test.js",
124
- "test:api": "node --test --test-concurrency=1 tests/api-server.test.js tests/api-auth-config.test.js tests/mcp-server.test.js tests/adapters.test.js tests/openapi-parity.test.js tests/budget-guard.test.js tests/context-manager.test.js tests/contextfs.test.js tests/job-api.test.js tests/pack-templates.test.js tests/dashboard.test.js tests/dashboard-render-spec.test.js tests/dashboard-html.test.js tests/agent-readiness.test.js tests/mcp-policy.test.js tests/subagent-profiles.test.js tests/intent-router.test.js tests/internal-agent-bootstrap.test.js tests/lesson-search.test.js tests/thumbgate-search.test.js tests/rubric-engine.test.js tests/self-healing-check.test.js tests/self-heal.test.js tests/feedback-schema.test.js tests/thompson-sampling.test.js tests/feedback-sequences.test.js tests/diversity-tracking.test.js tests/vector-store.test.js tests/feedback-attribution.test.js tests/hybrid-feedback-context.test.js tests/loop-closure.test.js tests/code-reasoning.test.js tests/feedback-loop.test.js tests/feedback-inbox-read.test.js tests/feedback-to-memory.test.js tests/test-coverage.test.js tests/version-metadata.test.js tests/claude-mcpb.test.js tests/claude-codex-bridge.test.js tests/cursor-plugin.test.js tests/codex-plugin.test.js tests/telemetry-analytics.test.js tests/public-landing.test.js tests/lessons-page.test.js tests/pro-landing.test.js tests/local-model-profile.test.js tests/risk-scorer.test.js tests/context-compaction.test.js tests/reminder-engine.test.js tests/post-to-x.test.js tests/verification-loop.test.js tests/async-job-runner.test.js tests/commerce-quality.test.js tests/recall-limit.test.js tests/problem-detail.test.js tests/natural-language-harness.test.js tests/settings-hierarchy.test.js",
125
- "test:proof": "node --test tests/prove-adapters.test.js tests/prove-attribution.test.js tests/prove-cloudflare-sandbox.test.js tests/prove-data-quality.test.js tests/prove-intelligence.test.js tests/prove-lancedb.test.js tests/prove-loop-closure.test.js tests/prove-subway-upgrades.test.js tests/prove-training-export.test.js tests/prove-local-intelligence.test.js tests/prove-workflow-contract.test.js tests/prove-autoresearch.test.js tests/prove-claim-verification.test.js tests/prove-data-pipeline.test.js tests/prove-evolution.test.js tests/prove-harnesses.test.js tests/prove-runtime.test.js tests/prove-seo-gsd.test.js tests/prove-settings.test.js tests/prove-xmemory.test.js && node --test tests/prove-automation.test.js",
125
+ "test:api": "node --test --test-concurrency=1 tests/api-server.test.js tests/api-auth-config.test.js tests/mcp-server.test.js tests/adapters.test.js tests/openapi-parity.test.js tests/budget-guard.test.js tests/context-manager.test.js tests/contextfs.test.js tests/job-api.test.js tests/pack-templates.test.js tests/dashboard.test.js tests/dashboard-render-spec.test.js tests/dashboard-html.test.js tests/agent-readiness.test.js tests/mcp-policy.test.js tests/subagent-profiles.test.js tests/intent-router.test.js tests/internal-agent-bootstrap.test.js tests/lesson-search.test.js tests/thumbgate-search.test.js tests/document-intake.test.js tests/rubric-engine.test.js tests/self-healing-check.test.js tests/self-heal.test.js tests/feedback-schema.test.js tests/thompson-sampling.test.js tests/feedback-sequences.test.js tests/diversity-tracking.test.js tests/vector-store.test.js tests/feedback-attribution.test.js tests/hybrid-feedback-context.test.js tests/loop-closure.test.js tests/code-reasoning.test.js tests/feedback-loop.test.js tests/feedback-inbox-read.test.js tests/feedback-to-memory.test.js tests/test-coverage.test.js tests/version-metadata.test.js tests/claude-mcpb.test.js tests/claude-codex-bridge.test.js tests/cursor-plugin.test.js tests/codex-plugin.test.js tests/telemetry-analytics.test.js tests/public-landing.test.js tests/lessons-page.test.js tests/pro-landing.test.js tests/local-model-profile.test.js tests/risk-scorer.test.js tests/context-compaction.test.js tests/reminder-engine.test.js tests/post-to-x.test.js tests/verification-loop.test.js tests/async-job-runner.test.js tests/commerce-quality.test.js tests/recall-limit.test.js tests/problem-detail.test.js tests/natural-language-harness.test.js tests/settings-hierarchy.test.js",
126
+ "test:proof": "node --test tests/prove-adapters.test.js tests/prove-attribution.test.js tests/prove-cloudflare-sandbox.test.js tests/prove-data-quality.test.js tests/prove-intelligence.test.js tests/prove-lancedb.test.js tests/prove-loop-closure.test.js tests/prove-subway-upgrades.test.js tests/prove-training-export.test.js tests/prove-local-intelligence.test.js tests/prove-workflow-contract.test.js tests/prove-autoresearch.test.js tests/prove-claim-verification.test.js tests/prove-data-pipeline.test.js tests/prove-evolution.test.js tests/prove-harnesses.test.js tests/prove-packaged-runtime.test.js tests/prove-runtime.test.js tests/prove-seo-gsd.test.js tests/prove-settings.test.js tests/prove-xmemory.test.js && node --test tests/prove-automation.test.js",
126
127
  "test:e2e": "node --test tests/e2e-pipeline.test.js tests/e2e-product-flows.test.js tests/e2e-coverage-contract.test.js",
127
128
  "test:rlaif": "node --test tests/rlaif-self-audit.test.js tests/dpo-optimizer.test.js tests/meta-policy.test.js",
128
129
  "test:attribution": "node --test tests/feedback-attribution.test.js tests/hybrid-feedback-context.test.js",
@@ -130,16 +131,17 @@
130
131
  "test:intelligence": "node --test tests/intelligence.test.js",
131
132
  "test:training-export": "node --test tests/training-export.test.js tests/databricks-export.test.js",
132
133
  "test:deployment": "node --test tests/deployment.test.js tests/deploy-policy.test.js tests/publish-decision.test.js tests/changeset-check.test.js tests/sonarcloud-workflow.test.js",
133
- "test:operational-integrity": "node --test tests/operational-integrity.test.js",
134
- "test:workflow": "node --test tests/workflow-contract.test.js tests/social-marketing-assets.test.js tests/social-pipeline.test.js tests/positioning-contract.test.js tests/workflow-runs.test.js tests/workflow-sprint-intake.test.js tests/gtm-revenue-loop.test.js tests/enterprise-story.test.js",
134
+ "test:operational-integrity": "node --test tests/operational-integrity.test.js tests/sync-branch-protection.test.js",
135
+ "test:workflow": "node --test tests/workflow-contract.test.js tests/social-marketing-assets.test.js tests/social-pipeline.test.js tests/positioning-contract.test.js tests/docs-claim-hygiene.test.js tests/workflow-runs.test.js tests/workflow-sprint-intake.test.js tests/gtm-revenue-loop.test.js tests/enterprise-story.test.js",
135
136
  "test:billing": "node --test tests/billing.test.js",
136
137
  "test:cli": "node --test tests/analytics-report.test.js tests/creator-campaigns.test.js tests/cli.test.js tests/codex-bridge-script.test.js tests/dispatch-brief.test.js tests/feedback-normalize.test.js tests/install-mcp.test.js tests/pr-manager.test.js tests/pro-local-dashboard.test.js tests/published-cli.test.js tests/revenue-status.test.js",
137
138
  "test:evolution": "node --test tests/workspace-evolver.test.js",
138
139
  "test:watcher": "node --test tests/jsonl-watcher.test.js",
139
140
  "test:autoresearch": "node --test tests/autoresearch.test.js",
140
- "test:ops": "node --test tests/adk-consolidator.test.js tests/anthropic-partner-strategy.test.js tests/auto-promote-gates.test.js tests/auto-wire-hooks.test.js tests/claude-skill.test.js tests/codegraph-context.test.js tests/commercial-signals.test.js tests/delegation-runtime.test.js tests/disagreement-mining.test.js tests/failure-diagnostics.test.js tests/gate-stats.test.js tests/github-billing.test.js tests/intervention-policy.test.js tests/markdown-escape.test.js tests/mcp-tools-gates.test.js tests/project-bayes-e2e.test.js tests/project-bayes.test.js tests/rate-limiter.test.js tests/schedule-manager.test.js tests/session-handoff.test.js tests/skill-generator.test.js tests/smart-learning.test.js tests/spike-and-sink.test.js tests/stripe-webhook-route.test.js tests/train-from-feedback.test.js tests/workflow-hardening-sprint.test.js tests/workflow-sentinel.test.js tests/test-suite-parity.test.js tests/a2ui-engine.test.js tests/webhook-delivery.test.js",
141
+ "test:ops": "node --test tests/adk-consolidator.test.js tests/anthropic-partner-strategy.test.js tests/auto-promote-gates.test.js tests/auto-wire-hooks.test.js tests/claude-skill.test.js tests/codegraph-context.test.js tests/commercial-signals.test.js tests/decision-journal.test.js tests/delegation-runtime.test.js tests/disagreement-mining.test.js tests/failure-diagnostics.test.js tests/gate-stats.test.js tests/github-billing.test.js tests/intervention-policy.test.js tests/markdown-escape.test.js tests/mcp-tools-gates.test.js tests/project-bayes-e2e.test.js tests/project-bayes.test.js tests/rate-limiter.test.js tests/schedule-manager.test.js tests/session-handoff.test.js tests/skill-generator.test.js tests/smart-learning.test.js tests/spike-and-sink.test.js tests/stripe-webhook-route.test.js tests/train-from-feedback.test.js tests/workflow-hardening-sprint.test.js tests/workflow-sentinel.test.js tests/test-suite-parity.test.js tests/a2ui-engine.test.js tests/webhook-delivery.test.js",
141
142
  "test:tessl": "node --test tests/tessl-export.test.js",
142
143
  "test:gates": "node --test tests/gate-templates.test.js tests/gates-engine.test.js tests/claim-verification.test.js tests/secret-scanner.test.js tests/prompt-guard.test.js tests/audit-trail.test.js tests/profile-router.test.js tests/workflow-sentinel.test.js tests/docker-sandbox-planner.test.js",
144
+ "test:budget": "node --test tests/budget-enforcer.test.js",
143
145
  "test:workers": "npm --prefix workers ci && npm --prefix workers test",
144
146
  "test:evoskill": "node --test tests/evoskill.test.js",
145
147
  "test:gates-hardening": "node --test tests/gates-hardening.test.js",
@@ -157,6 +159,8 @@
157
159
  "adk:consolidate": "node scripts/adk-consolidator.js",
158
160
  "adk:watch": "node scripts/adk-consolidator.js --watch",
159
161
  "pr:manage": "node scripts/pr-manager.js",
162
+ "branch-protection:check": "node scripts/sync-branch-protection.js --check",
163
+ "branch-protection:sync": "node scripts/sync-branch-protection.js",
160
164
  "self-heal:run": "node scripts/self-heal.js",
161
165
  "self-heal:check": "node scripts/self-healing-check.js",
162
166
  "skill:verify": "node scripts/tessl-export.js verify",
@@ -221,10 +225,12 @@
221
225
  "test:skill-progressive": "node --test tests/skill-progressive-disclosure.test.js",
222
226
  "test:per-step-scoring": "node --test tests/per-step-scoring.test.js",
223
227
  "test:weekly-auto-post": "node --test tests/weekly-auto-post.test.js",
228
+ "test:social-post-hourly": "node --test tests/social-post-hourly.test.js",
224
229
  "test:social-quality-gate": "node --test tests/social-quality-gate.test.js",
225
230
  "test:a2ui-engine": "node --test tests/a2ui-engine.test.js",
226
231
  "test:gate-satisfy": "node --test tests/gate-satisfy.test.js",
227
232
  "test:money-watcher": "node --test tests/money-watcher.test.js",
233
+ "test:quick-start": "node --test tests/quick-start.test.js",
228
234
  "test:utm": "node --test tests/utm.test.js",
229
235
  "test:product-feedback": "node --test tests/product-feedback.test.js",
230
236
  "test:feedback-root-consolidator": "node --test tests/feedback-root-consolidator.test.js",
@@ -242,7 +248,25 @@
242
248
  "test:sync-launch-assets": "node --test tests/sync-launch-assets.test.js",
243
249
  "test:reddit-publisher": "node --test tests/reddit-publisher.test.js",
244
250
  "test:engagement-audit": "node --test tests/engagement-audit.test.js",
245
- "test:ai-search-visibility": "node --test tests/ai-search-visibility.test.js"
251
+ "test:ai-search-visibility": "node --test tests/ai-search-visibility.test.js",
252
+ "test:security-scanner": "node --test tests/security-scanner.test.js",
253
+ "test:llm-client": "node --test tests/llm-client.test.js",
254
+ "test:managed-lesson-agent": "node --test tests/managed-lesson-agent.test.js",
255
+ "agent:run": "node scripts/managed-lesson-agent.js",
256
+ "agent:run:dry": "node scripts/managed-lesson-agent.js --dry-run",
257
+ "agent:schedule": "node scripts/schedule-manager.js install --label managed-lesson-agent --spec 'daily 02:00' --command 'npm run agent:run' --workingDirectory .",
258
+ "feedback:rules:llm": "node scripts/feedback-to-rules.js --llm",
259
+ "test:self-distill": "node --test tests/self-distill-agent.test.js",
260
+ "test:seo-guides": "node --test tests/seo-guides.test.js",
261
+ "self-distill:run": "node scripts/self-distill-agent.js",
262
+ "self-distill:dry": "node scripts/self-distill-agent.js --dry-run",
263
+ "meta-agent:run": "node scripts/meta-agent-loop.js",
264
+ "meta-agent:dry": "node scripts/meta-agent-loop.js --dry-run",
265
+ "meta-agent:status": "node scripts/meta-agent-loop.js --status",
266
+ "test:meta-agent": "node --test tests/meta-agent-loop.test.js",
267
+ "test:semantic-dedup": "node --test tests/semantic-dedup.test.js",
268
+ "test:fs-utils": "node --test tests/fs-utils.test.js",
269
+ "test:harness-selector": "node --test tests/harness-selector.test.js"
246
270
  },
247
271
  "keywords": [
248
272
  "mcp",
@@ -272,7 +296,14 @@
272
296
  "cursor",
273
297
  "codex",
274
298
  "safety",
275
- "enforcement"
299
+ "enforcement",
300
+ "ai agent memory",
301
+ "repeated mistakes",
302
+ "agent error prevention",
303
+ "ai-authenticity",
304
+ "prevent-ai-slop",
305
+ "human-led-ai",
306
+ "ai-standards-enforcement"
276
307
  ],
277
308
  "author": "Igor Ganapolsky",
278
309
  "license": "MIT",
@@ -290,6 +321,7 @@
290
321
  "node": ">=18.18.0"
291
322
  },
292
323
  "dependencies": {
324
+ "@anthropic-ai/sdk": "^0.24.0",
293
325
  "@google/genai": "^1.48.0",
294
326
  "@huggingface/transformers": "^4.0.1",
295
327
  "@lancedb/lancedb": "^0.27.2",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-bridge",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "Run Codex review, adversarial review, and second-pass handoffs from Claude Code while keeping ThumbGate reliability memory in the loop.",
5
5
  "author": {
6
6
  "name": "Igor Ganapolsky",