@vibecheckai/cli 3.4.0 → 3.5.1
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/bin/registry.js +154 -338
- package/bin/runners/context/generators/mcp.js +13 -15
- package/bin/runners/context/proof-context.js +1 -248
- package/bin/runners/lib/analysis-core.js +180 -198
- package/bin/runners/lib/analyzers.js +223 -1669
- package/bin/runners/lib/cli-output.js +210 -242
- package/bin/runners/lib/detectors-v2.js +785 -547
- package/bin/runners/lib/entitlements-v2.js +458 -96
- package/bin/runners/lib/error-handler.js +9 -16
- package/bin/runners/lib/global-flags.js +0 -37
- package/bin/runners/lib/route-truth.js +322 -1167
- package/bin/runners/lib/scan-output.js +469 -448
- package/bin/runners/lib/ship-output.js +27 -280
- package/bin/runners/lib/terminal-ui.js +733 -231
- package/bin/runners/lib/truth.js +321 -1004
- package/bin/runners/lib/unified-output.js +158 -162
- package/bin/runners/lib/upsell.js +204 -104
- package/bin/runners/runAllowlist.js +324 -0
- package/bin/runners/runAuth.js +95 -324
- package/bin/runners/runCheckpoint.js +21 -39
- package/bin/runners/runContext.js +24 -136
- package/bin/runners/runDoctor.js +67 -115
- package/bin/runners/runEvidencePack.js +219 -0
- package/bin/runners/runFix.js +5 -6
- package/bin/runners/runGuard.js +118 -212
- package/bin/runners/runInit.js +2 -14
- package/bin/runners/runInstall.js +281 -0
- package/bin/runners/runLabs.js +341 -0
- package/bin/runners/runMcp.js +52 -130
- package/bin/runners/runPolish.js +20 -43
- package/bin/runners/runProve.js +3 -13
- package/bin/runners/runReality.js +0 -14
- package/bin/runners/runReport.js +2 -3
- package/bin/runners/runScan.js +44 -511
- package/bin/runners/runShip.js +14 -28
- package/bin/runners/runValidate.js +2 -19
- package/bin/runners/runWatch.js +54 -118
- package/bin/vibecheck.js +41 -148
- package/mcp-server/ARCHITECTURE.md +339 -0
- package/mcp-server/__tests__/cache.test.ts +313 -0
- package/mcp-server/__tests__/executor.test.ts +239 -0
- package/mcp-server/__tests__/fixtures/exclusion-test/.cache/webpack/cache.pack +1 -0
- package/mcp-server/__tests__/fixtures/exclusion-test/.next/server/chunk.js +3 -0
- package/mcp-server/__tests__/fixtures/exclusion-test/.turbo/cache.json +3 -0
- package/mcp-server/__tests__/fixtures/exclusion-test/.venv/lib/env.py +3 -0
- package/mcp-server/__tests__/fixtures/exclusion-test/dist/bundle.js +3 -0
- package/mcp-server/__tests__/fixtures/exclusion-test/package.json +5 -0
- package/mcp-server/__tests__/fixtures/exclusion-test/src/app.ts +5 -0
- package/mcp-server/__tests__/fixtures/exclusion-test/venv/lib/config.py +4 -0
- package/mcp-server/__tests__/ids.test.ts +345 -0
- package/mcp-server/__tests__/integration/tools.test.ts +410 -0
- package/mcp-server/__tests__/registry.test.ts +365 -0
- package/mcp-server/__tests__/sandbox.test.ts +323 -0
- package/mcp-server/__tests__/schemas.test.ts +372 -0
- package/mcp-server/benchmarks/run-benchmarks.ts +304 -0
- package/mcp-server/examples/doctor.request.json +14 -0
- package/mcp-server/examples/doctor.response.json +53 -0
- package/mcp-server/examples/error.response.json +15 -0
- package/mcp-server/examples/scan.request.json +14 -0
- package/mcp-server/examples/scan.response.json +108 -0
- package/mcp-server/handlers/tool-handler.ts +671 -0
- package/mcp-server/index-v3.ts +293 -0
- package/mcp-server/index.js +1072 -1573
- package/mcp-server/index.old.js +4137 -0
- package/mcp-server/lib/cache.ts +341 -0
- package/mcp-server/lib/errors.ts +346 -0
- package/mcp-server/lib/executor.ts +792 -0
- package/mcp-server/lib/ids.ts +238 -0
- package/mcp-server/lib/logger.ts +368 -0
- package/mcp-server/lib/metrics.ts +365 -0
- package/mcp-server/lib/sandbox.ts +337 -0
- package/mcp-server/lib/validator.ts +229 -0
- package/mcp-server/package-lock.json +165 -0
- package/mcp-server/package.json +32 -7
- package/mcp-server/premium-tools.js +2 -2
- package/mcp-server/registry/tools.json +476 -0
- package/mcp-server/schemas/error-envelope.schema.json +125 -0
- package/mcp-server/schemas/finding.schema.json +167 -0
- package/mcp-server/schemas/report-artifact.schema.json +88 -0
- package/mcp-server/schemas/run-request.schema.json +75 -0
- package/mcp-server/schemas/verdict.schema.json +168 -0
- package/mcp-server/tier-auth.d.ts +71 -0
- package/mcp-server/tier-auth.js +371 -183
- package/mcp-server/truth-context.js +90 -131
- package/mcp-server/truth-firewall-tools.js +1000 -1611
- package/mcp-server/tsconfig.json +34 -0
- package/mcp-server/vibecheck-tools.js +2 -2
- package/mcp-server/vitest.config.ts +16 -0
- package/package.json +3 -4
- package/bin/runners/lib/agent-firewall/ai/false-positive-analyzer.js +0 -474
- package/bin/runners/lib/agent-firewall/change-packet/builder.js +0 -488
- package/bin/runners/lib/agent-firewall/change-packet/schema.json +0 -228
- package/bin/runners/lib/agent-firewall/change-packet/store.js +0 -200
- package/bin/runners/lib/agent-firewall/claims/claim-types.js +0 -21
- package/bin/runners/lib/agent-firewall/claims/extractor.js +0 -303
- package/bin/runners/lib/agent-firewall/claims/patterns.js +0 -24
- package/bin/runners/lib/agent-firewall/critic/index.js +0 -151
- package/bin/runners/lib/agent-firewall/critic/judge.js +0 -432
- package/bin/runners/lib/agent-firewall/critic/prompts.js +0 -305
- package/bin/runners/lib/agent-firewall/evidence/auth-evidence.js +0 -88
- package/bin/runners/lib/agent-firewall/evidence/contract-evidence.js +0 -75
- package/bin/runners/lib/agent-firewall/evidence/env-evidence.js +0 -127
- package/bin/runners/lib/agent-firewall/evidence/resolver.js +0 -102
- package/bin/runners/lib/agent-firewall/evidence/route-evidence.js +0 -213
- package/bin/runners/lib/agent-firewall/evidence/side-effect-evidence.js +0 -145
- package/bin/runners/lib/agent-firewall/fs-hook/daemon.js +0 -19
- package/bin/runners/lib/agent-firewall/fs-hook/installer.js +0 -87
- package/bin/runners/lib/agent-firewall/fs-hook/watcher.js +0 -184
- package/bin/runners/lib/agent-firewall/git-hook/pre-commit.js +0 -163
- package/bin/runners/lib/agent-firewall/ide-extension/cursor.js +0 -107
- package/bin/runners/lib/agent-firewall/ide-extension/vscode.js +0 -68
- package/bin/runners/lib/agent-firewall/ide-extension/windsurf.js +0 -66
- package/bin/runners/lib/agent-firewall/interceptor/base.js +0 -304
- package/bin/runners/lib/agent-firewall/interceptor/cursor.js +0 -35
- package/bin/runners/lib/agent-firewall/interceptor/vscode.js +0 -35
- package/bin/runners/lib/agent-firewall/interceptor/windsurf.js +0 -34
- package/bin/runners/lib/agent-firewall/lawbook/distributor.js +0 -465
- package/bin/runners/lib/agent-firewall/lawbook/evaluator.js +0 -604
- package/bin/runners/lib/agent-firewall/lawbook/index.js +0 -304
- package/bin/runners/lib/agent-firewall/lawbook/registry.js +0 -514
- package/bin/runners/lib/agent-firewall/lawbook/schema.js +0 -420
- package/bin/runners/lib/agent-firewall/logger.js +0 -141
- package/bin/runners/lib/agent-firewall/policy/default-policy.json +0 -90
- package/bin/runners/lib/agent-firewall/policy/engine.js +0 -103
- package/bin/runners/lib/agent-firewall/policy/loader.js +0 -451
- package/bin/runners/lib/agent-firewall/policy/rules/auth-drift.js +0 -50
- package/bin/runners/lib/agent-firewall/policy/rules/contract-drift.js +0 -50
- package/bin/runners/lib/agent-firewall/policy/rules/fake-success.js +0 -86
- package/bin/runners/lib/agent-firewall/policy/rules/ghost-env.js +0 -162
- package/bin/runners/lib/agent-firewall/policy/rules/ghost-route.js +0 -189
- package/bin/runners/lib/agent-firewall/policy/rules/scope.js +0 -93
- package/bin/runners/lib/agent-firewall/policy/rules/unsafe-side-effect.js +0 -57
- package/bin/runners/lib/agent-firewall/policy/schema.json +0 -183
- package/bin/runners/lib/agent-firewall/policy/verdict.js +0 -54
- package/bin/runners/lib/agent-firewall/proposal/extractor.js +0 -394
- package/bin/runners/lib/agent-firewall/proposal/index.js +0 -212
- package/bin/runners/lib/agent-firewall/proposal/schema.js +0 -251
- package/bin/runners/lib/agent-firewall/proposal/validator.js +0 -386
- package/bin/runners/lib/agent-firewall/reality/index.js +0 -332
- package/bin/runners/lib/agent-firewall/reality/state.js +0 -625
- package/bin/runners/lib/agent-firewall/reality/watcher.js +0 -322
- package/bin/runners/lib/agent-firewall/risk/index.js +0 -173
- package/bin/runners/lib/agent-firewall/risk/scorer.js +0 -328
- package/bin/runners/lib/agent-firewall/risk/thresholds.js +0 -321
- package/bin/runners/lib/agent-firewall/risk/vectors.js +0 -421
- package/bin/runners/lib/agent-firewall/simulator/diff-simulator.js +0 -472
- package/bin/runners/lib/agent-firewall/simulator/import-resolver.js +0 -346
- package/bin/runners/lib/agent-firewall/simulator/index.js +0 -181
- package/bin/runners/lib/agent-firewall/simulator/route-validator.js +0 -380
- package/bin/runners/lib/agent-firewall/time-machine/incident-correlator.js +0 -661
- package/bin/runners/lib/agent-firewall/time-machine/index.js +0 -267
- package/bin/runners/lib/agent-firewall/time-machine/replay-engine.js +0 -436
- package/bin/runners/lib/agent-firewall/time-machine/state-reconstructor.js +0 -490
- package/bin/runners/lib/agent-firewall/time-machine/timeline-builder.js +0 -530
- package/bin/runners/lib/agent-firewall/truthpack/index.js +0 -67
- package/bin/runners/lib/agent-firewall/truthpack/loader.js +0 -137
- package/bin/runners/lib/agent-firewall/unblock/planner.js +0 -337
- package/bin/runners/lib/agent-firewall/utils/ignore-checker.js +0 -118
- package/bin/runners/lib/api-client.js +0 -269
- package/bin/runners/lib/authority-badge.js +0 -425
- package/bin/runners/lib/engines/accessibility-engine.js +0 -190
- package/bin/runners/lib/engines/api-consistency-engine.js +0 -162
- package/bin/runners/lib/engines/ast-cache.js +0 -99
- package/bin/runners/lib/engines/code-quality-engine.js +0 -255
- package/bin/runners/lib/engines/console-logs-engine.js +0 -115
- package/bin/runners/lib/engines/cross-file-analysis-engine.js +0 -268
- package/bin/runners/lib/engines/dead-code-engine.js +0 -198
- package/bin/runners/lib/engines/deprecated-api-engine.js +0 -226
- package/bin/runners/lib/engines/empty-catch-engine.js +0 -150
- package/bin/runners/lib/engines/file-filter.js +0 -131
- package/bin/runners/lib/engines/hardcoded-secrets-engine.js +0 -251
- package/bin/runners/lib/engines/mock-data-engine.js +0 -272
- package/bin/runners/lib/engines/parallel-processor.js +0 -71
- package/bin/runners/lib/engines/performance-issues-engine.js +0 -265
- package/bin/runners/lib/engines/security-vulnerabilities-engine.js +0 -243
- package/bin/runners/lib/engines/todo-fixme-engine.js +0 -115
- package/bin/runners/lib/engines/type-aware-engine.js +0 -152
- package/bin/runners/lib/engines/unsafe-regex-engine.js +0 -225
- package/bin/runners/lib/engines/vibecheck-engines/README.md +0 -53
- package/bin/runners/lib/engines/vibecheck-engines/index.js +0 -15
- package/bin/runners/lib/engines/vibecheck-engines/lib/ast-cache.js +0 -164
- package/bin/runners/lib/engines/vibecheck-engines/lib/code-quality-engine.js +0 -291
- package/bin/runners/lib/engines/vibecheck-engines/lib/console-logs-engine.js +0 -83
- package/bin/runners/lib/engines/vibecheck-engines/lib/dead-code-engine.js +0 -198
- package/bin/runners/lib/engines/vibecheck-engines/lib/deprecated-api-engine.js +0 -275
- package/bin/runners/lib/engines/vibecheck-engines/lib/empty-catch-engine.js +0 -167
- package/bin/runners/lib/engines/vibecheck-engines/lib/file-filter.js +0 -217
- package/bin/runners/lib/engines/vibecheck-engines/lib/hardcoded-secrets-engine.js +0 -139
- package/bin/runners/lib/engines/vibecheck-engines/lib/mock-data-engine.js +0 -140
- package/bin/runners/lib/engines/vibecheck-engines/lib/parallel-processor.js +0 -164
- package/bin/runners/lib/engines/vibecheck-engines/lib/performance-issues-engine.js +0 -234
- package/bin/runners/lib/engines/vibecheck-engines/lib/type-aware-engine.js +0 -217
- package/bin/runners/lib/engines/vibecheck-engines/lib/unsafe-regex-engine.js +0 -78
- package/bin/runners/lib/engines/vibecheck-engines/package.json +0 -13
- package/bin/runners/lib/exit-codes.js +0 -275
- package/bin/runners/lib/fingerprint.js +0 -377
- package/bin/runners/lib/help-formatter.js +0 -413
- package/bin/runners/lib/logger.js +0 -38
- package/bin/runners/lib/ship-output-enterprise.js +0 -239
- package/bin/runners/lib/unified-cli-output.js +0 -604
- package/bin/runners/runAgent.d.ts +0 -5
- package/bin/runners/runAgent.js +0 -161
- package/bin/runners/runApprove.js +0 -1200
- package/bin/runners/runClassify.js +0 -859
- package/bin/runners/runContext.d.ts +0 -4
- package/bin/runners/runFirewall.d.ts +0 -5
- package/bin/runners/runFirewall.js +0 -134
- package/bin/runners/runFirewallHook.d.ts +0 -5
- package/bin/runners/runFirewallHook.js +0 -56
- package/bin/runners/runPolish.d.ts +0 -4
- package/bin/runners/runProof.zip +0 -0
- package/bin/runners/runTruth.d.ts +0 -5
- package/bin/runners/runTruth.js +0 -101
- package/mcp-server/HARDENING_SUMMARY.md +0 -299
- package/mcp-server/agent-firewall-interceptor.js +0 -500
- package/mcp-server/authority-tools.js +0 -569
- package/mcp-server/conductor/conflict-resolver.js +0 -588
- package/mcp-server/conductor/execution-planner.js +0 -544
- package/mcp-server/conductor/index.js +0 -377
- package/mcp-server/conductor/lock-manager.js +0 -615
- package/mcp-server/conductor/request-queue.js +0 -550
- package/mcp-server/conductor/session-manager.js +0 -500
- package/mcp-server/conductor/tools.js +0 -510
- package/mcp-server/lib/api-client.cjs +0 -13
- package/mcp-server/lib/logger.cjs +0 -30
- package/mcp-server/logger.js +0 -173
- package/mcp-server/tools-v3.js +0 -706
- package/mcp-server/vibecheck-mcp-server-3.2.0.tgz +0 -0
package/bin/registry.js
CHANGED
|
@@ -1,43 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Vibecheck CLI Command Registry
|
|
2
|
+
* Vibecheck CLI Command Registry (LOCKED)
|
|
3
3
|
*
|
|
4
4
|
* Single source of truth for the public CLI surface.
|
|
5
5
|
* If it isn't here, it does not exist.
|
|
6
|
-
*
|
|
7
|
-
* Simple 2-tier model:
|
|
8
|
-
* - FREE ($0): Inspect & Observe
|
|
9
|
-
* - PRO ($69/mo): Fix, Prove & Enforce
|
|
10
6
|
*/
|
|
11
7
|
|
|
12
8
|
"use strict";
|
|
13
9
|
|
|
14
10
|
// ─────────────────────────────────────────────────────────────
|
|
15
|
-
//
|
|
11
|
+
// CORE 13 + APPROVED EXTRAS (locked surface area)
|
|
16
12
|
// ─────────────────────────────────────────────────────────────
|
|
17
13
|
const ALLOWED_COMMANDS = new Set([
|
|
18
|
-
//
|
|
19
|
-
"init",
|
|
20
|
-
"doctor",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
"
|
|
14
|
+
// Core 13
|
|
15
|
+
"init",
|
|
16
|
+
"doctor",
|
|
17
|
+
"scan",
|
|
18
|
+
"report",
|
|
19
|
+
"fix",
|
|
20
|
+
"watch",
|
|
21
|
+
"checkpoint",
|
|
22
|
+
"polish",
|
|
23
|
+
"ship",
|
|
24
|
+
"prove", // replaces ctx
|
|
25
|
+
"reality", // runtime crawl
|
|
26
|
+
"context",
|
|
27
|
+
"guard",
|
|
28
|
+
|
|
29
|
+
// Proof artifacts (new)
|
|
30
|
+
"evidence-pack",
|
|
31
|
+
"allowlist",
|
|
32
|
+
|
|
33
|
+
// Approved extras
|
|
34
|
+
"mcp",
|
|
35
|
+
"login",
|
|
36
|
+
"logout",
|
|
37
|
+
"whoami",
|
|
38
|
+
"ai-test",
|
|
39
|
+
"labs",
|
|
41
40
|
]);
|
|
42
41
|
|
|
43
42
|
function assertAllowedOnly(obj) {
|
|
@@ -48,424 +47,241 @@ function assertAllowedOnly(obj) {
|
|
|
48
47
|
}
|
|
49
48
|
|
|
50
49
|
// ─────────────────────────────────────────────────────────────
|
|
51
|
-
// COMMANDS
|
|
50
|
+
// COMMANDS (ALLOWED ONLY)
|
|
52
51
|
// ─────────────────────────────────────────────────────────────
|
|
53
52
|
const COMMANDS = {
|
|
54
|
-
//
|
|
55
|
-
// FREE TIER - Inspect & Observe
|
|
56
|
-
// ══════════════════════════════════════════════════════════════
|
|
57
|
-
|
|
53
|
+
// ── SETUP ───────────────────────────────────────────────────
|
|
58
54
|
init: {
|
|
59
55
|
description: "One-time setup (config + contracts + scripts)",
|
|
60
|
-
longDescription: "Initialize vibecheck in your project. Creates configuration files, sets up IDE rules, and optionally connects to the dashboard.",
|
|
61
56
|
tier: "free",
|
|
62
57
|
category: "setup",
|
|
63
58
|
aliases: ["setup", "configure"],
|
|
64
59
|
runner: () => require("./runners/runInit").runInit,
|
|
65
|
-
examples: [
|
|
66
|
-
{ command: "vibecheck init", description: "Interactive setup wizard" },
|
|
67
|
-
{ command: "vibecheck init --local", description: "Quick local-only setup" },
|
|
68
|
-
{ command: "vibecheck init --quick", description: "Non-interactive defaults" },
|
|
69
|
-
],
|
|
70
|
-
related: ["doctor", "scan"],
|
|
71
60
|
},
|
|
72
61
|
|
|
73
62
|
doctor: {
|
|
74
63
|
description: "Environment + dependency + config health check",
|
|
75
|
-
longDescription: "Comprehensive diagnostics for your development environment.",
|
|
76
64
|
tier: "free",
|
|
77
65
|
category: "setup",
|
|
78
66
|
aliases: ["health", "diag"],
|
|
79
67
|
runner: () => require("./runners/runDoctor").runDoctor,
|
|
80
|
-
examples: [
|
|
81
|
-
{ command: "vibecheck doctor", description: "Run all health checks" },
|
|
82
|
-
{ command: "vibecheck doctor --fix", description: "Auto-fix detected issues" },
|
|
83
|
-
{ command: "vibecheck doctor --json", description: "Output as JSON" },
|
|
84
|
-
],
|
|
85
|
-
related: ["init", "scan"],
|
|
86
68
|
},
|
|
87
69
|
|
|
88
70
|
watch: {
|
|
89
71
|
description: "Continuous mode - re-runs on changes",
|
|
90
|
-
longDescription: "File watcher that automatically re-runs scans when your code changes.",
|
|
91
72
|
tier: "free",
|
|
92
73
|
category: "setup",
|
|
93
74
|
aliases: ["w", "dev"],
|
|
94
75
|
runner: () => require("./runners/runWatch").runWatch,
|
|
95
|
-
examples: [
|
|
96
|
-
{ command: "vibecheck watch", description: "Start watching" },
|
|
97
|
-
{ command: "vibecheck watch --path ./src", description: "Watch specific directory" },
|
|
98
|
-
],
|
|
99
|
-
related: ["scan"],
|
|
100
76
|
},
|
|
101
77
|
|
|
78
|
+
// ── ANALYSIS ────────────────────────────────────────────────
|
|
79
|
+
checkpoint: {
|
|
80
|
+
description: "Compare baseline vs current, hallucination scoring",
|
|
81
|
+
tier: "free",
|
|
82
|
+
category: "analysis",
|
|
83
|
+
aliases: ["cp", "compare", "diff"],
|
|
84
|
+
caps: "basic on FREE, hallucination scoring on PRO",
|
|
85
|
+
runner: () => require("./runners/runCheckpoint").runCheckpoint,
|
|
86
|
+
},
|
|
87
|
+
|
|
88
|
+
// ── PROOF LOOP ──────────────────────────────────────────────
|
|
102
89
|
scan: {
|
|
103
|
-
description: "
|
|
104
|
-
longDescription: "Scan your codebase for route integrity issues, security vulnerabilities, and code quality problems.",
|
|
90
|
+
description: "Route integrity & code analysis scanner",
|
|
105
91
|
tier: "free",
|
|
106
92
|
category: "proof",
|
|
107
93
|
aliases: ["s", "check"],
|
|
108
94
|
runner: () => require("./runners/runScan").runScan,
|
|
109
|
-
examples: [
|
|
110
|
-
{ command: "vibecheck scan", description: "Quick scan" },
|
|
111
|
-
{ command: "vibecheck scan --profile full", description: "Full scan" },
|
|
112
|
-
{ command: "vibecheck scan --allowlist list", description: "View suppressed findings" },
|
|
113
|
-
],
|
|
114
|
-
related: ["ship", "fix", "report"],
|
|
115
95
|
},
|
|
116
96
|
|
|
117
97
|
report: {
|
|
118
98
|
description: "Generate HTML/MD/SARIF reports",
|
|
119
|
-
longDescription: "Create shareable reports from scan results.",
|
|
120
99
|
tier: "free",
|
|
121
100
|
category: "output",
|
|
101
|
+
caps: "HTML/MD only on FREE",
|
|
122
102
|
aliases: ["html", "artifact"],
|
|
123
103
|
runner: () => require("./runners/runReport").runReport,
|
|
124
|
-
examples: [
|
|
125
|
-
{ command: "vibecheck report", description: "Generate HTML report" },
|
|
126
|
-
{ command: "vibecheck report --format md", description: "Markdown report" },
|
|
127
|
-
{ command: "vibecheck report --format sarif", description: "SARIF for GitHub" },
|
|
128
|
-
],
|
|
129
|
-
related: ["scan"],
|
|
130
|
-
},
|
|
131
|
-
|
|
132
|
-
context: {
|
|
133
|
-
description: "Generate IDE rules (.cursorrules, MDC, Copilot)",
|
|
134
|
-
longDescription: "Generate project-aware AI coding rules for your IDE.",
|
|
135
|
-
tier: "free",
|
|
136
|
-
category: "truth",
|
|
137
|
-
aliases: ["rules", "ai-rules", "mdc", "ctx"],
|
|
138
|
-
runner: () => require("./runners/runContext").runContext,
|
|
139
|
-
examples: [
|
|
140
|
-
{ command: "vibecheck context", description: "Generate all IDE rules" },
|
|
141
|
-
{ command: "vibecheck context --format cursor", description: ".cursorrules only" },
|
|
142
|
-
],
|
|
143
|
-
related: ["scan", "guard"],
|
|
144
|
-
},
|
|
145
|
-
|
|
146
|
-
classify: {
|
|
147
|
-
description: "Inventory authority - duplication & legacy code maps",
|
|
148
|
-
longDescription: "Read-only inventory of your codebase including duplication maps and legacy code detection.",
|
|
149
|
-
tier: "free",
|
|
150
|
-
category: "authority",
|
|
151
|
-
aliases: ["inventory", "audit"],
|
|
152
|
-
runner: () => require("./runners/runClassify").runClassify,
|
|
153
|
-
examples: [
|
|
154
|
-
{ command: "vibecheck classify", description: "Quick inventory" },
|
|
155
|
-
{ command: "vibecheck classify --json", description: "JSON output" },
|
|
156
|
-
],
|
|
157
|
-
related: ["approve", "scan"],
|
|
158
104
|
},
|
|
159
105
|
|
|
160
|
-
|
|
161
|
-
description: "
|
|
162
|
-
longDescription: "Connect your CLI to the vibecheck API.",
|
|
163
|
-
tier: "free",
|
|
164
|
-
category: "account",
|
|
165
|
-
aliases: ["auth", "signin"],
|
|
166
|
-
runner: () => require("./runners/runAuth").runLogin,
|
|
167
|
-
skipAuth: true,
|
|
168
|
-
examples: [
|
|
169
|
-
{ command: "vibecheck login", description: "Interactive login" },
|
|
170
|
-
{ command: "vibecheck login --key YOUR_API_KEY", description: "Login with key" },
|
|
171
|
-
],
|
|
172
|
-
related: ["logout", "whoami"],
|
|
173
|
-
},
|
|
174
|
-
|
|
175
|
-
logout: {
|
|
176
|
-
description: "Remove stored credentials",
|
|
106
|
+
fix: {
|
|
107
|
+
description: "AI-powered auto-fix",
|
|
177
108
|
tier: "free",
|
|
178
|
-
category: "
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
examples: [
|
|
183
|
-
{ command: "vibecheck logout", description: "Clear credentials" },
|
|
184
|
-
],
|
|
185
|
-
related: ["login", "whoami"],
|
|
109
|
+
category: "proof",
|
|
110
|
+
caps: "--plan-only on FREE",
|
|
111
|
+
aliases: ["f", "repair"],
|
|
112
|
+
runner: () => require("./runners/runFix").runFix,
|
|
186
113
|
},
|
|
187
114
|
|
|
188
|
-
|
|
189
|
-
description: "
|
|
115
|
+
reality: {
|
|
116
|
+
description: "Runtime proof (browser crawl)",
|
|
190
117
|
tier: "free",
|
|
191
|
-
category: "
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
related: ["login", "logout"],
|
|
118
|
+
category: "proof",
|
|
119
|
+
caps: "preview mode on FREE (5 pages, no auth)",
|
|
120
|
+
aliases: ["r", "test", "e2e"],
|
|
121
|
+
runner: () => async (args, ctx) => {
|
|
122
|
+
const { runRuntime } = require("./runners/runRuntime");
|
|
123
|
+
return await runRuntime(["crawl", ...args], ctx);
|
|
124
|
+
},
|
|
199
125
|
},
|
|
200
126
|
|
|
201
|
-
// ══════════════════════════════════════════════════════════════
|
|
202
|
-
// PRO TIER ($69/mo) - Fix, Prove & Enforce
|
|
203
|
-
// ══════════════════════════════════════════════════════════════
|
|
204
|
-
|
|
205
127
|
ship: {
|
|
206
128
|
description: "Verdict engine - SHIP / WARN / BLOCK",
|
|
207
|
-
|
|
208
|
-
tier: "pro",
|
|
129
|
+
tier: "free",
|
|
209
130
|
category: "proof",
|
|
210
131
|
aliases: ["verdict", "go"],
|
|
132
|
+
caps: "static-only on FREE",
|
|
211
133
|
runner: () => require("./runners/runShip").runShip,
|
|
212
|
-
examples: [
|
|
213
|
-
{ command: "vibecheck ship", description: "Get shipping verdict" },
|
|
214
|
-
{ command: "vibecheck ship --strict", description: "Fail on warnings" },
|
|
215
|
-
{ command: "vibecheck ship --badge", description: "Generate status badge" },
|
|
216
|
-
],
|
|
217
|
-
related: ["scan", "prove", "fix"],
|
|
218
134
|
},
|
|
219
135
|
|
|
220
|
-
|
|
221
|
-
description: "
|
|
222
|
-
longDescription: "Generate AI prompts to fix detected issues. Use --apply to let AI make changes directly.",
|
|
136
|
+
prove: {
|
|
137
|
+
description: "One command reality proof - video + network evidence that your app works",
|
|
223
138
|
tier: "pro",
|
|
224
139
|
category: "proof",
|
|
225
|
-
aliases: ["
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
{ command: "vibecheck fix", description: "Generate fix missions" },
|
|
229
|
-
{ command: "vibecheck fix --apply", description: "Apply AI fixes" },
|
|
230
|
-
{ command: "vibecheck fix --loop", description: "Fix loop until clean" },
|
|
231
|
-
],
|
|
232
|
-
related: ["scan", "ship"],
|
|
140
|
+
aliases: ["p", "full", "all"],
|
|
141
|
+
caps: "video, trace, HAR recording enabled by default; CI-ready output",
|
|
142
|
+
runner: () => require("./runners/runProve").runProve,
|
|
233
143
|
},
|
|
234
144
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
tier: "
|
|
145
|
+
// ── PROOF ARTIFACTS ─────────────────────────────────────────
|
|
146
|
+
"evidence-pack": {
|
|
147
|
+
description: "Bundle proof artifacts (videos, traces, screenshots) into shareable pack",
|
|
148
|
+
tier: "free",
|
|
239
149
|
category: "proof",
|
|
240
|
-
aliases: ["
|
|
241
|
-
runner: () => require("./runners/
|
|
242
|
-
examples: [
|
|
243
|
-
{ command: "vibecheck prove", description: "Run full proof loop" },
|
|
244
|
-
{ command: "vibecheck prove --url http://localhost:3000", description: "With runtime testing" },
|
|
245
|
-
{ command: "vibecheck prove --bundle", description: "Generate evidence pack" },
|
|
246
|
-
],
|
|
247
|
-
related: ["ship", "reality"],
|
|
150
|
+
aliases: ["pack", "bundle", "evidence"],
|
|
151
|
+
runner: () => require("./runners/runEvidencePack").runEvidencePack,
|
|
248
152
|
},
|
|
249
153
|
|
|
250
|
-
|
|
251
|
-
description: "
|
|
252
|
-
|
|
253
|
-
tier: "pro",
|
|
154
|
+
allowlist: {
|
|
155
|
+
description: "Manage finding allowlist (suppress false positives)",
|
|
156
|
+
tier: "free",
|
|
254
157
|
category: "proof",
|
|
255
|
-
aliases: ["
|
|
256
|
-
runner: () => require("./runners/
|
|
257
|
-
examples: [
|
|
258
|
-
{ command: "vibecheck reality --url http://localhost:3000", description: "Test localhost" },
|
|
259
|
-
{ command: "vibecheck reality --auth email:pass", description: "With authentication" },
|
|
260
|
-
{ command: "vibecheck reality --agent", description: "AI agent testing" },
|
|
261
|
-
],
|
|
262
|
-
related: ["prove", "ship"],
|
|
158
|
+
aliases: ["allow", "ignore", "whitelist"],
|
|
159
|
+
runner: () => require("./runners/runAllowlist").runAllowlist,
|
|
263
160
|
},
|
|
264
161
|
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
tier: "
|
|
269
|
-
category: "
|
|
270
|
-
aliases: ["
|
|
271
|
-
runner: () => require("./runners/
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
162
|
+
// ── QUALITY ────────────────────────────────────────────────
|
|
163
|
+
polish: {
|
|
164
|
+
description: "Production polish analyzer - finds missing essentials",
|
|
165
|
+
tier: "free",
|
|
166
|
+
category: "quality",
|
|
167
|
+
aliases: ["quality", "finalize", "ready"],
|
|
168
|
+
runner: () => require("./runners/runPolish").runPolish,
|
|
169
|
+
},
|
|
170
|
+
|
|
171
|
+
// ── AI TRUTH ───────────────────────────────────────────────
|
|
172
|
+
context: {
|
|
173
|
+
description: "Generate IDE rules (.cursorrules, MDC, Windsurf, Copilot)",
|
|
174
|
+
tier: "free",
|
|
175
|
+
category: "truth",
|
|
176
|
+
aliases: ["rules", "ai-rules", "mdc"],
|
|
177
|
+
runner: () => require("./runners/runContext").runContext,
|
|
277
178
|
},
|
|
278
179
|
|
|
279
180
|
guard: {
|
|
280
181
|
description: "AI guardrails - prompt firewall & hallucination checking",
|
|
281
|
-
|
|
282
|
-
tier: "pro",
|
|
182
|
+
tier: "free",
|
|
283
183
|
category: "truth",
|
|
284
184
|
aliases: ["ai-guard", "firewall", "validate"],
|
|
285
185
|
runner: () => require("./runners/runGuard").runGuard,
|
|
286
|
-
examples: [
|
|
287
|
-
{ command: "vibecheck guard", description: "Run all guardrail checks" },
|
|
288
|
-
{ command: "vibecheck guard --claims", description: "Verify AI claims" },
|
|
289
|
-
],
|
|
290
|
-
related: ["context", "fix"],
|
|
291
186
|
},
|
|
292
187
|
|
|
188
|
+
// ── AUTOMATION ─────────────────────────────────────────────
|
|
293
189
|
mcp: {
|
|
294
190
|
description: "Start MCP server for AI IDEs",
|
|
295
|
-
|
|
296
|
-
tier: "pro",
|
|
191
|
+
tier: "starter",
|
|
297
192
|
category: "automation",
|
|
298
193
|
aliases: [],
|
|
299
194
|
runner: () => require("./runners/runMcp").runMcp,
|
|
300
|
-
examples: [
|
|
301
|
-
{ command: "vibecheck mcp", description: "Start MCP server" },
|
|
302
|
-
{ command: "vibecheck mcp --port 3099", description: "Custom port" },
|
|
303
|
-
],
|
|
304
|
-
related: ["context"],
|
|
305
195
|
},
|
|
306
196
|
|
|
307
|
-
|
|
308
|
-
description: "
|
|
309
|
-
longDescription: "Track changes between scan runs. Detects new issues, resolved issues, and regressions.",
|
|
197
|
+
"ai-test": {
|
|
198
|
+
description: "AI autonomous test (alias: runtime agent)",
|
|
310
199
|
tier: "pro",
|
|
311
|
-
category: "
|
|
312
|
-
aliases: ["
|
|
313
|
-
runner: () =>
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
],
|
|
318
|
-
related: ["scan", "fix"],
|
|
200
|
+
category: "automation",
|
|
201
|
+
aliases: ["ai", "agent"],
|
|
202
|
+
runner: () => async (args, ctx) => {
|
|
203
|
+
const { runRuntime } = require("./runners/runRuntime");
|
|
204
|
+
return await runRuntime(["agent", ...args], ctx);
|
|
205
|
+
},
|
|
319
206
|
},
|
|
320
207
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
tier: "
|
|
325
|
-
category: "
|
|
326
|
-
aliases: ["auth
|
|
327
|
-
runner: () => require("./runners/
|
|
328
|
-
|
|
329
|
-
{ command: "vibecheck approve safe-consolidation", description: "Run authority" },
|
|
330
|
-
{ command: "vibecheck approve --list", description: "List authorities" },
|
|
331
|
-
],
|
|
332
|
-
related: ["classify", "ship"],
|
|
208
|
+
// ── ACCOUNT (skipAuth) ────────────────────────────────────
|
|
209
|
+
login: {
|
|
210
|
+
description: "Authenticate with API key",
|
|
211
|
+
tier: "free",
|
|
212
|
+
category: "account",
|
|
213
|
+
aliases: ["auth", "signin"],
|
|
214
|
+
runner: () => require("./runners/runAuth").runLogin,
|
|
215
|
+
skipAuth: true,
|
|
333
216
|
},
|
|
334
217
|
|
|
335
|
-
|
|
336
|
-
description: "
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
examples: [
|
|
343
|
-
{ command: "vibecheck polish", description: "Run polish checks" },
|
|
344
|
-
],
|
|
345
|
-
related: ["ship", "prove"],
|
|
218
|
+
logout: {
|
|
219
|
+
description: "Remove stored credentials",
|
|
220
|
+
tier: "free",
|
|
221
|
+
category: "account",
|
|
222
|
+
aliases: ["signout"],
|
|
223
|
+
runner: () => require("./runners/runAuth").runLogout,
|
|
224
|
+
skipAuth: true,
|
|
346
225
|
},
|
|
347
|
-
};
|
|
348
226
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
function requiresPro(commandName) {
|
|
360
|
-
const cmd = COMMANDS[commandName];
|
|
361
|
-
return cmd && cmd.tier === "pro";
|
|
362
|
-
}
|
|
227
|
+
whoami: {
|
|
228
|
+
description: "Show current user and plan",
|
|
229
|
+
tier: "free",
|
|
230
|
+
category: "account",
|
|
231
|
+
aliases: ["me", "user"],
|
|
232
|
+
runner: () => require("./runners/runAuth").runWhoami,
|
|
233
|
+
skipAuth: true,
|
|
234
|
+
},
|
|
363
235
|
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
236
|
+
// ── EXTRAS ────────────────────────────────────────────────
|
|
237
|
+
labs: {
|
|
238
|
+
description: "Experimental features",
|
|
239
|
+
tier: "free",
|
|
240
|
+
category: "extras",
|
|
241
|
+
aliases: ["experimental", "beta"],
|
|
242
|
+
runner: () => require("./runners/runLabs").runLabs,
|
|
243
|
+
},
|
|
244
|
+
};
|
|
369
245
|
|
|
370
|
-
|
|
371
|
-
return Object.entries(COMMANDS)
|
|
372
|
-
.filter(([, cmd]) => cmd.tier === "pro")
|
|
373
|
-
.map(([name]) => name);
|
|
374
|
-
}
|
|
246
|
+
assertAllowedOnly(COMMANDS);
|
|
375
247
|
|
|
376
248
|
// ─────────────────────────────────────────────────────────────
|
|
377
|
-
//
|
|
249
|
+
// DERIVED MAPS
|
|
378
250
|
// ─────────────────────────────────────────────────────────────
|
|
379
|
-
|
|
380
|
-
// Build alias map: { alias -> command }
|
|
381
251
|
const ALIAS_MAP = {};
|
|
382
|
-
for (const [
|
|
383
|
-
|
|
384
|
-
for (const alias of cmd.aliases) {
|
|
385
|
-
ALIAS_MAP[alias] = cmdName;
|
|
386
|
-
}
|
|
387
|
-
}
|
|
252
|
+
for (const [cmd, def] of Object.entries(COMMANDS)) {
|
|
253
|
+
for (const alias of def.aliases || []) ALIAS_MAP[alias] = cmd;
|
|
388
254
|
}
|
|
389
255
|
|
|
390
|
-
|
|
391
|
-
const ALL_COMMANDS = new Set([
|
|
256
|
+
const ALL_COMMANDS = [
|
|
392
257
|
...Object.keys(COMMANDS),
|
|
393
|
-
...Object.
|
|
394
|
-
]
|
|
258
|
+
...Object.values(COMMANDS).flatMap((c) => c.aliases || []),
|
|
259
|
+
];
|
|
395
260
|
|
|
396
261
|
// ─────────────────────────────────────────────────────────────
|
|
397
|
-
//
|
|
262
|
+
// RUNNER LOADER
|
|
398
263
|
// ─────────────────────────────────────────────────────────────
|
|
264
|
+
function getRunner(cmd, styles = {}) {
|
|
265
|
+
const def = COMMANDS[cmd];
|
|
266
|
+
if (!def) return null;
|
|
267
|
+
|
|
268
|
+
const red = styles.red || "";
|
|
269
|
+
const reset = styles.reset || "";
|
|
270
|
+
const errorSym = styles.errorSymbol || "✗";
|
|
399
271
|
|
|
400
|
-
function getRunner(cmd, opts = {}) {
|
|
401
|
-
// Resolve alias to canonical command
|
|
402
|
-
const canonicalCmd = ALIAS_MAP[cmd] || cmd;
|
|
403
|
-
const def = COMMANDS[canonicalCmd];
|
|
404
|
-
|
|
405
|
-
if (!def) {
|
|
406
|
-
return null;
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
if (!def.runner) {
|
|
410
|
-
return null;
|
|
411
|
-
}
|
|
412
|
-
|
|
413
272
|
try {
|
|
414
273
|
return def.runner();
|
|
415
274
|
} catch (e) {
|
|
416
|
-
|
|
417
|
-
console.error(`${
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
}
|
|
421
|
-
}
|
|
422
|
-
|
|
423
|
-
function getCommand(name) {
|
|
424
|
-
// Check direct name
|
|
425
|
-
if (COMMANDS[name]) return COMMANDS[name];
|
|
426
|
-
|
|
427
|
-
// Check alias map
|
|
428
|
-
const canonical = ALIAS_MAP[name];
|
|
429
|
-
if (canonical && COMMANDS[canonical]) {
|
|
430
|
-
return { ...COMMANDS[canonical], _resolvedFrom: name, _canonicalName: canonical };
|
|
275
|
+
return async () => {
|
|
276
|
+
console.error(`${red}${errorSym}${reset} Failed to load ${cmd}: ${e.message}`);
|
|
277
|
+
return 1;
|
|
278
|
+
};
|
|
431
279
|
}
|
|
432
|
-
|
|
433
|
-
return null;
|
|
434
280
|
}
|
|
435
281
|
|
|
436
|
-
function resolveCommand(name) {
|
|
437
|
-
return ALIAS_MAP[name] || name;
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
// ─────────────────────────────────────────────────────────────
|
|
441
|
-
// EXPORTS
|
|
442
|
-
// ─────────────────────────────────────────────────────────────
|
|
443
282
|
module.exports = {
|
|
444
|
-
// Core data
|
|
445
283
|
COMMANDS,
|
|
446
|
-
ALLOWED_COMMANDS,
|
|
447
284
|
ALIAS_MAP,
|
|
448
285
|
ALL_COMMANDS,
|
|
449
|
-
|
|
450
|
-
// Tier helpers
|
|
451
|
-
isPro,
|
|
452
|
-
requiresPro,
|
|
453
|
-
getFreeCommands,
|
|
454
|
-
getProCommands,
|
|
455
|
-
|
|
456
|
-
// Getters
|
|
457
286
|
getRunner,
|
|
458
|
-
getCommand,
|
|
459
|
-
resolveCommand,
|
|
460
|
-
listCommands: () => Object.keys(COMMANDS),
|
|
461
|
-
|
|
462
|
-
getCommandsByTier: (tier) =>
|
|
463
|
-
Object.entries(COMMANDS)
|
|
464
|
-
.filter(([, cmd]) => cmd.tier === tier)
|
|
465
|
-
.map(([name, cmd]) => ({ name, ...cmd })),
|
|
466
|
-
|
|
467
|
-
getCommandsByCategory: (category) =>
|
|
468
|
-
Object.entries(COMMANDS)
|
|
469
|
-
.filter(([, cmd]) => cmd.category === category)
|
|
470
|
-
.map(([name, cmd]) => ({ name, ...cmd })),
|
|
471
287
|
};
|