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.
- package/.claude-plugin/marketplace.json +32 -13
- package/.claude-plugin/plugin.json +15 -2
- package/.well-known/llms.txt +60 -0
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +109 -20
- package/adapters/README.md +1 -1
- package/adapters/chatgpt/openapi.yaml +168 -0
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/codex/config.toml +2 -2
- package/adapters/mcp/server-stdio.js +84 -1
- package/adapters/opencode/opencode.json +1 -1
- package/bin/cli.js +200 -13
- package/bin/postinstall.js +8 -2
- package/config/budget.json +18 -0
- package/config/gates/code-edit.json +61 -0
- package/config/gates/db-write.json +61 -0
- package/config/gates/default.json +154 -3
- package/config/gates/deploy.json +61 -0
- package/config/github-about.json +2 -1
- package/config/merge-quality-checks.json +23 -0
- package/openapi/openapi.yaml +168 -0
- package/package.json +42 -10
- package/plugins/claude-codex-bridge/.claude-plugin/plugin.json +1 -1
- package/plugins/claude-codex-bridge/.mcp.json +1 -1
- package/plugins/claude-codex-bridge/scripts/codex-bridge.js +1 -3
- package/plugins/codex-profile/.codex-plugin/plugin.json +1 -1
- package/plugins/codex-profile/.mcp.json +1 -1
- package/plugins/codex-profile/INSTALL.md +27 -4
- package/plugins/codex-profile/README.md +33 -9
- package/plugins/cursor-marketplace/.cursor-plugin/plugin.json +1 -1
- package/plugins/opencode-profile/INSTALL.md +1 -1
- package/public/blog.html +73 -0
- package/public/compare/mem0.html +189 -0
- package/public/compare/speclock.html +180 -0
- package/public/compare.html +10 -2
- package/public/guide.html +2 -2
- package/public/guides/claude-code-prevent-repeated-mistakes.html +161 -0
- package/public/guides/codex-cli-guardrails.html +158 -0
- package/public/guides/cursor-prevent-repeated-mistakes.html +161 -0
- package/public/guides/pre-action-gates.html +162 -0
- package/public/guides/stop-repeated-ai-agent-mistakes.html +159 -0
- package/public/index.html +136 -50
- package/public/lessons.html +33 -24
- package/public/llm-context.md +140 -0
- package/public/pro.html +24 -22
- package/scripts/__pycache__/train_from_feedback.cpython-312.pyc +0 -0
- package/scripts/access-anomaly-detector.js +1 -1
- package/scripts/adk-consolidator.js +1 -5
- package/scripts/agent-security-hardening.js +4 -6
- package/scripts/agentic-data-pipeline.js +1 -3
- package/scripts/async-job-runner.js +1 -5
- package/scripts/audit-trail.js +1 -5
- package/scripts/background-agent-governance.js +2 -10
- package/scripts/billing.js +2 -16
- package/scripts/budget-enforcer.js +173 -0
- package/scripts/build-codex-plugin.js +152 -0
- package/scripts/check-congruence.js +132 -14
- package/scripts/commercial-offer.js +5 -7
- package/scripts/content-engine/linkedin-content-generator.js +154 -0
- package/scripts/content-engine/output/linkedin-memento-validation.md +17 -0
- package/scripts/content-engine/output/linkedin-posts-2026-04-09.md +175 -0
- package/scripts/content-engine/reddit-thread-finder.js +154 -0
- package/scripts/context-engine.js +21 -6
- package/scripts/contextfs.js +1 -21
- package/scripts/dashboard.js +20 -0
- package/scripts/decision-journal.js +341 -0
- package/scripts/delegation-runtime.js +1 -5
- package/scripts/distribution-surfaces.js +26 -0
- package/scripts/document-intake.js +927 -0
- package/scripts/ephemeral-agent-store.js +1 -8
- package/scripts/evolution-state.js +1 -5
- package/scripts/experiment-tracker.js +1 -5
- package/scripts/export-databricks-bundle.js +1 -5
- package/scripts/export-hf-dataset.js +1 -5
- package/scripts/export-training.js +1 -5
- package/scripts/feedback-attribution.js +1 -16
- package/scripts/feedback-history-distiller.js +1 -16
- package/scripts/feedback-loop.js +1 -5
- package/scripts/feedback-root-consolidator.js +2 -21
- package/scripts/feedback-session.js +49 -0
- package/scripts/feedback-to-rules.js +188 -28
- package/scripts/filesystem-search.js +1 -9
- package/scripts/fs-utils.js +104 -0
- package/scripts/gates-engine.js +149 -4
- package/scripts/github-about.js +32 -8
- package/scripts/gtm-revenue-loop.js +1 -5
- package/scripts/harness-selector.js +148 -0
- package/scripts/hosted-job-launcher.js +1 -5
- package/scripts/hybrid-feedback-context.js +7 -33
- package/scripts/intervention-policy.js +58 -1
- package/scripts/lesson-db.js +3 -18
- package/scripts/lesson-inference.js +194 -16
- package/scripts/lesson-retrieval.js +60 -24
- package/scripts/llm-client.js +59 -0
- package/scripts/managed-lesson-agent.js +183 -0
- package/scripts/marketing-experiment.js +8 -22
- package/scripts/meta-agent-loop.js +624 -0
- package/scripts/metered-billing.js +1 -1
- package/scripts/money-watcher.js +1 -4
- package/scripts/obsidian-export.js +1 -5
- package/scripts/operational-integrity.js +15 -3
- package/scripts/org-dashboard.js +6 -1
- package/scripts/per-step-scoring.js +2 -4
- package/scripts/pr-manager.js +201 -19
- package/scripts/pro-features.js +3 -2
- package/scripts/prompt-dlp.js +3 -3
- package/scripts/prove-adapters.js +1 -5
- package/scripts/prove-attribution.js +1 -5
- package/scripts/prove-automation.js +1 -3
- package/scripts/prove-cloudflare-sandbox.js +1 -3
- package/scripts/prove-data-pipeline.js +1 -3
- package/scripts/prove-intelligence.js +1 -3
- package/scripts/prove-lancedb.js +1 -5
- package/scripts/prove-local-intelligence.js +1 -3
- package/scripts/prove-packaged-runtime.js +75 -9
- package/scripts/prove-predictive-insights.js +1 -3
- package/scripts/prove-training-export.js +1 -3
- package/scripts/prove-workflow-contract.js +1 -5
- package/scripts/rate-limiter.js +3 -1
- package/scripts/reddit-dm-outreach.js +14 -4
- package/scripts/schedule-manager.js +3 -5
- package/scripts/security-scanner.js +448 -0
- package/scripts/self-distill-agent.js +579 -0
- package/scripts/semantic-dedup.js +115 -0
- package/scripts/skill-exporter.js +1 -3
- package/scripts/skill-generator.js +1 -5
- package/scripts/social-analytics/engagement-audit.js +1 -18
- package/scripts/social-analytics/pollers/linkedin.js +26 -16
- package/scripts/social-analytics/publishers/linkedin.js +1 -1
- package/scripts/social-analytics/publishers/zernio.js +51 -0
- package/scripts/social-pipeline.js +1 -3
- package/scripts/social-post-hourly.js +47 -4
- package/scripts/statusline-links.js +6 -5
- package/scripts/statusline.sh +29 -153
- package/scripts/sync-branch-protection.js +340 -0
- package/scripts/tessl-export.js +1 -3
- package/scripts/thumbgate-search.js +32 -1
- package/scripts/tool-kpi-tracker.js +1 -1
- package/scripts/tool-registry.js +106 -2
- package/scripts/vector-store.js +1 -5
- package/scripts/weekly-auto-post.js +1 -1
- package/scripts/workflow-sentinel.js +91 -0
- package/skills/thumbgate/SKILL.md +1 -1
- package/src/api/server.js +273 -4
- package/scripts/social-analytics/db/social-analytics.db-shm +0 -0
- /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
|
+
}
|
package/config/github-about.json
CHANGED
|
@@ -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
|
-
"
|
|
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
|
+
}
|
package/openapi/openapi.yaml
CHANGED
|
@@ -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.
|
|
4
|
-
"description": "ThumbGate
|
|
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
|
+
"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",
|