@nahisaho/musubix-security 1.8.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 (116) hide show
  1. package/README.md +105 -0
  2. package/bin/musubix-security-mcp.js +12 -0
  3. package/bin/musubix-security.js +12 -0
  4. package/dist/analysis/dependency-auditor.d.ts +30 -0
  5. package/dist/analysis/dependency-auditor.d.ts.map +1 -0
  6. package/dist/analysis/dependency-auditor.js +325 -0
  7. package/dist/analysis/dependency-auditor.js.map +1 -0
  8. package/dist/analysis/index.d.ts +9 -0
  9. package/dist/analysis/index.d.ts.map +1 -0
  10. package/dist/analysis/index.js +9 -0
  11. package/dist/analysis/index.js.map +1 -0
  12. package/dist/analysis/secret-detector.d.ts +44 -0
  13. package/dist/analysis/secret-detector.d.ts.map +1 -0
  14. package/dist/analysis/secret-detector.js +465 -0
  15. package/dist/analysis/secret-detector.js.map +1 -0
  16. package/dist/analysis/taint-analyzer.d.ts +62 -0
  17. package/dist/analysis/taint-analyzer.d.ts.map +1 -0
  18. package/dist/analysis/taint-analyzer.js +519 -0
  19. package/dist/analysis/taint-analyzer.js.map +1 -0
  20. package/dist/analysis/vulnerability-scanner.d.ts +58 -0
  21. package/dist/analysis/vulnerability-scanner.d.ts.map +1 -0
  22. package/dist/analysis/vulnerability-scanner.js +417 -0
  23. package/dist/analysis/vulnerability-scanner.js.map +1 -0
  24. package/dist/cli/commands.d.ts +15 -0
  25. package/dist/cli/commands.d.ts.map +1 -0
  26. package/dist/cli/commands.js +405 -0
  27. package/dist/cli/commands.js.map +1 -0
  28. package/dist/cli/index.d.ts +6 -0
  29. package/dist/cli/index.d.ts.map +1 -0
  30. package/dist/cli/index.js +6 -0
  31. package/dist/cli/index.js.map +1 -0
  32. package/dist/index.d.ts +42 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +66 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/infrastructure/ast-parser.d.ts +87 -0
  37. package/dist/infrastructure/ast-parser.d.ts.map +1 -0
  38. package/dist/infrastructure/ast-parser.js +273 -0
  39. package/dist/infrastructure/ast-parser.js.map +1 -0
  40. package/dist/infrastructure/cache.d.ts +100 -0
  41. package/dist/infrastructure/cache.d.ts.map +1 -0
  42. package/dist/infrastructure/cache.js +288 -0
  43. package/dist/infrastructure/cache.js.map +1 -0
  44. package/dist/infrastructure/config-loader.d.ts +35 -0
  45. package/dist/infrastructure/config-loader.d.ts.map +1 -0
  46. package/dist/infrastructure/config-loader.js +358 -0
  47. package/dist/infrastructure/config-loader.js.map +1 -0
  48. package/dist/infrastructure/file-scanner.d.ts +94 -0
  49. package/dist/infrastructure/file-scanner.d.ts.map +1 -0
  50. package/dist/infrastructure/file-scanner.js +189 -0
  51. package/dist/infrastructure/file-scanner.js.map +1 -0
  52. package/dist/infrastructure/index.d.ts +9 -0
  53. package/dist/infrastructure/index.d.ts.map +1 -0
  54. package/dist/infrastructure/index.js +9 -0
  55. package/dist/infrastructure/index.js.map +1 -0
  56. package/dist/mcp/index.d.ts +7 -0
  57. package/dist/mcp/index.d.ts.map +1 -0
  58. package/dist/mcp/index.js +7 -0
  59. package/dist/mcp/index.js.map +1 -0
  60. package/dist/mcp/server.d.ts +34 -0
  61. package/dist/mcp/server.d.ts.map +1 -0
  62. package/dist/mcp/server.js +88 -0
  63. package/dist/mcp/server.js.map +1 -0
  64. package/dist/mcp/tools.d.ts +88 -0
  65. package/dist/mcp/tools.d.ts.map +1 -0
  66. package/dist/mcp/tools.js +443 -0
  67. package/dist/mcp/tools.js.map +1 -0
  68. package/dist/services/fix-generator.d.ts +56 -0
  69. package/dist/services/fix-generator.d.ts.map +1 -0
  70. package/dist/services/fix-generator.js +346 -0
  71. package/dist/services/fix-generator.js.map +1 -0
  72. package/dist/services/fix-verifier.d.ts +62 -0
  73. package/dist/services/fix-verifier.d.ts.map +1 -0
  74. package/dist/services/fix-verifier.js +224 -0
  75. package/dist/services/fix-verifier.js.map +1 -0
  76. package/dist/services/index.d.ts +9 -0
  77. package/dist/services/index.d.ts.map +1 -0
  78. package/dist/services/index.js +13 -0
  79. package/dist/services/index.js.map +1 -0
  80. package/dist/services/report-generator.d.ts +87 -0
  81. package/dist/services/report-generator.d.ts.map +1 -0
  82. package/dist/services/report-generator.js +463 -0
  83. package/dist/services/report-generator.js.map +1 -0
  84. package/dist/services/security-service.d.ts +151 -0
  85. package/dist/services/security-service.d.ts.map +1 -0
  86. package/dist/services/security-service.js +279 -0
  87. package/dist/services/security-service.js.map +1 -0
  88. package/dist/types/config.d.ts +188 -0
  89. package/dist/types/config.d.ts.map +1 -0
  90. package/dist/types/config.js +89 -0
  91. package/dist/types/config.js.map +1 -0
  92. package/dist/types/dependency.d.ts +266 -0
  93. package/dist/types/dependency.d.ts.map +1 -0
  94. package/dist/types/dependency.js +7 -0
  95. package/dist/types/dependency.js.map +1 -0
  96. package/dist/types/fix.d.ts +213 -0
  97. package/dist/types/fix.d.ts.map +1 -0
  98. package/dist/types/fix.js +7 -0
  99. package/dist/types/fix.js.map +1 -0
  100. package/dist/types/index.d.ts +14 -0
  101. package/dist/types/index.d.ts.map +1 -0
  102. package/dist/types/index.js +8 -0
  103. package/dist/types/index.js.map +1 -0
  104. package/dist/types/secret.d.ts +151 -0
  105. package/dist/types/secret.d.ts.map +1 -0
  106. package/dist/types/secret.js +91 -0
  107. package/dist/types/secret.js.map +1 -0
  108. package/dist/types/taint.d.ts +182 -0
  109. package/dist/types/taint.d.ts.map +1 -0
  110. package/dist/types/taint.js +24 -0
  111. package/dist/types/taint.js.map +1 -0
  112. package/dist/types/vulnerability.d.ts +136 -0
  113. package/dist/types/vulnerability.d.ts.map +1 -0
  114. package/dist/types/vulnerability.js +7 -0
  115. package/dist/types/vulnerability.js.map +1 -0
  116. package/package.json +87 -0
@@ -0,0 +1,151 @@
1
+ /**
2
+ * @fileoverview Security service - facade for all security scanning operations
3
+ * @module @nahisaho/musubix-security/services/security-service
4
+ * @trace REQ-SEC-SCAN-001
5
+ */
6
+ import type { SecurityConfig, ScanResult, TaintResult, SecretScanResult, AuditResult, Fix, VerificationResult } from '../types/index.js';
7
+ import { type ReportFormat } from './report-generator.js';
8
+ /**
9
+ * Scan options
10
+ */
11
+ export interface ScanOptions {
12
+ /** Target path (file or directory) */
13
+ target: string;
14
+ /** Enable vulnerability scanning */
15
+ vulnerabilities?: boolean;
16
+ /** Enable taint analysis */
17
+ taint?: boolean;
18
+ /** Enable secret detection */
19
+ secrets?: boolean;
20
+ /** Enable dependency audit */
21
+ dependencies?: boolean;
22
+ /** Generate fixes */
23
+ generateFixes?: boolean;
24
+ /** Verify fixes */
25
+ verifyFixes?: boolean;
26
+ /** Use cache */
27
+ useCache?: boolean;
28
+ /** Configuration overrides */
29
+ config?: Partial<SecurityConfig>;
30
+ }
31
+ /**
32
+ * Complete scan result
33
+ */
34
+ export interface CompleteScanResult {
35
+ /** Scan metadata */
36
+ metadata: {
37
+ target: string;
38
+ scanTime: Date;
39
+ duration: number;
40
+ filesScanned: number;
41
+ rulesApplied: number;
42
+ };
43
+ /** Vulnerability scan results */
44
+ vulnerabilities?: ScanResult;
45
+ /** Taint analysis results */
46
+ taint?: TaintResult;
47
+ /** Secret scan results */
48
+ secrets?: SecretScanResult;
49
+ /** Dependency audit results */
50
+ dependencies?: AuditResult;
51
+ /** Generated fixes */
52
+ fixes?: Fix[];
53
+ /** Fix verification results */
54
+ verifications?: VerificationResult[];
55
+ /** Summary statistics */
56
+ summary: {
57
+ totalVulnerabilities: number;
58
+ bySeverity: {
59
+ critical: number;
60
+ high: number;
61
+ medium: number;
62
+ low: number;
63
+ info: number;
64
+ };
65
+ taintedPaths: number;
66
+ secretsFound: number;
67
+ vulnerableDependencies: number;
68
+ fixesGenerated: number;
69
+ fixesVerified: number;
70
+ };
71
+ }
72
+ /**
73
+ * Security service - main facade for security operations
74
+ */
75
+ export declare class SecurityService {
76
+ private config;
77
+ private vulnerabilityScanner;
78
+ private taintAnalyzer;
79
+ private secretDetector;
80
+ private dependencyAuditor;
81
+ private fixGenerator;
82
+ private fixVerifier;
83
+ private reportGenerator;
84
+ private fileScanner;
85
+ constructor(config?: Partial<SecurityConfig>);
86
+ /**
87
+ * Run a complete security scan
88
+ */
89
+ scan(options: ScanOptions): Promise<CompleteScanResult>;
90
+ /**
91
+ * Quick scan - vulnerabilities only
92
+ */
93
+ quickScan(target: string): Promise<ScanResult>;
94
+ /**
95
+ * Scan a single file
96
+ */
97
+ scanFile(filePath: string): Promise<ScanResult>;
98
+ /**
99
+ * Run taint analysis only
100
+ */
101
+ analyzeTaint(target: string): Promise<TaintResult>;
102
+ /**
103
+ * Detect secrets only
104
+ */
105
+ detectSecrets(target: string): Promise<SecretScanResult>;
106
+ /**
107
+ * Audit dependencies only
108
+ */
109
+ auditDependencies(target: string): Promise<AuditResult>;
110
+ /**
111
+ * Generate a fix for a vulnerability
112
+ */
113
+ generateFix(vulnerabilityId: string, scanResult: ScanResult): Promise<Fix | null>;
114
+ /**
115
+ * Verify a fix
116
+ */
117
+ verifyFix(fix: Fix): Promise<VerificationResult>;
118
+ /**
119
+ * Generate a report from scan results
120
+ */
121
+ generateReport(scanResult: CompleteScanResult, format?: ReportFormat): Promise<string>;
122
+ /**
123
+ * Generate summary statistics
124
+ */
125
+ private generateSummary;
126
+ /**
127
+ * Get current configuration
128
+ */
129
+ getConfig(): SecurityConfig;
130
+ /**
131
+ * Update configuration
132
+ */
133
+ setConfig(config: Partial<SecurityConfig>): void;
134
+ /**
135
+ * Load configuration from file
136
+ */
137
+ loadConfigFile(searchFrom?: string): Promise<void>;
138
+ }
139
+ /**
140
+ * Create a security service
141
+ */
142
+ export declare function createSecurityService(config?: Partial<SecurityConfig>): SecurityService;
143
+ /**
144
+ * Quick scan helper function
145
+ */
146
+ export declare function scanForVulnerabilities(target: string): Promise<ScanResult>;
147
+ /**
148
+ * Full scan helper function
149
+ */
150
+ export declare function runSecurityScan(target: string, options?: Partial<ScanOptions>): Promise<CompleteScanResult>;
151
+ //# sourceMappingURL=security-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-service.d.ts","sourceRoot":"","sources":["../../src/services/security-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,279 @@
1
+ /**
2
+ * @fileoverview Security service - facade for all security scanning operations
3
+ * @module @nahisaho/musubix-security/services/security-service
4
+ * @trace REQ-SEC-SCAN-001
5
+ */
6
+ import * as path from 'node:path';
7
+ import { DEFAULT_CONFIG } from '../types/index.js';
8
+ import { VulnerabilityScanner } from '../analysis/index.js';
9
+ import { TaintAnalyzer } from '../analysis/index.js';
10
+ import { SecretDetector } from '../analysis/index.js';
11
+ import { DependencyAuditor } from '../analysis/index.js';
12
+ import { FileScanner } from '../infrastructure/index.js';
13
+ import { loadConfig } from '../infrastructure/index.js';
14
+ import { FixGenerator } from './fix-generator.js';
15
+ import { FixVerifier } from './fix-verifier.js';
16
+ import { ReportGenerator, } from './report-generator.js';
17
+ /**
18
+ * Security service - main facade for security operations
19
+ */
20
+ export class SecurityService {
21
+ config;
22
+ vulnerabilityScanner;
23
+ taintAnalyzer;
24
+ secretDetector;
25
+ dependencyAuditor;
26
+ fixGenerator;
27
+ fixVerifier;
28
+ reportGenerator;
29
+ fileScanner;
30
+ constructor(config = {}) {
31
+ this.config = { ...DEFAULT_CONFIG, ...config };
32
+ // Initialize components
33
+ this.vulnerabilityScanner = new VulnerabilityScanner();
34
+ this.taintAnalyzer = new TaintAnalyzer();
35
+ this.secretDetector = new SecretDetector();
36
+ this.dependencyAuditor = new DependencyAuditor();
37
+ this.fixGenerator = new FixGenerator();
38
+ this.fixVerifier = new FixVerifier();
39
+ this.reportGenerator = new ReportGenerator(this.config.report);
40
+ this.fileScanner = new FileScanner({
41
+ extensions: this.config.scan?.severityFilter,
42
+ excludePatterns: this.config.excludePatterns,
43
+ maxFileSize: this.config.scan?.maxFileSize,
44
+ });
45
+ }
46
+ /**
47
+ * Run a complete security scan
48
+ */
49
+ async scan(options) {
50
+ const startTime = Date.now();
51
+ const scanConfig = { ...this.config, ...options.config };
52
+ // Determine what to scan
53
+ const runVulns = options.vulnerabilities ?? true;
54
+ const runTaint = options.taint ?? (scanConfig.taint !== undefined);
55
+ const runSecrets = options.secrets ?? (scanConfig.secret !== undefined);
56
+ const runDeps = options.dependencies ?? (scanConfig.audit !== undefined);
57
+ const genFixes = options.generateFixes ?? true;
58
+ const verFixes = options.verifyFixes ?? false;
59
+ // Collect files to scan
60
+ const files = await this.fileScanner.scan(options.target);
61
+ // Run scans in parallel where possible
62
+ const results = {};
63
+ // Run parallel scans
64
+ const promises = [];
65
+ if (runVulns) {
66
+ promises.push(this.vulnerabilityScanner.scanDirectory(options.target).then((r) => {
67
+ results.vulnerabilities = r;
68
+ }));
69
+ }
70
+ if (runTaint) {
71
+ promises.push(this.taintAnalyzer.analyze(options.target).then((r) => {
72
+ results.taint = r;
73
+ }));
74
+ }
75
+ if (runSecrets) {
76
+ promises.push(this.secretDetector.scan(options.target).then((r) => {
77
+ results.secrets = r;
78
+ }));
79
+ }
80
+ if (runDeps) {
81
+ promises.push(this.dependencyAuditor.audit(options.target).then((r) => {
82
+ results.dependencies = r;
83
+ }));
84
+ }
85
+ await Promise.all(promises);
86
+ // Generate fixes if requested
87
+ let fixes = [];
88
+ if (genFixes && results.vulnerabilities) {
89
+ fixes = await this.fixGenerator.generateFixes(results.vulnerabilities.vulnerabilities);
90
+ // Add taint-based fixes
91
+ if (results.taint) {
92
+ for (const taintPath of results.taint.unsafePaths) {
93
+ const taintFix = await this.fixGenerator.generateTaintFix(taintPath);
94
+ if (taintFix) {
95
+ fixes.push(taintFix);
96
+ }
97
+ }
98
+ }
99
+ }
100
+ // Verify fixes if requested
101
+ let verifications = [];
102
+ if (verFixes && fixes.length > 0) {
103
+ verifications = await this.fixVerifier.verifyBatch(fixes);
104
+ }
105
+ // Calculate duration
106
+ const duration = Date.now() - startTime;
107
+ // Generate summary
108
+ const summary = this.generateSummary(results, fixes, verifications);
109
+ return {
110
+ metadata: {
111
+ target: options.target,
112
+ scanTime: new Date(),
113
+ duration,
114
+ filesScanned: files.length,
115
+ rulesApplied: this.vulnerabilityScanner.getRuleCount(),
116
+ },
117
+ vulnerabilities: results.vulnerabilities,
118
+ taint: results.taint,
119
+ secrets: results.secrets,
120
+ dependencies: results.dependencies,
121
+ fixes: genFixes ? fixes : undefined,
122
+ verifications: verFixes ? verifications : undefined,
123
+ summary,
124
+ };
125
+ }
126
+ /**
127
+ * Quick scan - vulnerabilities only
128
+ */
129
+ async quickScan(target) {
130
+ return this.vulnerabilityScanner.scanDirectory(target);
131
+ }
132
+ /**
133
+ * Scan a single file
134
+ */
135
+ async scanFile(filePath) {
136
+ const vulnerabilities = this.vulnerabilityScanner.scanFile(filePath);
137
+ return {
138
+ vulnerabilities,
139
+ scannedFiles: 1,
140
+ skippedFiles: 0,
141
+ duration: 0,
142
+ timestamp: new Date(),
143
+ options: {},
144
+ summary: {
145
+ critical: vulnerabilities.filter((v) => v.severity === 'critical').length,
146
+ high: vulnerabilities.filter((v) => v.severity === 'high').length,
147
+ medium: vulnerabilities.filter((v) => v.severity === 'medium').length,
148
+ low: vulnerabilities.filter((v) => v.severity === 'low').length,
149
+ info: vulnerabilities.filter((v) => v.severity === 'info').length,
150
+ total: vulnerabilities.length,
151
+ },
152
+ };
153
+ }
154
+ /**
155
+ * Run taint analysis only
156
+ */
157
+ async analyzeTaint(target) {
158
+ return this.taintAnalyzer.analyze(target);
159
+ }
160
+ /**
161
+ * Detect secrets only
162
+ */
163
+ async detectSecrets(target) {
164
+ return this.secretDetector.scan(target);
165
+ }
166
+ /**
167
+ * Audit dependencies only
168
+ */
169
+ async auditDependencies(target) {
170
+ return this.dependencyAuditor.audit(target);
171
+ }
172
+ /**
173
+ * Generate a fix for a vulnerability
174
+ */
175
+ async generateFix(vulnerabilityId, scanResult) {
176
+ const vulnerability = scanResult.vulnerabilities.find((v) => v.id === vulnerabilityId);
177
+ if (!vulnerability) {
178
+ return null;
179
+ }
180
+ return this.fixGenerator.generateFix(vulnerability);
181
+ }
182
+ /**
183
+ * Verify a fix
184
+ */
185
+ async verifyFix(fix) {
186
+ return this.fixVerifier.verify(fix);
187
+ }
188
+ /**
189
+ * Generate a report from scan results
190
+ */
191
+ async generateReport(scanResult, format = 'json') {
192
+ const combined = {
193
+ vulnerabilities: scanResult.vulnerabilities ?? {
194
+ vulnerabilities: [],
195
+ scannedFiles: 0,
196
+ skippedFiles: 0,
197
+ duration: 0,
198
+ timestamp: new Date(),
199
+ options: {},
200
+ summary: { critical: 0, high: 0, medium: 0, low: 0, info: 0, total: 0 },
201
+ },
202
+ dependencies: scanResult.dependencies,
203
+ taint: scanResult.taint,
204
+ secrets: scanResult.secrets,
205
+ fixes: scanResult.fixes,
206
+ };
207
+ const metadata = {
208
+ title: 'Security Scan Report',
209
+ project: path.basename(scanResult.metadata.target),
210
+ scanTime: scanResult.metadata.scanTime,
211
+ duration: scanResult.metadata.duration,
212
+ targetPath: scanResult.metadata.target,
213
+ };
214
+ return this.reportGenerator.generate(combined, metadata, format);
215
+ }
216
+ /**
217
+ * Generate summary statistics
218
+ */
219
+ generateSummary(results, fixes, verifications) {
220
+ const vulns = results.vulnerabilities?.vulnerabilities ?? [];
221
+ return {
222
+ totalVulnerabilities: vulns.length,
223
+ bySeverity: {
224
+ critical: vulns.filter((v) => v.severity === 'critical').length,
225
+ high: vulns.filter((v) => v.severity === 'high').length,
226
+ medium: vulns.filter((v) => v.severity === 'medium').length,
227
+ low: vulns.filter((v) => v.severity === 'low').length,
228
+ info: vulns.filter((v) => v.severity === 'info').length,
229
+ },
230
+ taintedPaths: results.taint?.unsafePaths.length ?? 0,
231
+ secretsFound: results.secrets?.summary.total ?? 0,
232
+ vulnerableDependencies: results.dependencies?.vulnerableDependencies.length ?? 0,
233
+ fixesGenerated: fixes.length,
234
+ fixesVerified: verifications.filter((v) => v.status === 'verified').length,
235
+ };
236
+ }
237
+ /**
238
+ * Get current configuration
239
+ */
240
+ getConfig() {
241
+ return { ...this.config };
242
+ }
243
+ /**
244
+ * Update configuration
245
+ */
246
+ setConfig(config) {
247
+ this.config = { ...this.config, ...config };
248
+ }
249
+ /**
250
+ * Load configuration from file
251
+ */
252
+ async loadConfigFile(searchFrom) {
253
+ const loaded = await loadConfig(searchFrom);
254
+ if (loaded) {
255
+ this.config = { ...this.config, ...loaded };
256
+ }
257
+ }
258
+ }
259
+ /**
260
+ * Create a security service
261
+ */
262
+ export function createSecurityService(config) {
263
+ return new SecurityService(config);
264
+ }
265
+ /**
266
+ * Quick scan helper function
267
+ */
268
+ export async function scanForVulnerabilities(target) {
269
+ const service = createSecurityService();
270
+ return service.quickScan(target);
271
+ }
272
+ /**
273
+ * Full scan helper function
274
+ */
275
+ export async function runSecurityScan(target, options) {
276
+ const service = createSecurityService();
277
+ return service.scan({ target, ...options });
278
+ }
279
+ //# sourceMappingURL=security-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-service.js","sourceRoot":"","sources":["../../src/services/security-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * @fileoverview Security configuration type definitions
3
+ * @module @nahisaho/musubix-security/types/config
4
+ * @trace REQ-SEC-CONFIG-001, REQ-SEC-CONFIG-002, REQ-SEC-REPORT-001
5
+ */
6
+ import type { Severity, ScanOptions } from './vulnerability.js';
7
+ import type { TaintAnalysisOptions } from './taint.js';
8
+ import type { FixGenerationOptions } from './fix.js';
9
+ import type { SecretScanOptions } from './secret.js';
10
+ import type { AuditOptions, SBOMOptions, LicensePolicy } from './dependency.js';
11
+ /**
12
+ * Output format for reports
13
+ * @trace REQ-SEC-REPORT-001
14
+ */
15
+ export type ReportFormat = 'json' | 'sarif' | 'markdown' | 'html';
16
+ /**
17
+ * Knowledge graph mode
18
+ * @trace REQ-SEC-KG-001
19
+ */
20
+ export type KnowledgeGraphMode = 'local' | 'global' | 'hybrid' | 'disabled';
21
+ /**
22
+ * Cache strategy
23
+ */
24
+ export type CacheStrategy = 'memory' | 'file' | 'none';
25
+ /**
26
+ * Report configuration
27
+ * @trace REQ-SEC-REPORT-001
28
+ */
29
+ export interface ReportConfig {
30
+ /** Output format(s) */
31
+ format: ReportFormat | ReportFormat[];
32
+ /** Output file path (stdout if not specified) */
33
+ outputPath?: string;
34
+ /** Include code snippets in report */
35
+ includeCode?: boolean;
36
+ /** Include code snippets in report (alias) */
37
+ includeCodeSnippets?: boolean;
38
+ /** Include fix suggestions in report */
39
+ includeFixes?: boolean;
40
+ /** Include taint paths in report */
41
+ includeTaintPaths?: boolean;
42
+ /** Group by file or vulnerability type */
43
+ groupBy?: 'file' | 'type' | 'severity';
44
+ /** Sort by */
45
+ sortBy?: 'severity' | 'file' | 'type';
46
+ /** Maximum vulnerabilities per file in report */
47
+ maxPerFile?: number;
48
+ /** Include summary section */
49
+ includeSummary?: boolean;
50
+ /** Custom report template path */
51
+ templatePath?: string;
52
+ }
53
+ /**
54
+ * Knowledge graph configuration
55
+ * @trace REQ-SEC-KG-001
56
+ */
57
+ export interface KnowledgeGraphConfig {
58
+ /** KG mode */
59
+ mode: KnowledgeGraphMode;
60
+ /** Local KG database path */
61
+ localDbPath?: string;
62
+ /** Global YATA endpoint */
63
+ globalEndpoint?: string;
64
+ /** Auto-learn from scan results */
65
+ autoLearn?: boolean;
66
+ /** Namespace for learned patterns */
67
+ namespace?: string;
68
+ /** Maximum patterns to cache */
69
+ maxCachedPatterns?: number;
70
+ }
71
+ /**
72
+ * AI assistance configuration
73
+ */
74
+ export interface AIConfig {
75
+ /** Enable AI-assisted features */
76
+ enabled: boolean;
77
+ /** AI provider */
78
+ provider?: 'vscode-lm' | 'openai' | 'anthropic';
79
+ /** Model identifier */
80
+ model?: string;
81
+ /** Maximum tokens for generation */
82
+ maxTokens?: number;
83
+ /** Temperature for generation */
84
+ temperature?: number;
85
+ /** Use AI for fix generation */
86
+ useForFixes?: boolean;
87
+ /** Use AI for vulnerability explanation */
88
+ useForExplanation?: boolean;
89
+ }
90
+ /**
91
+ * Cache configuration
92
+ */
93
+ export interface CacheConfig {
94
+ /** Cache strategy */
95
+ strategy: CacheStrategy;
96
+ /** Cache directory for file strategy */
97
+ cacheDir?: string;
98
+ /** TTL in seconds for cached entries */
99
+ ttlSeconds?: number;
100
+ /** Maximum cache size in MB */
101
+ maxSizeMB?: number;
102
+ /** Cache AST parse results */
103
+ cacheAST?: boolean;
104
+ /** Cache vulnerability patterns */
105
+ cachePatterns?: boolean;
106
+ }
107
+ /**
108
+ * CI/CD integration configuration
109
+ */
110
+ export interface CIConfig {
111
+ /** Fail build on severity */
112
+ failOnSeverity?: Severity;
113
+ /** Fail build on vulnerability count */
114
+ failOnCount?: number;
115
+ /** Fail build on new vulnerabilities only */
116
+ failOnNewOnly?: boolean;
117
+ /** Baseline file path for comparison */
118
+ baselinePath?: string;
119
+ /** Output SARIF for GitHub Code Scanning */
120
+ sarifOutput?: boolean;
121
+ /** SARIF output path */
122
+ sarifPath?: string;
123
+ /** Enable PR comments */
124
+ prComments?: boolean;
125
+ /** CI platform */
126
+ platform?: 'github' | 'gitlab' | 'azure-devops' | 'jenkins';
127
+ }
128
+ /**
129
+ * Complete security configuration
130
+ * @trace REQ-SEC-CONFIG-001
131
+ */
132
+ export interface SecurityConfig {
133
+ /** Configuration version */
134
+ version: '1.0';
135
+ /** Project root path */
136
+ projectRoot?: string;
137
+ /** Scan configuration */
138
+ scan?: ScanOptions;
139
+ /** Taint analysis configuration */
140
+ taint?: TaintAnalysisOptions;
141
+ /** Fix generation configuration */
142
+ fix?: FixGenerationOptions;
143
+ /** Secret detection configuration */
144
+ secret?: SecretScanOptions;
145
+ /** Dependency audit configuration */
146
+ audit?: AuditOptions;
147
+ /** SBOM generation configuration */
148
+ sbom?: SBOMOptions;
149
+ /** License policy */
150
+ licensePolicy?: LicensePolicy;
151
+ /** Report configuration */
152
+ report?: ReportConfig;
153
+ /** Knowledge graph configuration */
154
+ knowledgeGraph?: KnowledgeGraphConfig;
155
+ /** AI configuration */
156
+ ai?: AIConfig;
157
+ /** Cache configuration */
158
+ cache?: CacheConfig;
159
+ /** CI/CD configuration */
160
+ ci?: CIConfig;
161
+ /** Global severity filter */
162
+ severityFilter?: Severity[];
163
+ /** Global exclude patterns */
164
+ excludePatterns?: string[];
165
+ /** Custom rules directory */
166
+ customRulesDir?: string;
167
+ /** Enable verbose logging */
168
+ verbose?: boolean;
169
+ /** Enable debug mode */
170
+ debug?: boolean;
171
+ }
172
+ /**
173
+ * Default security configuration
174
+ */
175
+ export declare const DEFAULT_CONFIG: SecurityConfig;
176
+ /**
177
+ * Configuration file locations (in order of precedence)
178
+ */
179
+ export declare const CONFIG_FILE_LOCATIONS: string[];
180
+ /**
181
+ * Environment variable prefix for configuration
182
+ */
183
+ export declare const ENV_PREFIX = "MUSUBIX_SECURITY_";
184
+ /**
185
+ * Configuration schema version
186
+ */
187
+ export declare const CONFIG_SCHEMA_VERSION = "1.0";
188
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAC;AAElE;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE5E;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,MAAM,EAAE,YAAY,GAAG,YAAY,EAAE,CAAC;IACtC,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wCAAwC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oCAAoC;IACpC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACvC,cAAc;IACd,MAAM,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAC;IACtC,iDAAiD;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc;IACd,IAAI,EAAE,kBAAkB,CAAC;IACzB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mCAAmC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,kBAAkB;IAClB,QAAQ,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAChD,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2CAA2C;IAC3C,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qBAAqB;IACrB,QAAQ,EAAE,aAAa,CAAC;IACxB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mCAAmC;IACnC,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,wCAAwC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,kBAAkB;IAClB,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAC;CAC7D;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,4BAA4B;IAC5B,OAAO,EAAE,KAAK,CAAC;IACf,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,mCAAmC;IACnC,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,mCAAmC;IACnC,GAAG,CAAC,EAAE,oBAAoB,CAAC;IAC3B,qCAAqC;IACrC,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,qCAAqC;IACrC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,oCAAoC;IACpC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,qBAAqB;IACrB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,2BAA2B;IAC3B,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,oCAAoC;IACpC,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,uBAAuB;IACvB,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,0BAA0B;IAC1B,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,0BAA0B;IAC1B,EAAE,CAAC,EAAE,QAAQ,CAAC;IACd,6BAA6B;IAC7B,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAC;IAC5B,8BAA8B;IAC9B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,6BAA6B;IAC7B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,wBAAwB;IACxB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,cA2D5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,UAQjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,UAAU,sBAAsB,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,qBAAqB,QAAQ,CAAC"}