@vibecheckai/cli 3.5.0 → 3.5.2
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 +214 -237
- package/bin/runners/cli-utils.js +33 -2
- package/bin/runners/context/analyzer.js +52 -1
- package/bin/runners/context/generators/cursor.js +2 -49
- package/bin/runners/context/git-context.js +3 -1
- package/bin/runners/context/team-conventions.js +33 -7
- package/bin/runners/lib/analysis-core.js +25 -5
- package/bin/runners/lib/analyzers.js +431 -481
- package/bin/runners/lib/default-config.js +127 -0
- package/bin/runners/lib/doctor/modules/security.js +3 -1
- package/bin/runners/lib/engine/ast-cache.js +210 -0
- package/bin/runners/lib/engine/auth-extractor.js +211 -0
- package/bin/runners/lib/engine/billing-extractor.js +112 -0
- package/bin/runners/lib/engine/enforcement-extractor.js +100 -0
- package/bin/runners/lib/engine/env-extractor.js +207 -0
- package/bin/runners/lib/engine/express-extractor.js +208 -0
- package/bin/runners/lib/engine/extractors.js +849 -0
- package/bin/runners/lib/engine/index.js +207 -0
- package/bin/runners/lib/engine/repo-index.js +514 -0
- package/bin/runners/lib/engine/types.js +124 -0
- package/bin/runners/lib/engines/accessibility-engine.js +18 -218
- package/bin/runners/lib/engines/api-consistency-engine.js +30 -335
- package/bin/runners/lib/engines/cross-file-analysis-engine.js +27 -292
- package/bin/runners/lib/engines/empty-catch-engine.js +17 -127
- package/bin/runners/lib/engines/mock-data-engine.js +10 -53
- package/bin/runners/lib/engines/performance-issues-engine.js +36 -176
- package/bin/runners/lib/engines/security-vulnerabilities-engine.js +54 -382
- package/bin/runners/lib/engines/type-aware-engine.js +39 -263
- package/bin/runners/lib/engines/vibecheck-engines/index.js +13 -122
- package/bin/runners/lib/engines/vibecheck-engines/lib/ast-cache.js +164 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/code-quality-engine.js +291 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/console-logs-engine.js +83 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/dead-code-engine.js +198 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/deprecated-api-engine.js +275 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/empty-catch-engine.js +167 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/file-filter.js +217 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/hardcoded-secrets-engine.js +73 -373
- package/bin/runners/lib/engines/vibecheck-engines/lib/mock-data-engine.js +140 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/parallel-processor.js +164 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/performance-issues-engine.js +234 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/type-aware-engine.js +217 -0
- package/bin/runners/lib/engines/vibecheck-engines/lib/unsafe-regex-engine.js +78 -0
- package/bin/runners/lib/entitlements-v2.js +73 -97
- package/bin/runners/lib/error-handler.js +44 -3
- package/bin/runners/lib/error-messages.js +289 -0
- package/bin/runners/lib/evidence-pack.js +7 -1
- package/bin/runners/lib/finding-id.js +69 -0
- package/bin/runners/lib/finding-sorter.js +89 -0
- package/bin/runners/lib/html-proof-report.js +700 -350
- package/bin/runners/lib/missions/plan.js +6 -46
- package/bin/runners/lib/missions/templates.js +0 -232
- package/bin/runners/lib/next-action.js +560 -0
- package/bin/runners/lib/prerequisites.js +149 -0
- package/bin/runners/lib/route-detection.js +137 -68
- package/bin/runners/lib/scan-output.js +91 -76
- package/bin/runners/lib/scan-runner.js +135 -0
- package/bin/runners/lib/schemas/ajv-validator.js +464 -0
- package/bin/runners/lib/schemas/error-envelope.schema.json +105 -0
- package/bin/runners/lib/schemas/finding-v3.schema.json +151 -0
- package/bin/runners/lib/schemas/report-artifact.schema.json +120 -0
- package/bin/runners/lib/schemas/run-request.schema.json +108 -0
- package/bin/runners/lib/schemas/validator.js +27 -0
- package/bin/runners/lib/schemas/verdict.schema.json +140 -0
- package/bin/runners/lib/ship-output-enterprise.js +23 -23
- package/bin/runners/lib/ship-output.js +75 -31
- package/bin/runners/lib/terminal-ui.js +6 -113
- package/bin/runners/lib/truth.js +351 -10
- package/bin/runners/lib/unified-cli-output.js +430 -603
- package/bin/runners/lib/unified-output.js +13 -9
- package/bin/runners/runAIAgent.js +10 -5
- package/bin/runners/runAgent.js +0 -3
- package/bin/runners/runAllowlist.js +389 -0
- package/bin/runners/runApprove.js +0 -33
- package/bin/runners/runAuth.js +73 -45
- package/bin/runners/runCheckpoint.js +51 -11
- package/bin/runners/runClassify.js +85 -21
- package/bin/runners/runContext.js +0 -3
- package/bin/runners/runDoctor.js +41 -28
- package/bin/runners/runEvidencePack.js +362 -0
- package/bin/runners/runFirewall.js +0 -3
- package/bin/runners/runFirewallHook.js +0 -3
- package/bin/runners/runFix.js +66 -76
- package/bin/runners/runGuard.js +18 -411
- package/bin/runners/runInit.js +113 -30
- package/bin/runners/runLabs.js +424 -0
- package/bin/runners/runMcp.js +19 -25
- package/bin/runners/runPolish.js +64 -240
- package/bin/runners/runPromptFirewall.js +12 -5
- package/bin/runners/runProve.js +57 -22
- package/bin/runners/runQuickstart.js +531 -0
- package/bin/runners/runReality.js +59 -68
- package/bin/runners/runReport.js +38 -33
- package/bin/runners/runRuntime.js +8 -5
- package/bin/runners/runScan.js +1413 -190
- package/bin/runners/runShip.js +113 -719
- package/bin/runners/runTruth.js +0 -3
- package/bin/runners/runValidate.js +13 -9
- package/bin/runners/runWatch.js +23 -14
- package/bin/scan.js +6 -1
- package/bin/vibecheck.js +204 -185
- package/mcp-server/deprecation-middleware.js +282 -0
- package/mcp-server/handlers/index.ts +15 -0
- package/mcp-server/handlers/tool-handler.ts +554 -0
- package/mcp-server/index-v1.js +698 -0
- package/mcp-server/index.js +210 -238
- package/mcp-server/lib/cache-wrapper.cjs +383 -0
- package/mcp-server/lib/error-envelope.js +138 -0
- package/mcp-server/lib/executor.ts +499 -0
- package/mcp-server/lib/index.ts +19 -0
- package/mcp-server/lib/rate-limiter.js +166 -0
- package/mcp-server/lib/sandbox.test.ts +519 -0
- package/mcp-server/lib/sandbox.ts +395 -0
- package/mcp-server/lib/types.ts +267 -0
- package/mcp-server/package.json +12 -3
- package/mcp-server/registry/tool-registry.js +794 -0
- package/mcp-server/registry/tools.json +605 -0
- package/mcp-server/registry.test.ts +334 -0
- package/mcp-server/tests/tier-gating.test.js +297 -0
- package/mcp-server/tier-auth.js +378 -45
- package/mcp-server/tools-v3.js +353 -442
- package/mcp-server/tsconfig.json +37 -0
- package/mcp-server/vibecheck-2.0-tools.js +14 -1
- package/package.json +1 -1
- package/bin/runners/lib/agent-firewall/learning/learning-engine.js +0 -849
- package/bin/runners/lib/audit-logger.js +0 -532
- package/bin/runners/lib/authority/authorities/architecture.js +0 -364
- package/bin/runners/lib/authority/authorities/compliance.js +0 -341
- package/bin/runners/lib/authority/authorities/human.js +0 -343
- package/bin/runners/lib/authority/authorities/quality.js +0 -420
- package/bin/runners/lib/authority/authorities/security.js +0 -228
- package/bin/runners/lib/authority/index.js +0 -293
- package/bin/runners/lib/bundle/bundle-intelligence.js +0 -846
- package/bin/runners/lib/cli-charts.js +0 -368
- package/bin/runners/lib/cli-config-display.js +0 -405
- package/bin/runners/lib/cli-demo.js +0 -275
- package/bin/runners/lib/cli-errors.js +0 -438
- package/bin/runners/lib/cli-help-formatter.js +0 -439
- package/bin/runners/lib/cli-interactive-menu.js +0 -509
- package/bin/runners/lib/cli-prompts.js +0 -441
- package/bin/runners/lib/cli-scan-cards.js +0 -362
- package/bin/runners/lib/compliance-reporter.js +0 -710
- package/bin/runners/lib/conductor/index.js +0 -671
- package/bin/runners/lib/easy/README.md +0 -123
- package/bin/runners/lib/easy/index.js +0 -140
- package/bin/runners/lib/easy/interactive-wizard.js +0 -788
- package/bin/runners/lib/easy/one-click-firewall.js +0 -564
- package/bin/runners/lib/easy/zero-config-reality.js +0 -714
- package/bin/runners/lib/engines/async-patterns-engine.js +0 -444
- package/bin/runners/lib/engines/bundle-size-engine.js +0 -433
- package/bin/runners/lib/engines/confidence-scoring.js +0 -276
- package/bin/runners/lib/engines/context-detection.js +0 -264
- package/bin/runners/lib/engines/database-patterns-engine.js +0 -429
- package/bin/runners/lib/engines/duplicate-code-engine.js +0 -354
- package/bin/runners/lib/engines/env-variables-engine.js +0 -458
- package/bin/runners/lib/engines/error-handling-engine.js +0 -437
- package/bin/runners/lib/engines/false-positive-prevention.js +0 -630
- package/bin/runners/lib/engines/framework-adapters/index.js +0 -607
- package/bin/runners/lib/engines/framework-detection.js +0 -508
- package/bin/runners/lib/engines/import-order-engine.js +0 -429
- package/bin/runners/lib/engines/naming-conventions-engine.js +0 -544
- package/bin/runners/lib/engines/noise-reduction-engine.js +0 -452
- package/bin/runners/lib/engines/orchestrator.js +0 -334
- package/bin/runners/lib/engines/react-patterns-engine.js +0 -457
- package/bin/runners/lib/engines/vibecheck-engines/lib/ai-hallucination-engine.js +0 -806
- package/bin/runners/lib/engines/vibecheck-engines/lib/smart-fix-engine.js +0 -577
- package/bin/runners/lib/engines/vibecheck-engines/lib/vibe-score-engine.js +0 -543
- package/bin/runners/lib/engines/vibecheck-engines.js +0 -514
- package/bin/runners/lib/enhanced-features/index.js +0 -305
- package/bin/runners/lib/enhanced-output.js +0 -631
- package/bin/runners/lib/enterprise.js +0 -300
- package/bin/runners/lib/firewall/command-validator.js +0 -351
- package/bin/runners/lib/firewall/config.js +0 -341
- package/bin/runners/lib/firewall/content-validator.js +0 -519
- package/bin/runners/lib/firewall/index.js +0 -101
- package/bin/runners/lib/firewall/path-validator.js +0 -256
- package/bin/runners/lib/intelligence/cross-repo-intelligence.js +0 -817
- package/bin/runners/lib/mcp-utils.js +0 -425
- package/bin/runners/lib/output/index.js +0 -1022
- package/bin/runners/lib/policy-engine.js +0 -652
- package/bin/runners/lib/polish/autofix/accessibility-fixes.js +0 -333
- package/bin/runners/lib/polish/autofix/async-handlers.js +0 -273
- package/bin/runners/lib/polish/autofix/dead-code.js +0 -280
- package/bin/runners/lib/polish/autofix/imports-optimizer.js +0 -344
- package/bin/runners/lib/polish/autofix/index.js +0 -200
- package/bin/runners/lib/polish/autofix/remove-consoles.js +0 -209
- package/bin/runners/lib/polish/autofix/strengthen-types.js +0 -245
- package/bin/runners/lib/polish/backend-checks.js +0 -148
- package/bin/runners/lib/polish/documentation-checks.js +0 -111
- package/bin/runners/lib/polish/frontend-checks.js +0 -168
- package/bin/runners/lib/polish/index.js +0 -71
- package/bin/runners/lib/polish/infrastructure-checks.js +0 -131
- package/bin/runners/lib/polish/library-detection.js +0 -175
- package/bin/runners/lib/polish/performance-checks.js +0 -100
- package/bin/runners/lib/polish/security-checks.js +0 -148
- package/bin/runners/lib/polish/utils.js +0 -203
- package/bin/runners/lib/prompt-builder.js +0 -540
- package/bin/runners/lib/proof-certificate.js +0 -634
- package/bin/runners/lib/reality/accessibility-audit.js +0 -946
- package/bin/runners/lib/reality/api-contract-validator.js +0 -1012
- package/bin/runners/lib/reality/chaos-engineering.js +0 -1084
- package/bin/runners/lib/reality/performance-tracker.js +0 -1077
- package/bin/runners/lib/reality/scenario-generator.js +0 -1404
- package/bin/runners/lib/reality/visual-regression.js +0 -852
- package/bin/runners/lib/reality-profiler.js +0 -717
- package/bin/runners/lib/replay/flight-recorder-viewer.js +0 -1160
- package/bin/runners/lib/review/ai-code-review.js +0 -832
- package/bin/runners/lib/rules/custom-rule-engine.js +0 -985
- package/bin/runners/lib/sbom-generator.js +0 -641
- package/bin/runners/lib/scan-output-enhanced.js +0 -512
- package/bin/runners/lib/security/owasp-scanner.js +0 -939
- package/bin/runners/lib/validators/contract-validator.js +0 -283
- package/bin/runners/lib/validators/dead-export-detector.js +0 -279
- package/bin/runners/lib/validators/dep-audit.js +0 -245
- package/bin/runners/lib/validators/env-validator.js +0 -319
- package/bin/runners/lib/validators/index.js +0 -120
- package/bin/runners/lib/validators/license-checker.js +0 -252
- package/bin/runners/lib/validators/route-validator.js +0 -290
- package/bin/runners/runAuthority.js +0 -528
- package/bin/runners/runConductor.js +0 -772
- package/bin/runners/runContainer.js +0 -366
- package/bin/runners/runEasy.js +0 -410
- package/bin/runners/runIaC.js +0 -372
- package/bin/runners/runVibe.js +0 -791
- package/mcp-server/tools.js +0 -495
|
@@ -1,439 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI Help Formatter - Consistent, beautiful help output for all Vibecheck commands
|
|
3
|
-
*
|
|
4
|
-
* Provides standardized help formatting including:
|
|
5
|
-
* - Command usage and aliases
|
|
6
|
-
* - Categorized options with tier badges
|
|
7
|
-
* - Examples with syntax highlighting
|
|
8
|
-
* - Exit codes documentation
|
|
9
|
-
* - Links to documentation
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
"use strict";
|
|
13
|
-
|
|
14
|
-
const {
|
|
15
|
-
ansi,
|
|
16
|
-
sym,
|
|
17
|
-
box,
|
|
18
|
-
TIER_LABELS,
|
|
19
|
-
padRight,
|
|
20
|
-
visibleLength,
|
|
21
|
-
} = require("./unified-cli-output");
|
|
22
|
-
|
|
23
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
24
|
-
// CONFIGURATION
|
|
25
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
26
|
-
|
|
27
|
-
const HELP_WIDTH = 72;
|
|
28
|
-
const OPTION_INDENT = 4;
|
|
29
|
-
const DESC_INDENT = 22;
|
|
30
|
-
|
|
31
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
32
|
-
// HELP BUILDER CLASS
|
|
33
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
34
|
-
|
|
35
|
-
class HelpBuilder {
|
|
36
|
-
constructor(command) {
|
|
37
|
-
this.command = command;
|
|
38
|
-
this.sections = [];
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
usage(usage, aliases) {
|
|
42
|
-
this.usageText = usage;
|
|
43
|
-
this.aliasesText = aliases;
|
|
44
|
-
return this;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
description(desc) {
|
|
48
|
-
this.descriptionText = desc;
|
|
49
|
-
return this;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
section(title, items) {
|
|
53
|
-
this.sections.push({ title, items });
|
|
54
|
-
return this;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
options(items) {
|
|
58
|
-
return this.section('OPTIONS', items);
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
examples(items) {
|
|
62
|
-
return this.section('EXAMPLES', items.map(ex => ({
|
|
63
|
-
name: ex.comment || '',
|
|
64
|
-
description: ex.command,
|
|
65
|
-
isExample: true,
|
|
66
|
-
})));
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
exitCodes(codes) {
|
|
70
|
-
return this.section('EXIT CODES', codes.map(c => ({
|
|
71
|
-
name: String(c.code),
|
|
72
|
-
description: c.description,
|
|
73
|
-
isExitCode: true,
|
|
74
|
-
color: c.color,
|
|
75
|
-
})));
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
footer(text) {
|
|
79
|
-
this.footerText = text;
|
|
80
|
-
return this;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
docLink(url) {
|
|
84
|
-
this.docUrl = url;
|
|
85
|
-
return this;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
build() {
|
|
89
|
-
const lines = [];
|
|
90
|
-
|
|
91
|
-
// Usage
|
|
92
|
-
lines.push('');
|
|
93
|
-
lines.push(` ${ansi.bold}USAGE${ansi.reset}`);
|
|
94
|
-
lines.push(` ${ansi.cyan}${this.usageText}${ansi.reset}`);
|
|
95
|
-
|
|
96
|
-
if (this.aliasesText) {
|
|
97
|
-
lines.push(` ${ansi.dim}Aliases: ${this.aliasesText}${ansi.reset}`);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Description
|
|
101
|
-
if (this.descriptionText) {
|
|
102
|
-
lines.push('');
|
|
103
|
-
// Word wrap description
|
|
104
|
-
const words = this.descriptionText.split(' ');
|
|
105
|
-
let currentLine = ' ';
|
|
106
|
-
for (const word of words) {
|
|
107
|
-
if (currentLine.length + word.length + 1 > HELP_WIDTH) {
|
|
108
|
-
lines.push(currentLine);
|
|
109
|
-
currentLine = ' ' + word;
|
|
110
|
-
} else {
|
|
111
|
-
currentLine += (currentLine === ' ' ? '' : ' ') + word;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
if (currentLine !== ' ') lines.push(currentLine);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
// Sections
|
|
118
|
-
for (const section of this.sections) {
|
|
119
|
-
lines.push('');
|
|
120
|
-
lines.push(` ${ansi.bold}${section.title}${ansi.reset}`);
|
|
121
|
-
|
|
122
|
-
for (const item of section.items) {
|
|
123
|
-
if (item.isExample) {
|
|
124
|
-
// Example formatting
|
|
125
|
-
if (item.name) {
|
|
126
|
-
lines.push(` ${ansi.dim}# ${item.name}${ansi.reset}`);
|
|
127
|
-
}
|
|
128
|
-
lines.push(` ${ansi.cyan}${item.description}${ansi.reset}`);
|
|
129
|
-
} else if (item.isExitCode) {
|
|
130
|
-
// Exit code formatting
|
|
131
|
-
const color = item.color || ansi.reset;
|
|
132
|
-
lines.push(` ${color}${item.name}${ansi.reset} ${item.description}`);
|
|
133
|
-
} else {
|
|
134
|
-
// Option formatting
|
|
135
|
-
const tierBadge = item.tier && item.tier !== 'free'
|
|
136
|
-
? ` ${ansi.dim}[${TIER_LABELS[item.tier]}]${ansi.reset}`
|
|
137
|
-
: '';
|
|
138
|
-
const nameStr = `${ansi.cyan}${item.name}${ansi.reset}`;
|
|
139
|
-
const paddedName = padRight(item.name, DESC_INDENT - OPTION_INDENT);
|
|
140
|
-
lines.push(` ${ansi.cyan}${paddedName}${ansi.reset}${item.description}${tierBadge}`);
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
// Footer
|
|
146
|
-
if (this.footerText) {
|
|
147
|
-
lines.push('');
|
|
148
|
-
lines.push(` ${this.footerText}`);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// Documentation link
|
|
152
|
-
if (this.docUrl) {
|
|
153
|
-
lines.push('');
|
|
154
|
-
lines.push(` ${ansi.dim}${box.horizontal.repeat(HELP_WIDTH - 4)}${ansi.reset}`);
|
|
155
|
-
lines.push(` ${ansi.dim}Documentation: ${this.docUrl}${ansi.reset}`);
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
lines.push('');
|
|
159
|
-
|
|
160
|
-
return lines.join('\n');
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
165
|
-
// PREDEFINED HELP TEMPLATES
|
|
166
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
167
|
-
|
|
168
|
-
const helpTemplates = {
|
|
169
|
-
scan: new HelpBuilder('scan')
|
|
170
|
-
.usage('vibecheck scan [path] [options]', 's, check')
|
|
171
|
-
.description('The core analysis engine. Scans your codebase for route integrity issues, security vulnerabilities, code quality problems, and mock data detection.')
|
|
172
|
-
.section('SCAN LAYERS', [
|
|
173
|
-
{ name: '(default)', description: 'Layer 1: AST static analysis (fast, ~2s)' },
|
|
174
|
-
{ name: '--truth, -t', description: 'Layer 1+2: + build manifest verification' },
|
|
175
|
-
{ name: '--reality, -r', description: 'Layer 1+2+3: + Playwright runtime proof', tier: 'pro' },
|
|
176
|
-
])
|
|
177
|
-
.options([
|
|
178
|
-
{ name: '--path, -p <path>', description: 'Project path (default: current directory)' },
|
|
179
|
-
{ name: '--json', description: 'Output JSON report only (CI integration)' },
|
|
180
|
-
{ name: '--sarif', description: 'Output SARIF format for code scanning' },
|
|
181
|
-
{ name: '--autofix, -f', description: 'Generate fix missions for issues', tier: 'pro' },
|
|
182
|
-
{ name: '--baseline', description: 'Compare against previous scan baseline' },
|
|
183
|
-
{ name: '--quiet, -q', description: 'Suppress non-essential output' },
|
|
184
|
-
{ name: '--verbose, -v', description: 'Show detailed output' },
|
|
185
|
-
])
|
|
186
|
-
.examples([
|
|
187
|
-
{ comment: 'Quick scan', command: 'vibecheck scan' },
|
|
188
|
-
{ comment: 'With truth verification', command: 'vibecheck scan --truth' },
|
|
189
|
-
{ comment: 'CI pipeline (JSON)', command: 'vibecheck scan --json' },
|
|
190
|
-
{ comment: 'Specific directory', command: 'vibecheck scan ./src' },
|
|
191
|
-
])
|
|
192
|
-
.exitCodes([
|
|
193
|
-
{ code: 0, description: 'SHIP - Ready to deploy', color: ansi.green },
|
|
194
|
-
{ code: 1, description: 'WARN - Review recommended', color: ansi.yellow },
|
|
195
|
-
{ code: 2, description: 'BLOCK - Critical issues found', color: ansi.red },
|
|
196
|
-
])
|
|
197
|
-
.docLink('https://docs.vibecheckai.dev/cli/scan')
|
|
198
|
-
.build(),
|
|
199
|
-
|
|
200
|
-
ship: new HelpBuilder('ship')
|
|
201
|
-
.usage('vibecheck ship [path] [options]', 'go, deploy')
|
|
202
|
-
.description('The one command to ship with confidence. Runs comprehensive checks and gives you a clear SHIP/WARN/BLOCK verdict with actionable insights.')
|
|
203
|
-
.options([
|
|
204
|
-
{ name: '--path, -p <path>', description: 'Project path (default: current directory)' },
|
|
205
|
-
{ name: '--json', description: 'Output JSON report only' },
|
|
206
|
-
{ name: '--badge', description: 'Generate embeddable badge', tier: 'pro' },
|
|
207
|
-
{ name: '--quiet, -q', description: 'Suppress non-essential output' },
|
|
208
|
-
{ name: '--strict', description: 'Fail on warnings (default: fail on blocks only)' },
|
|
209
|
-
])
|
|
210
|
-
.examples([
|
|
211
|
-
{ comment: 'Ship check', command: 'vibecheck ship' },
|
|
212
|
-
{ comment: 'Generate badge', command: 'vibecheck ship --badge' },
|
|
213
|
-
{ comment: 'CI pipeline', command: 'vibecheck ship --json --strict' },
|
|
214
|
-
])
|
|
215
|
-
.exitCodes([
|
|
216
|
-
{ code: 0, description: 'SHIP - All checks passed', color: ansi.green },
|
|
217
|
-
{ code: 1, description: 'WARN - Minor issues found', color: ansi.yellow },
|
|
218
|
-
{ code: 2, description: 'BLOCK - Cannot ship', color: ansi.red },
|
|
219
|
-
])
|
|
220
|
-
.docLink('https://docs.vibecheckai.dev/cli/ship')
|
|
221
|
-
.build(),
|
|
222
|
-
|
|
223
|
-
fix: new HelpBuilder('fix')
|
|
224
|
-
.usage('vibecheck fix [options]', 'repair, autofix')
|
|
225
|
-
.description('Generate AI-powered fix missions for detected issues. Creates surgical prompts that guide AI assistants to fix problems without introducing new ones.')
|
|
226
|
-
.section('FIX MODES', [
|
|
227
|
-
{ name: '--plan', description: 'Show fix plan only, no changes (default for free)' },
|
|
228
|
-
{ name: '--apply', description: 'Apply fixes automatically', tier: 'pro' },
|
|
229
|
-
{ name: '--interactive', description: 'Review each fix before applying', tier: 'pro' },
|
|
230
|
-
])
|
|
231
|
-
.options([
|
|
232
|
-
{ name: '--path, -p <path>', description: 'Project path' },
|
|
233
|
-
{ name: '--max <n>', description: 'Maximum fixes to generate (default: 5)' },
|
|
234
|
-
{ name: '--dry-run', description: 'Show what would be changed' },
|
|
235
|
-
{ name: '--backup', description: 'Create backup before applying fixes' },
|
|
236
|
-
{ name: '--json', description: 'Output fix plan as JSON' },
|
|
237
|
-
])
|
|
238
|
-
.examples([
|
|
239
|
-
{ comment: 'Show fix plan', command: 'vibecheck fix --plan' },
|
|
240
|
-
{ comment: 'Apply fixes with backup', command: 'vibecheck fix --apply --backup' },
|
|
241
|
-
{ comment: 'Interactive mode', command: 'vibecheck fix --interactive' },
|
|
242
|
-
])
|
|
243
|
-
.docLink('https://docs.vibecheckai.dev/cli/fix')
|
|
244
|
-
.build(),
|
|
245
|
-
|
|
246
|
-
doctor: new HelpBuilder('doctor')
|
|
247
|
-
.usage('vibecheck doctor [options]', 'health, diag')
|
|
248
|
-
.description('Comprehensive environment diagnostics with auto-fix capability. Checks Node.js, dependencies, configuration, security, and network connectivity.')
|
|
249
|
-
.section('CATEGORIES', [
|
|
250
|
-
{ name: 'system', description: 'OS, memory, disk, CPU' },
|
|
251
|
-
{ name: 'runtime', description: 'Node.js, npm, package managers' },
|
|
252
|
-
{ name: 'project', description: 'package.json, dependencies, TypeScript' },
|
|
253
|
-
{ name: 'security', description: 'Secrets, gitignore, env files' },
|
|
254
|
-
{ name: 'network', description: 'Internet, npm registry, API' },
|
|
255
|
-
{ name: 'vibecheck', description: 'Config, truth pack, scan status' },
|
|
256
|
-
])
|
|
257
|
-
.options([
|
|
258
|
-
{ name: '--fix', description: 'Auto-fix issues when possible' },
|
|
259
|
-
{ name: '--dry-run', description: 'Show what fixes would be applied' },
|
|
260
|
-
{ name: '--category, -c <cat>', description: 'Run specific category only' },
|
|
261
|
-
{ name: '--skip-network', description: 'Skip slow network checks' },
|
|
262
|
-
{ name: '--json', description: 'Output as JSON' },
|
|
263
|
-
])
|
|
264
|
-
.examples([
|
|
265
|
-
{ comment: 'Full diagnostic', command: 'vibecheck doctor' },
|
|
266
|
-
{ comment: 'Auto-fix issues', command: 'vibecheck doctor --fix' },
|
|
267
|
-
{ comment: 'Security checks only', command: 'vibecheck doctor -c security' },
|
|
268
|
-
])
|
|
269
|
-
.exitCodes([
|
|
270
|
-
{ code: 0, description: 'Healthy (or warnings without --fail-on-warn)', color: ansi.green },
|
|
271
|
-
{ code: 1, description: 'Errors found', color: ansi.red },
|
|
272
|
-
{ code: 2, description: 'Warnings found (with --fail-on-warn)', color: ansi.yellow },
|
|
273
|
-
])
|
|
274
|
-
.docLink('https://docs.vibecheckai.dev/cli/doctor')
|
|
275
|
-
.build(),
|
|
276
|
-
|
|
277
|
-
init: new HelpBuilder('init')
|
|
278
|
-
.usage('vibecheck init [options]', 'setup, configure')
|
|
279
|
-
.description('Initialize Vibecheck in your project. Detects your framework, creates configuration files, and sets up CI integration.')
|
|
280
|
-
.section('SETUP MODES', [
|
|
281
|
-
{ name: '--quick', description: 'Quick setup with defaults' },
|
|
282
|
-
{ name: '--wizard', description: 'Interactive setup wizard (default)' },
|
|
283
|
-
{ name: '--ci', description: 'Generate CI workflow only' },
|
|
284
|
-
])
|
|
285
|
-
.options([
|
|
286
|
-
{ name: '--template <name>', description: 'Use preset template (nextjs, express, etc.)' },
|
|
287
|
-
{ name: '--hooks', description: 'Install git pre-commit hooks' },
|
|
288
|
-
{ name: '--force', description: 'Overwrite existing config' },
|
|
289
|
-
{ name: '--json', description: 'Output as JSON' },
|
|
290
|
-
])
|
|
291
|
-
.examples([
|
|
292
|
-
{ comment: 'Interactive setup', command: 'vibecheck init' },
|
|
293
|
-
{ comment: 'Quick setup', command: 'vibecheck init --quick' },
|
|
294
|
-
{ comment: 'Next.js template', command: 'vibecheck init --template nextjs' },
|
|
295
|
-
{ comment: 'With git hooks', command: 'vibecheck init --hooks' },
|
|
296
|
-
])
|
|
297
|
-
.docLink('https://docs.vibecheckai.dev/cli/init')
|
|
298
|
-
.build(),
|
|
299
|
-
|
|
300
|
-
guard: new HelpBuilder('guard')
|
|
301
|
-
.usage('vibecheck guard [options]', 'ai-guard, firewall, validate')
|
|
302
|
-
.description('Validate AI-generated code and prompts. Detects prompt injection, verifies claims against your codebase, and ensures AI outputs meet standards.')
|
|
303
|
-
.section('CHECK MODES', [
|
|
304
|
-
{ name: '--claims', description: 'Verify AI claims against truthpack' },
|
|
305
|
-
{ name: '--prompts', description: 'Check code for prompt injection' },
|
|
306
|
-
{ name: '--hallucinations', description: 'Detect AI hallucination patterns' },
|
|
307
|
-
])
|
|
308
|
-
.options([
|
|
309
|
-
{ name: '--file <path>', description: 'Check specific file(s)' },
|
|
310
|
-
{ name: '--strict', description: 'Fail on warnings' },
|
|
311
|
-
{ name: '--json', description: 'Output as JSON' },
|
|
312
|
-
])
|
|
313
|
-
.examples([
|
|
314
|
-
{ comment: 'Run all checks', command: 'vibecheck guard' },
|
|
315
|
-
{ comment: 'Verify claims in file', command: 'vibecheck guard --claims --file api.ts' },
|
|
316
|
-
{ comment: 'CI pipeline', command: 'vibecheck guard --strict --json' },
|
|
317
|
-
])
|
|
318
|
-
.exitCodes([
|
|
319
|
-
{ code: 0, description: 'All checks passed', color: ansi.green },
|
|
320
|
-
{ code: 1, description: 'Warnings found', color: ansi.yellow },
|
|
321
|
-
{ code: 2, description: 'Errors found (blocking)', color: ansi.red },
|
|
322
|
-
])
|
|
323
|
-
.docLink('https://docs.vibecheckai.dev/cli/guard')
|
|
324
|
-
.build(),
|
|
325
|
-
|
|
326
|
-
context: new HelpBuilder('context')
|
|
327
|
-
.usage('vibecheck context [options]', 'rules, ai-rules, mdc')
|
|
328
|
-
.description('Generate project-aware AI coding rules for your IDE. These rules help AI assistants understand your codebase conventions.')
|
|
329
|
-
.section('FORMATS', [
|
|
330
|
-
{ name: 'cursor', description: '.cursorrules file for Cursor IDE' },
|
|
331
|
-
{ name: 'mdc', description: 'MDC format (.cursor/rules/*.mdc)' },
|
|
332
|
-
{ name: 'windsurf', description: 'Windsurf rules directory' },
|
|
333
|
-
{ name: 'copilot', description: 'GitHub Copilot instructions' },
|
|
334
|
-
{ name: 'all', description: 'Generate all formats (default)' },
|
|
335
|
-
])
|
|
336
|
-
.options([
|
|
337
|
-
{ name: '-f, --format <fmt>', description: 'Format to generate' },
|
|
338
|
-
{ name: '-o, --output <dir>', description: 'Output directory' },
|
|
339
|
-
{ name: '--json', description: 'Output as JSON' },
|
|
340
|
-
])
|
|
341
|
-
.examples([
|
|
342
|
-
{ comment: 'Generate all rules', command: 'vibecheck context' },
|
|
343
|
-
{ comment: 'Cursor only', command: 'vibecheck context --format cursor' },
|
|
344
|
-
{ comment: 'Custom output', command: 'vibecheck context --output ./ai-rules' },
|
|
345
|
-
])
|
|
346
|
-
.docLink('https://docs.vibecheckai.dev/cli/context')
|
|
347
|
-
.build(),
|
|
348
|
-
|
|
349
|
-
login: new HelpBuilder('login')
|
|
350
|
-
.usage('vibecheck login [options]', 'auth, signin')
|
|
351
|
-
.description('Authenticate with your Vibecheck API key to unlock paid features and sync with the dashboard.')
|
|
352
|
-
.options([
|
|
353
|
-
{ name: '--key <key>', description: 'Provide API key directly (non-interactive)' },
|
|
354
|
-
{ name: '--json', description: 'Output as JSON' },
|
|
355
|
-
])
|
|
356
|
-
.examples([
|
|
357
|
-
{ comment: 'Interactive login', command: 'vibecheck login' },
|
|
358
|
-
{ comment: 'Non-interactive', command: 'vibecheck login --key YOUR_API_KEY' },
|
|
359
|
-
{ comment: 'Environment variable', command: 'VIBECHECK_API_KEY=xxx vibecheck whoami' },
|
|
360
|
-
])
|
|
361
|
-
.footer(`Get your API key at: ${ansi.cyan}https://vibecheckai.dev/settings/keys${ansi.reset}`)
|
|
362
|
-
.docLink('https://docs.vibecheckai.dev/authentication')
|
|
363
|
-
.build(),
|
|
364
|
-
|
|
365
|
-
whoami: new HelpBuilder('whoami')
|
|
366
|
-
.usage('vibecheck whoami [options]', 'me, user')
|
|
367
|
-
.description('Display information about the currently authenticated user, including plan, limits, and available scopes.')
|
|
368
|
-
.options([
|
|
369
|
-
{ name: '--json', description: 'Output as JSON' },
|
|
370
|
-
{ name: '--quiet, -q', description: 'Suppress non-essential output' },
|
|
371
|
-
])
|
|
372
|
-
.examples([
|
|
373
|
-
{ comment: 'Check current user', command: 'vibecheck whoami' },
|
|
374
|
-
{ comment: 'JSON for scripts', command: 'vibecheck whoami --json' },
|
|
375
|
-
])
|
|
376
|
-
.docLink('https://docs.vibecheckai.dev/authentication')
|
|
377
|
-
.build(),
|
|
378
|
-
};
|
|
379
|
-
|
|
380
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
381
|
-
// MAIN HELP OUTPUT
|
|
382
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
383
|
-
|
|
384
|
-
function renderMainHelp() {
|
|
385
|
-
return `
|
|
386
|
-
${ansi.bold}${ansi.cyan}VIBECHECK${ansi.reset} ${ansi.dim}v${process.env.npm_package_version || '2.0.0'}${ansi.reset}
|
|
387
|
-
${ansi.dim}AI-powered code verification for production readiness${ansi.reset}
|
|
388
|
-
|
|
389
|
-
${ansi.bold}USAGE${ansi.reset}
|
|
390
|
-
${ansi.cyan}vibecheck${ansi.reset} <command> [options]
|
|
391
|
-
|
|
392
|
-
${ansi.bold}CORE COMMANDS${ansi.reset}
|
|
393
|
-
${ansi.cyan}scan${ansi.reset} ${ansi.dim}s${ansi.reset} Analyze codebase for issues
|
|
394
|
-
${ansi.cyan}ship${ansi.reset} ${ansi.dim}go${ansi.reset} One command to ship with confidence
|
|
395
|
-
${ansi.cyan}fix${ansi.reset} ${ansi.dim}repair${ansi.reset} AI-powered fix missions
|
|
396
|
-
${ansi.cyan}doctor${ansi.reset} ${ansi.dim}health${ansi.reset} Environment diagnostics
|
|
397
|
-
|
|
398
|
-
${ansi.bold}AI TOOLS${ansi.reset}
|
|
399
|
-
${ansi.cyan}guard${ansi.reset} ${ansi.dim}firewall${ansi.reset} Validate AI-generated code
|
|
400
|
-
${ansi.cyan}context${ansi.reset} ${ansi.dim}rules${ansi.reset} Generate AI coding rules
|
|
401
|
-
${ansi.cyan}truth${ansi.reset} ${ansi.dim}verify${ansi.reset} Build verification manifest
|
|
402
|
-
|
|
403
|
-
${ansi.bold}SETUP${ansi.reset}
|
|
404
|
-
${ansi.cyan}init${ansi.reset} ${ansi.dim}setup${ansi.reset} Initialize project
|
|
405
|
-
${ansi.cyan}login${ansi.reset} ${ansi.dim}auth${ansi.reset} Authenticate with API key
|
|
406
|
-
${ansi.cyan}whoami${ansi.reset} ${ansi.dim}me${ansi.reset} Show current user
|
|
407
|
-
|
|
408
|
-
${ansi.bold}OPTIONS${ansi.reset}
|
|
409
|
-
${ansi.cyan}--help, -h${ansi.reset} Show help for command
|
|
410
|
-
${ansi.cyan}--version, -V${ansi.reset} Show version
|
|
411
|
-
${ansi.cyan}--json${ansi.reset} Output as JSON
|
|
412
|
-
${ansi.cyan}--quiet, -q${ansi.reset} Suppress non-essential output
|
|
413
|
-
${ansi.cyan}--no-banner${ansi.reset} Skip banner display
|
|
414
|
-
|
|
415
|
-
${ansi.bold}EXAMPLES${ansi.reset}
|
|
416
|
-
${ansi.dim}# Quick scan${ansi.reset}
|
|
417
|
-
${ansi.cyan}vibecheck scan${ansi.reset}
|
|
418
|
-
|
|
419
|
-
${ansi.dim}# Ship check with badge${ansi.reset}
|
|
420
|
-
${ansi.cyan}vibecheck ship --badge${ansi.reset}
|
|
421
|
-
|
|
422
|
-
${ansi.dim}# CI pipeline${ansi.reset}
|
|
423
|
-
${ansi.cyan}vibecheck scan --json --strict${ansi.reset}
|
|
424
|
-
|
|
425
|
-
${ansi.dim}${box.horizontal.repeat(68)}${ansi.reset}
|
|
426
|
-
${ansi.dim}Documentation: https://docs.vibecheckai.dev${ansi.reset}
|
|
427
|
-
${ansi.dim}Get help: vibecheck <command> --help${ansi.reset}
|
|
428
|
-
`;
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
432
|
-
// EXPORTS
|
|
433
|
-
// ═══════════════════════════════════════════════════════════════════════════════
|
|
434
|
-
|
|
435
|
-
module.exports = {
|
|
436
|
-
HelpBuilder,
|
|
437
|
-
helpTemplates,
|
|
438
|
-
renderMainHelp,
|
|
439
|
-
};
|