@vaultcompass/vault-guard 1.0.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 (74) hide show
  1. package/LICENSE +21 -0
  2. package/dist/__tests__/integration/proxy-test-helpers.d.ts +47 -0
  3. package/dist/__tests__/integration/proxy-test-helpers.d.ts.map +1 -0
  4. package/dist/__tests__/integration/proxy-test-helpers.js +146 -0
  5. package/dist/__tests__/integration/proxy-test-helpers.js.map +1 -0
  6. package/dist/cli-entry.d.ts +3 -0
  7. package/dist/cli-entry.d.ts.map +1 -0
  8. package/dist/cli-entry.js +15 -0
  9. package/dist/cli-entry.js.map +1 -0
  10. package/dist/cli.d.ts +3 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +241 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/commands/check.d.ts +2 -0
  15. package/dist/commands/check.d.ts.map +1 -0
  16. package/dist/commands/check.js +40 -0
  17. package/dist/commands/check.js.map +1 -0
  18. package/dist/commands/config.d.ts +6 -0
  19. package/dist/commands/config.d.ts.map +1 -0
  20. package/dist/commands/config.js +57 -0
  21. package/dist/commands/config.js.map +1 -0
  22. package/dist/commands/data.d.ts +67 -0
  23. package/dist/commands/data.d.ts.map +1 -0
  24. package/dist/commands/data.js +294 -0
  25. package/dist/commands/data.js.map +1 -0
  26. package/dist/commands/fix.d.ts +2 -0
  27. package/dist/commands/fix.d.ts.map +1 -0
  28. package/dist/commands/fix.js +80 -0
  29. package/dist/commands/fix.js.map +1 -0
  30. package/dist/commands/index.d.ts +11 -0
  31. package/dist/commands/index.d.ts.map +1 -0
  32. package/dist/commands/index.js +26 -0
  33. package/dist/commands/index.js.map +1 -0
  34. package/dist/commands/install-hook.d.ts +3 -0
  35. package/dist/commands/install-hook.d.ts.map +1 -0
  36. package/dist/commands/install-hook.js +31 -0
  37. package/dist/commands/install-hook.js.map +1 -0
  38. package/dist/commands/monitor.d.ts +2 -0
  39. package/dist/commands/monitor.d.ts.map +1 -0
  40. package/dist/commands/monitor.js +23 -0
  41. package/dist/commands/monitor.js.map +1 -0
  42. package/dist/commands/proxy.d.ts +68 -0
  43. package/dist/commands/proxy.d.ts.map +1 -0
  44. package/dist/commands/proxy.js +445 -0
  45. package/dist/commands/proxy.js.map +1 -0
  46. package/dist/commands/scan.d.ts +3 -0
  47. package/dist/commands/scan.d.ts.map +1 -0
  48. package/dist/commands/scan.js +156 -0
  49. package/dist/commands/scan.js.map +1 -0
  50. package/dist/commands/statusline.d.ts +2 -0
  51. package/dist/commands/statusline.d.ts.map +1 -0
  52. package/dist/commands/statusline.js +34 -0
  53. package/dist/commands/statusline.js.map +1 -0
  54. package/dist/commands/suggest-model.d.ts +6 -0
  55. package/dist/commands/suggest-model.d.ts.map +1 -0
  56. package/dist/commands/suggest-model.js +38 -0
  57. package/dist/commands/suggest-model.js.map +1 -0
  58. package/dist/commands/tokens.d.ts +2 -0
  59. package/dist/commands/tokens.d.ts.map +1 -0
  60. package/dist/commands/tokens.js +22 -0
  61. package/dist/commands/tokens.js.map +1 -0
  62. package/dist/index.d.ts +3 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +21 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/utils/index.d.ts +2 -0
  67. package/dist/utils/index.d.ts.map +1 -0
  68. package/dist/utils/index.js +18 -0
  69. package/dist/utils/index.js.map +1 -0
  70. package/dist/utils/scan-utils.d.ts +65 -0
  71. package/dist/utils/scan-utils.d.ts.map +1 -0
  72. package/dist/utils/scan-utils.js +333 -0
  73. package/dist/utils/scan-utils.js.map +1 -0
  74. package/package.json +56 -0
@@ -0,0 +1,333 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.formatJson = formatJson;
7
+ exports.formatSarif = formatSarif;
8
+ exports.scanFileListAsync = scanFileListAsync;
9
+ exports.isBinaryFile = isBinaryFile;
10
+ exports.scanFilesAsync = scanFilesAsync;
11
+ exports.scanFiles = scanFiles;
12
+ exports.displayScanResults = displayScanResults;
13
+ const path_1 = __importDefault(require("path"));
14
+ const fs_1 = __importDefault(require("fs"));
15
+ const vault_guard_core_1 = require("@vaultcompass/vault-guard-core");
16
+ const chalk_1 = __importDefault(require("chalk"));
17
+ function formatJson(results, opts = {}) {
18
+ return (0, vault_guard_core_1.formatJson)(results, {
19
+ cwd: process.cwd(),
20
+ diagnostics: opts.diagnostics,
21
+ run: opts.run,
22
+ });
23
+ }
24
+ function formatSarif(results, opts = {}) {
25
+ return (0, vault_guard_core_1.formatSarif)(results, {
26
+ cwd: process.cwd(),
27
+ diagnostics: opts.diagnostics,
28
+ run: opts.run,
29
+ });
30
+ }
31
+ const MAX_FILE_SIZE = 10 * 1024 * 1024; // 10MB
32
+ const BINARY_EXTENSIONS = [
33
+ '.png', '.jpg', '.jpeg', '.gif', '.ico', '.pdf', '.zip',
34
+ '.tar', '.gz', '.exe', '.dll', '.so', '.dylib', '.bin'
35
+ ];
36
+ /**
37
+ * Scan an explicit list of files (e.g. paths from \`git diff --cached\`).
38
+ * Skips missing paths and non-files silently.
39
+ */
40
+ async function scanFileListAsync(files, scanner, options = {}) {
41
+ const { verbose = false, maxSize = MAX_FILE_SIZE, skipBinary = true, progress = false, concurrency = 10, configIgnorePatterns = [], } = options;
42
+ // Apply config ignore patterns to the explicit file list (e.g. staged files).
43
+ // buildConfigIgnoreFilter matches relative to cwd so patterns like
44
+ // `packages/**/__tests__/**` work identically for staged and directory scans.
45
+ const configIgnoreTester = configIgnorePatterns.length > 0
46
+ ? (0, vault_guard_core_1.buildConfigIgnoreFilter)(configIgnorePatterns, process.cwd())
47
+ : null;
48
+ const filteredFiles = configIgnoreTester
49
+ ? files.filter(f => !configIgnoreTester(f))
50
+ : files;
51
+ const results = [];
52
+ const scanFile = async (file) => {
53
+ try {
54
+ if (!fs_1.default.existsSync(file))
55
+ return;
56
+ const st = await fs_1.default.promises.stat(file);
57
+ if (!st.isFile())
58
+ return;
59
+ if (skipBinary && isBinaryFile(file))
60
+ return;
61
+ if (st.size > maxSize && verbose) {
62
+ console.warn(chalk_1.default.yellow(`⚠️ Large file (streaming line-by-line):`), chalk_1.default.white(path_1.default.relative(process.cwd(), file)), chalk_1.default.gray(`(${(st.size / 1024 / 1024).toFixed(2)}MB)`));
63
+ }
64
+ if (options.stats) {
65
+ options.stats.filesScanned += 1;
66
+ options.stats.bytesScanned += st.size;
67
+ }
68
+ const matches = st.size > maxSize
69
+ ? await (0, vault_guard_core_1.scanTextFileAsync)(scanner, file, { maxFileBytes: maxSize, bus: options.bus })
70
+ : scanner.scan(file);
71
+ if (matches.length > 0) {
72
+ results.push({ file, matches });
73
+ }
74
+ }
75
+ catch (error) {
76
+ if (options.bus) {
77
+ options.bus.add({
78
+ code: 'file.read_error',
79
+ severity: 'error',
80
+ ctx: { file: path_1.default.relative(process.cwd(), file), detail: String(error) },
81
+ });
82
+ }
83
+ if (verbose) {
84
+ console.error(chalk_1.default.red('❌ Error scanning file:'), chalk_1.default.white(path_1.default.relative(process.cwd(), file)));
85
+ console.error(chalk_1.default.gray(String(error)));
86
+ }
87
+ }
88
+ };
89
+ for (let i = 0; i < filteredFiles.length; i += concurrency) {
90
+ const batch = filteredFiles.slice(i, i + concurrency);
91
+ await Promise.all(batch.map(scanFile));
92
+ if (progress && filteredFiles.length > 10) {
93
+ const percent = Math.round(((i + batch.length) / filteredFiles.length) * 100);
94
+ process.stderr.write(`\r${chalk_1.default.gray(`Scanning... ${percent}%`)}`);
95
+ }
96
+ }
97
+ if (progress && filteredFiles.length > 10) {
98
+ process.stderr.write('\r');
99
+ }
100
+ return results;
101
+ }
102
+ /**
103
+ * Check if a file is binary based on extension
104
+ */
105
+ function isBinaryFile(filePath) {
106
+ const ext = path_1.default.extname(filePath).toLowerCase();
107
+ return BINARY_EXTENSIONS.includes(ext);
108
+ }
109
+ /**
110
+ * Scan files with proper filtering and error handling (async version)
111
+ * This is the shared scanning logic used by both scan and check commands
112
+ */
113
+ async function scanFilesAsync(targetPaths, scanner, options = {}) {
114
+ const { verbose = false, maxSize = MAX_FILE_SIZE, skipBinary = true, progress = false, concurrency = 10 // Scan 10 files at a time by default
115
+ } = options;
116
+ const results = [];
117
+ for (const targetPath of targetPaths) {
118
+ try {
119
+ await fs_1.default.promises.access(targetPath);
120
+ }
121
+ catch {
122
+ if (verbose) {
123
+ console.error(chalk_1.default.red('❌ Error:'), chalk_1.default.white(`Path not found: ${targetPath}`));
124
+ }
125
+ continue;
126
+ }
127
+ const stat = await fs_1.default.promises.stat(targetPath);
128
+ let filesToScan;
129
+ if (stat.isFile()) {
130
+ filesToScan = [targetPath];
131
+ }
132
+ else if (stat.isDirectory()) {
133
+ filesToScan = await (0, vault_guard_core_1.getFilesToScanAsync)(targetPath, verbose, options.bus, options.configIgnorePatterns ?? []);
134
+ }
135
+ else {
136
+ if (verbose) {
137
+ console.error(chalk_1.default.red('❌ Error:'), chalk_1.default.white(`Invalid path: ${targetPath}`));
138
+ }
139
+ continue;
140
+ }
141
+ // Scan each file with proper safeguards (parallel with concurrency limit)
142
+ const scanFile = async (file) => {
143
+ try {
144
+ // Skip binary files
145
+ if (skipBinary && isBinaryFile(file)) {
146
+ return;
147
+ }
148
+ // Check file size
149
+ const fileStat = await fs_1.default.promises.stat(file);
150
+ if (fileStat.size > maxSize && verbose) {
151
+ console.warn(chalk_1.default.yellow(`⚠️ Large file (streaming line-by-line):`), chalk_1.default.white(path_1.default.relative(process.cwd(), file)), chalk_1.default.gray(`(${(fileStat.size / 1024 / 1024).toFixed(2)}MB)`));
152
+ }
153
+ if (options.stats) {
154
+ options.stats.filesScanned += 1;
155
+ options.stats.bytesScanned += fileStat.size;
156
+ }
157
+ const matches = fileStat.size > maxSize
158
+ ? await (0, vault_guard_core_1.scanTextFileAsync)(scanner, file, { maxFileBytes: maxSize, bus: options.bus })
159
+ : scanner.scan(file);
160
+ if (matches.length > 0) {
161
+ results.push({ file, matches });
162
+ }
163
+ }
164
+ catch (error) {
165
+ if (options.bus) {
166
+ options.bus.add({
167
+ code: 'file.read_error',
168
+ severity: 'error',
169
+ ctx: { file: path_1.default.relative(process.cwd(), file), detail: String(error) },
170
+ });
171
+ }
172
+ if (verbose) {
173
+ console.error(chalk_1.default.red('❌ Error scanning file:'), chalk_1.default.white(path_1.default.relative(process.cwd(), file)));
174
+ console.error(chalk_1.default.gray(String(error)));
175
+ }
176
+ // Continue scanning other files
177
+ }
178
+ };
179
+ // Process files in batches for parallel scanning
180
+ for (let i = 0; i < filesToScan.length; i += concurrency) {
181
+ const batch = filesToScan.slice(i, i + concurrency);
182
+ await Promise.all(batch.map(scanFile));
183
+ // Show progress for large scans
184
+ if (progress && filesToScan.length > 10) {
185
+ const percent = Math.round(((i + batch.length) / filesToScan.length) * 100);
186
+ process.stderr.write(`\r${chalk_1.default.gray(`Scanning... ${percent}%`)}`);
187
+ }
188
+ }
189
+ // Clear progress line if used
190
+ if (progress && filesToScan.length > 10) {
191
+ process.stderr.write('\r');
192
+ }
193
+ }
194
+ return results;
195
+ }
196
+ /**
197
+ * Scan files with proper filtering and error handling (sync version for backwards compatibility)
198
+ * This is the shared scanning logic used by both scan and check commands
199
+ */
200
+ function scanFiles(targetPaths, scanner, options = {}) {
201
+ const { verbose = false, maxSize = MAX_FILE_SIZE, skipBinary = true } = options;
202
+ const results = [];
203
+ for (const targetPath of targetPaths) {
204
+ if (!fs_1.default.existsSync(targetPath)) {
205
+ if (verbose) {
206
+ console.error(chalk_1.default.red('❌ Error:'), chalk_1.default.white(`Path not found: ${targetPath}`));
207
+ }
208
+ continue;
209
+ }
210
+ const stat = fs_1.default.statSync(targetPath);
211
+ let filesToScan;
212
+ if (stat.isFile()) {
213
+ filesToScan = [targetPath];
214
+ }
215
+ else if (stat.isDirectory()) {
216
+ filesToScan = (0, vault_guard_core_1.getFilesToScan)(targetPath, verbose, options.bus, options.configIgnorePatterns ?? []);
217
+ }
218
+ else {
219
+ if (verbose) {
220
+ console.error(chalk_1.default.red('❌ Error:'), chalk_1.default.white(`Invalid path: ${targetPath}`));
221
+ }
222
+ continue;
223
+ }
224
+ // Scan each file with proper safeguards
225
+ for (const file of filesToScan) {
226
+ try {
227
+ // Skip binary files
228
+ if (skipBinary && isBinaryFile(file)) {
229
+ continue;
230
+ }
231
+ // Check file size
232
+ const fileStat = fs_1.default.statSync(file);
233
+ if (fileStat.size > maxSize && verbose) {
234
+ console.warn(chalk_1.default.yellow(`⚠️ Large file (sync read only ≤ ${(maxSize / 1024 / 1024).toFixed(0)} MB; use async scan):`), chalk_1.default.white(path_1.default.relative(process.cwd(), file)), chalk_1.default.gray(`(${(fileStat.size / 1024 / 1024).toFixed(2)}MB)`));
235
+ }
236
+ if (options.stats) {
237
+ options.stats.filesScanned += 1;
238
+ options.stats.bytesScanned += fileStat.size;
239
+ }
240
+ const matches = (0, vault_guard_core_1.scanTextFileSync)(scanner, file, { maxFileBytes: maxSize, bus: options.bus });
241
+ if (matches.length > 0) {
242
+ results.push({ file, matches });
243
+ }
244
+ }
245
+ catch (error) {
246
+ if (options.bus) {
247
+ options.bus.add({
248
+ code: 'file.read_error',
249
+ severity: 'error',
250
+ ctx: { file: path_1.default.relative(process.cwd(), file), detail: String(error) },
251
+ });
252
+ }
253
+ if (verbose) {
254
+ console.error(chalk_1.default.red('❌ Error scanning file:'), chalk_1.default.white(path_1.default.relative(process.cwd(), file)));
255
+ console.error(chalk_1.default.gray(String(error)));
256
+ }
257
+ // Continue scanning other files
258
+ }
259
+ }
260
+ }
261
+ return results;
262
+ }
263
+ /**
264
+ * Display scan results with proper formatting.
265
+ *
266
+ * Output format: `<path>:<line>:<col> <severity> <type> <redacted>`
267
+ *
268
+ * Why this layout:
269
+ * - Most modern terminals (iTerm2, Windows Terminal, VS Code, JetBrains)
270
+ * auto-link `path:line:col` so users can cmd/ctrl-click directly to the
271
+ * source — no copy-paste, no greppable secret value needed.
272
+ * - Paths are cwd-relative for the same reason JSON/SARIF are: avoids
273
+ * leaking the developer's home dir / username when output is shared.
274
+ * - The redacted match value (`sk-a…(37c)`) is shown last and intentionally
275
+ * low-information.
276
+ */
277
+ function displayScanResults(results) {
278
+ if (results.length === 0) {
279
+ console.log(chalk_1.default.green.bold('✅ SUCCESS:'), chalk_1.default.white('No secrets found\n'));
280
+ return;
281
+ }
282
+ const totalSecrets = results.reduce((sum, r) => sum + r.matches.length, 0);
283
+ console.log(chalk_1.default.red.bold('🚨 BLOCKED:'), chalk_1.default.white(`Found ${totalSecrets} secret${totalSecrets > 1 ? 's' : ''}\n`));
284
+ for (const { file, matches } of results) {
285
+ const relativePath = relativeForDisplay(file);
286
+ for (const match of matches) {
287
+ const severityColor = getSeverityColor(match.severity);
288
+ const emoji = getSeverityEmoji(match.severity);
289
+ const location = `${relativePath}:${match.line}:${match.column + 1}`;
290
+ console.log(` ${emoji} ${chalk_1.default.cyan(location)} ${severityColor(match.severity)} ${chalk_1.default.white(match.type)} ${chalk_1.default.gray(match.value)}`);
291
+ }
292
+ }
293
+ console.log('');
294
+ console.log(chalk_1.default.red.bold('❌ BLOCKED:'), chalk_1.default.white('Commit blocked — remove secrets before pushing\n'));
295
+ }
296
+ /** cwd-relative when inside cwd, absolute otherwise. Matches scan-output behaviour. */
297
+ function relativeForDisplay(file) {
298
+ if (!path_1.default.isAbsolute(file))
299
+ return file;
300
+ const rel = path_1.default.relative(process.cwd(), file);
301
+ if (rel.startsWith('..') || path_1.default.isAbsolute(rel))
302
+ return file;
303
+ return rel || '.';
304
+ }
305
+ function getSeverityColor(severity) {
306
+ switch (severity) {
307
+ case 'critical':
308
+ return chalk_1.default.red.bold;
309
+ case 'high':
310
+ return chalk_1.default.yellow;
311
+ case 'medium':
312
+ return chalk_1.default.blue;
313
+ case 'low':
314
+ return chalk_1.default.gray;
315
+ default:
316
+ return chalk_1.default.white;
317
+ }
318
+ }
319
+ function getSeverityEmoji(severity) {
320
+ switch (severity) {
321
+ case 'critical':
322
+ return '🔴';
323
+ case 'high':
324
+ return '⚠️';
325
+ case 'medium':
326
+ return 'ℹ️';
327
+ case 'low':
328
+ return '✅';
329
+ default:
330
+ return '•';
331
+ }
332
+ }
333
+ //# sourceMappingURL=scan-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-utils.js","sourceRoot":"","sources":["../../src/utils/scan-utils.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@vaultcompass/vault-guard",
3
+ "version": "1.0.0",
4
+ "description": "Security and optimization layer for AI-native coding",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist"
9
+ ],
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "https://github.com/vaultcompasshq/vault-guard.git",
16
+ "directory": "packages/cli"
17
+ },
18
+ "bugs": {
19
+ "url": "https://github.com/vaultcompasshq/vault-guard/issues"
20
+ },
21
+ "homepage": "https://github.com/vaultcompasshq/vault-guard#readme",
22
+ "engines": {
23
+ "node": ">=22.0.0",
24
+ "npm": ">=9.0.0",
25
+ "pnpm": ">=9.0.0"
26
+ },
27
+ "bin": {
28
+ "vault-guard": "./dist/cli-entry.js"
29
+ },
30
+ "keywords": [
31
+ "cli",
32
+ "security",
33
+ "secret-scanner",
34
+ "pre-commit-hook"
35
+ ],
36
+ "dependencies": {
37
+ "chalk": "^4.1.2",
38
+ "commander": "^12.0.0",
39
+ "@vaultcompass/vault-guard-telemetry": "1.0.0",
40
+ "@vaultcompass/vault-guard-core": "1.0.0"
41
+ },
42
+ "devDependencies": {
43
+ "@types/jest": "^30.0.0",
44
+ "@types/node": "^25.9.1",
45
+ "jest": "^30.4.2",
46
+ "ts-jest": "^29.4.11",
47
+ "typescript": "^5.3.3"
48
+ },
49
+ "scripts": {
50
+ "build": "tsc",
51
+ "test": "jest",
52
+ "test:watch": "jest --watch",
53
+ "test:coverage": "jest --coverage",
54
+ "start": "node dist/cli.js"
55
+ }
56
+ }