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/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/day | 3 | Unlimited | Unlimited |
225
- | Prevention rules | 1 | Unlimited | Unlimited |
226
- | Agent connections | 1 | Unlimited | Unlimited |
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, 1 rule, and 1 agent — enough to prove the enforcement loop works. Pro is $19/mo or $149/yr for unlimited everything plus a dashboard and history-aware lesson recall. Team is $49/seat/mo with shared hosted lesson DB, org dashboard, and shared enforcement. Pro and Team include open_feedback_session, append_feedback_context, and finalize_feedback_session for structured multi-turn feedback capture.
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 capture/day (free), unlimited (Pro) |
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 captures/day, 1 rule, and 1 agent — enough to prove the enforcement loop works. Pro is $19/mo or $149/yr for unlimited everything plus a dashboard. Team is $49/seat/mo with shared hosted lesson DB, org dashboard, and shared enforcement.
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
 
@@ -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.1 thumbgate serve`.
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.1", "thumbgate", "serve"]
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.1", "thumbgate", "gate-check"]
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.1", "thumbgate", "serve"]
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.1", "thumbgate", "gate-check"]
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.1' };
149
+ const SERVER_INFO = { name: 'thumbgate-mcp', version: '1.5.3' };
150
150
  const COMMERCE_CATEGORIES = [
151
151
  'product_recommendation',
152
152
  'brand_compliance',
@@ -7,7 +7,7 @@
7
7
  "npx",
8
8
  "--yes",
9
9
  "--package",
10
- "thumbgate@1.5.1",
10
+ "thumbgate@1.5.3",
11
11
  "thumbgate",
12
12
  "serve"
13
13
  ],
@@ -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.1",
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
- "bin/cli.js",
19
- "bin/postinstall.js",
20
- "src/",
21
- "adapters/mcp/server-stdio.js",
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
- ".well-known/",
33
- ".claude-plugin/plugin.json",
34
- ".claude-plugin/marketplace.json",
35
- ".claude-plugin/README.md",
36
- "README.md",
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
- "public/lessons.html",
186
- "public/index.html",
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",