@indicated/vibeguard 1.0.0 → 1.1.0
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/PROGRESS.md +42 -13
- package/dist/api/license.d.ts +14 -2
- package/dist/api/license.d.ts.map +1 -1
- package/dist/api/license.js +46 -13
- package/dist/api/license.js.map +1 -1
- package/dist/cli/commands/scan.d.ts.map +1 -1
- package/dist/cli/commands/scan.js +7 -2
- package/dist/cli/commands/scan.js.map +1 -1
- package/dist/cli/commands/upgrade.d.ts +3 -0
- package/dist/cli/commands/upgrade.d.ts.map +1 -0
- package/dist/cli/commands/upgrade.js +70 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +3 -2
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +27 -4
- package/dist/cli/output.js.map +1 -1
- package/dist/scanner/index.d.ts +4 -1
- package/dist/scanner/index.d.ts.map +1 -1
- package/dist/scanner/index.js +15 -2
- package/dist/scanner/index.js.map +1 -1
- package/dist/scanner/parsers/javascript.d.ts.map +1 -1
- package/dist/scanner/parsers/javascript.js +6 -0
- package/dist/scanner/parsers/javascript.js.map +1 -1
- package/dist/scanner/parsers/python.d.ts.map +1 -1
- package/dist/scanner/parsers/python.js +2 -0
- package/dist/scanner/parsers/python.js.map +1 -1
- package/dist/scanner/rules/definitions.d.ts.map +1 -1
- package/dist/scanner/rules/definitions.js +52 -4
- package/dist/scanner/rules/definitions.js.map +1 -1
- package/dist/scanner/rules/matcher.d.ts.map +1 -1
- package/dist/scanner/rules/matcher.js +1 -0
- package/dist/scanner/rules/matcher.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/api/license.ts +50 -15
- package/src/cli/commands/scan.ts +8 -2
- package/src/cli/commands/upgrade.ts +76 -0
- package/src/cli/index.ts +2 -0
- package/src/cli/output.ts +28 -5
- package/src/scanner/index.ts +19 -3
- package/src/scanner/parsers/javascript.ts +6 -0
- package/src/scanner/parsers/python.ts +2 -0
- package/src/scanner/rules/definitions.ts +53 -4
- package/src/scanner/rules/matcher.ts +1 -0
- package/src/types.ts +3 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../src/scanner/rules/definitions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../src/scanner/rules/definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../../src/scanner/rules/matcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,YAAY,GACpB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../../src/scanner/rules/matcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,YAAY,GACpB,OAAO,EAAE,CAoCX;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAQlE;AAED,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAQ7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../../src/scanner/rules/matcher.ts"],"names":[],"mappings":";;AASA,
|
|
1
|
+
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../../src/scanner/rules/matcher.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export type Severity = 'critical' | 'high' | 'medium' | 'low';
|
|
2
|
+
export type Tier = 'free' | 'pro';
|
|
2
3
|
export interface SecurityRule {
|
|
3
4
|
id: string;
|
|
4
5
|
name: string;
|
|
5
6
|
description: string;
|
|
6
7
|
severity: Severity;
|
|
8
|
+
tier: Tier;
|
|
7
9
|
languages: ('javascript' | 'typescript' | 'python')[];
|
|
8
10
|
patterns?: RegExp[];
|
|
9
11
|
astMatcher?: string;
|
|
@@ -16,6 +18,7 @@ export interface Finding {
|
|
|
16
18
|
column: number;
|
|
17
19
|
code: string;
|
|
18
20
|
message: string;
|
|
21
|
+
isRestricted: boolean;
|
|
19
22
|
}
|
|
20
23
|
export interface ScanResult {
|
|
21
24
|
files: number;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAC9D,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,KAAK,CAAC;AAElC,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,IAAI,CAAC;IACX,SAAS,EAAE,CAAC,YAAY,GAAG,YAAY,GAAG,QAAQ,CAAC,EAAE,CAAC;IACtD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,MAAM;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@indicated/vibeguard",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Local CLI security scanner for AI-generated code",
|
|
5
5
|
"main": "dist/cli/index.js",
|
|
6
6
|
"bin": {
|
|
7
|
-
"vibeguard": "
|
|
7
|
+
"vibeguard": "dist/cli/index.js"
|
|
8
8
|
},
|
|
9
9
|
"scripts": {
|
|
10
10
|
"build": "tsc",
|
package/src/api/license.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import * as os from 'os';
|
|
4
|
+
import { Tier } from '../types';
|
|
4
5
|
|
|
5
6
|
const CONFIG_DIR = path.join(os.homedir(), '.vibeguard');
|
|
6
7
|
const LICENSE_FILE = path.join(CONFIG_DIR, 'license.json');
|
|
@@ -10,6 +11,7 @@ interface LicenseData {
|
|
|
10
11
|
key: string;
|
|
11
12
|
email?: string;
|
|
12
13
|
validUntil?: string;
|
|
14
|
+
tier?: Tier;
|
|
13
15
|
}
|
|
14
16
|
|
|
15
17
|
export function getLicenseKey(): string | null {
|
|
@@ -24,12 +26,28 @@ export function getLicenseKey(): string | null {
|
|
|
24
26
|
return null;
|
|
25
27
|
}
|
|
26
28
|
|
|
27
|
-
export function
|
|
29
|
+
export function getLicenseData(): LicenseData | null {
|
|
30
|
+
try {
|
|
31
|
+
if (fs.existsSync(LICENSE_FILE)) {
|
|
32
|
+
return JSON.parse(fs.readFileSync(LICENSE_FILE, 'utf-8'));
|
|
33
|
+
}
|
|
34
|
+
} catch {
|
|
35
|
+
// Ignore errors
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export function getCachedTier(): Tier {
|
|
41
|
+
const data = getLicenseData();
|
|
42
|
+
return data?.tier || 'free';
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function saveLicenseKey(key: string, email?: string, tier?: Tier): void {
|
|
28
46
|
if (!fs.existsSync(CONFIG_DIR)) {
|
|
29
47
|
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
30
48
|
}
|
|
31
49
|
|
|
32
|
-
const data: LicenseData = { key, email };
|
|
50
|
+
const data: LicenseData = { key, email, tier: tier || 'pro' };
|
|
33
51
|
fs.writeFileSync(LICENSE_FILE, JSON.stringify(data, null, 2));
|
|
34
52
|
}
|
|
35
53
|
|
|
@@ -42,11 +60,11 @@ export function clearLicenseKey(): void {
|
|
|
42
60
|
export async function validateLicense(key: string): Promise<{
|
|
43
61
|
valid: boolean;
|
|
44
62
|
message?: string;
|
|
45
|
-
tier
|
|
63
|
+
tier: Tier;
|
|
46
64
|
}> {
|
|
47
|
-
// For offline/development mode, accept any key
|
|
65
|
+
// For offline/development mode, accept any key and grant pro access
|
|
48
66
|
if (process.env.VIBEGUARD_OFFLINE === 'true') {
|
|
49
|
-
return { valid: true, tier: '
|
|
67
|
+
return { valid: true, tier: 'pro' };
|
|
50
68
|
}
|
|
51
69
|
|
|
52
70
|
try {
|
|
@@ -60,9 +78,11 @@ export async function validateLicense(key: string): Promise<{
|
|
|
60
78
|
|
|
61
79
|
if (response.ok) {
|
|
62
80
|
const data = (await response.json()) as { tier?: string };
|
|
81
|
+
// Map tier from API to our Tier type
|
|
82
|
+
const tier: Tier = data.tier === 'pro' ? 'pro' : 'free';
|
|
63
83
|
return {
|
|
64
84
|
valid: true,
|
|
65
|
-
tier
|
|
85
|
+
tier,
|
|
66
86
|
};
|
|
67
87
|
}
|
|
68
88
|
|
|
@@ -70,24 +90,35 @@ export async function validateLicense(key: string): Promise<{
|
|
|
70
90
|
return {
|
|
71
91
|
valid: false,
|
|
72
92
|
message: error.message || 'Invalid license key',
|
|
93
|
+
tier: 'free',
|
|
73
94
|
};
|
|
74
95
|
} catch {
|
|
75
|
-
// If API is unreachable,
|
|
96
|
+
// If API is unreachable, use cached tier or default to free
|
|
97
|
+
const cachedTier = getCachedTier();
|
|
76
98
|
return {
|
|
77
99
|
valid: true,
|
|
78
100
|
message: 'Running in offline mode',
|
|
79
|
-
tier:
|
|
101
|
+
tier: cachedTier,
|
|
80
102
|
};
|
|
81
103
|
}
|
|
82
104
|
}
|
|
83
105
|
|
|
106
|
+
export async function getUserTier(licenseKey?: string): Promise<Tier> {
|
|
107
|
+
if (!licenseKey) {
|
|
108
|
+
return 'free';
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
const result = await validateLicense(licenseKey);
|
|
112
|
+
return result.tier;
|
|
113
|
+
}
|
|
114
|
+
|
|
84
115
|
export async function activateLicense(
|
|
85
116
|
email: string,
|
|
86
117
|
key: string
|
|
87
|
-
): Promise<{ success: boolean; message: string }> {
|
|
118
|
+
): Promise<{ success: boolean; message: string; tier: Tier }> {
|
|
88
119
|
if (process.env.VIBEGUARD_OFFLINE === 'true') {
|
|
89
|
-
saveLicenseKey(key, email);
|
|
90
|
-
return { success: true, message: 'License activated in offline mode' };
|
|
120
|
+
saveLicenseKey(key, email, 'pro');
|
|
121
|
+
return { success: true, message: 'License activated in offline mode', tier: 'pro' };
|
|
91
122
|
}
|
|
92
123
|
|
|
93
124
|
try {
|
|
@@ -100,21 +131,25 @@ export async function activateLicense(
|
|
|
100
131
|
});
|
|
101
132
|
|
|
102
133
|
if (response.ok) {
|
|
103
|
-
|
|
104
|
-
|
|
134
|
+
const data = (await response.json()) as { tier?: string };
|
|
135
|
+
const tier: Tier = data.tier === 'pro' ? 'pro' : 'free';
|
|
136
|
+
saveLicenseKey(key, email, tier);
|
|
137
|
+
return { success: true, message: 'License activated successfully', tier };
|
|
105
138
|
}
|
|
106
139
|
|
|
107
140
|
const error = (await response.json().catch(() => ({}))) as { message?: string };
|
|
108
141
|
return {
|
|
109
142
|
success: false,
|
|
110
143
|
message: error.message || 'Failed to activate license',
|
|
144
|
+
tier: 'free',
|
|
111
145
|
};
|
|
112
146
|
} catch {
|
|
113
|
-
// Allow offline activation
|
|
114
|
-
saveLicenseKey(key, email);
|
|
147
|
+
// Allow offline activation - assume pro for offline mode
|
|
148
|
+
saveLicenseKey(key, email, 'pro');
|
|
115
149
|
return {
|
|
116
150
|
success: true,
|
|
117
151
|
message: 'License saved locally (offline mode)',
|
|
152
|
+
tier: 'pro',
|
|
118
153
|
};
|
|
119
154
|
}
|
|
120
155
|
}
|
package/src/cli/commands/scan.ts
CHANGED
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
formatError,
|
|
14
14
|
shouldBlockCommit,
|
|
15
15
|
} from '../output';
|
|
16
|
+
import { Tier } from '../../types';
|
|
16
17
|
|
|
17
18
|
const packageJson = require('../../../package.json');
|
|
18
19
|
|
|
@@ -48,17 +49,21 @@ export function createScanCommand(): Command {
|
|
|
48
49
|
|
|
49
50
|
// Output results
|
|
50
51
|
if (options.json) {
|
|
52
|
+
const userTier: Tier = scanner.getUserTier();
|
|
51
53
|
console.log(JSON.stringify({
|
|
52
54
|
version: packageJson.version,
|
|
55
|
+
tier: userTier,
|
|
53
56
|
files: result.files,
|
|
54
57
|
findings: result.findings.map(f => ({
|
|
55
58
|
rule: f.rule.id,
|
|
56
59
|
severity: f.rule.severity,
|
|
60
|
+
tier: f.rule.tier,
|
|
57
61
|
file: path.relative(cwd, f.file),
|
|
58
62
|
line: f.line,
|
|
59
63
|
column: f.column,
|
|
60
64
|
message: f.rule.name,
|
|
61
|
-
fix: f.rule.fix,
|
|
65
|
+
fix: f.isRestricted ? null : f.rule.fix,
|
|
66
|
+
isRestricted: f.isRestricted,
|
|
62
67
|
})),
|
|
63
68
|
duration: result.duration,
|
|
64
69
|
}, null, 2));
|
|
@@ -66,10 +71,11 @@ export function createScanCommand(): Command {
|
|
|
66
71
|
if (result.findings.length === 0) {
|
|
67
72
|
console.log(formatCleanResult());
|
|
68
73
|
} else {
|
|
74
|
+
const userTier: Tier = scanner.getUserTier();
|
|
69
75
|
for (const finding of result.findings) {
|
|
70
76
|
console.log(formatFinding(finding, cwd));
|
|
71
77
|
}
|
|
72
|
-
console.log(formatSummary(result));
|
|
78
|
+
console.log(formatSummary(result, userTier));
|
|
73
79
|
}
|
|
74
80
|
}
|
|
75
81
|
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { getLicenseKey, getCachedTier } from '../../api/license';
|
|
3
|
+
import { formatSuccess, formatInfo } from '../output';
|
|
4
|
+
|
|
5
|
+
// ANSI color codes
|
|
6
|
+
const colors = {
|
|
7
|
+
reset: '\x1b[0m',
|
|
8
|
+
bold: '\x1b[1m',
|
|
9
|
+
dim: '\x1b[2m',
|
|
10
|
+
cyan: '\x1b[36m',
|
|
11
|
+
green: '\x1b[32m',
|
|
12
|
+
magenta: '\x1b[35m',
|
|
13
|
+
yellow: '\x1b[33m',
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const PRO_FEATURES = [
|
|
17
|
+
'Next.js security rules (server actions, API routes, env exposure)',
|
|
18
|
+
'Django security rules (DEBUG mode, SECRET_KEY, raw SQL)',
|
|
19
|
+
'FastAPI security rules (auth dependencies, CORS)',
|
|
20
|
+
'NestJS security rules (auth guards, exception handling)',
|
|
21
|
+
'React security rules (javascript: URLs, URL state injection)',
|
|
22
|
+
'Express.js security rules (Helmet, body parser, sessions)',
|
|
23
|
+
'Supabase RLS detection',
|
|
24
|
+
'Firebase security rules detection',
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const PRICING = {
|
|
28
|
+
monthly: { price: 9, period: 'month' },
|
|
29
|
+
annual: { price: 79, period: 'year', savings: 29 },
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export function createUpgradeCommand(): Command {
|
|
33
|
+
const upgrade = new Command('upgrade')
|
|
34
|
+
.description('View Pro features and upgrade options')
|
|
35
|
+
.action(() => {
|
|
36
|
+
const licenseKey = getLicenseKey();
|
|
37
|
+
const currentTier = getCachedTier();
|
|
38
|
+
|
|
39
|
+
console.log('');
|
|
40
|
+
console.log(`${colors.cyan}${colors.bold}VibeGuard Pro${colors.reset}`);
|
|
41
|
+
console.log(`${colors.dim}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${colors.reset}`);
|
|
42
|
+
console.log('');
|
|
43
|
+
|
|
44
|
+
if (currentTier === 'pro') {
|
|
45
|
+
console.log(formatSuccess('You are already on the Pro plan!'));
|
|
46
|
+
console.log('');
|
|
47
|
+
console.log(`${colors.dim}License: ${licenseKey?.substring(0, 8)}...${colors.reset}`);
|
|
48
|
+
console.log('');
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
console.log(`${colors.bold}Unlock framework-specific security scanning:${colors.reset}`);
|
|
53
|
+
console.log('');
|
|
54
|
+
|
|
55
|
+
for (const feature of PRO_FEATURES) {
|
|
56
|
+
console.log(` ${colors.green}✓${colors.reset} ${feature}`);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
console.log('');
|
|
60
|
+
console.log(`${colors.dim}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${colors.reset}`);
|
|
61
|
+
console.log('');
|
|
62
|
+
console.log(`${colors.bold}Pricing:${colors.reset}`);
|
|
63
|
+
console.log('');
|
|
64
|
+
console.log(` ${colors.magenta}Monthly${colors.reset} $${PRICING.monthly.price}/${PRICING.monthly.period}`);
|
|
65
|
+
console.log(` ${colors.magenta}Annual${colors.reset} $${PRICING.annual.price}/${PRICING.annual.period} ${colors.green}(Save $${PRICING.annual.savings})${colors.reset}`);
|
|
66
|
+
console.log('');
|
|
67
|
+
console.log(`${colors.dim}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${colors.reset}`);
|
|
68
|
+
console.log('');
|
|
69
|
+
console.log(formatInfo(`Visit ${colors.cyan}https://vibeguard.dev/pro${colors.reset} to upgrade`));
|
|
70
|
+
console.log('');
|
|
71
|
+
console.log(`${colors.dim}After purchase, run: ${colors.reset}vibeguard login`);
|
|
72
|
+
console.log('');
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
return upgrade;
|
|
76
|
+
}
|
package/src/cli/index.ts
CHANGED
|
@@ -6,6 +6,7 @@ import { createLoginCommand, createLogoutCommand } from './commands/login';
|
|
|
6
6
|
import { createInitCommand } from './commands/init';
|
|
7
7
|
import { createRulesCommand } from './commands/rules';
|
|
8
8
|
import { createMcpCommand } from './commands/mcp';
|
|
9
|
+
import { createUpgradeCommand } from './commands/upgrade';
|
|
9
10
|
|
|
10
11
|
const packageJson = require('../../package.json');
|
|
11
12
|
|
|
@@ -23,6 +24,7 @@ program.addCommand(createLogoutCommand());
|
|
|
23
24
|
program.addCommand(createInitCommand());
|
|
24
25
|
program.addCommand(createRulesCommand());
|
|
25
26
|
program.addCommand(createMcpCommand());
|
|
27
|
+
program.addCommand(createUpgradeCommand());
|
|
26
28
|
|
|
27
29
|
// Parse and execute
|
|
28
30
|
program.parse();
|
package/src/cli/output.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Finding, ScanResult, Severity, SecurityRule } from '../types';
|
|
1
|
+
import { Finding, ScanResult, Severity, SecurityRule, Tier } from '../types';
|
|
2
2
|
|
|
3
3
|
// ANSI color codes (chalk is ESM-only, so we use direct codes for CommonJS compatibility)
|
|
4
4
|
const colors = {
|
|
@@ -44,16 +44,22 @@ export function formatFinding(finding: Finding, cwd: string): string {
|
|
|
44
44
|
const severity = formatSeverity(finding.rule.severity);
|
|
45
45
|
|
|
46
46
|
let output = `\n${severity} ${colors.cyan}${location}${colors.reset}\n`;
|
|
47
|
-
output += ` ${finding.rule.name}\n`;
|
|
48
47
|
|
|
49
|
-
if (finding.
|
|
50
|
-
|
|
48
|
+
if (finding.isRestricted) {
|
|
49
|
+
// Show restricted message for pro-only rules when user is on free tier
|
|
50
|
+
output += ` ${colors.magenta}[PRO]${colors.reset} ${finding.rule.name}\n`;
|
|
51
|
+
output += ` ${colors.dim}→ Upgrade to Pro to see fix details${colors.reset}\n`;
|
|
52
|
+
} else {
|
|
53
|
+
output += ` ${finding.rule.name}\n`;
|
|
54
|
+
if (finding.rule.fix) {
|
|
55
|
+
output += ` ${colors.dim}→ ${finding.rule.fix}${colors.reset}\n`;
|
|
56
|
+
}
|
|
51
57
|
}
|
|
52
58
|
|
|
53
59
|
return output;
|
|
54
60
|
}
|
|
55
61
|
|
|
56
|
-
export function formatSummary(result: ScanResult): string {
|
|
62
|
+
export function formatSummary(result: ScanResult, userTier?: Tier): string {
|
|
57
63
|
const counts = {
|
|
58
64
|
critical: 0,
|
|
59
65
|
high: 0,
|
|
@@ -61,8 +67,12 @@ export function formatSummary(result: ScanResult): string {
|
|
|
61
67
|
low: 0,
|
|
62
68
|
};
|
|
63
69
|
|
|
70
|
+
let restrictedCount = 0;
|
|
64
71
|
for (const finding of result.findings) {
|
|
65
72
|
counts[finding.rule.severity]++;
|
|
73
|
+
if (finding.isRestricted) {
|
|
74
|
+
restrictedCount++;
|
|
75
|
+
}
|
|
66
76
|
}
|
|
67
77
|
|
|
68
78
|
const total = result.findings.length;
|
|
@@ -78,6 +88,19 @@ export function formatSummary(result: ScanResult): string {
|
|
|
78
88
|
|
|
79
89
|
output += `Grade: ${formatGrade(grade)}\n`;
|
|
80
90
|
|
|
91
|
+
// Show upgrade prompt if there are restricted findings
|
|
92
|
+
if (restrictedCount > 0 && userTier === 'free') {
|
|
93
|
+
output += formatUpgradePrompt(restrictedCount);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return output;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export function formatUpgradePrompt(restrictedCount: number): string {
|
|
100
|
+
let output = '\n';
|
|
101
|
+
output += `${colors.magenta}${colors.bold}[PRO]${colors.reset} `;
|
|
102
|
+
output += `${restrictedCount} finding${restrictedCount !== 1 ? 's' : ''} require${restrictedCount === 1 ? 's' : ''} Pro to see details\n`;
|
|
103
|
+
output += `${colors.dim}Run ${colors.reset}${colors.cyan}vibeguard upgrade${colors.reset}${colors.dim} to unlock framework-specific security rules${colors.reset}\n`;
|
|
81
104
|
return output;
|
|
82
105
|
}
|
|
83
106
|
|
package/src/scanner/index.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import * as fs from 'fs';
|
|
2
2
|
import * as path from 'path';
|
|
3
3
|
import { glob } from 'glob';
|
|
4
|
-
import { Finding, ScanResult, SecurityRule, Config } from '../types';
|
|
4
|
+
import { Finding, ScanResult, SecurityRule, Config, Tier } from '../types';
|
|
5
5
|
import { loadRules, filterRules } from './rules/loader';
|
|
6
6
|
import { parseJavaScript, scanWithAST, scanWithPatterns } from './parsers/javascript';
|
|
7
7
|
import { scanPythonWithPatterns } from './parsers/python';
|
|
8
|
+
import { getUserTier } from '../api/license';
|
|
8
9
|
|
|
9
10
|
const SUPPORTED_EXTENSIONS: Record<string, string> = {
|
|
10
11
|
'.js': 'javascript',
|
|
@@ -33,12 +34,16 @@ const DEFAULT_EXCLUDE = [
|
|
|
33
34
|
export class Scanner {
|
|
34
35
|
private rules: SecurityRule[] = [];
|
|
35
36
|
private config: Config;
|
|
37
|
+
private userTier: Tier = 'free';
|
|
36
38
|
|
|
37
39
|
constructor(config: Config = {}) {
|
|
38
40
|
this.config = config;
|
|
39
41
|
}
|
|
40
42
|
|
|
41
43
|
async initialize(licenseKey?: string): Promise<void> {
|
|
44
|
+
// Get user tier from license
|
|
45
|
+
this.userTier = await getUserTier(licenseKey);
|
|
46
|
+
|
|
42
47
|
const allRules = await loadRules(licenseKey);
|
|
43
48
|
this.rules = filterRules(allRules, {
|
|
44
49
|
enabled: this.config.rules?.enabled,
|
|
@@ -46,6 +51,10 @@ export class Scanner {
|
|
|
46
51
|
});
|
|
47
52
|
}
|
|
48
53
|
|
|
54
|
+
getUserTier(): Tier {
|
|
55
|
+
return this.userTier;
|
|
56
|
+
}
|
|
57
|
+
|
|
49
58
|
async scan(targets: string[]): Promise<ScanResult> {
|
|
50
59
|
const startTime = Date.now();
|
|
51
60
|
const findings: Finding[] = [];
|
|
@@ -77,7 +86,7 @@ export class Scanner {
|
|
|
77
86
|
|
|
78
87
|
return {
|
|
79
88
|
files: files.length,
|
|
80
|
-
findings: this.sortFindings(findings),
|
|
89
|
+
findings: this.markRestrictedFindings(this.sortFindings(findings)),
|
|
81
90
|
duration: Date.now() - startTime,
|
|
82
91
|
};
|
|
83
92
|
}
|
|
@@ -116,7 +125,7 @@ export class Scanner {
|
|
|
116
125
|
|
|
117
126
|
return {
|
|
118
127
|
files: stagedFiles.length,
|
|
119
|
-
findings: this.sortFindings(findings),
|
|
128
|
+
findings: this.markRestrictedFindings(this.sortFindings(findings)),
|
|
120
129
|
duration: Date.now() - startTime,
|
|
121
130
|
};
|
|
122
131
|
}
|
|
@@ -189,6 +198,13 @@ export class Scanner {
|
|
|
189
198
|
});
|
|
190
199
|
}
|
|
191
200
|
|
|
201
|
+
private markRestrictedFindings(findings: Finding[]): Finding[] {
|
|
202
|
+
return findings.map(finding => ({
|
|
203
|
+
...finding,
|
|
204
|
+
isRestricted: this.userTier === 'free' && finding.rule.tier === 'pro',
|
|
205
|
+
}));
|
|
206
|
+
}
|
|
207
|
+
|
|
192
208
|
getRules(): SecurityRule[] {
|
|
193
209
|
return this.rules;
|
|
194
210
|
}
|
|
@@ -52,6 +52,7 @@ export function scanWithAST(
|
|
|
52
52
|
column: loc?.start.column || 0,
|
|
53
53
|
code: context.lines[(loc?.start.line || 1) - 1] || '',
|
|
54
54
|
message: rule.description,
|
|
55
|
+
isRestricted: false,
|
|
55
56
|
};
|
|
56
57
|
}
|
|
57
58
|
}
|
|
@@ -96,6 +97,7 @@ export function scanWithAST(
|
|
|
96
97
|
column: loc?.start.column || 0,
|
|
97
98
|
code: context.lines[(loc?.start.line || 1) - 1] || '',
|
|
98
99
|
message: rule.description,
|
|
100
|
+
isRestricted: false,
|
|
99
101
|
};
|
|
100
102
|
}
|
|
101
103
|
}
|
|
@@ -124,6 +126,7 @@ export function scanWithAST(
|
|
|
124
126
|
column: loc?.start.column || 0,
|
|
125
127
|
code: context.lines[(loc?.start.line || 1) - 1] || '',
|
|
126
128
|
message: rule.description,
|
|
129
|
+
isRestricted: false,
|
|
127
130
|
};
|
|
128
131
|
}
|
|
129
132
|
}
|
|
@@ -143,6 +146,7 @@ export function scanWithAST(
|
|
|
143
146
|
column: loc?.start.column || 0,
|
|
144
147
|
code: context.lines[(loc?.start.line || 1) - 1] || '',
|
|
145
148
|
message: rule.description,
|
|
149
|
+
isRestricted: false,
|
|
146
150
|
};
|
|
147
151
|
}
|
|
148
152
|
}
|
|
@@ -202,6 +206,7 @@ export function scanWithAST(
|
|
|
202
206
|
column: loc?.start.column || 0,
|
|
203
207
|
code: context.lines[(loc?.start.line || 1) - 1] || '',
|
|
204
208
|
message: `API route ${routePath.value} may be missing authentication`,
|
|
209
|
+
isRestricted: false,
|
|
205
210
|
};
|
|
206
211
|
}
|
|
207
212
|
}
|
|
@@ -275,6 +280,7 @@ export function scanWithPatterns(
|
|
|
275
280
|
column,
|
|
276
281
|
code: lines[lineNumber - 1] || '',
|
|
277
282
|
message: rule.description,
|
|
283
|
+
isRestricted: false,
|
|
278
284
|
});
|
|
279
285
|
}
|
|
280
286
|
}
|
|
@@ -82,6 +82,7 @@ export function scanPythonWithPatterns(
|
|
|
82
82
|
column,
|
|
83
83
|
code: lines[lineNumber - 1] || '',
|
|
84
84
|
message: rule.description,
|
|
85
|
+
isRestricted: false,
|
|
85
86
|
});
|
|
86
87
|
}
|
|
87
88
|
}
|
|
@@ -117,6 +118,7 @@ export function scanPythonWithPatterns(
|
|
|
117
118
|
column,
|
|
118
119
|
code: lines[lineNumber - 1] || '',
|
|
119
120
|
message: rule.description,
|
|
121
|
+
isRestricted: false,
|
|
120
122
|
});
|
|
121
123
|
}
|
|
122
124
|
}
|