nexusforge-cli 1.1.1 → 1.2.1

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 (62) hide show
  1. package/dist/components/App.d.ts.map +1 -1
  2. package/dist/components/App.js +183 -17
  3. package/dist/components/App.js.map +1 -1
  4. package/dist/index.js +462 -10
  5. package/dist/index.js.map +1 -1
  6. package/dist/modules/commandEngine.d.ts +70 -0
  7. package/dist/modules/commandEngine.d.ts.map +1 -0
  8. package/dist/modules/commandEngine.js +672 -0
  9. package/dist/modules/commandEngine.js.map +1 -0
  10. package/dist/modules/contextBuilder.d.ts +51 -0
  11. package/dist/modules/contextBuilder.d.ts.map +1 -0
  12. package/dist/modules/contextBuilder.js +725 -0
  13. package/dist/modules/contextBuilder.js.map +1 -0
  14. package/dist/modules/domainDetector.d.ts +64 -0
  15. package/dist/modules/domainDetector.d.ts.map +1 -0
  16. package/dist/modules/domainDetector.js +722 -0
  17. package/dist/modules/domainDetector.js.map +1 -0
  18. package/dist/modules/fileOperations.d.ts +99 -0
  19. package/dist/modules/fileOperations.d.ts.map +1 -0
  20. package/dist/modules/fileOperations.js +543 -0
  21. package/dist/modules/fileOperations.js.map +1 -0
  22. package/dist/modules/forgeEngine.d.ts +153 -0
  23. package/dist/modules/forgeEngine.d.ts.map +1 -0
  24. package/dist/modules/forgeEngine.js +652 -0
  25. package/dist/modules/forgeEngine.js.map +1 -0
  26. package/dist/modules/gitManager.d.ts +151 -0
  27. package/dist/modules/gitManager.d.ts.map +1 -0
  28. package/dist/modules/gitManager.js +539 -0
  29. package/dist/modules/gitManager.js.map +1 -0
  30. package/dist/modules/index.d.ts +25 -0
  31. package/dist/modules/index.d.ts.map +1 -0
  32. package/dist/modules/index.js +25 -0
  33. package/dist/modules/index.js.map +1 -0
  34. package/dist/modules/prdProcessor.d.ts +125 -0
  35. package/dist/modules/prdProcessor.d.ts.map +1 -0
  36. package/dist/modules/prdProcessor.js +466 -0
  37. package/dist/modules/prdProcessor.js.map +1 -0
  38. package/dist/modules/projectScanner.d.ts +105 -0
  39. package/dist/modules/projectScanner.d.ts.map +1 -0
  40. package/dist/modules/projectScanner.js +859 -0
  41. package/dist/modules/projectScanner.js.map +1 -0
  42. package/dist/modules/safetyGuard.d.ts +83 -0
  43. package/dist/modules/safetyGuard.d.ts.map +1 -0
  44. package/dist/modules/safetyGuard.js +492 -0
  45. package/dist/modules/safetyGuard.js.map +1 -0
  46. package/dist/modules/templateManager.d.ts +78 -0
  47. package/dist/modules/templateManager.d.ts.map +1 -0
  48. package/dist/modules/templateManager.js +556 -0
  49. package/dist/modules/templateManager.js.map +1 -0
  50. package/dist/native/index.d.ts +125 -0
  51. package/dist/native/index.d.ts.map +1 -0
  52. package/dist/native/index.js +164 -0
  53. package/dist/native/index.js.map +1 -0
  54. package/dist/services/executor.d.ts +24 -0
  55. package/dist/services/executor.d.ts.map +1 -1
  56. package/dist/services/executor.js +149 -6
  57. package/dist/services/executor.js.map +1 -1
  58. package/dist/services/fileManager.d.ts +134 -0
  59. package/dist/services/fileManager.d.ts.map +1 -0
  60. package/dist/services/fileManager.js +489 -0
  61. package/dist/services/fileManager.js.map +1 -0
  62. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectScanner.js","sourceRoot":"","sources":["../../src/modules/projectScanner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * NexusForge Safety Guard
3
+ * Prevent destructive operations and protect system files
4
+ * Ported from Python: nexusforge/modules/safety/guards.py
5
+ */
6
+ export declare enum RiskLevel {
7
+ SAFE = "safe",
8
+ LOW = "low",
9
+ MEDIUM = "medium",
10
+ HIGH = "high",
11
+ CRITICAL = "critical"
12
+ }
13
+ export declare enum OperationType {
14
+ READ = "read",
15
+ WRITE = "write",
16
+ DELETE = "delete",
17
+ EXECUTE = "execute",
18
+ CREATE = "create",
19
+ MODIFY = "modify"
20
+ }
21
+ export interface SafetyCheckResult {
22
+ isSafe: boolean;
23
+ riskLevel: RiskLevel;
24
+ reason?: string;
25
+ }
26
+ export interface ContentCheckResult {
27
+ isSafe: boolean;
28
+ riskLevel: RiskLevel;
29
+ warnings: string[];
30
+ }
31
+ export interface AuditLogEntry {
32
+ timestamp: string;
33
+ operation: string;
34
+ path: string;
35
+ riskLevel: string;
36
+ approved: boolean;
37
+ reason: string;
38
+ }
39
+ export interface SafetyStats {
40
+ operationsChecked: number;
41
+ operationsBlocked: number;
42
+ operationsWarned: number;
43
+ operationsAllowed: number;
44
+ blockRate: number;
45
+ allowedPaths: number;
46
+ protectedPaths: number;
47
+ strictMode: boolean;
48
+ auditEnabled: boolean;
49
+ }
50
+ export declare class SafetyGuard {
51
+ private projectRoot;
52
+ private strictMode;
53
+ private auditLog;
54
+ private allowedPaths;
55
+ private customProtectedPaths;
56
+ private auditLogFile;
57
+ private stats;
58
+ constructor(projectRoot?: string, strictMode?: boolean, auditLog?: boolean);
59
+ isPathSafe(path: string): SafetyCheckResult;
60
+ addAllowedPath(path: string): void;
61
+ addProtectedPath(path: string): void;
62
+ isCommandSafe(command: string): SafetyCheckResult;
63
+ checkContentSafety(content: string): ContentCheckResult;
64
+ validateFileOperation(operation: OperationType, path: string, force?: boolean): boolean;
65
+ validateCommand(command: string, force?: boolean): boolean;
66
+ scanFileContent(content: string, filename: string, force?: boolean): string;
67
+ private logAudit;
68
+ getAuditLog(lines?: number): AuditLogEntry[];
69
+ getStatistics(): SafetyStats;
70
+ printStatistics(): void;
71
+ setProjectRoot(path: string): void;
72
+ setStrictMode(strict: boolean): void;
73
+ getProjectRoot(): string;
74
+ }
75
+ export declare function getSafetyGuard(projectRoot?: string): SafetyGuard;
76
+ export declare function resetSafetyGuard(): void;
77
+ export declare function isPathSafe(path: string): SafetyCheckResult;
78
+ export declare function isCommandSafe(command: string): SafetyCheckResult;
79
+ export declare function checkContentSafety(content: string): ContentCheckResult;
80
+ export declare function validatePath(path: string, force?: boolean): boolean;
81
+ export declare function validateCommand(command: string, force?: boolean): boolean;
82
+ export default SafetyGuard;
83
+ //# sourceMappingURL=safetyGuard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safetyGuard.d.ts","sourceRoot":"","sources":["../../src/modules/safetyGuard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,492 @@
1
+ /**
2
+ * NexusForge Safety Guard
3
+ * Prevent destructive operations and protect system files
4
+ * Ported from Python: nexusforge/modules/safety/guards.py
5
+ */
6
+ import { existsSync, appendFileSync, readFileSync, mkdirSync, lstatSync } from 'fs';
7
+ import { resolve, join } from 'path';
8
+ import { homedir } from 'os';
9
+ // ============================================================================
10
+ // ENUMS
11
+ // ============================================================================
12
+ export var RiskLevel;
13
+ (function (RiskLevel) {
14
+ RiskLevel["SAFE"] = "safe";
15
+ RiskLevel["LOW"] = "low";
16
+ RiskLevel["MEDIUM"] = "medium";
17
+ RiskLevel["HIGH"] = "high";
18
+ RiskLevel["CRITICAL"] = "critical";
19
+ })(RiskLevel || (RiskLevel = {}));
20
+ export var OperationType;
21
+ (function (OperationType) {
22
+ OperationType["READ"] = "read";
23
+ OperationType["WRITE"] = "write";
24
+ OperationType["DELETE"] = "delete";
25
+ OperationType["EXECUTE"] = "execute";
26
+ OperationType["CREATE"] = "create";
27
+ OperationType["MODIFY"] = "modify";
28
+ })(OperationType || (OperationType = {}));
29
+ // ============================================================================
30
+ // PROTECTED PATHS AND PATTERNS
31
+ // ============================================================================
32
+ const PROTECTED_PATHS = [
33
+ // Unix/Linux system directories
34
+ '/',
35
+ '/etc',
36
+ '/usr',
37
+ '/bin',
38
+ '/sbin',
39
+ '/boot',
40
+ '/dev',
41
+ '/lib',
42
+ '/lib64',
43
+ '/proc',
44
+ '/sys',
45
+ '/var',
46
+ '/root',
47
+ '/home',
48
+ '/mnt',
49
+ '/media',
50
+ '/opt/bin',
51
+ '/opt/lib',
52
+ // Windows system directories
53
+ 'C:\\Windows',
54
+ 'C:\\Program Files',
55
+ 'C:\\Program Files (x86)',
56
+ 'C:\\ProgramData',
57
+ 'C:\\Users\\All Users',
58
+ 'C:\\System Volume Information',
59
+ // macOS system directories
60
+ '/System',
61
+ '/Library',
62
+ '/Applications',
63
+ ];
64
+ const DANGEROUS_COMMANDS = [
65
+ // Destructive deletions
66
+ [/rm\s+-rf\s+\//, RiskLevel.CRITICAL, 'Root deletion'],
67
+ [/rm\s+-rf\s+~/, RiskLevel.HIGH, 'Home directory deletion'],
68
+ [/rm\s+-fr\s+\//, RiskLevel.CRITICAL, 'Root deletion'],
69
+ [/rm\s+-rf\s+\*/, RiskLevel.HIGH, 'Wildcard deletion'],
70
+ [/rm\s+-rf\s+\./, RiskLevel.HIGH, 'Current directory deletion'],
71
+ // Disk operations
72
+ [/dd\s+.*of=\/dev\/[sh]d/, RiskLevel.CRITICAL, 'Direct disk write'],
73
+ [/mkfs\./, RiskLevel.CRITICAL, 'Filesystem formatting'],
74
+ [/format\s+[cC]:/, RiskLevel.CRITICAL, 'Windows format'],
75
+ [/>\s*\/dev\/[sh]d/, RiskLevel.CRITICAL, 'Overwrite disk device'],
76
+ // Permission changes
77
+ [/chmod\s+-R\s+000\s+\//, RiskLevel.CRITICAL, 'Recursive permission removal'],
78
+ [/chmod\s+-R\s+777\s+\//, RiskLevel.HIGH, 'Overly permissive chmod'],
79
+ [/chown\s+-R.*\s+\//, RiskLevel.HIGH, 'Recursive ownership change'],
80
+ // Windows dangerous commands
81
+ [/del\s+\/s\s+\/q\s+[cC]:/, RiskLevel.CRITICAL, 'Recursive Windows deletion'],
82
+ [/format\s+\/q\s+[cC]:/, RiskLevel.CRITICAL, 'Quick format system drive'],
83
+ // Network/download pipes
84
+ [/curl.*\|\s*(sh|bash)/, RiskLevel.HIGH, 'Pipe download to shell'],
85
+ [/wget.*\|\s*(bash|sh)/, RiskLevel.HIGH, 'Pipe download to shell'],
86
+ // Privilege escalation
87
+ [/sudo\s+rm\s+-rf/, RiskLevel.CRITICAL, 'Sudo recursive deletion'],
88
+ [/sudo\s+chmod/, RiskLevel.HIGH, 'Sudo permission change'],
89
+ ];
90
+ const DANGEROUS_FILES = [
91
+ // Shell configuration
92
+ '.bashrc',
93
+ '.zshrc',
94
+ '.profile',
95
+ '.bash_profile',
96
+ '.bash_logout',
97
+ // SSH keys and config
98
+ '.ssh/authorized_keys',
99
+ '.ssh/id_rsa',
100
+ '.ssh/id_ed25519',
101
+ '.ssh/id_ecdsa',
102
+ '.ssh/config',
103
+ 'known_hosts',
104
+ // Git configuration
105
+ '.gitconfig',
106
+ '.git/config',
107
+ // System files
108
+ '/etc/passwd',
109
+ '/etc/shadow',
110
+ '/etc/sudoers',
111
+ 'authorized_keys',
112
+ // Windows
113
+ 'boot.ini',
114
+ 'ntldr',
115
+ 'pagefile.sys',
116
+ ];
117
+ const DANGEROUS_CODE_PATTERNS = [
118
+ [/rm\s+-rf/, RiskLevel.HIGH, 'Recursive force deletion'],
119
+ [/dd\s+.*of=\/dev\//, RiskLevel.CRITICAL, 'Direct disk write'],
120
+ [/curl.*\|\s*sh/, RiskLevel.HIGH, 'Pipe to shell'],
121
+ [/wget.*\|\s*bash/, RiskLevel.HIGH, 'Pipe to bash'],
122
+ [/eval\s*\(/, RiskLevel.MEDIUM, 'Dynamic code execution'],
123
+ [/exec\s*\(/, RiskLevel.MEDIUM, 'Dynamic code execution'],
124
+ [/__import__\s*\(/, RiskLevel.MEDIUM, 'Dynamic import'],
125
+ [/subprocess\./, RiskLevel.MEDIUM, 'Subprocess execution'],
126
+ [/os\.system\s*\(/, RiskLevel.HIGH, 'System command execution'],
127
+ [/os\.remove\s*\(/, RiskLevel.LOW, 'File deletion'],
128
+ [/shutil\.rmtree\s*\(/, RiskLevel.MEDIUM, 'Directory deletion'],
129
+ [/child_process/, RiskLevel.MEDIUM, 'Child process execution'],
130
+ [/execSync|spawnSync/, RiskLevel.MEDIUM, 'Synchronous command execution'],
131
+ ];
132
+ // ============================================================================
133
+ // SAFETY GUARD CLASS
134
+ // ============================================================================
135
+ export class SafetyGuard {
136
+ projectRoot;
137
+ strictMode;
138
+ auditLog;
139
+ allowedPaths;
140
+ customProtectedPaths;
141
+ auditLogFile;
142
+ stats;
143
+ constructor(projectRoot, strictMode = false, auditLog = true) {
144
+ this.projectRoot = projectRoot ? resolve(projectRoot) : process.cwd();
145
+ this.strictMode = strictMode;
146
+ this.auditLog = auditLog;
147
+ this.allowedPaths = [this.projectRoot];
148
+ this.customProtectedPaths = new Set();
149
+ this.auditLogFile = join(homedir(), '.nexusforge', 'security', 'audit.log');
150
+ if (this.auditLog) {
151
+ const auditDir = join(homedir(), '.nexusforge', 'security');
152
+ if (!existsSync(auditDir)) {
153
+ mkdirSync(auditDir, { recursive: true });
154
+ }
155
+ }
156
+ this.stats = {
157
+ operationsChecked: 0,
158
+ operationsBlocked: 0,
159
+ operationsWarned: 0,
160
+ operationsAllowed: 0,
161
+ };
162
+ }
163
+ // ========================================================================
164
+ // PATH SAFETY
165
+ // ========================================================================
166
+ isPathSafe(path) {
167
+ this.stats.operationsChecked++;
168
+ const resolvedPath = resolve(path);
169
+ const pathStr = resolvedPath;
170
+ // Check protected paths
171
+ for (const protected_ of PROTECTED_PATHS) {
172
+ if (pathStr.startsWith(protected_) && pathStr !== this.projectRoot) {
173
+ this.stats.operationsBlocked++;
174
+ return {
175
+ isSafe: false,
176
+ riskLevel: RiskLevel.CRITICAL,
177
+ reason: `Path is in protected system directory: ${protected_}`,
178
+ };
179
+ }
180
+ }
181
+ // Check custom protected paths
182
+ for (const protected_ of this.customProtectedPaths) {
183
+ if (pathStr.startsWith(protected_)) {
184
+ this.stats.operationsBlocked++;
185
+ return {
186
+ isSafe: false,
187
+ riskLevel: RiskLevel.HIGH,
188
+ reason: `Path is in custom protected directory: ${protected_}`,
189
+ };
190
+ }
191
+ }
192
+ // Check if path is outside project root
193
+ if (!pathStr.startsWith(this.projectRoot)) {
194
+ if (this.strictMode) {
195
+ this.stats.operationsBlocked++;
196
+ return {
197
+ isSafe: false,
198
+ riskLevel: RiskLevel.HIGH,
199
+ reason: 'Path is outside project directory (strict mode)',
200
+ };
201
+ }
202
+ else {
203
+ this.stats.operationsWarned++;
204
+ return {
205
+ isSafe: false,
206
+ riskLevel: RiskLevel.MEDIUM,
207
+ reason: 'Path is outside project directory',
208
+ };
209
+ }
210
+ }
211
+ // Check for dangerous files
212
+ const filename = pathStr.split(/[/\\]/).pop() || '';
213
+ if (DANGEROUS_FILES.includes(filename) || DANGEROUS_FILES.includes(pathStr)) {
214
+ this.stats.operationsBlocked++;
215
+ return {
216
+ isSafe: false,
217
+ riskLevel: RiskLevel.HIGH,
218
+ reason: `File ${filename} is a sensitive system file`,
219
+ };
220
+ }
221
+ // Check for symlinks
222
+ try {
223
+ if (existsSync(resolvedPath) && lstatSync(resolvedPath).isSymbolicLink()) {
224
+ for (const protected_ of PROTECTED_PATHS) {
225
+ if (resolvedPath.startsWith(protected_)) {
226
+ this.stats.operationsBlocked++;
227
+ return {
228
+ isSafe: false,
229
+ riskLevel: RiskLevel.HIGH,
230
+ reason: 'Symlink points to protected system directory',
231
+ };
232
+ }
233
+ }
234
+ }
235
+ }
236
+ catch {
237
+ // Ignore symlink check errors
238
+ }
239
+ this.stats.operationsAllowed++;
240
+ return {
241
+ isSafe: true,
242
+ riskLevel: RiskLevel.SAFE,
243
+ };
244
+ }
245
+ addAllowedPath(path) {
246
+ const resolvedPath = resolve(path);
247
+ if (!this.allowedPaths.includes(resolvedPath)) {
248
+ this.allowedPaths.push(resolvedPath);
249
+ }
250
+ }
251
+ addProtectedPath(path) {
252
+ this.customProtectedPaths.add(path);
253
+ }
254
+ // ========================================================================
255
+ // COMMAND SAFETY
256
+ // ========================================================================
257
+ isCommandSafe(command) {
258
+ this.stats.operationsChecked++;
259
+ for (const [pattern, riskLevel, description] of DANGEROUS_COMMANDS) {
260
+ if (pattern.test(command)) {
261
+ if (riskLevel === RiskLevel.CRITICAL || riskLevel === RiskLevel.HIGH) {
262
+ this.stats.operationsBlocked++;
263
+ return {
264
+ isSafe: false,
265
+ riskLevel,
266
+ reason: `Dangerous command: ${description}`,
267
+ };
268
+ }
269
+ else {
270
+ this.stats.operationsWarned++;
271
+ return {
272
+ isSafe: false,
273
+ riskLevel,
274
+ reason: `Potentially risky command: ${description}`,
275
+ };
276
+ }
277
+ }
278
+ }
279
+ this.stats.operationsAllowed++;
280
+ return {
281
+ isSafe: true,
282
+ riskLevel: RiskLevel.SAFE,
283
+ };
284
+ }
285
+ // ========================================================================
286
+ // CONTENT SAFETY
287
+ // ========================================================================
288
+ checkContentSafety(content) {
289
+ const warnings = [];
290
+ let maxRisk = RiskLevel.SAFE;
291
+ const riskOrder = [
292
+ RiskLevel.SAFE,
293
+ RiskLevel.LOW,
294
+ RiskLevel.MEDIUM,
295
+ RiskLevel.HIGH,
296
+ RiskLevel.CRITICAL,
297
+ ];
298
+ for (const [pattern, riskLevel, description] of DANGEROUS_CODE_PATTERNS) {
299
+ if (pattern.test(content)) {
300
+ warnings.push(`[${riskLevel}] ${description}`);
301
+ if (riskOrder.indexOf(riskLevel) > riskOrder.indexOf(maxRisk)) {
302
+ maxRisk = riskLevel;
303
+ }
304
+ }
305
+ }
306
+ const isSafe = maxRisk === RiskLevel.SAFE || maxRisk === RiskLevel.LOW;
307
+ if (!isSafe) {
308
+ this.stats.operationsWarned++;
309
+ }
310
+ return {
311
+ isSafe,
312
+ riskLevel: maxRisk,
313
+ warnings,
314
+ };
315
+ }
316
+ // ========================================================================
317
+ // VALIDATION
318
+ // ========================================================================
319
+ validateFileOperation(operation, path, force = false) {
320
+ const result = this.isPathSafe(path);
321
+ if (!result.isSafe) {
322
+ if (result.riskLevel === RiskLevel.CRITICAL) {
323
+ console.error(`✗ Operation blocked: ${operation} on ${path}`);
324
+ console.error(`Reason: ${result.reason}`);
325
+ this.logAudit(operation, path, result.riskLevel, false, result.reason || '');
326
+ return false;
327
+ }
328
+ if (!force) {
329
+ console.warn(`⚠️ Warning: ${result.reason}`);
330
+ console.warn(`Path: ${path}`);
331
+ // In CLI context, we'd need to prompt for confirmation
332
+ // For now, we'll just warn and return false
333
+ return false;
334
+ }
335
+ }
336
+ // Additional check for delete operations
337
+ if (operation === OperationType.DELETE && !force && !this.strictMode) {
338
+ console.warn(`⚠️ Delete operation requires confirmation: ${path}`);
339
+ return false;
340
+ }
341
+ return true;
342
+ }
343
+ validateCommand(command, force = false) {
344
+ const result = this.isCommandSafe(command);
345
+ if (!result.isSafe) {
346
+ if (result.riskLevel === RiskLevel.CRITICAL) {
347
+ console.error(`✗ Command blocked: ${command}`);
348
+ console.error(`Reason: ${result.reason}`);
349
+ this.logAudit('execute_command', '.', result.riskLevel, false, result.reason || '');
350
+ return false;
351
+ }
352
+ if (!force) {
353
+ console.warn(`⚠️ Risky command detected: ${result.reason}`);
354
+ return false;
355
+ }
356
+ }
357
+ return true;
358
+ }
359
+ scanFileContent(content, filename, force = false) {
360
+ const result = this.checkContentSafety(content);
361
+ if (!result.isSafe) {
362
+ console.warn(`⚠️ Potentially Dangerous Code Detected`);
363
+ console.warn(`File: ${filename}`);
364
+ console.warn(`Risk Level: ${result.riskLevel.toUpperCase()}`);
365
+ console.warn('Warnings:');
366
+ for (const warning of result.warnings) {
367
+ console.warn(` • ${warning}`);
368
+ }
369
+ if (!force) {
370
+ this.logAudit('write_file', filename, result.riskLevel, false, 'Content contains dangerous patterns');
371
+ throw new Error('Content contains potentially dangerous code patterns');
372
+ }
373
+ this.logAudit('write_file', filename, result.riskLevel, true, `File contains ${result.warnings.length} warnings`);
374
+ }
375
+ return content;
376
+ }
377
+ // ========================================================================
378
+ // AUDIT LOGGING
379
+ // ========================================================================
380
+ logAudit(operation, path, riskLevel, approved, reason = '') {
381
+ if (!this.auditLog) {
382
+ return;
383
+ }
384
+ try {
385
+ const entry = {
386
+ timestamp: new Date().toISOString(),
387
+ operation,
388
+ path,
389
+ riskLevel: riskLevel,
390
+ approved,
391
+ reason,
392
+ };
393
+ appendFileSync(this.auditLogFile, JSON.stringify(entry) + '\n', 'utf-8');
394
+ }
395
+ catch (error) {
396
+ console.error(`Failed to write audit log: ${error}`);
397
+ }
398
+ }
399
+ getAuditLog(lines = 100) {
400
+ if (!existsSync(this.auditLogFile)) {
401
+ return [];
402
+ }
403
+ try {
404
+ const content = readFileSync(this.auditLogFile, 'utf-8');
405
+ const allLines = content.split('\n').filter(line => line.trim());
406
+ const recent = allLines.slice(-lines);
407
+ return recent.map(line => JSON.parse(line));
408
+ }
409
+ catch (error) {
410
+ console.error(`Failed to read audit log: ${error}`);
411
+ return [];
412
+ }
413
+ }
414
+ // ========================================================================
415
+ // STATISTICS
416
+ // ========================================================================
417
+ getStatistics() {
418
+ return {
419
+ ...this.stats,
420
+ blockRate: this.stats.operationsChecked > 0
421
+ ? (this.stats.operationsBlocked / this.stats.operationsChecked) * 100
422
+ : 0,
423
+ allowedPaths: this.allowedPaths.length,
424
+ protectedPaths: this.customProtectedPaths.size,
425
+ strictMode: this.strictMode,
426
+ auditEnabled: this.auditLog,
427
+ };
428
+ }
429
+ printStatistics() {
430
+ const stats = this.getStatistics();
431
+ console.log('\n=== Safety Guard Statistics ===\n');
432
+ console.log(`Operations Checked: ${stats.operationsChecked}`);
433
+ console.log(`Operations Blocked: ${stats.operationsBlocked}`);
434
+ console.log(`Operations Warned: ${stats.operationsWarned}`);
435
+ console.log(`Operations Allowed: ${stats.operationsAllowed}`);
436
+ console.log(`Block Rate: ${stats.blockRate.toFixed(1)}%`);
437
+ console.log(`\nStrict Mode: ${stats.strictMode ? '✓ Enabled' : '✗ Disabled'}`);
438
+ console.log(`Audit Logging: ${stats.auditEnabled ? '✓ Enabled' : '✗ Disabled'}`);
439
+ console.log('');
440
+ }
441
+ // ========================================================================
442
+ // SETTERS
443
+ // ========================================================================
444
+ setProjectRoot(path) {
445
+ this.projectRoot = resolve(path);
446
+ if (!this.allowedPaths.includes(this.projectRoot)) {
447
+ this.allowedPaths.push(this.projectRoot);
448
+ }
449
+ }
450
+ setStrictMode(strict) {
451
+ this.strictMode = strict;
452
+ }
453
+ getProjectRoot() {
454
+ return this.projectRoot;
455
+ }
456
+ }
457
+ // ============================================================================
458
+ // GLOBAL INSTANCE
459
+ // ============================================================================
460
+ let safetyGuardInstance = null;
461
+ export function getSafetyGuard(projectRoot) {
462
+ if (!safetyGuardInstance) {
463
+ safetyGuardInstance = new SafetyGuard(projectRoot);
464
+ }
465
+ return safetyGuardInstance;
466
+ }
467
+ export function resetSafetyGuard() {
468
+ safetyGuardInstance = null;
469
+ }
470
+ // ============================================================================
471
+ // CONVENIENCE FUNCTIONS
472
+ // ============================================================================
473
+ export function isPathSafe(path) {
474
+ return getSafetyGuard().isPathSafe(path);
475
+ }
476
+ export function isCommandSafe(command) {
477
+ return getSafetyGuard().isCommandSafe(command);
478
+ }
479
+ export function checkContentSafety(content) {
480
+ return getSafetyGuard().checkContentSafety(content);
481
+ }
482
+ export function validatePath(path, force) {
483
+ return getSafetyGuard().validateFileOperation(OperationType.WRITE, path, force);
484
+ }
485
+ export function validateCommand(command, force) {
486
+ return getSafetyGuard().validateCommand(command, force);
487
+ }
488
+ // ============================================================================
489
+ // EXPORT
490
+ // ============================================================================
491
+ export default SafetyGuard;
492
+ //# sourceMappingURL=safetyGuard.js.map