@vibecheckai/cli 2.5.1 → 2.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/README.md +88 -88
- package/dist/autopatch/verified-autopatch.js +10 -10
- package/dist/bundles/index.js +3 -3
- package/dist/bundles/vibecheck-core.js +25799 -0
- package/dist/bundles/vibecheck-security.js +208687 -0
- package/dist/bundles/vibecheck-ship.js +2318 -0
- package/dist/commands/baseline.js +1 -1
- package/dist/commands/cache.js +4 -4
- package/dist/commands/checkpoint.d.ts +1 -1
- package/dist/commands/checkpoint.js +1 -1
- package/dist/commands/doctor.d.ts +1 -1
- package/dist/commands/doctor.js +12 -12
- package/dist/commands/evidence.js +4 -4
- package/dist/commands/evidence.js.map +1 -1
- package/dist/commands/explain.d.ts +1 -1
- package/dist/commands/explain.js +4 -4
- package/dist/commands/fix-consolidated.d.ts +1 -1
- package/dist/commands/fix-consolidated.js +3 -3
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.js +7 -7
- package/dist/commands/launcher.d.ts +1 -1
- package/dist/commands/launcher.js +9 -9
- package/dist/commands/on.d.ts +1 -1
- package/dist/commands/on.js +2 -2
- package/dist/commands/replay.d.ts +1 -1
- package/dist/commands/replay.js +5 -5
- package/dist/commands/scan-consolidated.d.ts +1 -1
- package/dist/commands/scan-consolidated.js +10 -10
- package/dist/commands/scan-secrets.js +5 -5
- package/dist/commands/scan-vulnerabilities-enhanced.d.ts +1 -1
- package/dist/commands/scan-vulnerabilities-enhanced.js +1 -1
- package/dist/commands/scan-vulnerabilities-osv.d.ts +1 -1
- package/dist/commands/scan-vulnerabilities-osv.js +6 -6
- package/dist/commands/scan-vulnerabilities-osv.js.map +1 -1
- package/dist/commands/secrets-allowlist.js +5 -5
- package/dist/commands/secrets-allowlist.js.map +1 -1
- package/dist/commands/ship-consolidated.d.ts +1 -1
- package/dist/commands/ship-consolidated.js +198 -198
- package/dist/commands/stats.d.ts +1 -1
- package/dist/commands/stats.js +5 -5
- package/dist/commands/upgrade.d.ts +1 -1
- package/dist/commands/upgrade.js +2 -2
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/fix/backup.js +1 -1
- package/dist/formatters/sarif-enhanced.js +3 -3
- package/dist/formatters/sarif-enhanced.js.map +1 -1
- package/dist/formatters/sarif-v2.js +17 -17
- package/dist/formatters/sarif-v2.js.map +1 -1
- package/dist/formatters/sarif.js +8 -8
- package/dist/formatters/sarif.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +87 -87
- package/dist/index.js.map +1 -1
- package/dist/init/ci-generator.js +29 -29
- package/dist/init/hooks-installer.js +19 -19
- package/dist/mcp/server.js +1 -1
- package/dist/mcp/telemetry.js +2 -2
- package/dist/reality/reality-runner.d.ts +1 -1
- package/dist/reality/reality-runner.js +3 -3
- package/dist/reality/receipt-generator.js +4 -4
- package/dist/runtime/client.js +5 -5
- package/dist/runtime/client.js.map +1 -1
- package/dist/runtime/creds.js +4 -4
- package/dist/runtime/creds.js.map +1 -1
- package/dist/runtime/json-output.js +1 -1
- package/dist/scan/reality-sniff.js +1 -1
- package/dist/truth-pack/index.js +1 -1
- package/dist/ui/frame.js +1 -1
- package/dist/ui.js +1 -1
- package/package.json +9 -11
|
@@ -20,7 +20,7 @@ function registerBaselineCommand(program, requireAuth, printLogo) {
|
|
|
20
20
|
.command('baseline')
|
|
21
21
|
.description('Generate baseline file to suppress known findings')
|
|
22
22
|
.option('-p, --path <path>', 'Project path to scan', '.')
|
|
23
|
-
.option('--write <file>', 'Write baseline to file', '.
|
|
23
|
+
.option('--write <file>', 'Write baseline to file', '.vibecheck/baseline.json')
|
|
24
24
|
.option('-t, --type <type>', 'Scan type: all, secrets, vulnerabilities', 'all')
|
|
25
25
|
.action(async (opts) => {
|
|
26
26
|
requireAuth();
|
package/dist/commands/cache.js
CHANGED
|
@@ -22,7 +22,7 @@ const c = {
|
|
|
22
22
|
* Get cache directory path
|
|
23
23
|
*/
|
|
24
24
|
function getCacheDir(projectPath = '.') {
|
|
25
|
-
return (0, path_1.join)(projectPath, '.
|
|
25
|
+
return (0, path_1.join)(projectPath, '.vibecheck', 'cache');
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Get cache statistics
|
|
@@ -93,7 +93,7 @@ function clearCache(cacheDir) {
|
|
|
93
93
|
function registerCacheCommands(program, printLogo) {
|
|
94
94
|
program
|
|
95
95
|
.command('cache:clear')
|
|
96
|
-
.description('Clear the
|
|
96
|
+
.description('Clear the vibecheck cache (OSV vulnerability data)')
|
|
97
97
|
.option('-p, --path <path>', 'Project path', '.')
|
|
98
98
|
.option('--global', 'Clear global cache instead of project cache')
|
|
99
99
|
.action(async (opts) => {
|
|
@@ -102,7 +102,7 @@ function registerCacheCommands(program, printLogo) {
|
|
|
102
102
|
let cacheDir;
|
|
103
103
|
if (opts.global) {
|
|
104
104
|
const homeDir = process.env.HOME || process.env.USERPROFILE || '.';
|
|
105
|
-
cacheDir = (0, path_1.join)(homeDir, '.
|
|
105
|
+
cacheDir = (0, path_1.join)(homeDir, '.vibecheck', 'cache');
|
|
106
106
|
}
|
|
107
107
|
else {
|
|
108
108
|
cacheDir = getCacheDir(opts.path);
|
|
@@ -136,7 +136,7 @@ function registerCacheCommands(program, printLogo) {
|
|
|
136
136
|
let cacheDir;
|
|
137
137
|
if (opts.global) {
|
|
138
138
|
const homeDir = process.env.HOME || process.env.USERPROFILE || '.';
|
|
139
|
-
cacheDir = (0, path_1.join)(homeDir, '.
|
|
139
|
+
cacheDir = (0, path_1.join)(homeDir, '.vibecheck', 'cache');
|
|
140
140
|
}
|
|
141
141
|
else {
|
|
142
142
|
cacheDir = getCacheDir(opts.path);
|
package/dist/commands/doctor.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* vibecheck doctor
|
|
4
4
|
*
|
|
5
5
|
* First-class setup verification + exact fix steps
|
|
6
6
|
* Zero "uncaught exception" behavior
|
|
@@ -55,7 +55,7 @@ function registerDoctorCommand(program) {
|
|
|
55
55
|
(0, ui_1.printLogo)();
|
|
56
56
|
const projectPath = (0, path_1.resolve)(options.path);
|
|
57
57
|
const issues = [];
|
|
58
|
-
console.log(`\n${ui_2.styles.brightCyan}${ui_2.styles.bold}${ui_2.icons.info}
|
|
58
|
+
console.log(`\n${ui_2.styles.brightCyan}${ui_2.styles.bold}${ui_2.icons.info} vibecheck DOCTOR${ui_2.styles.reset}\n`);
|
|
59
59
|
console.log(` ${ui_2.styles.dim}Checking:${ui_2.styles.reset} ${projectPath}\n`);
|
|
60
60
|
// Check 1: Truth Pack exists and is fresh
|
|
61
61
|
const generator = new truth_pack_1.TruthPackGenerator(projectPath);
|
|
@@ -65,8 +65,8 @@ function registerDoctorCommand(program) {
|
|
|
65
65
|
severity: 'error',
|
|
66
66
|
category: 'setup',
|
|
67
67
|
message: 'Truth Pack not found',
|
|
68
|
-
fix: 'Run
|
|
69
|
-
command: '
|
|
68
|
+
fix: 'Run vibecheck init to generate Truth Pack',
|
|
69
|
+
command: 'vibecheck init',
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
72
|
else if (!generator.isFresh(168)) { // 7 days
|
|
@@ -76,19 +76,19 @@ function registerDoctorCommand(program) {
|
|
|
76
76
|
category: 'setup',
|
|
77
77
|
message: 'Truth Pack is stale (older than 7 days)',
|
|
78
78
|
fix: 'Regenerate Truth Pack to ensure accuracy',
|
|
79
|
-
command: '
|
|
79
|
+
command: 'vibecheck init --force',
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
82
|
// Check 2: Configuration file exists
|
|
83
|
-
const configFile = (0, path_1.join)(projectPath, '.
|
|
83
|
+
const configFile = (0, path_1.join)(projectPath, '.vibecheck', 'config.json');
|
|
84
84
|
if (!(0, fs_1.existsSync)(configFile)) {
|
|
85
85
|
issues.push({
|
|
86
86
|
id: 'DOCTOR-003',
|
|
87
87
|
severity: 'info',
|
|
88
88
|
category: 'configuration',
|
|
89
|
-
message: 'No
|
|
90
|
-
fix: 'Run
|
|
91
|
-
command: '
|
|
89
|
+
message: 'No vibecheck configuration file found',
|
|
90
|
+
fix: 'Run vibecheck init to create configuration',
|
|
91
|
+
command: 'vibecheck init',
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
94
|
// Check 3: Node.js version
|
|
@@ -112,7 +112,7 @@ function registerDoctorCommand(program) {
|
|
|
112
112
|
id: 'DOCTOR-005',
|
|
113
113
|
severity: 'warning',
|
|
114
114
|
category: 'dependencies',
|
|
115
|
-
message: 'Playwright not installed (required for
|
|
115
|
+
message: 'Playwright not installed (required for vibecheck ship --runtime)',
|
|
116
116
|
fix: 'Install Playwright: npm install -D playwright && npx playwright install',
|
|
117
117
|
command: 'npm install -D playwright && npx playwright install',
|
|
118
118
|
});
|
|
@@ -141,7 +141,7 @@ function registerDoctorCommand(program) {
|
|
|
141
141
|
});
|
|
142
142
|
}
|
|
143
143
|
// Check 7: Write permissions
|
|
144
|
-
const testFile = (0, path_1.join)(projectPath, '.
|
|
144
|
+
const testFile = (0, path_1.join)(projectPath, '.vibecheck', '.test-write');
|
|
145
145
|
try {
|
|
146
146
|
const { writeFileSync, unlinkSync } = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
147
147
|
writeFileSync(testFile, 'test');
|
|
@@ -209,7 +209,7 @@ function registerDoctorCommand(program) {
|
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
211
|
else {
|
|
212
|
-
console.log(` ${ui_2.styles.bold}Next:${ui_2.styles.reset} Run ${ui_2.styles.bold}
|
|
212
|
+
console.log(` ${ui_2.styles.bold}Next:${ui_2.styles.reset} Run ${ui_2.styles.bold}vibecheck doctor --fix${ui_2.styles.reset} to auto-fix issues\n`);
|
|
213
213
|
}
|
|
214
214
|
// Exit code
|
|
215
215
|
if (errors.length > 0) {
|
|
@@ -88,11 +88,11 @@ function hashFileList(projectPath, extensions = ['.ts', '.js', '.json', '.env',
|
|
|
88
88
|
function signContent(content, keyId) {
|
|
89
89
|
// Use HMAC-SHA256 with a per-installation key
|
|
90
90
|
// In production, this would use a proper signing key from keychain
|
|
91
|
-
const key = process.env.
|
|
91
|
+
const key = process.env.VIBECHECK_SIGNING_KEY || `vibecheck-${keyId}`;
|
|
92
92
|
return crypto_1.default.createHmac('sha256', key).update(content).digest('hex');
|
|
93
93
|
}
|
|
94
94
|
async function generateEvidence(scanType, results, projectPath) {
|
|
95
|
-
const evidenceDir = (0, path_1.join)(projectPath, '.
|
|
95
|
+
const evidenceDir = (0, path_1.join)(projectPath, '.vibecheck', 'evidence');
|
|
96
96
|
if (!(0, fs_1.existsSync)(evidenceDir)) {
|
|
97
97
|
(0, fs_1.mkdirSync)(evidenceDir, { recursive: true });
|
|
98
98
|
}
|
|
@@ -119,10 +119,10 @@ async function generateEvidence(scanType, results, projectPath) {
|
|
|
119
119
|
.slice(0, 16);
|
|
120
120
|
// Build manifest
|
|
121
121
|
const manifest = {
|
|
122
|
-
schemaVersion: '
|
|
122
|
+
schemaVersion: 'vibecheck.evidence.v1',
|
|
123
123
|
runId,
|
|
124
124
|
tool: {
|
|
125
|
-
name: '
|
|
125
|
+
name: 'vibecheck-cli-tool',
|
|
126
126
|
version,
|
|
127
127
|
},
|
|
128
128
|
project: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/commands/evidence.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/commands/evidence.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/explain.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* vibecheck explain
|
|
4
4
|
*
|
|
5
5
|
* Get detailed explanation of a finding
|
|
6
6
|
*/
|
|
@@ -19,10 +19,10 @@ function registerExplainCommand(program) {
|
|
|
19
19
|
.action(async (findingId, options) => {
|
|
20
20
|
(0, ui_1.printLogo)();
|
|
21
21
|
const projectPath = (0, path_1.resolve)(options.path);
|
|
22
|
-
const scanFile = (0, path_1.join)(projectPath, '.
|
|
22
|
+
const scanFile = (0, path_1.join)(projectPath, '.vibecheck', 'scan.json');
|
|
23
23
|
if (!(0, fs_1.existsSync)(scanFile)) {
|
|
24
24
|
console.error(`\n ${ui_2.styles.brightRed}${ui_2.icons.error}${ui_2.styles.reset} No scan results found`);
|
|
25
|
-
console.log(` ${ui_2.styles.dim}Run ${ui_2.styles.bold}
|
|
25
|
+
console.log(` ${ui_2.styles.dim}Run ${ui_2.styles.bold}vibecheck scan${ui_2.styles.reset}${ui_2.styles.dim} first${ui_2.styles.reset}\n`);
|
|
26
26
|
process.exit(2);
|
|
27
27
|
}
|
|
28
28
|
const scanResult = JSON.parse((0, fs_1.readFileSync)(scanFile, 'utf-8'));
|
|
@@ -46,7 +46,7 @@ function registerExplainCommand(program) {
|
|
|
46
46
|
});
|
|
47
47
|
console.log('');
|
|
48
48
|
}
|
|
49
|
-
console.log(` ${ui_2.styles.bold}Fix:${ui_2.styles.reset} ${ui_2.styles.bold}
|
|
49
|
+
console.log(` ${ui_2.styles.bold}Fix:${ui_2.styles.reset} ${ui_2.styles.bold}vibecheck fix --id ${finding.id}${ui_2.styles.reset}\n`);
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
//# sourceMappingURL=explain.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* vibecheck fix
|
|
4
4
|
*
|
|
5
5
|
* Safe autofix for only "high confidence" items.
|
|
6
6
|
* Only fixes that can be proven won't break behavior.
|
|
@@ -22,10 +22,10 @@ function registerFixCommand(program) {
|
|
|
22
22
|
.action(async (options) => {
|
|
23
23
|
(0, ui_1.printLogo)();
|
|
24
24
|
const projectPath = (0, path_1.resolve)(options.path);
|
|
25
|
-
const scanFile = (0, path_1.join)(projectPath, '.
|
|
25
|
+
const scanFile = (0, path_1.join)(projectPath, '.vibecheck', 'scan.json');
|
|
26
26
|
if (!(0, fs_1.existsSync)(scanFile)) {
|
|
27
27
|
console.error(`\n ${ui_2.styles.brightRed}${ui_2.icons.error}${ui_2.styles.reset} No scan results found`);
|
|
28
|
-
console.log(` ${ui_2.styles.dim}Run ${ui_2.styles.bold}
|
|
28
|
+
console.log(` ${ui_2.styles.dim}Run ${ui_2.styles.bold}vibecheck scan${ui_2.styles.reset}${ui_2.styles.dim} first${ui_2.styles.reset}\n`);
|
|
29
29
|
process.exit(2);
|
|
30
30
|
}
|
|
31
31
|
const scanResult = JSON.parse((0, fs_1.readFileSync)(scanFile, 'utf-8'));
|
package/dist/commands/init.d.ts
CHANGED
package/dist/commands/init.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* vibecheck init
|
|
4
4
|
*
|
|
5
5
|
* One-time setup. Builds Truth Pack. Installs MCP/rules. Confirms "AI connected ✅".
|
|
6
6
|
*/
|
|
@@ -20,7 +20,7 @@ function registerInitCommand(program) {
|
|
|
20
20
|
.action(async (options) => {
|
|
21
21
|
(0, ui_1.printLogo)();
|
|
22
22
|
const projectPath = (0, path_1.resolve)(options.path);
|
|
23
|
-
console.log(`\n${ui_2.styles.brightCyan}${ui_2.styles.bold}${ui_2.icons.info} INITIALIZING
|
|
23
|
+
console.log(`\n${ui_2.styles.brightCyan}${ui_2.styles.bold}${ui_2.icons.info} INITIALIZING vibecheck${ui_2.styles.reset}\n`);
|
|
24
24
|
// Check if already initialized
|
|
25
25
|
const generator = new truth_pack_1.TruthPackGenerator(projectPath);
|
|
26
26
|
if (!options.force && generator.isFresh()) {
|
|
@@ -55,9 +55,9 @@ function registerInitCommand(program) {
|
|
|
55
55
|
}
|
|
56
56
|
// Next steps
|
|
57
57
|
console.log(`\n ${ui_2.styles.bold}Next Steps:${ui_2.styles.reset}`);
|
|
58
|
-
console.log(` ${ui_2.styles.cyan}${ui_2.icons.bullet}${ui_2.styles.reset} Start Context Mode: ${ui_2.styles.bold}
|
|
59
|
-
console.log(` ${ui_2.styles.cyan}${ui_2.icons.bullet}${ui_2.styles.reset} View stats: ${ui_2.styles.bold}
|
|
60
|
-
console.log(` ${ui_2.styles.cyan}${ui_2.icons.bullet}${ui_2.styles.reset} Run ship check: ${ui_2.styles.bold}
|
|
58
|
+
console.log(` ${ui_2.styles.cyan}${ui_2.icons.bullet}${ui_2.styles.reset} Start Context Mode: ${ui_2.styles.bold}vibecheck on${ui_2.styles.reset}`);
|
|
59
|
+
console.log(` ${ui_2.styles.cyan}${ui_2.icons.bullet}${ui_2.styles.reset} View stats: ${ui_2.styles.bold}vibecheck stats${ui_2.styles.reset}`);
|
|
60
|
+
console.log(` ${ui_2.styles.cyan}${ui_2.icons.bullet}${ui_2.styles.reset} Run ship check: ${ui_2.styles.bold}vibecheck ship${ui_2.styles.reset}`);
|
|
61
61
|
console.log('');
|
|
62
62
|
console.log(` ${ui_2.styles.brightGreen}${ui_2.icons.success}${ui_2.styles.reset} ${ui_2.styles.bold}AI connected ✅${ui_2.styles.reset}\n`);
|
|
63
63
|
}
|
|
@@ -69,8 +69,8 @@ function registerInitCommand(program) {
|
|
|
69
69
|
}
|
|
70
70
|
// Install MCP configuration
|
|
71
71
|
async function installMCPConfig(projectPath) {
|
|
72
|
-
const mcpConfigPath = (0, path_1.join)(projectPath, '.
|
|
73
|
-
const mcpDir = (0, path_1.join)(projectPath, '.
|
|
72
|
+
const mcpConfigPath = (0, path_1.join)(projectPath, '.vibecheck', 'mcp-config.json');
|
|
73
|
+
const mcpDir = (0, path_1.join)(projectPath, '.vibecheck', 'mcp');
|
|
74
74
|
// Ensure directory exists
|
|
75
75
|
if (!(0, fs_1.existsSync)(mcpDir)) {
|
|
76
76
|
(0, fs_1.mkdirSync)(mcpDir, { recursive: true });
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Interactive CLI Launcher
|
|
3
3
|
*
|
|
4
|
-
* Running
|
|
4
|
+
* Running vibecheck with no args opens a slick interactive menu:
|
|
5
5
|
* - Shows connected status, Truth Pack freshness, tier, last 24h stats
|
|
6
6
|
* - Lets you run: on / checkpoint / stats / ship / init / doctor / login
|
|
7
7
|
* - Has Pro lock indicator for ship
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Interactive CLI Launcher
|
|
4
4
|
*
|
|
5
|
-
* Running
|
|
5
|
+
* Running vibecheck with no args opens a slick interactive menu:
|
|
6
6
|
* - Shows connected status, Truth Pack freshness, tier, last 24h stats
|
|
7
7
|
* - Lets you run: on / checkpoint / stats / ship / init / doctor / login
|
|
8
8
|
* - Has Pro lock indicator for ship
|
|
@@ -57,7 +57,7 @@ async function runInteractiveLauncher() {
|
|
|
57
57
|
const truthPackFresh = generator.isFresh(24);
|
|
58
58
|
const truthPackExists = (0, fs_1.existsSync)(generator.getPath());
|
|
59
59
|
// Load stats
|
|
60
|
-
const statsFile = (0, path_1.join)(projectPath, '.
|
|
60
|
+
const statsFile = (0, path_1.join)(projectPath, '.vibecheck', 'stats.json');
|
|
61
61
|
let last24hStats = { hallucinationsBlocked: 0, symbolsVerified: 0 };
|
|
62
62
|
if ((0, fs_1.existsSync)(statsFile)) {
|
|
63
63
|
try {
|
|
@@ -119,27 +119,27 @@ async function runInteractiveLauncher() {
|
|
|
119
119
|
try {
|
|
120
120
|
switch (action) {
|
|
121
121
|
case 'init':
|
|
122
|
-
execSync(`
|
|
122
|
+
execSync(`vibecheck init -p "${projectPath}"`, { stdio: 'inherit' });
|
|
123
123
|
break;
|
|
124
124
|
case 'on':
|
|
125
|
-
execSync(`
|
|
125
|
+
execSync(`vibecheck on -p "${projectPath}"`, { stdio: 'inherit' });
|
|
126
126
|
break;
|
|
127
127
|
case 'stats':
|
|
128
|
-
execSync(`
|
|
128
|
+
execSync(`vibecheck stats -p "${projectPath}"`, { stdio: 'inherit' });
|
|
129
129
|
break;
|
|
130
130
|
case 'checkpoint':
|
|
131
|
-
execSync(`
|
|
131
|
+
execSync(`vibecheck checkpoint -p "${projectPath}"`, { stdio: 'inherit' });
|
|
132
132
|
break;
|
|
133
133
|
case 'ship':
|
|
134
|
-
execSync(`
|
|
134
|
+
execSync(`vibecheck ship -p "${projectPath}"`, { stdio: 'inherit' });
|
|
135
135
|
break;
|
|
136
136
|
case 'doctor':
|
|
137
|
-
execSync(`
|
|
137
|
+
execSync(`vibecheck doctor -p "${projectPath}"`, { stdio: 'inherit' });
|
|
138
138
|
break;
|
|
139
139
|
case 'login':
|
|
140
140
|
// Use existing interactive menu for auth
|
|
141
141
|
// For now, just show auth command help
|
|
142
|
-
console.log(`\n ${ui_2.styles.brightCyan}${ui_2.icons.info}${ui_2.styles.reset} Run ${ui_2.styles.bold}
|
|
142
|
+
console.log(`\n ${ui_2.styles.brightCyan}${ui_2.icons.info}${ui_2.styles.reset} Run ${ui_2.styles.bold}vibecheck login${ui_2.styles.reset} to authenticate\n`);
|
|
143
143
|
break;
|
|
144
144
|
}
|
|
145
145
|
}
|
package/dist/commands/on.d.ts
CHANGED
package/dist/commands/on.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* vibecheck on
|
|
4
4
|
*
|
|
5
5
|
* Always-on Context Mode (watcher + MCP server + telemetry). This is the relationship.
|
|
6
6
|
*/
|
|
@@ -58,7 +58,7 @@ function registerOnCommand(program) {
|
|
|
58
58
|
const generator = new truth_pack_1.TruthPackGenerator(projectPath);
|
|
59
59
|
if (!generator.isFresh(168)) { // 7 days
|
|
60
60
|
console.log(` ${ui_2.styles.brightYellow}${ui_2.icons.warning}${ui_2.styles.reset} Truth Pack is stale or missing`);
|
|
61
|
-
console.log(` ${ui_2.styles.dim}Run ${ui_2.styles.bold}
|
|
61
|
+
console.log(` ${ui_2.styles.dim}Run ${ui_2.styles.bold}vibecheck init${ui_2.styles.reset}${ui_2.styles.dim} first${ui_2.styles.reset}\n`);
|
|
62
62
|
process.exit(1);
|
|
63
63
|
}
|
|
64
64
|
console.log(` ${ui_2.styles.brightGreen}${ui_2.icons.success}${ui_2.styles.reset} Truth Pack found`);
|
package/dist/commands/replay.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* vibecheck replay
|
|
4
4
|
*
|
|
5
5
|
* Re-run the exact failing proofs from a previous scan
|
|
6
6
|
*/
|
|
@@ -19,11 +19,11 @@ function registerReplayCommand(program) {
|
|
|
19
19
|
.action(async (scanId, options) => {
|
|
20
20
|
(0, ui_1.printLogo)();
|
|
21
21
|
const projectPath = (0, path_1.resolve)(options.path);
|
|
22
|
-
const scanFile = (0, path_1.join)(projectPath, '.
|
|
23
|
-
const proofFile = (0, path_1.join)(projectPath, '.
|
|
22
|
+
const scanFile = (0, path_1.join)(projectPath, '.vibecheck', 'scan.json');
|
|
23
|
+
const proofFile = (0, path_1.join)(projectPath, '.vibecheck', 'proof.json');
|
|
24
24
|
if (!(0, fs_1.existsSync)(scanFile)) {
|
|
25
25
|
console.error(`\n ${ui_2.styles.brightRed}${ui_2.icons.error}${ui_2.styles.reset} No scan results found`);
|
|
26
|
-
console.log(` ${ui_2.styles.dim}Run ${ui_2.styles.bold}
|
|
26
|
+
console.log(` ${ui_2.styles.dim}Run ${ui_2.styles.bold}vibecheck scan${ui_2.styles.reset}${ui_2.styles.dim} first${ui_2.styles.reset}\n`);
|
|
27
27
|
process.exit(2);
|
|
28
28
|
}
|
|
29
29
|
const scanResult = JSON.parse((0, fs_1.readFileSync)(scanFile, 'utf-8'));
|
|
@@ -46,7 +46,7 @@ function registerReplayCommand(program) {
|
|
|
46
46
|
console.log(` ${ui_2.styles.dim}${finding.file}:${finding.line}${ui_2.styles.reset}`);
|
|
47
47
|
}
|
|
48
48
|
console.log('');
|
|
49
|
-
console.log(` ${ui_2.styles.bold}Next:${ui_2.styles.reset} Review proof bundle in .
|
|
49
|
+
console.log(` ${ui_2.styles.bold}Next:${ui_2.styles.reset} Review proof bundle in .vibecheck/artifacts/\n`);
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
52
|
//# sourceMappingURL=replay.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* vibecheck scan
|
|
4
4
|
*
|
|
5
5
|
* Fast "Reality Sniff + Proof" on the local repo.
|
|
6
6
|
* Consolidates all scanning capabilities into one command.
|
|
@@ -34,7 +34,7 @@ function registerScanCommand(program) {
|
|
|
34
34
|
(0, ui_1.printLogo)();
|
|
35
35
|
}
|
|
36
36
|
const projectPath = (0, path_1.resolve)(options.path);
|
|
37
|
-
const outputPath = options.output || (0, path_1.join)(projectPath, '.
|
|
37
|
+
const outputPath = options.output || (0, path_1.join)(projectPath, '.vibecheck', 'scan.json');
|
|
38
38
|
// Ensure output directory exists
|
|
39
39
|
const outputDir = (0, path_1.join)(outputPath, '..');
|
|
40
40
|
if (!(0, fs_1.existsSync)(outputDir)) {
|
|
@@ -167,15 +167,15 @@ function registerScanCommand(program) {
|
|
|
167
167
|
function getNextActions(verdict, findings) {
|
|
168
168
|
const actions = [];
|
|
169
169
|
if (verdict === 'FAIL') {
|
|
170
|
-
actions.push('
|
|
171
|
-
actions.push('
|
|
170
|
+
actions.push('vibecheck fix --id <finding-id>');
|
|
171
|
+
actions.push('vibecheck explain <finding-id>');
|
|
172
172
|
}
|
|
173
173
|
else if (verdict === 'WARN') {
|
|
174
|
-
actions.push('
|
|
175
|
-
actions.push('
|
|
174
|
+
actions.push('vibecheck ship (to run full checks)');
|
|
175
|
+
actions.push('vibecheck explain <finding-id>');
|
|
176
176
|
}
|
|
177
177
|
else {
|
|
178
|
-
actions.push('
|
|
178
|
+
actions.push('vibecheck ship (to run deployment gate)');
|
|
179
179
|
}
|
|
180
180
|
return actions;
|
|
181
181
|
}
|
|
@@ -198,7 +198,7 @@ function outputHumanReadable(result, details = false) {
|
|
|
198
198
|
});
|
|
199
199
|
console.log('');
|
|
200
200
|
}
|
|
201
|
-
console.log(` ${ui_2.styles.bold}Next best action:${ui_2.styles.reset} ${ui_2.styles.bold}${result.nextActions[0] || '
|
|
201
|
+
console.log(` ${ui_2.styles.bold}Next best action:${ui_2.styles.reset} ${ui_2.styles.bold}${result.nextActions[0] || 'vibecheck ship'}${ui_2.styles.reset}`);
|
|
202
202
|
if (details && result.nextActions.length > 1) {
|
|
203
203
|
console.log(`\n ${ui_2.styles.bold}All actions:${ui_2.styles.reset}`);
|
|
204
204
|
result.nextActions.forEach(action => {
|
|
@@ -217,7 +217,7 @@ function outputPlain(result) {
|
|
|
217
217
|
console.log(` ${blocker.id}: ${blocker.type} - ${blocker.file}:${blocker.line}`);
|
|
218
218
|
});
|
|
219
219
|
}
|
|
220
|
-
console.log(`\nNext best action: ${result.nextActions[0] || '
|
|
220
|
+
console.log(`\nNext best action: ${result.nextActions[0] || 'vibecheck ship'}`);
|
|
221
221
|
}
|
|
222
222
|
function getVerdictColor(verdict) {
|
|
223
223
|
switch (verdict) {
|
|
@@ -230,7 +230,7 @@ function getVerdictColor(verdict) {
|
|
|
230
230
|
}
|
|
231
231
|
}
|
|
232
232
|
function generateHotspotsMarkdown(result) {
|
|
233
|
-
let md = '#
|
|
233
|
+
let md = '# vibecheck Hotspots\n\n';
|
|
234
234
|
md += `Generated: ${result.timestamp}\n\n`;
|
|
235
235
|
md += `## Top Risk Files\n\n`;
|
|
236
236
|
result.hotspots.forEach((hotspot, i) => {
|
|
@@ -8,7 +8,7 @@ exports.scanSecrets = scanSecrets;
|
|
|
8
8
|
exports.outputSecretsResults = outputSecretsResults;
|
|
9
9
|
exports.registerScanSecretsCommand = registerScanSecretsCommand;
|
|
10
10
|
const path_1 = require("path");
|
|
11
|
-
const security_1 = require('../bundles/
|
|
11
|
+
const security_1 = require('../bundles/vibecheck-security');
|
|
12
12
|
const exit_codes_1 = require("../runtime/exit-codes");
|
|
13
13
|
const evidence_1 = require("./evidence");
|
|
14
14
|
const sarif_1 = require("../formatters/sarif");
|
|
@@ -96,7 +96,7 @@ async function scanSecrets(projectPath, options) {
|
|
|
96
96
|
const lowEntropy = findings.filter(f => f.entropy < 4.0).length;
|
|
97
97
|
// Log performance stats if verbose
|
|
98
98
|
if (report.performance.customPatternsLoaded > 0) {
|
|
99
|
-
console.log(` ${c.info('ℹ')} Loaded ${report.performance.customPatternsLoaded} custom patterns from .
|
|
99
|
+
console.log(` ${c.info('ℹ')} Loaded ${report.performance.customPatternsLoaded} custom patterns from .vibecheck/secrets.yaml`);
|
|
100
100
|
}
|
|
101
101
|
if (report.performance.allowlistSuppressed > 0) {
|
|
102
102
|
console.log(` ${c.info('ℹ')} Suppressed ${report.performance.allowlistSuppressed} allowlisted detections`);
|
|
@@ -163,8 +163,8 @@ function registerScanSecretsCommand(program, requireAuth, printLogo) {
|
|
|
163
163
|
.option('--evidence', 'Generate signed evidence pack', false)
|
|
164
164
|
.option('--history', 'Scan git commit history for secrets', false)
|
|
165
165
|
.option('--history-depth <number>', 'Number of commits to scan (default: 50)', '50')
|
|
166
|
-
.option('--no-custom-patterns', 'Disable custom patterns from .
|
|
167
|
-
.option('--no-allowlist', 'Disable allowlist from .
|
|
166
|
+
.option('--no-custom-patterns', 'Disable custom patterns from .vibecheck/secrets.yaml')
|
|
167
|
+
.option('--no-allowlist', 'Disable allowlist from .vibecheck/secrets.allowlist')
|
|
168
168
|
.option('--no-contextual-risk', 'Disable contextual risk adjustment')
|
|
169
169
|
.action(async (opts) => {
|
|
170
170
|
requireAuth();
|
|
@@ -199,7 +199,7 @@ function registerScanSecretsCommand(program, requireAuth, printLogo) {
|
|
|
199
199
|
console.error(` • ${detail}`);
|
|
200
200
|
}
|
|
201
201
|
}
|
|
202
|
-
console.error(`\n Fix .
|
|
202
|
+
console.error(`\n Fix .vibecheck/secrets.yaml and try again.\n`);
|
|
203
203
|
process.exit(1);
|
|
204
204
|
}
|
|
205
205
|
throw err;
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* - SARIF output support
|
|
12
12
|
*/
|
|
13
13
|
import { Command } from 'commander';
|
|
14
|
-
import { type Ecosystem, type VulnerabilityCheckResult } from '@
|
|
14
|
+
import { type Ecosystem, type VulnerabilityCheckResult } from '@vibecheck/security';
|
|
15
15
|
export interface EnhancedVulnResult {
|
|
16
16
|
projectPath: string;
|
|
17
17
|
scanType: string;
|
|
@@ -18,7 +18,7 @@ exports.registerScanVulnerabilitiesEnhancedCommand = registerScanVulnerabilities
|
|
|
18
18
|
const path_1 = require("path");
|
|
19
19
|
const fs_1 = require("fs");
|
|
20
20
|
const exit_codes_1 = require("../runtime/exit-codes");
|
|
21
|
-
const security_1 = require('../bundles/
|
|
21
|
+
const security_1 = require('../bundles/vibecheck-security');
|
|
22
22
|
const evidence_1 = require("./evidence");
|
|
23
23
|
const sarif_enhanced_1 = require("../formatters/sarif-enhanced");
|
|
24
24
|
const c = {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* - Direct vs transitive vulnerability grouping
|
|
14
14
|
*/
|
|
15
15
|
import { Command } from 'commander';
|
|
16
|
-
import { type Ecosystem, type VulnerabilityCheckResult } from '@
|
|
16
|
+
import { type Ecosystem, type VulnerabilityCheckResult } from '@vibecheck/security';
|
|
17
17
|
export interface OSVVulnResult {
|
|
18
18
|
projectPath: string;
|
|
19
19
|
scanType: string;
|