mcp-image 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/README.md +41 -17
  2. package/dist/api/geminiClient.d.ts +2 -12
  3. package/dist/api/geminiClient.d.ts.map +1 -1
  4. package/dist/api/geminiClient.js +28 -56
  5. package/dist/api/geminiClient.js.map +1 -1
  6. package/dist/api/geminiTextClient.d.ts +42 -0
  7. package/dist/api/geminiTextClient.d.ts.map +1 -0
  8. package/dist/api/geminiTextClient.js +198 -0
  9. package/dist/api/geminiTextClient.js.map +1 -0
  10. package/dist/business/__tests__/mocks/mcpSamplingClient.mock.d.ts +84 -0
  11. package/dist/business/__tests__/mocks/mcpSamplingClient.mock.d.ts.map +1 -0
  12. package/dist/business/__tests__/mocks/mcpSamplingClient.mock.js +100 -0
  13. package/dist/business/__tests__/mocks/mcpSamplingClient.mock.js.map +1 -0
  14. package/dist/business/bestPracticesEngine.d.ts +149 -0
  15. package/dist/business/bestPracticesEngine.d.ts.map +1 -0
  16. package/dist/business/bestPracticesEngine.js +781 -0
  17. package/dist/business/bestPracticesEngine.js.map +1 -0
  18. package/dist/business/complexityAssessment.d.ts +132 -0
  19. package/dist/business/complexityAssessment.d.ts.map +1 -0
  20. package/dist/business/complexityAssessment.js +488 -0
  21. package/dist/business/complexityAssessment.js.map +1 -0
  22. package/dist/business/fallbackStrategies.d.ts +177 -0
  23. package/dist/business/fallbackStrategies.d.ts.map +1 -0
  24. package/dist/business/fallbackStrategies.js +368 -0
  25. package/dist/business/fallbackStrategies.js.map +1 -0
  26. package/dist/business/imageGenerator.d.ts.map +1 -1
  27. package/dist/business/imageGenerator.js +26 -5
  28. package/dist/business/imageGenerator.js.map +1 -1
  29. package/dist/business/multiImage/aspectRatioController.d.ts +77 -0
  30. package/dist/business/multiImage/aspectRatioController.d.ts.map +1 -0
  31. package/dist/business/multiImage/aspectRatioController.js +580 -0
  32. package/dist/business/multiImage/aspectRatioController.js.map +1 -0
  33. package/dist/business/multiImage/multiImageCoordinator.d.ts +142 -0
  34. package/dist/business/multiImage/multiImageCoordinator.d.ts.map +1 -0
  35. package/dist/business/multiImage/multiImageCoordinator.js +801 -0
  36. package/dist/business/multiImage/multiImageCoordinator.js.map +1 -0
  37. package/dist/business/pomlTemplateEngine.d.ts +206 -0
  38. package/dist/business/pomlTemplateEngine.d.ts.map +1 -0
  39. package/dist/business/pomlTemplateEngine.js +737 -0
  40. package/dist/business/pomlTemplateEngine.js.map +1 -0
  41. package/dist/business/promptOrchestrator.d.ts +173 -0
  42. package/dist/business/promptOrchestrator.d.ts.map +1 -0
  43. package/dist/business/promptOrchestrator.js +490 -0
  44. package/dist/business/promptOrchestrator.js.map +1 -0
  45. package/dist/business/responseBuilder.d.ts +2 -2
  46. package/dist/business/responseBuilder.d.ts.map +1 -1
  47. package/dist/business/responseBuilder.js +6 -1
  48. package/dist/business/responseBuilder.js.map +1 -1
  49. package/dist/business/structuredPromptGenerator.d.ts +54 -0
  50. package/dist/business/structuredPromptGenerator.d.ts.map +1 -0
  51. package/dist/business/structuredPromptGenerator.js +208 -0
  52. package/dist/business/structuredPromptGenerator.js.map +1 -0
  53. package/dist/business/templateNormalizer.d.ts +81 -0
  54. package/dist/business/templateNormalizer.d.ts.map +1 -0
  55. package/dist/business/templateNormalizer.js +659 -0
  56. package/dist/business/templateNormalizer.js.map +1 -0
  57. package/dist/documentation/apiContractValidation.d.ts +62 -0
  58. package/dist/documentation/apiContractValidation.d.ts.map +1 -0
  59. package/dist/documentation/apiContractValidation.js +305 -0
  60. package/dist/documentation/apiContractValidation.js.map +1 -0
  61. package/dist/infrastructure/concurrency/concurrencyManager.d.ts +101 -0
  62. package/dist/infrastructure/concurrency/concurrencyManager.d.ts.map +1 -0
  63. package/dist/infrastructure/concurrency/concurrencyManager.js +345 -0
  64. package/dist/infrastructure/concurrency/concurrencyManager.js.map +1 -0
  65. package/dist/infrastructure/config/secureConfigManager.d.ts +319 -0
  66. package/dist/infrastructure/config/secureConfigManager.d.ts.map +1 -0
  67. package/dist/infrastructure/config/secureConfigManager.js +600 -0
  68. package/dist/infrastructure/config/secureConfigManager.js.map +1 -0
  69. package/dist/infrastructure/errorHandling/orchestrationErrorHandler.d.ts +229 -0
  70. package/dist/infrastructure/errorHandling/orchestrationErrorHandler.d.ts.map +1 -0
  71. package/dist/infrastructure/errorHandling/orchestrationErrorHandler.js +61 -0
  72. package/dist/infrastructure/errorHandling/orchestrationErrorHandler.js.map +1 -0
  73. package/dist/infrastructure/errorHandling/orchestrationErrorHandlerImpl.d.ts +133 -0
  74. package/dist/infrastructure/errorHandling/orchestrationErrorHandlerImpl.d.ts.map +1 -0
  75. package/dist/infrastructure/errorHandling/orchestrationErrorHandlerImpl.js +569 -0
  76. package/dist/infrastructure/errorHandling/orchestrationErrorHandlerImpl.js.map +1 -0
  77. package/dist/infrastructure/mcp/MCPSamplingClient.d.ts +19 -0
  78. package/dist/infrastructure/mcp/MCPSamplingClient.d.ts.map +1 -0
  79. package/dist/infrastructure/mcp/MCPSamplingClient.js +31 -0
  80. package/dist/infrastructure/mcp/MCPSamplingClient.js.map +1 -0
  81. package/dist/infrastructure/mcp/RealMCPSamplingClient.d.ts +59 -0
  82. package/dist/infrastructure/mcp/RealMCPSamplingClient.d.ts.map +1 -0
  83. package/dist/infrastructure/mcp/RealMCPSamplingClient.js +271 -0
  84. package/dist/infrastructure/mcp/RealMCPSamplingClient.js.map +1 -0
  85. package/dist/infrastructure/metadata/generationMetadata.d.ts +72 -0
  86. package/dist/infrastructure/metadata/generationMetadata.d.ts.map +1 -0
  87. package/dist/infrastructure/metadata/generationMetadata.js +228 -0
  88. package/dist/infrastructure/metadata/generationMetadata.js.map +1 -0
  89. package/dist/infrastructure/monitoring/OrchestrationMetrics.d.ts +106 -0
  90. package/dist/infrastructure/monitoring/OrchestrationMetrics.d.ts.map +1 -0
  91. package/dist/infrastructure/monitoring/OrchestrationMetrics.js +456 -0
  92. package/dist/infrastructure/monitoring/OrchestrationMetrics.js.map +1 -0
  93. package/dist/infrastructure/monitoring/alertingSystem.d.ts +135 -0
  94. package/dist/infrastructure/monitoring/alertingSystem.d.ts.map +1 -0
  95. package/dist/infrastructure/monitoring/alertingSystem.js +549 -0
  96. package/dist/infrastructure/monitoring/alertingSystem.js.map +1 -0
  97. package/dist/infrastructure/optimization/performanceOptimizer.d.ts +89 -0
  98. package/dist/infrastructure/optimization/performanceOptimizer.d.ts.map +1 -0
  99. package/dist/infrastructure/optimization/performanceOptimizer.js +375 -0
  100. package/dist/infrastructure/optimization/performanceOptimizer.js.map +1 -0
  101. package/dist/infrastructure/security/AdvancedContentFilter.d.ts +99 -0
  102. package/dist/infrastructure/security/AdvancedContentFilter.d.ts.map +1 -0
  103. package/dist/infrastructure/security/AdvancedContentFilter.js +363 -0
  104. package/dist/infrastructure/security/AdvancedContentFilter.js.map +1 -0
  105. package/dist/infrastructure/security/MCPSecurityValidator.d.ts +62 -0
  106. package/dist/infrastructure/security/MCPSecurityValidator.d.ts.map +1 -0
  107. package/dist/infrastructure/security/MCPSecurityValidator.js +129 -0
  108. package/dist/infrastructure/security/MCPSecurityValidator.js.map +1 -0
  109. package/dist/infrastructure/security/OrchestrationSecurityMiddleware.d.ts +304 -0
  110. package/dist/infrastructure/security/OrchestrationSecurityMiddleware.d.ts.map +1 -0
  111. package/dist/infrastructure/security/OrchestrationSecurityMiddleware.js +61 -0
  112. package/dist/infrastructure/security/OrchestrationSecurityMiddleware.js.map +1 -0
  113. package/dist/infrastructure/security/OrchestrationSecurityMiddlewareImpl.d.ts +62 -0
  114. package/dist/infrastructure/security/OrchestrationSecurityMiddlewareImpl.d.ts.map +1 -0
  115. package/dist/infrastructure/security/OrchestrationSecurityMiddlewareImpl.js +591 -0
  116. package/dist/infrastructure/security/OrchestrationSecurityMiddlewareImpl.js.map +1 -0
  117. package/dist/infrastructure/security/SecureMCPClient.d.ts +154 -0
  118. package/dist/infrastructure/security/SecureMCPClient.d.ts.map +1 -0
  119. package/dist/infrastructure/security/SecureMCPClient.js +292 -0
  120. package/dist/infrastructure/security/SecureMCPClient.js.map +1 -0
  121. package/dist/infrastructure/security/SecurityIncidentManager.d.ts +142 -0
  122. package/dist/infrastructure/security/SecurityIncidentManager.d.ts.map +1 -0
  123. package/dist/infrastructure/security/SecurityIncidentManager.js +260 -0
  124. package/dist/infrastructure/security/SecurityIncidentManager.js.map +1 -0
  125. package/dist/infrastructure/security/apiKeyManager.d.ts +297 -0
  126. package/dist/infrastructure/security/apiKeyManager.d.ts.map +1 -0
  127. package/dist/infrastructure/security/apiKeyManager.js +254 -0
  128. package/dist/infrastructure/security/apiKeyManager.js.map +1 -0
  129. package/dist/infrastructure/security/dataSanitizer.d.ts +157 -0
  130. package/dist/infrastructure/security/dataSanitizer.d.ts.map +1 -0
  131. package/dist/infrastructure/security/dataSanitizer.js +525 -0
  132. package/dist/infrastructure/security/dataSanitizer.js.map +1 -0
  133. package/dist/infrastructure/validation/inputValidator.d.ts +54 -0
  134. package/dist/infrastructure/validation/inputValidator.d.ts.map +1 -0
  135. package/dist/infrastructure/validation/inputValidator.js +362 -0
  136. package/dist/infrastructure/validation/inputValidator.js.map +1 -0
  137. package/dist/integration/parameterOptimizer.d.ts +69 -0
  138. package/dist/integration/parameterOptimizer.d.ts.map +1 -0
  139. package/dist/integration/parameterOptimizer.js +317 -0
  140. package/dist/integration/parameterOptimizer.js.map +1 -0
  141. package/dist/integration/twoStageProcessor.d.ts +66 -0
  142. package/dist/integration/twoStageProcessor.d.ts.map +1 -0
  143. package/dist/integration/twoStageProcessor.js +348 -0
  144. package/dist/integration/twoStageProcessor.js.map +1 -0
  145. package/dist/server/handlers/structuredPromptHandler.d.ts +65 -0
  146. package/dist/server/handlers/structuredPromptHandler.d.ts.map +1 -0
  147. package/dist/server/handlers/structuredPromptHandler.js +314 -0
  148. package/dist/server/handlers/structuredPromptHandler.js.map +1 -0
  149. package/dist/server/mcpServer.d.ts +16 -35
  150. package/dist/server/mcpServer.d.ts.map +1 -1
  151. package/dist/server/mcpServer.js +111 -150
  152. package/dist/server/mcpServer.js.map +1 -1
  153. package/dist/server/mcpServerWithOrchestration.d.ts +98 -0
  154. package/dist/server/mcpServerWithOrchestration.d.ts.map +1 -0
  155. package/dist/server/mcpServerWithOrchestration.js +284 -0
  156. package/dist/server/mcpServerWithOrchestration.js.map +1 -0
  157. package/dist/types/mcpOrchestrationTypes.d.ts +135 -0
  158. package/dist/types/mcpOrchestrationTypes.d.ts.map +1 -0
  159. package/dist/types/mcpOrchestrationTypes.js +28 -0
  160. package/dist/types/mcpOrchestrationTypes.js.map +1 -0
  161. package/dist/types/multiImageTypes.d.ts +328 -0
  162. package/dist/types/multiImageTypes.d.ts.map +1 -0
  163. package/dist/types/multiImageTypes.js +27 -0
  164. package/dist/types/multiImageTypes.js.map +1 -0
  165. package/dist/types/performanceTypes.d.ts +300 -0
  166. package/dist/types/performanceTypes.d.ts.map +1 -0
  167. package/dist/types/performanceTypes.js +50 -0
  168. package/dist/types/performanceTypes.js.map +1 -0
  169. package/dist/types/twoStageTypes.d.ts +123 -0
  170. package/dist/types/twoStageTypes.d.ts.map +1 -0
  171. package/dist/types/twoStageTypes.js +7 -0
  172. package/dist/types/twoStageTypes.js.map +1 -0
  173. package/dist/utils/config.d.ts +1 -0
  174. package/dist/utils/config.d.ts.map +1 -1
  175. package/dist/utils/config.js +1 -0
  176. package/dist/utils/config.js.map +1 -1
  177. package/package.json +11 -4
  178. package/vitest.config.mjs +0 -47
@@ -0,0 +1,525 @@
1
+ "use strict";
2
+ /**
3
+ * Data Sanitizer - Comprehensive threat detection and prompt sanitization
4
+ * Detects and mitigates security threats in user prompts and data
5
+ * Addresses SECURITY2 test case requirements
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.DataSanitizer = void 0;
9
+ const OrchestrationSecurityMiddleware_1 = require("./OrchestrationSecurityMiddleware");
10
+ /**
11
+ * Prompt injection detector
12
+ */
13
+ class PromptInjectionDetector {
14
+ constructor() {
15
+ this.patterns = [
16
+ {
17
+ id: 'ignore_instructions',
18
+ pattern: /ignore\s+(?:previous\s+)?instructions/gi,
19
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.PROMPT_INJECTION,
20
+ severity: OrchestrationSecurityMiddleware_1.SecuritySeverity.HIGH,
21
+ description: 'Attempt to ignore previous instructions',
22
+ action: OrchestrationSecurityMiddleware_1.SecurityAction.BLOCK,
23
+ confidence: 0.9,
24
+ },
25
+ {
26
+ id: 'system_override',
27
+ pattern: /system\s*:\s*you\s+are\s+now/gi,
28
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.PROMPT_INJECTION,
29
+ severity: OrchestrationSecurityMiddleware_1.SecuritySeverity.HIGH,
30
+ description: 'System role override attempt',
31
+ action: OrchestrationSecurityMiddleware_1.SecurityAction.BLOCK,
32
+ confidence: 0.85,
33
+ },
34
+ {
35
+ id: 'script_injection',
36
+ pattern: /<script[^>]*>.*?<\/script>/gis,
37
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.PROMPT_INJECTION,
38
+ severity: OrchestrationSecurityMiddleware_1.SecuritySeverity.CRITICAL,
39
+ description: 'Script injection attempt',
40
+ action: OrchestrationSecurityMiddleware_1.SecurityAction.BLOCK,
41
+ confidence: 0.95,
42
+ },
43
+ {
44
+ id: 'eval_injection',
45
+ pattern: /eval\s*\(/gi,
46
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.PROMPT_INJECTION,
47
+ severity: OrchestrationSecurityMiddleware_1.SecuritySeverity.HIGH,
48
+ description: 'Code evaluation injection',
49
+ action: OrchestrationSecurityMiddleware_1.SecurityAction.BLOCK,
50
+ confidence: 0.8,
51
+ },
52
+ ];
53
+ }
54
+ async detect(content) {
55
+ const threatsFound = [];
56
+ for (const pattern of this.patterns) {
57
+ const matches = Array.from(content.matchAll(pattern.pattern));
58
+ for (const match of matches) {
59
+ if (match.index !== undefined) {
60
+ threatsFound.push({
61
+ pattern: pattern.id,
62
+ severity: pattern.severity,
63
+ location: {
64
+ start: match.index,
65
+ end: match.index + match[0].length,
66
+ },
67
+ matchedText: match[0],
68
+ context: this.extractContext(content, match.index, 50),
69
+ });
70
+ }
71
+ }
72
+ }
73
+ const maxSeverity = this.getMaxSeverity(threatsFound);
74
+ const confidence = threatsFound.length > 0
75
+ ? Math.min(0.95, threatsFound.reduce((sum, threat) => {
76
+ const pattern = this.patterns.find((p) => p.id === threat.pattern);
77
+ return sum + (pattern?.confidence || 0);
78
+ }, 0) / threatsFound.length)
79
+ : 0;
80
+ return {
81
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.PROMPT_INJECTION,
82
+ threatsFound,
83
+ confidence,
84
+ severity: maxSeverity,
85
+ };
86
+ }
87
+ getPatterns() {
88
+ return [...this.patterns];
89
+ }
90
+ updatePatterns(patterns) {
91
+ this.patterns = patterns.filter((p) => p.threatType === OrchestrationSecurityMiddleware_1.ThreatType.PROMPT_INJECTION);
92
+ }
93
+ extractContext(content, index, contextSize) {
94
+ const start = Math.max(0, index - contextSize);
95
+ const end = Math.min(content.length, index + contextSize);
96
+ return content.slice(start, end);
97
+ }
98
+ getMaxSeverity(threats) {
99
+ if (threats.some((t) => t.severity === OrchestrationSecurityMiddleware_1.SecuritySeverity.CRITICAL))
100
+ return OrchestrationSecurityMiddleware_1.SecuritySeverity.CRITICAL;
101
+ if (threats.some((t) => t.severity === OrchestrationSecurityMiddleware_1.SecuritySeverity.HIGH))
102
+ return OrchestrationSecurityMiddleware_1.SecuritySeverity.HIGH;
103
+ if (threats.some((t) => t.severity === OrchestrationSecurityMiddleware_1.SecuritySeverity.MEDIUM))
104
+ return OrchestrationSecurityMiddleware_1.SecuritySeverity.MEDIUM;
105
+ return OrchestrationSecurityMiddleware_1.SecuritySeverity.LOW;
106
+ }
107
+ }
108
+ /**
109
+ * Sensitive data detector
110
+ */
111
+ class SensitiveDataDetector {
112
+ constructor() {
113
+ this.patterns = [
114
+ {
115
+ id: 'email_address',
116
+ pattern: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g,
117
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.SENSITIVE_DATA_EXPOSURE,
118
+ severity: OrchestrationSecurityMiddleware_1.SecuritySeverity.MEDIUM,
119
+ description: 'Email address detected',
120
+ action: OrchestrationSecurityMiddleware_1.SecurityAction.SANITIZE,
121
+ confidence: 0.95,
122
+ },
123
+ {
124
+ id: 'phone_number',
125
+ pattern: /(\+?1[-.\s]?)?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}/g,
126
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.SENSITIVE_DATA_EXPOSURE,
127
+ severity: OrchestrationSecurityMiddleware_1.SecuritySeverity.MEDIUM,
128
+ description: 'Phone number detected',
129
+ action: OrchestrationSecurityMiddleware_1.SecurityAction.SANITIZE,
130
+ confidence: 0.8,
131
+ },
132
+ {
133
+ id: 'credit_card',
134
+ pattern: /\b\d{4}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4}\b/g,
135
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.SENSITIVE_DATA_EXPOSURE,
136
+ severity: OrchestrationSecurityMiddleware_1.SecuritySeverity.CRITICAL,
137
+ description: 'Credit card number detected',
138
+ action: OrchestrationSecurityMiddleware_1.SecurityAction.BLOCK,
139
+ confidence: 0.9,
140
+ },
141
+ {
142
+ id: 'ssn',
143
+ pattern: /\b\d{3}-?\d{2}-?\d{4}\b/g,
144
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.SENSITIVE_DATA_EXPOSURE,
145
+ severity: OrchestrationSecurityMiddleware_1.SecuritySeverity.CRITICAL,
146
+ description: 'Social Security Number detected',
147
+ action: OrchestrationSecurityMiddleware_1.SecurityAction.BLOCK,
148
+ confidence: 0.85,
149
+ },
150
+ {
151
+ id: 'api_key',
152
+ pattern: /[a-z]{2,10}[_-]?[a-z0-9]{20,40}/gi,
153
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.SENSITIVE_DATA_EXPOSURE,
154
+ severity: OrchestrationSecurityMiddleware_1.SecuritySeverity.HIGH,
155
+ description: 'Potential API key detected',
156
+ action: OrchestrationSecurityMiddleware_1.SecurityAction.SANITIZE,
157
+ confidence: 0.7,
158
+ },
159
+ ];
160
+ }
161
+ async detect(content) {
162
+ const threatsFound = [];
163
+ for (const pattern of this.patterns) {
164
+ const matches = Array.from(content.matchAll(pattern.pattern));
165
+ for (const match of matches) {
166
+ if (match.index !== undefined) {
167
+ threatsFound.push({
168
+ pattern: pattern.id,
169
+ severity: pattern.severity,
170
+ location: {
171
+ start: match.index,
172
+ end: match.index + match[0].length,
173
+ },
174
+ matchedText: match[0],
175
+ context: this.extractContext(content, match.index, 30),
176
+ });
177
+ }
178
+ }
179
+ }
180
+ return {
181
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.SENSITIVE_DATA_EXPOSURE,
182
+ threatsFound,
183
+ confidence: threatsFound.length > 0 ? 0.9 : 0,
184
+ severity: this.getMaxSeverity(threatsFound),
185
+ };
186
+ }
187
+ getPatterns() {
188
+ return [...this.patterns];
189
+ }
190
+ updatePatterns(patterns) {
191
+ this.patterns = patterns.filter((p) => p.threatType === OrchestrationSecurityMiddleware_1.ThreatType.SENSITIVE_DATA_EXPOSURE);
192
+ }
193
+ extractContext(content, index, contextSize) {
194
+ const start = Math.max(0, index - contextSize);
195
+ const end = Math.min(content.length, index + contextSize);
196
+ return content.slice(start, end);
197
+ }
198
+ getMaxSeverity(threats) {
199
+ if (threats.some((t) => t.severity === OrchestrationSecurityMiddleware_1.SecuritySeverity.CRITICAL))
200
+ return OrchestrationSecurityMiddleware_1.SecuritySeverity.CRITICAL;
201
+ if (threats.some((t) => t.severity === OrchestrationSecurityMiddleware_1.SecuritySeverity.HIGH))
202
+ return OrchestrationSecurityMiddleware_1.SecuritySeverity.HIGH;
203
+ if (threats.some((t) => t.severity === OrchestrationSecurityMiddleware_1.SecuritySeverity.MEDIUM))
204
+ return OrchestrationSecurityMiddleware_1.SecuritySeverity.MEDIUM;
205
+ return OrchestrationSecurityMiddleware_1.SecuritySeverity.LOW;
206
+ }
207
+ }
208
+ /**
209
+ * Data Sanitizer - Main implementation
210
+ */
211
+ class DataSanitizer {
212
+ constructor() {
213
+ this.threatDetectors = new Map([
214
+ [OrchestrationSecurityMiddleware_1.ThreatType.PROMPT_INJECTION, new PromptInjectionDetector()],
215
+ [OrchestrationSecurityMiddleware_1.ThreatType.SENSITIVE_DATA_EXPOSURE, new SensitiveDataDetector()],
216
+ ]);
217
+ this.sanitizationRules = this.createSanitizationRules();
218
+ this.contentPolicyValidator = this.createContentPolicyValidator();
219
+ }
220
+ /**
221
+ * Sanitize prompt data with comprehensive threat detection
222
+ */
223
+ async sanitizePromptData(prompt) {
224
+ const originalLength = prompt.length;
225
+ let sanitizedPrompt = prompt;
226
+ const modificationsApplied = [];
227
+ let totalThreatScore = 0;
228
+ let maxSeverity = OrchestrationSecurityMiddleware_1.SecuritySeverity.LOW;
229
+ // Multi-stage sanitization process
230
+ const detectionResults = await Promise.all([
231
+ this.detectPromptInjection(prompt),
232
+ this.detectSensitiveData(prompt),
233
+ this.detectMaliciousPatterns(prompt),
234
+ this.validateContentPolicy(prompt),
235
+ ]);
236
+ // Process each detection result
237
+ for (const result of detectionResults) {
238
+ if (result.threatsFound.length > 0) {
239
+ const sanitizationResult = await this.applySanitizationForThreatType(sanitizedPrompt, result.threatType, result.threatsFound);
240
+ sanitizedPrompt = sanitizationResult.sanitizedContent;
241
+ modificationsApplied.push(...sanitizationResult.modifications);
242
+ // Update severity and score
243
+ if (this.compareSeverity(result.severity, maxSeverity) > 0) {
244
+ maxSeverity = result.severity;
245
+ }
246
+ totalThreatScore += result.confidence;
247
+ }
248
+ }
249
+ // After sanitization, reassess if content is clean
250
+ const postSanitizationThreats = await this.quickThreatCheck(sanitizedPrompt);
251
+ const finalThreatsFound = postSanitizationThreats ? 1 : 0;
252
+ const securityScore = Math.max(0, 100 - totalThreatScore * 20);
253
+ const originalThreatsFound = detectionResults.reduce((sum, result) => sum + result.threatsFound.length, 0);
254
+ return {
255
+ sanitizedPrompt,
256
+ modificationsApplied,
257
+ securityScore,
258
+ threatAssessment: {
259
+ clean: finalThreatsFound === 0 && modificationsApplied.length > 0
260
+ ? true
261
+ : originalThreatsFound === 0,
262
+ confidence: finalThreatsFound === 0
263
+ ? 0.95
264
+ : Math.min(0.9, totalThreatScore / detectionResults.length),
265
+ threatsFound: originalThreatsFound, // Report original threats found, not post-sanitization
266
+ highestSeverity: originalThreatsFound === 0 ? OrchestrationSecurityMiddleware_1.SecuritySeverity.LOW : maxSeverity,
267
+ },
268
+ originalLength,
269
+ sanitizedLength: sanitizedPrompt.length,
270
+ };
271
+ }
272
+ /**
273
+ * Detect prompt injection attempts
274
+ */
275
+ async detectPromptInjection(prompt) {
276
+ const detector = this.threatDetectors.get(OrchestrationSecurityMiddleware_1.ThreatType.PROMPT_INJECTION);
277
+ if (!detector) {
278
+ return {
279
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.PROMPT_INJECTION,
280
+ threatsFound: [],
281
+ confidence: 0,
282
+ severity: OrchestrationSecurityMiddleware_1.SecuritySeverity.LOW,
283
+ };
284
+ }
285
+ return detector.detect(prompt);
286
+ }
287
+ /**
288
+ * Detect sensitive data exposure
289
+ */
290
+ async detectSensitiveData(prompt) {
291
+ const detector = this.threatDetectors.get(OrchestrationSecurityMiddleware_1.ThreatType.SENSITIVE_DATA_EXPOSURE);
292
+ if (!detector) {
293
+ return {
294
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.SENSITIVE_DATA_EXPOSURE,
295
+ threatsFound: [],
296
+ confidence: 0,
297
+ severity: OrchestrationSecurityMiddleware_1.SecuritySeverity.LOW,
298
+ };
299
+ }
300
+ return detector.detect(prompt);
301
+ }
302
+ /**
303
+ * Detect malicious patterns
304
+ */
305
+ async detectMaliciousPatterns(prompt) {
306
+ // Additional malicious pattern detection
307
+ const maliciousPatterns = [
308
+ /\.\s*constructor\s*\[/gi,
309
+ /__proto__/gi,
310
+ /prototype\s*\[/gi,
311
+ /document\s*\.\s*cookie/gi,
312
+ ];
313
+ const threatsFound = [];
314
+ for (const [index, pattern] of maliciousPatterns.entries()) {
315
+ const matches = Array.from(prompt.matchAll(pattern));
316
+ for (const match of matches) {
317
+ if (match.index !== undefined) {
318
+ threatsFound.push({
319
+ pattern: `malicious_${index}`,
320
+ severity: OrchestrationSecurityMiddleware_1.SecuritySeverity.HIGH,
321
+ location: {
322
+ start: match.index,
323
+ end: match.index + match[0].length,
324
+ },
325
+ matchedText: match[0],
326
+ context: prompt.slice(Math.max(0, match.index - 20), match.index + 20),
327
+ });
328
+ }
329
+ }
330
+ }
331
+ return {
332
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.API_ABUSE,
333
+ threatsFound,
334
+ confidence: threatsFound.length > 0 ? 0.8 : 0,
335
+ severity: threatsFound.length > 0 ? OrchestrationSecurityMiddleware_1.SecuritySeverity.HIGH : OrchestrationSecurityMiddleware_1.SecuritySeverity.LOW,
336
+ };
337
+ }
338
+ /**
339
+ * Validate content policy
340
+ */
341
+ async validateContentPolicy(prompt) {
342
+ const policyResult = await this.contentPolicyValidator.validate(prompt);
343
+ const threatsFound = policyResult.violations.map((violation) => ({
344
+ pattern: violation.type,
345
+ severity: violation.severity,
346
+ location: violation.location,
347
+ matchedText: prompt.slice(violation.location.start, violation.location.end),
348
+ context: prompt.slice(Math.max(0, violation.location.start - 20), Math.min(prompt.length, violation.location.end + 20)),
349
+ }));
350
+ return {
351
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.DATA_EXFILTRATION,
352
+ threatsFound,
353
+ confidence: policyResult.violations.length > 0 ? 0.7 : 0,
354
+ severity: threatsFound.length > 0 ? OrchestrationSecurityMiddleware_1.SecuritySeverity.MEDIUM : OrchestrationSecurityMiddleware_1.SecuritySeverity.LOW,
355
+ };
356
+ }
357
+ /**
358
+ * Apply sanitization for specific threat type
359
+ */
360
+ async applySanitizationForThreatType(content, threatType, threats) {
361
+ let sanitizedContent = content;
362
+ const modifications = [];
363
+ const relevantRules = this.sanitizationRules.filter((rule) => rule.threatType === threatType);
364
+ for (const threat of threats) {
365
+ const rule = relevantRules.find((r) => r.pattern.test(threat.matchedText));
366
+ if (rule) {
367
+ const replacement = typeof rule.replacement === 'string'
368
+ ? rule.replacement
369
+ : rule.replacement(threat.matchedText);
370
+ const originalText = threat.matchedText;
371
+ sanitizedContent = sanitizedContent.replace(new RegExp(escapeRegExp(originalText), 'g'), replacement);
372
+ modifications.push({
373
+ type: rule.id,
374
+ location: threat.location.start,
375
+ originalText,
376
+ replacementText: replacement,
377
+ reason: `${threatType} detected and sanitized`,
378
+ severity: threat.severity,
379
+ });
380
+ }
381
+ }
382
+ return { sanitizedContent, modifications };
383
+ }
384
+ /**
385
+ * Create sanitization rules
386
+ */
387
+ createSanitizationRules() {
388
+ return [
389
+ {
390
+ id: 'email_sanitization',
391
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.SENSITIVE_DATA_EXPOSURE,
392
+ pattern: /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g,
393
+ replacement: '[EMAIL_REDACTED]',
394
+ preserveContext: true,
395
+ logModification: true,
396
+ },
397
+ {
398
+ id: 'phone_sanitization',
399
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.SENSITIVE_DATA_EXPOSURE,
400
+ pattern: /(\+?1[-.\s]?)?\(?[0-9]{3}\)?[-.\s]?[0-9]{3}[-.\s]?[0-9]{4}/g,
401
+ replacement: '[PHONE_REDACTED]',
402
+ preserveContext: true,
403
+ logModification: true,
404
+ },
405
+ {
406
+ id: 'script_removal',
407
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.PROMPT_INJECTION,
408
+ pattern: /<script[^>]*>.*?<\/script>/gis,
409
+ replacement: '',
410
+ preserveContext: false,
411
+ logModification: true,
412
+ },
413
+ {
414
+ id: 'injection_neutralization',
415
+ threatType: OrchestrationSecurityMiddleware_1.ThreatType.PROMPT_INJECTION,
416
+ pattern: /ignore\s+(?:previous\s+)?instructions/gi,
417
+ replacement: 'follow instructions',
418
+ preserveContext: true,
419
+ logModification: true,
420
+ },
421
+ ];
422
+ }
423
+ /**
424
+ * Create content policy validator
425
+ */
426
+ createContentPolicyValidator() {
427
+ return {
428
+ validate: async (content) => {
429
+ const violations = await this.getViolations(content);
430
+ const score = Math.max(0, 100 - violations.length * 15);
431
+ return {
432
+ allowed: violations.length === 0 ||
433
+ violations.every((v) => v.severity !== OrchestrationSecurityMiddleware_1.SecuritySeverity.CRITICAL),
434
+ violations,
435
+ score,
436
+ recommendations: violations.map((v) => v.suggestedFix),
437
+ };
438
+ },
439
+ getViolations: (content) => {
440
+ return this.getViolations(content);
441
+ },
442
+ };
443
+ }
444
+ /**
445
+ * Get policy violations
446
+ */
447
+ async getViolations(content) {
448
+ const violations = [];
449
+ // Check for inappropriate content patterns
450
+ const inappropriatePatterns = [
451
+ { pattern: /\b(hack|crack|exploit)\b/gi, type: 'security_concern' },
452
+ { pattern: /\b(password|secret|token)\s*[:=]/gi, type: 'credential_exposure' },
453
+ ];
454
+ for (const { pattern, type } of inappropriatePatterns) {
455
+ const matches = Array.from(content.matchAll(pattern));
456
+ for (const match of matches) {
457
+ if (match.index !== undefined) {
458
+ violations.push({
459
+ type,
460
+ severity: OrchestrationSecurityMiddleware_1.SecuritySeverity.MEDIUM,
461
+ description: `Potential ${type.replace('_', ' ')} detected`,
462
+ location: {
463
+ start: match.index,
464
+ end: match.index + match[0].length,
465
+ },
466
+ suggestedFix: `Consider rephrasing "${match[0]}" to avoid security concerns`,
467
+ });
468
+ }
469
+ }
470
+ }
471
+ return violations;
472
+ }
473
+ /**
474
+ * Compare security severities
475
+ */
476
+ compareSeverity(a, b) {
477
+ const severityOrder = {
478
+ [OrchestrationSecurityMiddleware_1.SecuritySeverity.LOW]: 1,
479
+ [OrchestrationSecurityMiddleware_1.SecuritySeverity.MEDIUM]: 2,
480
+ [OrchestrationSecurityMiddleware_1.SecuritySeverity.HIGH]: 3,
481
+ [OrchestrationSecurityMiddleware_1.SecuritySeverity.CRITICAL]: 4,
482
+ };
483
+ return severityOrder[a] - severityOrder[b];
484
+ }
485
+ /**
486
+ * Quick threat check after sanitization
487
+ */
488
+ async quickThreatCheck(content) {
489
+ // Quick check for major threats that should have been removed
490
+ const criticalPatterns = [
491
+ /<script[^>]*>.*?<\/script>/gis,
492
+ /eval\s*\(/gi,
493
+ /javascript:/gi,
494
+ /on\w+\s*=/gi,
495
+ ];
496
+ return criticalPatterns.some((pattern) => pattern.test(content));
497
+ }
498
+ /**
499
+ * Get sanitization statistics
500
+ */
501
+ getSanitizationStats() {
502
+ return {
503
+ totalRules: this.sanitizationRules.length,
504
+ detectors: Array.from(this.threatDetectors.keys()),
505
+ supportedThreatTypes: Array.from(this.threatDetectors.keys()),
506
+ };
507
+ }
508
+ /**
509
+ * Update threat detection patterns
510
+ */
511
+ updateThreatPatterns(threatType, patterns) {
512
+ const detector = this.threatDetectors.get(threatType);
513
+ if (detector) {
514
+ detector.updatePatterns(patterns);
515
+ }
516
+ }
517
+ }
518
+ exports.DataSanitizer = DataSanitizer;
519
+ /**
520
+ * Escape special regex characters
521
+ */
522
+ function escapeRegExp(string) {
523
+ return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
524
+ }
525
+ //# sourceMappingURL=dataSanitizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataSanitizer.js","sourceRoot":"","sources":["../../../src/infrastructure/security/dataSanitizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Input Validator - Comprehensive input validation system
3
+ * Handles edge cases, multi-language support, and secure input processing
4
+ * Provides detailed validation results and normalization
5
+ */
6
+ import type { ValidationResult, ValidationSchema } from '../errorHandling/orchestrationErrorHandler';
7
+ /**
8
+ * InputValidator implementation for comprehensive input validation
9
+ */
10
+ export declare class InputValidator {
11
+ private readonly supportedLanguages;
12
+ constructor();
13
+ /**
14
+ * Validate prompt input with comprehensive edge case handling
15
+ */
16
+ validatePromptInput(prompt: string): Promise<ValidationResult>;
17
+ /**
18
+ * Validate prompt length with appropriate error handling
19
+ */
20
+ private validatePromptLength;
21
+ /**
22
+ * Validate character set and encoding
23
+ */
24
+ private validateCharacterSet;
25
+ /**
26
+ * Validate content for appropriateness and safety
27
+ */
28
+ private validateContent;
29
+ /**
30
+ * Detect potential security and processing issues
31
+ */
32
+ private detectPotentialIssues;
33
+ /**
34
+ * Detect language of the input text
35
+ */
36
+ private detectLanguage;
37
+ /**
38
+ * Analyze content for appropriateness and safety
39
+ */
40
+ private analyzeContent;
41
+ /**
42
+ * Compile validation results into comprehensive report
43
+ */
44
+ private compileValidationResult;
45
+ /**
46
+ * Normalize input based on validation issues
47
+ */
48
+ private normalizeInput;
49
+ /**
50
+ * Validate input against custom schema
51
+ */
52
+ validateAgainstSchema(input: unknown, schema: ValidationSchema): Promise<ValidationResult>;
53
+ }
54
+ //# sourceMappingURL=inputValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputValidator.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/validation/inputValidator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAGV,gBAAgB,EAChB,gBAAgB,EAEjB,MAAM,4CAA4C,CAAA;AAoDnD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAa;;IAMhD;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAWpE;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAqC5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;OAEG;YACW,eAAe;IA4B7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4B7B;;OAEG;YACW,cAAc;IAuC5B;;OAEG;YACW,cAAc;IAiC5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA8D/B;;OAEG;IACH,OAAO,CAAC,cAAc;IAiCtB;;OAEG;IACG,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAmDjG"}