thumbgate 1.5.1 → 1.5.3
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 +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/mcp/server-card.json +1 -1
- package/CHANGELOG.md +504 -0
- package/README.md +36 -6
- package/adapters/README.md +1 -1
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/codex/config.toml +2 -2
- package/adapters/mcp/server-stdio.js +1 -1
- package/adapters/opencode/opencode.json +1 -1
- package/bench/prompt-eval-suite.json +106 -0
- package/package.json +36 -27
- package/public/dashboard.html +1436 -0
- package/public/index.html +9 -10
- package/public/lessons.html +16 -0
- package/scripts/prompt-eval.js +363 -0
package/README.md
CHANGED
|
@@ -221,9 +221,9 @@ npx thumbgate bench # run reliability benchmark
|
|
|
221
221
|
| | Free | Pro ($19/mo) | Team ($49/seat/mo) |
|
|
222
222
|
|---|---|---|---|
|
|
223
223
|
| Local CLI + enforced gates | ✅ | ✅ | ✅ |
|
|
224
|
-
| Feedback captures
|
|
225
|
-
|
|
|
226
|
-
|
|
|
224
|
+
| Feedback captures (lifetime) | 3 | Unlimited | Unlimited |
|
|
225
|
+
| Auto-promoted prevention rules | 1 | Unlimited | Unlimited |
|
|
226
|
+
| MCP agent integrations | All | All | All |
|
|
227
227
|
| Personal dashboard | — | ✅ | ✅ |
|
|
228
228
|
| DPO export (model fine-tuning) | — | ✅ | ✅ |
|
|
229
229
|
| Team lesson export/import | — | ✅ | ✅ |
|
|
@@ -231,7 +231,9 @@ npx thumbgate bench # run reliability benchmark
|
|
|
231
231
|
| Org-wide dashboard | — | — | ✅ |
|
|
232
232
|
| Approval + audit proof | — | — | ✅ |
|
|
233
233
|
|
|
234
|
-
The free tier gives you 3 feedback captures
|
|
234
|
+
The free tier gives you 3 lifetime feedback captures and 1 auto-promoted prevention rule — enough to prove the enforcement loop works. MCP integrations for all agents (Claude Code, Cursor, Codex, Gemini, Amp, OpenCode) ship free.
|
|
235
|
+
|
|
236
|
+
Pro ($19/mo or $149/yr) lifts those caps and adds history-aware lesson recall, lesson search, DPO export, and a personal dashboard. Team ($49/seat/mo) adds a shared hosted lesson DB, org dashboard, and shared enforcement across the org. Pro and Team include `open_feedback_session`, `append_feedback_context`, and `finalize_feedback_session` for structured multi-turn feedback capture.
|
|
235
237
|
|
|
236
238
|
**Best first paid motion for teams:** the **Workflow Hardening Sprint** — qualify one repeated failure before committing to a full rollout. **[Start intake →](https://thumbgate-production.up.railway.app/?utm_source=github&utm_medium=readme&utm_campaign=team_rollout#workflow-sprint-intake)**
|
|
237
239
|
|
|
@@ -289,12 +291,38 @@ The export bundle includes full lesson metadata: signal, title, context, tags, f
|
|
|
289
291
|
|
|
290
292
|
---
|
|
291
293
|
|
|
294
|
+
## DPO Export for Fine-Tuning (Pro + Team)
|
|
295
|
+
|
|
296
|
+
Every thumbs-up and thumbs-down becomes a training signal. ThumbGate Pro exports your captured feedback as DPO (Direct Preference Optimization) pairs — ready to feed into a LoRA fine-tune so your model stops repeating known mistakes at the weight level, not just the gate level.
|
|
297
|
+
|
|
298
|
+
**Export DPO pairs:**
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
curl -X POST http://localhost:3456/v1/dpo/export \
|
|
302
|
+
-H "Authorization: Bearer $THUMBGATE_API_KEY" \
|
|
303
|
+
-o dpo-pairs.jsonl
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
**What you get:** JSONL where each line is a preference pair:
|
|
307
|
+
- `chosen` — the agent action you thumbed up
|
|
308
|
+
- `rejected` — the action you thumbed down for the same task context
|
|
309
|
+
- `prompt` — the originating user intent
|
|
310
|
+
|
|
311
|
+
**Use cases:**
|
|
312
|
+
- Fine-tune Llama 3 / Mistral / local models with a LoRA adapter trained on your real mistakes
|
|
313
|
+
- Feed into RLAIF or KTO pipelines (KTO export also available via `/v1/kto/export`)
|
|
314
|
+
- Build a model that natively avoids your team's known failure patterns — no gate at inference time needed
|
|
315
|
+
|
|
316
|
+
**Why this matters:** Gates block mistakes. Fine-tuning prevents them from being attempted. Combine both for belt-and-suspenders governance.
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
292
320
|
## Tech Stack
|
|
293
321
|
|
|
294
322
|
| Layer | Technology |
|
|
295
323
|
|-------|-----------|
|
|
296
324
|
| **Storage** | SQLite + FTS5, LanceDB vectors, JSONL logs |
|
|
297
|
-
| **Capture** | 3 feedback
|
|
325
|
+
| **Capture** | 3 feedback captures lifetime (free), unlimited (Pro) |
|
|
298
326
|
| **Intelligence** | MemAlign dual recall, Thompson Sampling |
|
|
299
327
|
| **Enforcement** | PreToolUse hook engine, Gates config |
|
|
300
328
|
| **Interfaces** | MCP stdio, HTTP API, CLI (Node.js >=18) |
|
|
@@ -352,7 +380,9 @@ Those are suggestions the agent can ignore. ThumbGate gates are enforced — the
|
|
|
352
380
|
If it supports MCP or pre-action hooks, yes. Claude Code, Claude Desktop, Cursor, Codex, Gemini CLI, Amp, OpenCode all work out of the box.
|
|
353
381
|
|
|
354
382
|
**Is it free?**
|
|
355
|
-
The free tier gives you 3
|
|
383
|
+
The free tier gives you 3 lifetime feedback captures and 1 auto-promoted prevention rule — enough to prove the enforcement loop works. MCP integrations ship free for every agent.
|
|
384
|
+
|
|
385
|
+
Pro ($19/mo or $149/yr) lifts those caps and adds history-aware lesson recall, lesson search, and a personal dashboard. Team ($49/seat/mo) adds a shared hosted lesson DB, org dashboard, and shared enforcement.
|
|
356
386
|
|
|
357
387
|
---
|
|
358
388
|
|
package/adapters/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
- `chatgpt/openapi.yaml`: import into GPT Actions.
|
|
4
4
|
- `gemini/function-declarations.json`: Gemini function-calling definitions.
|
|
5
5
|
- `mcp/server-stdio.js`: underlying local MCP stdio server implementation.
|
|
6
|
-
- `claude/.mcp.json`: example Claude Code MCP config using `npx --yes --package thumbgate@1.5.
|
|
6
|
+
- `claude/.mcp.json`: example Claude Code MCP config using `npx --yes --package thumbgate@1.5.3 thumbgate serve`.
|
|
7
7
|
- `codex/config.toml`: example Codex MCP profile section using the same version-pinned portable launcher.
|
|
8
8
|
- `amp/skills/thumbgate-feedback/SKILL.md`: Amp skill template.
|
|
9
9
|
- `opencode/opencode.json`: portable OpenCode MCP profile using the same version-pinned portable launcher.
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"thumbgate": {
|
|
4
4
|
"command": "npx",
|
|
5
|
-
"args": ["--yes", "--package", "thumbgate@1.5.
|
|
5
|
+
"args": ["--yes", "--package", "thumbgate@1.5.3", "thumbgate", "serve"]
|
|
6
6
|
}
|
|
7
7
|
},
|
|
8
8
|
"hooks": {
|
|
9
9
|
"preToolUse": {
|
|
10
10
|
"command": "npx",
|
|
11
|
-
"args": ["--yes", "--package", "thumbgate@1.5.
|
|
11
|
+
"args": ["--yes", "--package", "thumbgate@1.5.3", "thumbgate", "gate-check"]
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
# ~/.codex/config.json with the ThumbGate hooks and status line.
|
|
4
4
|
[mcp_servers.thumbgate]
|
|
5
5
|
command = "npx"
|
|
6
|
-
args = ["--yes", "--package", "thumbgate@1.5.
|
|
6
|
+
args = ["--yes", "--package", "thumbgate@1.5.3", "thumbgate", "serve"]
|
|
7
7
|
|
|
8
8
|
# Hard PreToolUse hook for Codex
|
|
9
9
|
[hooks.pre_tool_use]
|
|
10
10
|
command = "npx"
|
|
11
|
-
args = ["--yes", "--package", "thumbgate@1.5.
|
|
11
|
+
args = ["--yes", "--package", "thumbgate@1.5.3", "thumbgate", "gate-check"]
|
|
@@ -146,7 +146,7 @@ const {
|
|
|
146
146
|
finalizeSession: finalizeFeedbackSession,
|
|
147
147
|
} = require('../../scripts/feedback-session');
|
|
148
148
|
|
|
149
|
-
const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.5.
|
|
149
|
+
const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.5.3' };
|
|
150
150
|
const COMMERCE_CATEGORIES = [
|
|
151
151
|
'product_recommendation',
|
|
152
152
|
'brand_compliance',
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"name": "ThumbGate Prompt Evaluation",
|
|
4
|
+
"description": "Tests core ThumbGate prompts against expected outputs. Based on Anthropic prompt evaluation methodology: test against expected answers, compare versions, review outputs for errors.",
|
|
5
|
+
"evaluations": [
|
|
6
|
+
{
|
|
7
|
+
"id": "lesson-distill-negative-clear",
|
|
8
|
+
"prompt": "lesson-distillation",
|
|
9
|
+
"input": {
|
|
10
|
+
"signal": "negative",
|
|
11
|
+
"context": "Exited git worktree and switched branches in user's main repo",
|
|
12
|
+
"whatWentWrong": "Created a worktree but when the commit was empty, exited the worktree and ran git checkout on a different branch in the user's main repo. Violated explicit instruction to stay in worktree.",
|
|
13
|
+
"whatToChange": "When told to work in a worktree, NEVER exit and touch the main repo."
|
|
14
|
+
},
|
|
15
|
+
"expectedOutput": {
|
|
16
|
+
"hasTitle": true,
|
|
17
|
+
"titleContains": ["worktree", "branch"],
|
|
18
|
+
"hasContent": true,
|
|
19
|
+
"contentContains": ["NEVER", "worktree"],
|
|
20
|
+
"category": "error",
|
|
21
|
+
"importance": "high"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "lesson-distill-negative-vague",
|
|
26
|
+
"prompt": "lesson-distillation",
|
|
27
|
+
"input": {
|
|
28
|
+
"signal": "negative",
|
|
29
|
+
"context": "thumbs down",
|
|
30
|
+
"whatWentWrong": "",
|
|
31
|
+
"whatToChange": ""
|
|
32
|
+
},
|
|
33
|
+
"expectedOutput": {
|
|
34
|
+
"shouldReject": true,
|
|
35
|
+
"rejectReason": "vague"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "lesson-distill-positive",
|
|
40
|
+
"prompt": "lesson-distillation",
|
|
41
|
+
"input": {
|
|
42
|
+
"signal": "positive",
|
|
43
|
+
"context": "Used ThumbGate correctly - recall, capture_feedback, retrieve_lessons all called in parallel",
|
|
44
|
+
"whatWorked": "Called ThumbGate tools in parallel as required. Kept response concise."
|
|
45
|
+
},
|
|
46
|
+
"expectedOutput": {
|
|
47
|
+
"hasTitle": true,
|
|
48
|
+
"titleContains": ["ThumbGate", "parallel"],
|
|
49
|
+
"category": "learning",
|
|
50
|
+
"importance": "normal"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"id": "prevention-rule-repeated-mistake",
|
|
55
|
+
"prompt": "prevention-rule-generation",
|
|
56
|
+
"input": {
|
|
57
|
+
"pattern": "git-workflow",
|
|
58
|
+
"occurrences": 3,
|
|
59
|
+
"examples": [
|
|
60
|
+
"Switched branches in main repo instead of worktree",
|
|
61
|
+
"Exited worktree and touched main repo",
|
|
62
|
+
"Checked out different branch in user's workspace"
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
"expectedOutput": {
|
|
66
|
+
"hasRule": true,
|
|
67
|
+
"ruleContains": ["worktree", "NEVER"],
|
|
68
|
+
"actionType": "block",
|
|
69
|
+
"confidence": { "min": 0.7 }
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"id": "feedback-capture-enrichment",
|
|
74
|
+
"prompt": "feedback-enrichment",
|
|
75
|
+
"input": {
|
|
76
|
+
"signal": "negative",
|
|
77
|
+
"context": "Shipped broken charts with bogus data, used user as QA tester",
|
|
78
|
+
"tags": ["e2e-verification", "anti-lying"]
|
|
79
|
+
},
|
|
80
|
+
"expectedOutput": {
|
|
81
|
+
"hasDomain": true,
|
|
82
|
+
"domain": "testing",
|
|
83
|
+
"hasOutcome": true,
|
|
84
|
+
"outcomeContains": ["failure", "error"]
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"id": "self-distill-session-summary",
|
|
89
|
+
"prompt": "self-distillation",
|
|
90
|
+
"input": {
|
|
91
|
+
"sessionFeedback": [
|
|
92
|
+
{ "signal": "negative", "context": "Exited worktree" },
|
|
93
|
+
{ "signal": "negative", "context": "Didn't use ThumbGate at session start" },
|
|
94
|
+
{ "signal": "positive", "context": "Used ThumbGate correctly" },
|
|
95
|
+
{ "signal": "negative", "context": "Showed bogus data" }
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
"expectedOutput": {
|
|
99
|
+
"hasSummary": true,
|
|
100
|
+
"summaryContains": ["worktree", "ThumbGate"],
|
|
101
|
+
"identifiesPattern": true,
|
|
102
|
+
"suggestsImprovement": true
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "thumbgate",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.3",
|
|
4
4
|
"description": "Self-improving agent governance: type thumbs-up or thumbs-down on any AI agent action. ThumbGate turns every mistake into a prevention rule and blocks the pattern from repeating. One thumbs-down, never again. 33 pre-action gates, budget enforcement, and self-protection for Claude Code, Cursor, Codex, Gemini CLI, and Amp.",
|
|
5
5
|
"homepage": "https://thumbgate-production.up.railway.app",
|
|
6
6
|
"repository": {
|
|
@@ -15,28 +15,33 @@
|
|
|
15
15
|
"thumbgate": "bin/cli.js"
|
|
16
16
|
},
|
|
17
17
|
"files": [
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
18
|
+
".claude-plugin/README.md",
|
|
19
|
+
".claude-plugin/marketplace.json",
|
|
20
|
+
".claude-plugin/plugin.json",
|
|
21
|
+
".well-known/",
|
|
22
|
+
"CHANGELOG.md",
|
|
23
|
+
"LICENSE",
|
|
24
|
+
"README.md",
|
|
25
|
+
"adapters/amp/skills/thumbgate-feedback/SKILL.md",
|
|
22
26
|
"adapters/chatgpt/openapi.yaml",
|
|
23
|
-
"adapters/gemini/function-declarations.json",
|
|
24
27
|
"adapters/claude/.mcp.json",
|
|
25
28
|
"adapters/codex/config.toml",
|
|
26
|
-
"adapters/opencode/opencode.json",
|
|
27
|
-
"adapters/amp/skills/thumbgate-feedback/SKILL.md",
|
|
28
29
|
"adapters/forge/forge.yaml",
|
|
30
|
+
"adapters/gemini/function-declarations.json",
|
|
31
|
+
"adapters/mcp/server-stdio.js",
|
|
32
|
+
"adapters/opencode/opencode.json",
|
|
33
|
+
"bench/prompt-eval-suite.json",
|
|
34
|
+
"bin/cli.js",
|
|
35
|
+
"bin/postinstall.js",
|
|
29
36
|
"config/",
|
|
30
|
-
"skills/",
|
|
31
37
|
"openapi/",
|
|
32
|
-
".
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"
|
|
37
|
-
"LICENSE",
|
|
38
|
-
"scripts/agent-readiness.js",
|
|
38
|
+
"public/compare.html",
|
|
39
|
+
"public/dashboard.html",
|
|
40
|
+
"public/guide.html",
|
|
41
|
+
"public/index.html",
|
|
42
|
+
"public/lessons.html",
|
|
39
43
|
"scripts/access-anomaly-detector.js",
|
|
44
|
+
"scripts/agent-readiness.js",
|
|
40
45
|
"scripts/agentic-data-pipeline.js",
|
|
41
46
|
"scripts/analytics-report.js",
|
|
42
47
|
"scripts/analytics-window.js",
|
|
@@ -138,6 +143,7 @@
|
|
|
138
143
|
"scripts/problem-detail.js",
|
|
139
144
|
"scripts/product-feedback.js",
|
|
140
145
|
"scripts/profile-router.js",
|
|
146
|
+
"scripts/prompt-eval.js",
|
|
141
147
|
"scripts/prompt-guard.js",
|
|
142
148
|
"scripts/published-cli.js",
|
|
143
149
|
"scripts/pulse.js",
|
|
@@ -147,9 +153,6 @@
|
|
|
147
153
|
"scripts/rlaif-self-audit.js",
|
|
148
154
|
"scripts/rubric-engine.js",
|
|
149
155
|
"scripts/sales-pipeline.js",
|
|
150
|
-
"scripts/session-episode-store.js",
|
|
151
|
-
"scripts/session-health-sensor.js",
|
|
152
|
-
"scripts/spec-gate.js",
|
|
153
156
|
"scripts/secret-scanner.js",
|
|
154
157
|
"scripts/security-scanner.js",
|
|
155
158
|
"scripts/self-distill-agent.js",
|
|
@@ -157,21 +160,24 @@
|
|
|
157
160
|
"scripts/semantic-dedup.js",
|
|
158
161
|
"scripts/semantic-layer.js",
|
|
159
162
|
"scripts/seo-gsd.js",
|
|
163
|
+
"scripts/session-episode-store.js",
|
|
164
|
+
"scripts/session-health-sensor.js",
|
|
160
165
|
"scripts/settings-hierarchy.js",
|
|
161
166
|
"scripts/skill-generator.js",
|
|
162
167
|
"scripts/slo-alert-engine.js",
|
|
168
|
+
"scripts/spec-gate.js",
|
|
163
169
|
"scripts/statusline-cache-path.js",
|
|
164
170
|
"scripts/statusline-lesson.js",
|
|
165
171
|
"scripts/statusline-links.js",
|
|
166
172
|
"scripts/statusline-local-stats.js",
|
|
167
173
|
"scripts/statusline-meta.js",
|
|
168
|
-
"scripts/statusline.sh",
|
|
169
174
|
"scripts/statusline-tower.js",
|
|
175
|
+
"scripts/statusline.sh",
|
|
170
176
|
"scripts/telemetry-analytics.js",
|
|
171
177
|
"scripts/thompson-sampling.js",
|
|
172
178
|
"scripts/thumbgate-search.js",
|
|
173
|
-
"scripts/tool-registry.js",
|
|
174
179
|
"scripts/tool-kpi-tracker.js",
|
|
180
|
+
"scripts/tool-registry.js",
|
|
175
181
|
"scripts/user-profile.js",
|
|
176
182
|
"scripts/validate-workflow-contract.js",
|
|
177
183
|
"scripts/vector-store.js",
|
|
@@ -182,10 +188,8 @@
|
|
|
182
188
|
"scripts/workflow-sprint-intake.js",
|
|
183
189
|
"scripts/workspace-evolver.js",
|
|
184
190
|
"scripts/xmemory-lite.js",
|
|
185
|
-
"
|
|
186
|
-
"
|
|
187
|
-
"public/guide.html",
|
|
188
|
-
"public/compare.html"
|
|
191
|
+
"skills/",
|
|
192
|
+
"src/"
|
|
189
193
|
],
|
|
190
194
|
"scripts": {
|
|
191
195
|
"postinstall": "node bin/postinstall.js || true",
|
|
@@ -241,7 +245,7 @@
|
|
|
241
245
|
"trace:eval": "node scripts/decision-trace.js eval",
|
|
242
246
|
"social:reply-monitor": "node scripts/social-reply-monitor.js",
|
|
243
247
|
"social:reply-monitor:dry": "node scripts/social-reply-monitor.js --dry-run",
|
|
244
|
-
"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:session-analyzer && npm run test:tessl && npm run test:gates && npm run test:evoskill && npm run test:gates-hardening && npm run test:workers && npm run test:social-analytics && npm run test:memalign && npm run test:xmemory-lite && npm run test:filesystem-search && npm run test:zernio && npm run test:post-video && npm run test:post-everywhere-instagram && 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:operational-summary && npm run test:operator-key-auth && 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:cli-schema && npm run test:explore && npm run test:lesson-reranker && npm run test:lesson-retrieval && npm run test:cross-encoder && npm run test:reflector-agent && npm run test:feedback-session && npm run test:feedback-history-distiller && npm run test:hallucination-detector && npm run test:history-distiller && npm run test:predictive-insights && npm run test: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:perplexity && npm run test:security-scanner && npm run test:llm-client && npm run test:managed-lesson-agent && npm run test:self-distill && npm run test:meta-agent && npm run test:harness-selector && npm run test:thumbgate-bench && npm run test:seo-guides && npm run test:enforcement-loop && npm run test:cli-agent-experience && npm run test:bot-detection && npm run test:checkout-bot-guard && npm run test:session-health && npm run test:session-episodes && npm run test:spec-gate && npm run test:decision-trace && npm run test:dashboard-insights && npm run test:prompt-eval && npm run test:demo-voiceover && npm run test:gate-coherence && npm run test:gate-eval && npm run test:high-roi && npm run test:public-static-assets && npm run test:token-savings && npm run test:workflow-gate-checkpoint && npm run test:lesson-export-import",
|
|
248
|
+
"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:session-analyzer && npm run test:tessl && npm run test:gates && npm run test:evoskill && npm run test:gates-hardening && npm run test:workers && npm run test:social-analytics && npm run test:memalign && npm run test:xmemory-lite && npm run test:filesystem-search && npm run test:zernio && npm run test:post-video && npm run test:post-everywhere-instagram && 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:operational-summary && npm run test:operator-key-auth && 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:cli-schema && npm run test:explore && npm run test:lesson-reranker && npm run test:lesson-retrieval && npm run test:cross-encoder && npm run test:reflector-agent && npm run test:feedback-session && npm run test:feedback-history-distiller && npm run test:hallucination-detector && npm run test:history-distiller && npm run test:predictive-insights && npm run test: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:perplexity && npm run test:security-scanner && npm run test:llm-client && npm run test:managed-lesson-agent && npm run test:self-distill && npm run test:meta-agent && npm run test:harness-selector && npm run test:thumbgate-bench && npm run test:seo-guides && npm run test:enforcement-loop && npm run test:cli-agent-experience && npm run test:bot-detection && npm run test:checkout-bot-guard && npm run test:session-health && npm run test:session-episodes && npm run test:spec-gate && npm run test:decision-trace && npm run test:dashboard-insights && npm run test:prompt-eval && npm run test:demo-voiceover && npm run test:gate-coherence && npm run test:gate-eval && npm run test:high-roi && npm run test:public-static-assets && npm run test:token-savings && npm run test:workflow-gate-checkpoint && npm run test:lesson-export-import && npm run test:landing-page-claims && npm run test:dashboard-deeplink-e2e",
|
|
245
249
|
"test:session-health": "node --test tests/session-health-sensor.test.js",
|
|
246
250
|
"test:session-episodes": "node --test tests/session-episode-store.test.js",
|
|
247
251
|
"test:spec-gate": "node --test tests/spec-gate.test.js",
|
|
@@ -336,6 +340,9 @@
|
|
|
336
340
|
"feedback:summary": "npm run test:api && node scripts/feedback-to-rules.js",
|
|
337
341
|
"feedback:rules": "node scripts/feedback-to-rules.js --rules",
|
|
338
342
|
"feedback:stats": "node .claude/scripts/feedback/capture-feedback.js --stats",
|
|
343
|
+
"demo:narration": "node scripts/render-demo-video/generate-narration.js",
|
|
344
|
+
"demo:render": "node scripts/render-demo-video/render.js",
|
|
345
|
+
"demo:render:full": "npm run demo:narration && npm run demo:render",
|
|
339
346
|
"adk:consolidate": "node scripts/adk-consolidator.js",
|
|
340
347
|
"adk:watch": "node scripts/adk-consolidator.js --watch",
|
|
341
348
|
"pr:manage": "node scripts/pr-manager.js",
|
|
@@ -472,7 +479,9 @@
|
|
|
472
479
|
"test:public-static-assets": "node --test tests/public-static-assets.test.js",
|
|
473
480
|
"test:token-savings": "node --test tests/token-savings.test.js",
|
|
474
481
|
"test:workflow-gate-checkpoint": "node --test tests/workflow-gate-checkpoint.test.js",
|
|
475
|
-
"test:lesson-export-import": "node --test tests/lesson-export-import.test.js"
|
|
482
|
+
"test:lesson-export-import": "node --test tests/lesson-export-import.test.js",
|
|
483
|
+
"test:landing-page-claims": "node --test tests/landing-page-claims.test.js",
|
|
484
|
+
"test:dashboard-deeplink-e2e": "node --test tests/dashboard-deeplink-e2e.test.js"
|
|
476
485
|
},
|
|
477
486
|
"keywords": [
|
|
478
487
|
"mcp",
|