@indicated/vibeguard 1.0.1 → 1.2.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.
Files changed (51) hide show
  1. package/PROGRESS.md +42 -13
  2. package/dist/api/license.d.ts +14 -2
  3. package/dist/api/license.d.ts.map +1 -1
  4. package/dist/api/license.js +49 -16
  5. package/dist/api/license.js.map +1 -1
  6. package/dist/cli/commands/scan.d.ts.map +1 -1
  7. package/dist/cli/commands/scan.js +7 -2
  8. package/dist/cli/commands/scan.js.map +1 -1
  9. package/dist/cli/commands/upgrade.d.ts +3 -0
  10. package/dist/cli/commands/upgrade.d.ts.map +1 -0
  11. package/dist/cli/commands/upgrade.js +70 -0
  12. package/dist/cli/commands/upgrade.js.map +1 -0
  13. package/dist/cli/index.js +2 -0
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/cli/output.d.ts +3 -2
  16. package/dist/cli/output.d.ts.map +1 -1
  17. package/dist/cli/output.js +27 -4
  18. package/dist/cli/output.js.map +1 -1
  19. package/dist/scanner/index.d.ts +4 -1
  20. package/dist/scanner/index.d.ts.map +1 -1
  21. package/dist/scanner/index.js +15 -2
  22. package/dist/scanner/index.js.map +1 -1
  23. package/dist/scanner/parsers/javascript.d.ts.map +1 -1
  24. package/dist/scanner/parsers/javascript.js +6 -0
  25. package/dist/scanner/parsers/javascript.js.map +1 -1
  26. package/dist/scanner/parsers/python.d.ts.map +1 -1
  27. package/dist/scanner/parsers/python.js +2 -0
  28. package/dist/scanner/parsers/python.js.map +1 -1
  29. package/dist/scanner/rules/definitions.d.ts.map +1 -1
  30. package/dist/scanner/rules/definitions.js +52 -4
  31. package/dist/scanner/rules/definitions.js.map +1 -1
  32. package/dist/scanner/rules/loader.js +1 -1
  33. package/dist/scanner/rules/loader.js.map +1 -1
  34. package/dist/scanner/rules/matcher.d.ts.map +1 -1
  35. package/dist/scanner/rules/matcher.js +1 -0
  36. package/dist/scanner/rules/matcher.js.map +1 -1
  37. package/dist/types.d.ts +3 -0
  38. package/dist/types.d.ts.map +1 -1
  39. package/package.json +1 -1
  40. package/src/api/license.ts +53 -18
  41. package/src/cli/commands/scan.ts +8 -2
  42. package/src/cli/commands/upgrade.ts +76 -0
  43. package/src/cli/index.ts +2 -0
  44. package/src/cli/output.ts +28 -5
  45. package/src/scanner/index.ts +19 -3
  46. package/src/scanner/parsers/javascript.ts +6 -0
  47. package/src/scanner/parsers/python.ts +2 -0
  48. package/src/scanner/rules/definitions.ts +53 -4
  49. package/src/scanner/rules/loader.ts +1 -1
  50. package/src/scanner/rules/matcher.ts +1 -0
  51. package/src/types.ts +3 -0
package/PROGRESS.md CHANGED
@@ -43,6 +43,7 @@ VibeGuard is a local CLI security scanner for AI-generated code. This document t
43
43
  - [x] `--language` filter
44
44
  - [x] `--json` output
45
45
  - [x] `vibeguard login` / `vibeguard logout` - License key management
46
+ - [x] `vibeguard upgrade` - Show Pro features and pricing
46
47
  - [x] Pretty terminal output with colors
47
48
  - [x] Config file support (`.vibeguardrc.json`)
48
49
 
@@ -53,6 +54,19 @@ VibeGuard is a local CLI security scanner for AI-generated code. This document t
53
54
  - [x] Offline mode fallback (works without server)
54
55
  - [x] API client stubs ready for server integration
55
56
 
57
+ ### Phase 5: Free/Pro Tier System
58
+ - [x] `Tier` type added (`'free' | 'pro'`)
59
+ - [x] All 45 rules categorized by tier:
60
+ - **Free Tier (24 rules):** Basic vulnerabilities - hardcoded secrets, SQL injection, XSS, eval, command injection, CSRF, SSRF, path traversal, etc.
61
+ - **Pro Tier (21 rules):** Framework-specific - Next.js (4), Django (5), FastAPI (2), NestJS (2), React (2), Express (3), Supabase, Firebase, missing-auth-route
62
+ - [x] `isRestricted` field on findings for gated content
63
+ - [x] `[PRO]` badge display for restricted findings
64
+ - [x] Upgrade prompt showing count of restricted findings
65
+ - [x] `vibeguard upgrade` command with pricing and features
66
+ - [x] Tier info in JSON output (`tier`, `isRestricted` fields)
67
+ - [x] License tier caching for offline mode
68
+ - [x] `getUserTier()` and `getCachedTier()` functions
69
+
56
70
  ### Bonus: MCP Integration
57
71
  - [x] `vibeguard mcp` command to start MCP server
58
72
  - [x] `scan_code` tool - Scan files/directories
@@ -64,13 +78,24 @@ VibeGuard is a local CLI security scanner for AI-generated code. This document t
64
78
 
65
79
  ## 🔲 Not Yet Implemented
66
80
 
67
- ### Server-Side (Required for SaaS)
81
+ ### Server-Side: Website + Backend (Phase 2 - Future Session)
82
+ - [ ] Next.js 14+ website on Vercel
83
+ - [ ] Landing page with feature showcase
84
+ - [ ] Pricing page (Monthly $9, Annual $79)
85
+ - [ ] Documentation site
86
+ - [ ] User dashboard (license management, usage stats)
68
87
  - [ ] License validation API (`POST /v1/license/validate`)
69
88
  - [ ] License activation API (`POST /v1/license/activate`)
70
89
  - [ ] Rules API (`GET /v1/rules`) for auto-updates
71
- - [ ] Usage metrics API (`POST /v1/metrics`)
72
- - [ ] Database for license keys and usage tracking
73
- - [ ] Payment integration (Stripe, etc.)
90
+ - [ ] Vercel Postgres database (users, licenses, activations tables)
91
+ - [ ] NextAuth.js or Clerk authentication
92
+
93
+ ### Server-Side: Stripe Integration (Phase 3 - Future Session)
94
+ - [ ] Stripe product setup (Pro Monthly, Pro Annual)
95
+ - [ ] Checkout flow
96
+ - [ ] Webhook handlers for payment events
97
+ - [ ] License key email delivery
98
+ - [ ] Subscription management
74
99
 
75
100
  ### CLI Enhancements
76
101
  - [ ] `vibeguard update` - Manual rule update command
@@ -139,14 +164,15 @@ vibeguard/
139
164
  │ │ ├── init.ts # init command
140
165
  │ │ ├── login.ts # login/logout commands
141
166
  │ │ ├── rules.ts # rules command
142
- │ │ └── mcp.ts # mcp command
167
+ │ │ ├── mcp.ts # mcp command
168
+ │ │ └── upgrade.ts # upgrade command (Pro features/pricing)
143
169
  │ ├── scanner/
144
170
  │ │ ├── index.ts # Main scanner logic
145
171
  │ │ ├── parsers/
146
172
  │ │ │ ├── javascript.ts # JS/TS AST + pattern scanning
147
173
  │ │ │ └── python.ts # Python pattern scanning
148
174
  │ │ └── rules/
149
- │ │ ├── definitions.ts # 14 security rules
175
+ │ │ ├── definitions.ts # 45 security rules (24 free, 21 pro)
150
176
  │ │ ├── loader.ts # Rule loading (local + API)
151
177
  │ │ └── matcher.ts # Pattern matching utilities
152
178
  │ ├── mcp/
@@ -167,11 +193,14 @@ vibeguard/
167
193
 
168
194
  ## 🚀 Next Steps (Recommended Order)
169
195
 
170
- 1. **Testing** - Add unit tests before making more changes
171
- 2. **More Rules** - Expand rule coverage based on user feedback
196
+ 1. **Website + Backend (Phase 2)** - Build vibeguard-web on Vercel with Next.js
197
+ - Landing page, pricing, docs
198
+ - License validation API
199
+ - Vercel Postgres database
200
+ 2. **Stripe Integration (Phase 3)** - Payment flow and license delivery
172
201
  3. **npm Publish** - Get it in users' hands
173
- 4. **Server API** - Build license/rules server for SaaS model
174
- 5. **CI Integration** - SARIF output for GitHub/GitLab
202
+ 4. **CI Integration** - SARIF output for GitHub/GitLab
203
+ 5. **More Rules** - Expand rule coverage based on user feedback
175
204
 
176
205
  ---
177
206
 
@@ -179,13 +208,13 @@ vibeguard/
179
208
 
180
209
  | Metric | Count |
181
210
  |--------|-------|
182
- | Security Rules | 45 |
183
- | CLI Commands | 6 |
211
+ | Security Rules | 45 (24 free, 21 pro) |
212
+ | CLI Commands | 7 |
184
213
  | MCP Tools | 3 |
185
214
  | Supported Languages | 3 (JS, TS, Python) |
186
215
  | Frameworks | 6 (Next.js, Django, FastAPI, NestJS, Express, React) |
187
216
  | Unit Tests | 246 |
188
- | Lines of TypeScript | ~2,000 |
217
+ | Lines of TypeScript | ~2,200 |
189
218
 
190
219
  ---
191
220
 
@@ -1,13 +1,25 @@
1
+ import { Tier } from '../types';
2
+ interface LicenseData {
3
+ key: string;
4
+ email?: string;
5
+ validUntil?: string;
6
+ tier?: Tier;
7
+ }
1
8
  export declare function getLicenseKey(): string | null;
2
- export declare function saveLicenseKey(key: string, email?: string): void;
9
+ export declare function getLicenseData(): LicenseData | null;
10
+ export declare function getCachedTier(): Tier;
11
+ export declare function saveLicenseKey(key: string, email?: string, tier?: Tier): void;
3
12
  export declare function clearLicenseKey(): void;
4
13
  export declare function validateLicense(key: string): Promise<{
5
14
  valid: boolean;
6
15
  message?: string;
7
- tier?: string;
16
+ tier: Tier;
8
17
  }>;
18
+ export declare function getUserTier(licenseKey?: string): Promise<Tier>;
9
19
  export declare function activateLicense(email: string, key: string): Promise<{
10
20
  success: boolean;
11
21
  message: string;
22
+ tier: Tier;
12
23
  }>;
24
+ export {};
13
25
  //# sourceMappingURL=license.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/api/license.ts"],"names":[],"mappings":"AAcA,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAU7C;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAOhE;AAED,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1D,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC,CAoCD;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAiChD"}
1
+ {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/api/license.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAMhC,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,wBAAgB,aAAa,IAAI,MAAM,GAAG,IAAI,CAU7C;AAED,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CASnD;AAED,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAO7E;AAED,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1D,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,IAAI,CAAC;CACZ,CAAC,CAwCD;AAED,wBAAsB,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpE;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CAqC5D"}
@@ -34,16 +34,19 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.getLicenseKey = getLicenseKey;
37
+ exports.getLicenseData = getLicenseData;
38
+ exports.getCachedTier = getCachedTier;
37
39
  exports.saveLicenseKey = saveLicenseKey;
38
40
  exports.clearLicenseKey = clearLicenseKey;
39
41
  exports.validateLicense = validateLicense;
42
+ exports.getUserTier = getUserTier;
40
43
  exports.activateLicense = activateLicense;
41
44
  const fs = __importStar(require("fs"));
42
45
  const path = __importStar(require("path"));
43
46
  const os = __importStar(require("os"));
44
47
  const CONFIG_DIR = path.join(os.homedir(), '.vibeguard');
45
48
  const LICENSE_FILE = path.join(CONFIG_DIR, 'license.json');
46
- const API_BASE_URL = process.env.VIBEGUARD_API_URL || 'https://api.vibeguard.dev';
49
+ const API_BASE_URL = process.env.VIBEGUARD_API_URL || 'https://vibeguard-web.vercel.app';
47
50
  function getLicenseKey() {
48
51
  try {
49
52
  if (fs.existsSync(LICENSE_FILE)) {
@@ -56,11 +59,26 @@ function getLicenseKey() {
56
59
  }
57
60
  return null;
58
61
  }
59
- function saveLicenseKey(key, email) {
62
+ function getLicenseData() {
63
+ try {
64
+ if (fs.existsSync(LICENSE_FILE)) {
65
+ return JSON.parse(fs.readFileSync(LICENSE_FILE, 'utf-8'));
66
+ }
67
+ }
68
+ catch {
69
+ // Ignore errors
70
+ }
71
+ return null;
72
+ }
73
+ function getCachedTier() {
74
+ const data = getLicenseData();
75
+ return data?.tier || 'free';
76
+ }
77
+ function saveLicenseKey(key, email, tier) {
60
78
  if (!fs.existsSync(CONFIG_DIR)) {
61
79
  fs.mkdirSync(CONFIG_DIR, { recursive: true });
62
80
  }
63
- const data = { key, email };
81
+ const data = { key, email, tier: tier || 'pro' };
64
82
  fs.writeFileSync(LICENSE_FILE, JSON.stringify(data, null, 2));
65
83
  }
66
84
  function clearLicenseKey() {
@@ -69,12 +87,12 @@ function clearLicenseKey() {
69
87
  }
70
88
  }
71
89
  async function validateLicense(key) {
72
- // For offline/development mode, accept any key
90
+ // For offline/development mode, accept any key and grant pro access
73
91
  if (process.env.VIBEGUARD_OFFLINE === 'true') {
74
- return { valid: true, tier: 'offline' };
92
+ return { valid: true, tier: 'pro' };
75
93
  }
76
94
  try {
77
- const response = await fetch(`${API_BASE_URL}/v1/license/validate`, {
95
+ const response = await fetch(`${API_BASE_URL}/api/license/validate`, {
78
96
  method: 'POST',
79
97
  headers: {
80
98
  'Content-Type': 'application/json',
@@ -83,33 +101,44 @@ async function validateLicense(key) {
83
101
  });
84
102
  if (response.ok) {
85
103
  const data = (await response.json());
104
+ // Map tier from API to our Tier type
105
+ const tier = data.tier === 'pro' ? 'pro' : 'free';
86
106
  return {
87
107
  valid: true,
88
- tier: data.tier || 'standard',
108
+ tier,
89
109
  };
90
110
  }
91
111
  const error = (await response.json().catch(() => ({})));
92
112
  return {
93
113
  valid: false,
94
114
  message: error.message || 'Invalid license key',
115
+ tier: 'free',
95
116
  };
96
117
  }
97
118
  catch {
98
- // If API is unreachable, allow offline mode
119
+ // If API is unreachable, use cached tier or default to free
120
+ const cachedTier = getCachedTier();
99
121
  return {
100
122
  valid: true,
101
123
  message: 'Running in offline mode',
102
- tier: 'offline',
124
+ tier: cachedTier,
103
125
  };
104
126
  }
105
127
  }
128
+ async function getUserTier(licenseKey) {
129
+ if (!licenseKey) {
130
+ return 'free';
131
+ }
132
+ const result = await validateLicense(licenseKey);
133
+ return result.tier;
134
+ }
106
135
  async function activateLicense(email, key) {
107
136
  if (process.env.VIBEGUARD_OFFLINE === 'true') {
108
- saveLicenseKey(key, email);
109
- return { success: true, message: 'License activated in offline mode' };
137
+ saveLicenseKey(key, email, 'pro');
138
+ return { success: true, message: 'License activated in offline mode', tier: 'pro' };
110
139
  }
111
140
  try {
112
- const response = await fetch(`${API_BASE_URL}/v1/license/activate`, {
141
+ const response = await fetch(`${API_BASE_URL}/api/license/activate`, {
113
142
  method: 'POST',
114
143
  headers: {
115
144
  'Content-Type': 'application/json',
@@ -117,21 +146,25 @@ async function activateLicense(email, key) {
117
146
  body: JSON.stringify({ email, key }),
118
147
  });
119
148
  if (response.ok) {
120
- saveLicenseKey(key, email);
121
- return { success: true, message: 'License activated successfully' };
149
+ const data = (await response.json());
150
+ const tier = data.tier === 'pro' ? 'pro' : 'free';
151
+ saveLicenseKey(key, email, tier);
152
+ return { success: true, message: 'License activated successfully', tier };
122
153
  }
123
154
  const error = (await response.json().catch(() => ({})));
124
155
  return {
125
156
  success: false,
126
157
  message: error.message || 'Failed to activate license',
158
+ tier: 'free',
127
159
  };
128
160
  }
129
161
  catch {
130
- // Allow offline activation
131
- saveLicenseKey(key, email);
162
+ // Allow offline activation - assume pro for offline mode
163
+ saveLicenseKey(key, email, 'pro');
132
164
  return {
133
165
  success: true,
134
166
  message: 'License saved locally (offline mode)',
167
+ tier: 'pro',
135
168
  };
136
169
  }
137
170
  }
@@ -1 +1 @@
1
- {"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/api/license.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/api/license.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,iBAAiB,IAAI,OAAO,CA2E3C"}
1
+ {"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,wBAAgB,iBAAiB,IAAI,OAAO,CAgF3C"}
@@ -68,17 +68,21 @@ function createScanCommand() {
68
68
  }
69
69
  // Output results
70
70
  if (options.json) {
71
+ const userTier = scanner.getUserTier();
71
72
  console.log(JSON.stringify({
72
73
  version: packageJson.version,
74
+ tier: userTier,
73
75
  files: result.files,
74
76
  findings: result.findings.map(f => ({
75
77
  rule: f.rule.id,
76
78
  severity: f.rule.severity,
79
+ tier: f.rule.tier,
77
80
  file: path.relative(cwd, f.file),
78
81
  line: f.line,
79
82
  column: f.column,
80
83
  message: f.rule.name,
81
- fix: f.rule.fix,
84
+ fix: f.isRestricted ? null : f.rule.fix,
85
+ isRestricted: f.isRestricted,
82
86
  })),
83
87
  duration: result.duration,
84
88
  }, null, 2));
@@ -88,10 +92,11 @@ function createScanCommand() {
88
92
  console.log((0, output_1.formatCleanResult)());
89
93
  }
90
94
  else {
95
+ const userTier = scanner.getUserTier();
91
96
  for (const finding of result.findings) {
92
97
  console.log((0, output_1.formatFinding)(finding, cwd));
93
98
  }
94
- console.log((0, output_1.formatSummary)(result));
99
+ console.log((0, output_1.formatSummary)(result, userTier));
95
100
  }
96
101
  }
97
102
  // Determine exit code
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../src/cli/commands/scan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function createUpgradeCommand(): Command;
3
+ //# sourceMappingURL=upgrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BpC,wBAAgB,oBAAoB,IAAI,OAAO,CA4C9C"}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createUpgradeCommand = createUpgradeCommand;
4
+ const commander_1 = require("commander");
5
+ const license_1 = require("../../api/license");
6
+ const output_1 = require("../output");
7
+ // ANSI color codes
8
+ const colors = {
9
+ reset: '\x1b[0m',
10
+ bold: '\x1b[1m',
11
+ dim: '\x1b[2m',
12
+ cyan: '\x1b[36m',
13
+ green: '\x1b[32m',
14
+ magenta: '\x1b[35m',
15
+ yellow: '\x1b[33m',
16
+ };
17
+ const PRO_FEATURES = [
18
+ 'Next.js security rules (server actions, API routes, env exposure)',
19
+ 'Django security rules (DEBUG mode, SECRET_KEY, raw SQL)',
20
+ 'FastAPI security rules (auth dependencies, CORS)',
21
+ 'NestJS security rules (auth guards, exception handling)',
22
+ 'React security rules (javascript: URLs, URL state injection)',
23
+ 'Express.js security rules (Helmet, body parser, sessions)',
24
+ 'Supabase RLS detection',
25
+ 'Firebase security rules detection',
26
+ ];
27
+ const PRICING = {
28
+ monthly: { price: 9, period: 'month' },
29
+ annual: { price: 79, period: 'year', savings: 29 },
30
+ };
31
+ function createUpgradeCommand() {
32
+ const upgrade = new commander_1.Command('upgrade')
33
+ .description('View Pro features and upgrade options')
34
+ .action(() => {
35
+ const licenseKey = (0, license_1.getLicenseKey)();
36
+ const currentTier = (0, license_1.getCachedTier)();
37
+ console.log('');
38
+ console.log(`${colors.cyan}${colors.bold}VibeGuard Pro${colors.reset}`);
39
+ console.log(`${colors.dim}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${colors.reset}`);
40
+ console.log('');
41
+ if (currentTier === 'pro') {
42
+ console.log((0, output_1.formatSuccess)('You are already on the Pro plan!'));
43
+ console.log('');
44
+ console.log(`${colors.dim}License: ${licenseKey?.substring(0, 8)}...${colors.reset}`);
45
+ console.log('');
46
+ return;
47
+ }
48
+ console.log(`${colors.bold}Unlock framework-specific security scanning:${colors.reset}`);
49
+ console.log('');
50
+ for (const feature of PRO_FEATURES) {
51
+ console.log(` ${colors.green}✓${colors.reset} ${feature}`);
52
+ }
53
+ console.log('');
54
+ console.log(`${colors.dim}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${colors.reset}`);
55
+ console.log('');
56
+ console.log(`${colors.bold}Pricing:${colors.reset}`);
57
+ console.log('');
58
+ console.log(` ${colors.magenta}Monthly${colors.reset} $${PRICING.monthly.price}/${PRICING.monthly.period}`);
59
+ console.log(` ${colors.magenta}Annual${colors.reset} $${PRICING.annual.price}/${PRICING.annual.period} ${colors.green}(Save $${PRICING.annual.savings})${colors.reset}`);
60
+ console.log('');
61
+ console.log(`${colors.dim}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${colors.reset}`);
62
+ console.log('');
63
+ console.log((0, output_1.formatInfo)(`Visit ${colors.cyan}https://vibeguard.dev/pro${colors.reset} to upgrade`));
64
+ console.log('');
65
+ console.log(`${colors.dim}After purchase, run: ${colors.reset}vibeguard login`);
66
+ console.log('');
67
+ });
68
+ return upgrade;
69
+ }
70
+ //# sourceMappingURL=upgrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upgrade.js","sourceRoot":"","sources":["../../../src/cli/commands/upgrade.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -7,6 +7,7 @@ const login_1 = require("./commands/login");
7
7
  const init_1 = require("./commands/init");
8
8
  const rules_1 = require("./commands/rules");
9
9
  const mcp_1 = require("./commands/mcp");
10
+ const upgrade_1 = require("./commands/upgrade");
10
11
  const packageJson = require('../../package.json');
11
12
  const program = new commander_1.Command();
12
13
  program
@@ -20,6 +21,7 @@ program.addCommand((0, login_1.createLogoutCommand)());
20
21
  program.addCommand((0, init_1.createInitCommand)());
21
22
  program.addCommand((0, rules_1.createRulesCommand)());
22
23
  program.addCommand((0, mcp_1.createMcpCommand)());
24
+ program.addCommand((0, upgrade_1.createUpgradeCommand)());
23
25
  // Parse and execute
24
26
  program.parse();
25
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAAoD;AACpD,4CAA2E;AAC3E,0CAAoD;AACpD,4CAAsD;AACtD,wCAAkD;AAElD,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,IAAA,wBAAiB,GAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,IAAA,0BAAkB,GAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,IAAA,2BAAmB,GAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,IAAA,wBAAiB,GAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,IAAA,0BAAkB,GAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,IAAA,sBAAgB,GAAE,CAAC,CAAC;AAEvC,oBAAoB;AACpB,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,0CAAoD;AACpD,4CAA2E;AAC3E,0CAAoD;AACpD,4CAAsD;AACtD,wCAAkD;AAClD,gDAA0D;AAE1D,MAAM,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAElD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,WAAW,CAAC;KACjB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,eAAe;AACf,OAAO,CAAC,UAAU,CAAC,IAAA,wBAAiB,GAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,IAAA,0BAAkB,GAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,IAAA,2BAAmB,GAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,IAAA,wBAAiB,GAAE,CAAC,CAAC;AACxC,OAAO,CAAC,UAAU,CAAC,IAAA,0BAAkB,GAAE,CAAC,CAAC;AACzC,OAAO,CAAC,UAAU,CAAC,IAAA,sBAAgB,GAAE,CAAC,CAAC;AACvC,OAAO,CAAC,UAAU,CAAC,IAAA,8BAAoB,GAAE,CAAC,CAAC;AAE3C,oBAAoB;AACpB,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -1,7 +1,8 @@
1
- import { Finding, ScanResult, Severity, SecurityRule } from '../types';
1
+ import { Finding, ScanResult, Severity, SecurityRule, Tier } from '../types';
2
2
  export declare function formatSeverity(severity: Severity): string;
3
3
  export declare function formatFinding(finding: Finding, cwd: string): string;
4
- export declare function formatSummary(result: ScanResult): string;
4
+ export declare function formatSummary(result: ScanResult, userTier?: Tier): string;
5
+ export declare function formatUpgradePrompt(restrictedCount: number): string;
5
6
  export declare function formatHeader(version: string): string;
6
7
  export declare function formatScanning(fileCount: number): string;
7
8
  export declare function formatSuccess(message: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAkCvE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAIzD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAanE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA0BxD;AA2BD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAUrD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAI7D"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAkC7E,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAIzD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAmBnE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,CAmCzE;AAED,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAMnE;AA2BD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAUrD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAG5C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAI7D"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.formatSeverity = formatSeverity;
4
4
  exports.formatFinding = formatFinding;
5
5
  exports.formatSummary = formatSummary;
6
+ exports.formatUpgradePrompt = formatUpgradePrompt;
6
7
  exports.formatHeader = formatHeader;
7
8
  exports.formatScanning = formatScanning;
8
9
  exports.formatSuccess = formatSuccess;
@@ -52,21 +53,32 @@ function formatFinding(finding, cwd) {
52
53
  const location = `${relativePath}:${finding.line}`;
53
54
  const severity = formatSeverity(finding.rule.severity);
54
55
  let output = `\n${severity} ${colors.cyan}${location}${colors.reset}\n`;
55
- output += ` ${finding.rule.name}\n`;
56
- if (finding.rule.fix) {
57
- output += ` ${colors.dim} ${finding.rule.fix}${colors.reset}\n`;
56
+ if (finding.isRestricted) {
57
+ // Show restricted message for pro-only rules when user is on free tier
58
+ output += ` ${colors.magenta}[PRO]${colors.reset} ${finding.rule.name}\n`;
59
+ output += ` ${colors.dim}→ Upgrade to Pro to see fix details${colors.reset}\n`;
60
+ }
61
+ else {
62
+ output += ` ${finding.rule.name}\n`;
63
+ if (finding.rule.fix) {
64
+ output += ` ${colors.dim}→ ${finding.rule.fix}${colors.reset}\n`;
65
+ }
58
66
  }
59
67
  return output;
60
68
  }
61
- function formatSummary(result) {
69
+ function formatSummary(result, userTier) {
62
70
  const counts = {
63
71
  critical: 0,
64
72
  high: 0,
65
73
  medium: 0,
66
74
  low: 0,
67
75
  };
76
+ let restrictedCount = 0;
68
77
  for (const finding of result.findings) {
69
78
  counts[finding.rule.severity]++;
79
+ if (finding.isRestricted) {
80
+ restrictedCount++;
81
+ }
70
82
  }
71
83
  const total = result.findings.length;
72
84
  const grade = calculateGrade(counts);
@@ -78,6 +90,17 @@ function formatSummary(result) {
78
90
  output += `${colors.blue}${counts.medium} medium${colors.reset}, `;
79
91
  output += `${colors.dim}${counts.low} low${colors.reset})\n\n`;
80
92
  output += `Grade: ${formatGrade(grade)}\n`;
93
+ // Show upgrade prompt if there are restricted findings
94
+ if (restrictedCount > 0 && userTier === 'free') {
95
+ output += formatUpgradePrompt(restrictedCount);
96
+ }
97
+ return output;
98
+ }
99
+ function formatUpgradePrompt(restrictedCount) {
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
  function calculateGrade(counts) {
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,18 @@
1
- import { ScanResult, SecurityRule, Config } from '../types';
1
+ import { ScanResult, SecurityRule, Config, Tier } from '../types';
2
2
  export declare class Scanner {
3
3
  private rules;
4
4
  private config;
5
+ private userTier;
5
6
  constructor(config?: Config);
6
7
  initialize(licenseKey?: string): Promise<void>;
8
+ getUserTier(): Tier;
7
9
  scan(targets: string[]): Promise<ScanResult>;
8
10
  scanStaged(): Promise<ScanResult>;
9
11
  private scanFile;
10
12
  private isSupportedFile;
11
13
  private sortFindings;
12
14
  private deduplicateFindings;
15
+ private markRestrictedFindings;
13
16
  getRules(): SecurityRule[];
14
17
  }
15
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AA6BrE,qBAAa,OAAO;IAClB,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,GAAE,MAAW;IAIzB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ9C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAoC5C,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;YAuCzB,QAAQ;IA2CtB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,mBAAmB;IAU3B,QAAQ,IAAI,YAAY,EAAE;CAG3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanner/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AA8B3E,qBAAa,OAAO;IAClB,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAgB;gBAEpB,MAAM,GAAE,MAAW;IAIzB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpD,WAAW,IAAI,IAAI;IAIb,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAoC5C,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC;YAuCzB,QAAQ;IA2CtB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,sBAAsB;IAO9B,QAAQ,IAAI,YAAY,EAAE;CAG3B"}