@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,443 @@
1
+ /**
2
+ * @fileoverview MCP Tools for security scanning
3
+ * @module @nahisaho/musubix-security/mcp/tools
4
+ * @trace REQ-SEC-MCP-001
5
+ */
6
+ import * as path from 'node:path';
7
+ import { createSecurityService, } from '../services/index.js';
8
+ /**
9
+ * Security scan tool definitions
10
+ */
11
+ export const SECURITY_TOOLS = [
12
+ {
13
+ name: 'security_scan',
14
+ description: 'Run a comprehensive security scan on the target path. Detects vulnerabilities, hardcoded secrets, tainted data flows, and vulnerable dependencies.',
15
+ inputSchema: {
16
+ type: 'object',
17
+ properties: {
18
+ target: {
19
+ type: 'string',
20
+ description: 'Target path to scan (file or directory)',
21
+ },
22
+ vulnerabilities: {
23
+ type: 'boolean',
24
+ description: 'Enable vulnerability scanning',
25
+ default: true,
26
+ },
27
+ taint: {
28
+ type: 'boolean',
29
+ description: 'Enable taint analysis',
30
+ default: true,
31
+ },
32
+ secrets: {
33
+ type: 'boolean',
34
+ description: 'Enable secret detection',
35
+ default: true,
36
+ },
37
+ dependencies: {
38
+ type: 'boolean',
39
+ description: 'Enable dependency audit',
40
+ default: true,
41
+ },
42
+ generateFixes: {
43
+ type: 'boolean',
44
+ description: 'Generate fix suggestions',
45
+ default: true,
46
+ },
47
+ },
48
+ required: ['target'],
49
+ },
50
+ },
51
+ {
52
+ name: 'security_quick_scan',
53
+ description: 'Quick vulnerability scan without taint analysis, secret detection, or dependency audit.',
54
+ inputSchema: {
55
+ type: 'object',
56
+ properties: {
57
+ target: {
58
+ type: 'string',
59
+ description: 'Target path to scan',
60
+ },
61
+ },
62
+ required: ['target'],
63
+ },
64
+ },
65
+ {
66
+ name: 'security_taint_analysis',
67
+ description: 'Run taint analysis to trace data flow from untrusted sources to sensitive sinks.',
68
+ inputSchema: {
69
+ type: 'object',
70
+ properties: {
71
+ target: {
72
+ type: 'string',
73
+ description: 'Target path to analyze',
74
+ },
75
+ },
76
+ required: ['target'],
77
+ },
78
+ },
79
+ {
80
+ name: 'security_detect_secrets',
81
+ description: 'Detect hardcoded secrets like API keys, passwords, and tokens.',
82
+ inputSchema: {
83
+ type: 'object',
84
+ properties: {
85
+ target: {
86
+ type: 'string',
87
+ description: 'Target path to scan',
88
+ },
89
+ },
90
+ required: ['target'],
91
+ },
92
+ },
93
+ {
94
+ name: 'security_audit_deps',
95
+ description: 'Audit project dependencies for known vulnerabilities.',
96
+ inputSchema: {
97
+ type: 'object',
98
+ properties: {
99
+ target: {
100
+ type: 'string',
101
+ description: 'Project directory containing package.json',
102
+ },
103
+ generateSBOM: {
104
+ type: 'boolean',
105
+ description: 'Generate Software Bill of Materials',
106
+ default: false,
107
+ },
108
+ },
109
+ required: ['target'],
110
+ },
111
+ },
112
+ {
113
+ name: 'security_generate_fix',
114
+ description: 'Generate a fix for a specific vulnerability.',
115
+ inputSchema: {
116
+ type: 'object',
117
+ properties: {
118
+ vulnerabilityId: {
119
+ type: 'string',
120
+ description: 'ID of the vulnerability to fix',
121
+ },
122
+ scanResultJson: {
123
+ type: 'string',
124
+ description: 'JSON string of previous scan result',
125
+ },
126
+ },
127
+ required: ['vulnerabilityId', 'scanResultJson'],
128
+ },
129
+ },
130
+ {
131
+ name: 'security_generate_report',
132
+ description: 'Generate a security report from scan results.',
133
+ inputSchema: {
134
+ type: 'object',
135
+ properties: {
136
+ scanResultJson: {
137
+ type: 'string',
138
+ description: 'JSON string of scan result',
139
+ },
140
+ format: {
141
+ type: 'string',
142
+ description: 'Report format',
143
+ enum: ['json', 'sarif', 'markdown', 'html'],
144
+ default: 'markdown',
145
+ },
146
+ },
147
+ required: ['scanResultJson'],
148
+ },
149
+ },
150
+ ];
151
+ /**
152
+ * Security tool handlers
153
+ */
154
+ export class SecurityToolHandler {
155
+ service;
156
+ constructor() {
157
+ this.service = createSecurityService();
158
+ }
159
+ /**
160
+ * Handle tool call
161
+ */
162
+ async handleTool(name, args) {
163
+ try {
164
+ switch (name) {
165
+ case 'security_scan':
166
+ return this.handleScan(args);
167
+ case 'security_quick_scan':
168
+ return this.handleQuickScan(args);
169
+ case 'security_taint_analysis':
170
+ return this.handleTaintAnalysis(args);
171
+ case 'security_detect_secrets':
172
+ return this.handleDetectSecrets(args);
173
+ case 'security_audit_deps':
174
+ return this.handleAuditDeps(args);
175
+ case 'security_generate_fix':
176
+ return this.handleGenerateFix(args);
177
+ case 'security_generate_report':
178
+ return this.handleGenerateReport(args);
179
+ default:
180
+ return {
181
+ content: [{ type: 'text', text: `Unknown tool: ${name}` }],
182
+ isError: true,
183
+ };
184
+ }
185
+ }
186
+ catch (error) {
187
+ return {
188
+ content: [{ type: 'text', text: `Error: ${error.message}` }],
189
+ isError: true,
190
+ };
191
+ }
192
+ }
193
+ /**
194
+ * Handle full security scan
195
+ */
196
+ async handleScan(args) {
197
+ const target = String(args.target);
198
+ const result = await this.service.scan({
199
+ target: path.resolve(target),
200
+ vulnerabilities: args.vulnerabilities !== false,
201
+ taint: args.taint !== false,
202
+ secrets: args.secrets !== false,
203
+ dependencies: args.dependencies !== false,
204
+ generateFixes: args.generateFixes !== false,
205
+ });
206
+ return {
207
+ content: [{
208
+ type: 'text',
209
+ text: this.formatScanResult(result),
210
+ }],
211
+ };
212
+ }
213
+ /**
214
+ * Handle quick scan
215
+ */
216
+ async handleQuickScan(args) {
217
+ const target = String(args.target);
218
+ const result = await this.service.quickScan(path.resolve(target));
219
+ return {
220
+ content: [{
221
+ type: 'text',
222
+ text: `# Quick Scan Results
223
+
224
+ **Files Scanned:** ${result.scannedFiles}
225
+ **Vulnerabilities Found:** ${result.vulnerabilities.length}
226
+
227
+ ${result.vulnerabilities.map(v => `- **${v.severity.toUpperCase()}**: ${v.type}
228
+ - File: ${v.location.file}:${v.location.startLine}
229
+ - ${v.description}`).join('\n\n')}
230
+
231
+ ${result.vulnerabilities.length === 0 ? '✅ No vulnerabilities found.' : ''}`,
232
+ }],
233
+ };
234
+ }
235
+ /**
236
+ * Handle taint analysis
237
+ */
238
+ async handleTaintAnalysis(args) {
239
+ const target = String(args.target);
240
+ const result = await this.service.analyzeTaint(path.resolve(target));
241
+ return {
242
+ content: [{
243
+ type: 'text',
244
+ text: `# Taint Analysis Results
245
+
246
+ **Sources Found:** ${result.sources.length}
247
+ **Sinks Found:** ${result.sinks.length}
248
+ **Tainted Paths:** ${result.unsafePaths.length}
249
+
250
+ ## Tainted Data Flows
251
+ ${result.unsafePaths.map((p, idx) => `
252
+ ### Path ${idx + 1}
253
+ - **Source:** ${p.source.variableName ?? p.source.expression} (${p.source.category})
254
+ - ${p.source.location.file}:${p.source.location.startLine}
255
+ - **Sink:** ${p.sink.functionName} (${p.sink.category})
256
+ - ${p.sink.location.file}:${p.sink.location.startLine}
257
+ - **Sanitized:** ${p.sanitized ? '✅ Yes' : '❌ No'}
258
+ `).join('\n')}
259
+
260
+ ${result.unsafePaths.length === 0 ? '✅ No tainted paths found.' : ''}`,
261
+ }],
262
+ };
263
+ }
264
+ /**
265
+ * Handle secret detection
266
+ */
267
+ async handleDetectSecrets(args) {
268
+ const target = String(args.target);
269
+ const result = await this.service.detectSecrets(path.resolve(target));
270
+ return {
271
+ content: [{
272
+ type: 'text',
273
+ text: `# Secret Detection Results
274
+
275
+ **Files Scanned:** ${result.scannedFiles}
276
+ **Secrets Found:** ${result.summary.total}
277
+
278
+ ${result.secrets.map(s => `- **${s.type}** in \`${s.location.file}:${s.location.startLine}\`
279
+ - Value: \`${s.maskedValue}\`
280
+ - Confidence: ${(s.confidence * 100).toFixed(0)}%`).join('\n\n')}
281
+
282
+ ${result.summary.total === 0 ? '✅ No hardcoded secrets detected.' : '⚠️ Please rotate any exposed secrets immediately.'}`,
283
+ }],
284
+ };
285
+ }
286
+ /**
287
+ * Handle dependency audit
288
+ */
289
+ async handleAuditDeps(args) {
290
+ const target = String(args.target);
291
+ if (args.generateSBOM) {
292
+ const { DependencyAuditor } = await import('../analysis/index.js');
293
+ const auditor = new DependencyAuditor();
294
+ const sbom = await auditor.generateSBOM(path.resolve(target));
295
+ return {
296
+ content: [{
297
+ type: 'text',
298
+ text: `# Software Bill of Materials (SBOM)
299
+
300
+ \`\`\`json
301
+ ${JSON.stringify(sbom, null, 2)}
302
+ \`\`\``,
303
+ }],
304
+ };
305
+ }
306
+ const result = await this.service.auditDependencies(path.resolve(target));
307
+ return {
308
+ content: [{
309
+ type: 'text',
310
+ text: `# Dependency Audit Results
311
+
312
+ **Vulnerable Dependencies:** ${result.vulnerableDependencies.length}
313
+
314
+ ${result.vulnerableDependencies.map(d => `- **${d.highestSeverity.toUpperCase()}**: ${d.name}@${d.installedVersion}
315
+ - Title: ${d.vulnerabilities[0]?.title ?? 'N/A'}
316
+ - Patched: ${d.vulnerabilities[0]?.patchedVersion ?? 'No patch available'}
317
+ - ${d.vulnerabilities[0]?.url ?? ''}`).join('\n\n')}
318
+
319
+ ${result.vulnerableDependencies.length === 0 ? '✅ No vulnerable dependencies found.' : ''}`,
320
+ }],
321
+ };
322
+ }
323
+ /**
324
+ * Handle fix generation
325
+ */
326
+ async handleGenerateFix(args) {
327
+ const vulnerabilityId = String(args.vulnerabilityId);
328
+ const scanResult = JSON.parse(String(args.scanResultJson));
329
+ const fix = await this.service.generateFix(vulnerabilityId, scanResult.vulnerabilities);
330
+ if (!fix) {
331
+ return {
332
+ content: [{
333
+ type: 'text',
334
+ text: `No fix found for vulnerability: ${vulnerabilityId}`,
335
+ }],
336
+ isError: true,
337
+ };
338
+ }
339
+ return {
340
+ content: [{
341
+ type: 'text',
342
+ text: `# Fix Suggestion
343
+
344
+ **Description:** ${fix.description}
345
+ **Strategy:** ${fix.strategy}
346
+ **Confidence:** ${(fix.confidence * 100).toFixed(0)}%
347
+
348
+ ## Code Changes
349
+
350
+ ${fix.edits.map(e => `### ${e.location.file}:${e.location.startLine}-${e.location.endLine}
351
+
352
+ **Before:**
353
+ \`\`\`
354
+ ${e.originalCode}
355
+ \`\`\`
356
+
357
+ **After:**
358
+ \`\`\`
359
+ ${e.newCode}
360
+ \`\`\``).join('\n\n')}
361
+
362
+ **Note:** Please review the fix carefully before applying.`,
363
+ }],
364
+ };
365
+ }
366
+ /**
367
+ * Handle report generation
368
+ */
369
+ async handleGenerateReport(args) {
370
+ const scanResult = JSON.parse(String(args.scanResultJson));
371
+ const format = args.format || 'markdown';
372
+ const report = await this.service.generateReport(scanResult, format);
373
+ return {
374
+ content: [{
375
+ type: 'text',
376
+ text: report,
377
+ }],
378
+ };
379
+ }
380
+ /**
381
+ * Format scan result for display
382
+ */
383
+ formatScanResult(result) {
384
+ const s = result.summary;
385
+ let output = `# Security Scan Results
386
+
387
+ ## Summary
388
+ - **Target:** ${result.metadata.target}
389
+ - **Duration:** ${result.metadata.duration}ms
390
+ - **Files Scanned:** ${result.metadata.filesScanned}
391
+
392
+ ### Vulnerabilities by Severity
393
+ | Severity | Count |
394
+ |----------|-------|
395
+ | Critical | ${s.bySeverity.critical} |
396
+ | High | ${s.bySeverity.high} |
397
+ | Medium | ${s.bySeverity.medium} |
398
+ | Low | ${s.bySeverity.low} |
399
+ | Info | ${s.bySeverity.info} |
400
+ | **Total** | **${s.totalVulnerabilities}** |
401
+
402
+ `;
403
+ if (result.vulnerabilities && result.vulnerabilities.vulnerabilities.length > 0) {
404
+ output += `## Vulnerabilities\n\n`;
405
+ for (const v of result.vulnerabilities.vulnerabilities.slice(0, 10)) {
406
+ output += `### ${v.type} (${v.severity.toUpperCase()})\n`;
407
+ output += `- **Location:** ${v.location.file}:${v.location.startLine}\n`;
408
+ output += `- **CWE:** ${v.cwes[0] ?? 'N/A'}\n`;
409
+ output += `- **Description:** ${v.description}\n\n`;
410
+ }
411
+ if (result.vulnerabilities.vulnerabilities.length > 10) {
412
+ output += `... and ${result.vulnerabilities.vulnerabilities.length - 10} more\n\n`;
413
+ }
414
+ }
415
+ if (s.secretsFound > 0) {
416
+ output += `## ⚠️ Secrets Detected: ${s.secretsFound}\n\n`;
417
+ }
418
+ if (s.taintedPaths > 0) {
419
+ output += `## Tainted Data Flows: ${s.taintedPaths}\n\n`;
420
+ }
421
+ if (s.vulnerableDependencies > 0) {
422
+ output += `## Vulnerable Dependencies: ${s.vulnerableDependencies}\n\n`;
423
+ }
424
+ if (result.fixes && result.fixes.length > 0) {
425
+ output += `## Fixes Available: ${s.fixesGenerated}\n\n`;
426
+ output += `Use \`security_generate_fix\` to get detailed fix suggestions.\n`;
427
+ }
428
+ return output;
429
+ }
430
+ }
431
+ /**
432
+ * Get all tool schemas
433
+ */
434
+ export function getToolSchemas() {
435
+ return SECURITY_TOOLS;
436
+ }
437
+ /**
438
+ * Create tool handler
439
+ */
440
+ export function createToolHandler() {
441
+ return new SecurityToolHandler();
442
+ }
443
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * @fileoverview Fix generator service - generates fix suggestions for vulnerabilities
3
+ * @module @nahisaho/musubix-security/services/fix-generator
4
+ * @trace REQ-SEC-FIX-001
5
+ */
6
+ import type { Fix, FixStrategy, CodeEdit, ImportEdit, FixGenerationOptions, Vulnerability, VulnerabilityType } from '../types/index.js';
7
+ import type { TaintPath } from '../types/taint.js';
8
+ /**
9
+ * Reset fix counter (for testing)
10
+ */
11
+ export declare function resetFixCounter(): void;
12
+ /**
13
+ * Fix template for a vulnerability type
14
+ */
15
+ interface FixTemplate {
16
+ type: VulnerabilityType;
17
+ strategy: FixStrategy;
18
+ title: string;
19
+ description: string;
20
+ rationale: string;
21
+ imports: ImportEdit[];
22
+ transform: (vuln: Vulnerability) => CodeEdit[];
23
+ }
24
+ /**
25
+ * Fix generator service
26
+ */
27
+ export declare class FixGenerator {
28
+ private templates;
29
+ constructor(_options?: FixGenerationOptions);
30
+ /**
31
+ * Generate a fix for a vulnerability
32
+ */
33
+ generateFix(vuln: Vulnerability): Fix | null;
34
+ /**
35
+ * Generate fixes for multiple vulnerabilities
36
+ */
37
+ generateFixes(vulnerabilities: Vulnerability[]): Fix[];
38
+ /**
39
+ * Generate a fix for a taint path
40
+ */
41
+ generateTaintFix(path: TaintPath): Fix | null;
42
+ /**
43
+ * Add a custom fix template
44
+ */
45
+ addTemplate(template: FixTemplate): void;
46
+ /**
47
+ * Get available strategies
48
+ */
49
+ getStrategies(): FixStrategy[];
50
+ }
51
+ /**
52
+ * Create a fix generator
53
+ */
54
+ export declare function createFixGenerator(options?: FixGenerationOptions): FixGenerator;
55
+ export {};
56
+ //# sourceMappingURL=fix-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix-generator.d.ts","sourceRoot":"","sources":["../../src/services/fix-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,GAAG,EACH,WAAW,EACX,QAAQ,EACR,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAYnD;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAED;;GAEG;AACH,UAAU,WAAW;IACnB,IAAI,EAAE,iBAAiB,CAAC;IACxB,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,QAAQ,EAAE,CAAC;CAChD;AAiQD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAgB;gBAErB,QAAQ,GAAE,oBAAyB;IAI/C;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,GAAG,GAAG,IAAI;IA4B5C;;OAEG;IACH,aAAa,CAAC,eAAe,EAAE,aAAa,EAAE,GAAG,GAAG,EAAE;IAatD;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,SAAS,GAAG,GAAG,GAAG,IAAI;IAuC7C;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAIxC;;OAEG;IACH,aAAa,IAAI,WAAW,EAAE;CAG/B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,YAAY,CAE/E"}