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,362 @@
1
+ "use strict";
2
+ /**
3
+ * Input Validator - Comprehensive input validation system
4
+ * Handles edge cases, multi-language support, and secure input processing
5
+ * Provides detailed validation results and normalization
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.InputValidator = void 0;
9
+ const orchestrationErrorHandler_1 = require("../errorHandling/orchestrationErrorHandler");
10
+ /**
11
+ * Validation constants
12
+ */
13
+ const VALIDATION_CONSTANTS = {
14
+ MAX_PROMPT_LENGTH: 4000,
15
+ MIN_PROMPT_LENGTH: 1,
16
+ SUPPORTED_LANGUAGES: ['en', 'ja', 'zh', 'ko', 'es', 'fr', 'de', 'it', 'pt', 'ru'],
17
+ SPECIAL_CHAR_PATTERN: /[^\w\s\-.,!?'"():;]/g,
18
+ UNSAFE_CONTENT_PATTERNS: [
19
+ /<script[^>]*>.*?<\/script>/gi,
20
+ /javascript:/gi,
21
+ /vbscript:/gi,
22
+ /onload=/gi,
23
+ /onerror=/gi,
24
+ ],
25
+ };
26
+ /**
27
+ * InputValidator implementation for comprehensive input validation
28
+ */
29
+ class InputValidator {
30
+ constructor() {
31
+ this.supportedLanguages = new Set(VALIDATION_CONSTANTS.SUPPORTED_LANGUAGES);
32
+ }
33
+ /**
34
+ * Validate prompt input with comprehensive edge case handling
35
+ */
36
+ async validatePromptInput(prompt) {
37
+ const validations = await Promise.all([
38
+ this.validatePromptLength(prompt),
39
+ this.validateCharacterSet(prompt),
40
+ this.validateContent(prompt),
41
+ this.detectPotentialIssues(prompt),
42
+ ]);
43
+ return this.compileValidationResult(validations, prompt);
44
+ }
45
+ /**
46
+ * Validate prompt length with appropriate error handling
47
+ */
48
+ validatePromptLength(prompt) {
49
+ const trimmedLength = prompt.trim().length;
50
+ if (trimmedLength === 0) {
51
+ return {
52
+ valid: false,
53
+ severity: orchestrationErrorHandler_1.ErrorSeverity.FATAL,
54
+ message: 'Prompt cannot be empty',
55
+ suggestion: 'Provide a descriptive prompt for image generation',
56
+ };
57
+ }
58
+ if (trimmedLength < VALIDATION_CONSTANTS.MIN_PROMPT_LENGTH) {
59
+ return {
60
+ valid: false,
61
+ severity: orchestrationErrorHandler_1.ErrorSeverity.RECOVERABLE,
62
+ message: 'Prompt is too short',
63
+ suggestion: 'Provide a more detailed description for better results',
64
+ };
65
+ }
66
+ if (prompt.length > VALIDATION_CONSTANTS.MAX_PROMPT_LENGTH) {
67
+ return {
68
+ valid: false, // This will be handled as a warning in compile method due to DEGRADED severity
69
+ severity: orchestrationErrorHandler_1.ErrorSeverity.DEGRADED,
70
+ message: `Prompt exceeds recommended length (${VALIDATION_CONSTANTS.MAX_PROMPT_LENGTH} characters)`,
71
+ suggestion: 'Consider shortening prompt for better processing',
72
+ metadata: {
73
+ actualLength: prompt.length,
74
+ recommendedLength: VALIDATION_CONSTANTS.MAX_PROMPT_LENGTH,
75
+ },
76
+ };
77
+ }
78
+ return { valid: true };
79
+ }
80
+ /**
81
+ * Validate character set and encoding
82
+ */
83
+ validateCharacterSet(prompt) {
84
+ // Check for encoding issues
85
+ const encodingTest = prompt.includes('\uFFFD'); // Unicode replacement character
86
+ if (encodingTest) {
87
+ return {
88
+ valid: false,
89
+ severity: orchestrationErrorHandler_1.ErrorSeverity.RECOVERABLE,
90
+ message: 'Text encoding issues detected',
91
+ suggestion: 'Please ensure proper text encoding (UTF-8 recommended)',
92
+ };
93
+ }
94
+ // Check for excessive special characters
95
+ const specialCharMatches = prompt.match(VALIDATION_CONSTANTS.SPECIAL_CHAR_PATTERN);
96
+ if (specialCharMatches && specialCharMatches.length > prompt.length * 0.3) {
97
+ return {
98
+ valid: false,
99
+ severity: orchestrationErrorHandler_1.ErrorSeverity.DEGRADED,
100
+ message: 'Excessive special characters detected',
101
+ suggestion: 'Reduce special characters for better processing',
102
+ };
103
+ }
104
+ return { valid: true };
105
+ }
106
+ /**
107
+ * Validate content for appropriateness and safety
108
+ */
109
+ async validateContent(prompt) {
110
+ // Multi-language support validation
111
+ const languageDetection = await this.detectLanguage(prompt);
112
+ const contentAnalysis = await this.analyzeContent(prompt);
113
+ if (!contentAnalysis.appropriate) {
114
+ return {
115
+ valid: false,
116
+ severity: orchestrationErrorHandler_1.ErrorSeverity.RECOVERABLE,
117
+ message: contentAnalysis.message,
118
+ suggestion: 'Please modify the prompt to follow content guidelines',
119
+ metadata: {
120
+ language: languageDetection.language,
121
+ detectedIssues: contentAnalysis.suggestedModifications,
122
+ },
123
+ };
124
+ }
125
+ return {
126
+ valid: true,
127
+ metadata: {
128
+ language: languageDetection.language,
129
+ confidence: languageDetection.confidence,
130
+ detectedLanguages: contentAnalysis.detectedLanguages,
131
+ },
132
+ };
133
+ }
134
+ /**
135
+ * Detect potential security and processing issues
136
+ */
137
+ detectPotentialIssues(prompt) {
138
+ // Check for potential script injection
139
+ for (const pattern of VALIDATION_CONSTANTS.UNSAFE_CONTENT_PATTERNS) {
140
+ if (pattern.test(prompt)) {
141
+ return {
142
+ valid: false,
143
+ severity: orchestrationErrorHandler_1.ErrorSeverity.FATAL,
144
+ message: 'Potentially unsafe content detected',
145
+ suggestion: 'Remove any code-like structures from the prompt',
146
+ };
147
+ }
148
+ }
149
+ // Check for extremely repetitive content (more lenient threshold)
150
+ const words = prompt.toLowerCase().split(/\s+/);
151
+ const uniqueWords = new Set(words);
152
+ if (words.length > 20 && uniqueWords.size < words.length * 0.15) {
153
+ return {
154
+ valid: false,
155
+ severity: orchestrationErrorHandler_1.ErrorSeverity.DEGRADED,
156
+ message: 'Highly repetitive content detected',
157
+ suggestion: 'Provide more varied descriptions for better results',
158
+ };
159
+ }
160
+ return { valid: true };
161
+ }
162
+ /**
163
+ * Detect language of the input text
164
+ */
165
+ async detectLanguage(prompt) {
166
+ // Simple language detection based on character patterns
167
+ // In a real implementation, this would use a proper language detection library
168
+ // Japanese characters
169
+ if (/[\u3040-\u309f\u30a0-\u30ff\u4e00-\u9faf]/.test(prompt)) {
170
+ return {
171
+ language: 'ja',
172
+ confidence: 0.9,
173
+ isSupported: this.supportedLanguages.has('ja'),
174
+ };
175
+ }
176
+ // Chinese characters
177
+ if (/[\u4e00-\u9faf]/.test(prompt)) {
178
+ return {
179
+ language: 'zh',
180
+ confidence: 0.8,
181
+ isSupported: this.supportedLanguages.has('zh'),
182
+ };
183
+ }
184
+ // Korean characters
185
+ if (/[\uac00-\ud7af]/.test(prompt)) {
186
+ return {
187
+ language: 'ko',
188
+ confidence: 0.9,
189
+ isSupported: this.supportedLanguages.has('ko'),
190
+ };
191
+ }
192
+ // Default to English
193
+ return {
194
+ language: 'en',
195
+ confidence: 0.7,
196
+ isSupported: true,
197
+ };
198
+ }
199
+ /**
200
+ * Analyze content for appropriateness and safety
201
+ */
202
+ async analyzeContent(prompt) {
203
+ const detectedLanguages = [(await this.detectLanguage(prompt)).language];
204
+ const hasSpecialCharacters = VALIDATION_CONSTANTS.SPECIAL_CHAR_PATTERN.test(prompt);
205
+ const encodingIssues = prompt.includes('\uFFFD');
206
+ // Simple content appropriateness check
207
+ const inappropriate = ['explicit', 'violent', 'harmful', 'illegal', 'offensive'].some((word) => prompt.toLowerCase().includes(word));
208
+ if (inappropriate) {
209
+ return {
210
+ appropriate: false,
211
+ message: 'Content may not comply with usage guidelines',
212
+ suggestedModifications: [
213
+ 'Remove inappropriate content',
214
+ 'Use descriptive but appropriate language',
215
+ ],
216
+ detectedLanguages,
217
+ hasSpecialCharacters,
218
+ encodingIssues,
219
+ };
220
+ }
221
+ return {
222
+ appropriate: true,
223
+ message: 'Content appears appropriate for processing',
224
+ detectedLanguages,
225
+ hasSpecialCharacters,
226
+ encodingIssues,
227
+ };
228
+ }
229
+ /**
230
+ * Compile validation results into comprehensive report
231
+ */
232
+ compileValidationResult(validations, originalPrompt) {
233
+ const errors = [];
234
+ const warnings = [];
235
+ let normalizedInput = originalPrompt;
236
+ for (let i = 0; i < validations.length; i++) {
237
+ const validation = validations[i];
238
+ if (!validation || validation.valid)
239
+ continue;
240
+ if (validation.severity === orchestrationErrorHandler_1.ErrorSeverity.FATAL) {
241
+ errors.push({
242
+ field: 'prompt',
243
+ message: validation.message || 'Validation failed',
244
+ severity: validation.severity,
245
+ suggestion: validation.suggestion || 'Please fix this issue',
246
+ code: `E${i + 1}`,
247
+ });
248
+ }
249
+ else if (validation.severity === orchestrationErrorHandler_1.ErrorSeverity.DEGRADED) {
250
+ warnings.push({
251
+ field: 'prompt',
252
+ message: validation.message || 'Validation warning',
253
+ suggestion: validation.suggestion || 'Consider addressing this issue',
254
+ code: `W${i + 1}`,
255
+ });
256
+ // Apply normalization for degraded issues
257
+ normalizedInput = this.normalizeInput(normalizedInput, validation);
258
+ }
259
+ else {
260
+ warnings.push({
261
+ field: 'prompt',
262
+ message: validation.message || 'Validation warning',
263
+ suggestion: validation.suggestion || 'Consider addressing this issue',
264
+ code: `W${i + 1}`,
265
+ });
266
+ // Apply normalization for recoverable issues
267
+ if (validation.severity === orchestrationErrorHandler_1.ErrorSeverity.RECOVERABLE) {
268
+ normalizedInput = this.normalizeInput(normalizedInput, validation);
269
+ }
270
+ }
271
+ }
272
+ // Check if there are any degraded severity issues that should make validation invalid
273
+ const hasDegradedIssues = warnings.some((warning) => warning.code.startsWith('W') && warning.message.includes('exceeds recommended length'));
274
+ const isValid = errors.length === 0 && !hasDegradedIssues;
275
+ return {
276
+ valid: isValid,
277
+ errors,
278
+ warnings,
279
+ normalizedInput: normalizedInput !== originalPrompt ? normalizedInput : isValid ? originalPrompt : undefined,
280
+ };
281
+ }
282
+ /**
283
+ * Normalize input based on validation issues
284
+ */
285
+ normalizeInput(input, _validation) {
286
+ // Apply specific normalization based on validation type
287
+ let normalized = input;
288
+ // Trim whitespace
289
+ normalized = normalized.trim();
290
+ // Skip security pattern removal for non-Latin scripts to preserve content
291
+ const hasNonLatinScript = /[\u0600-\u06ff\u4e00-\u9fff\u3040-\u309f\u30a0-\u30ff]/.test(normalized);
292
+ if (!hasNonLatinScript) {
293
+ // Remove potential security issues only for Latin scripts
294
+ for (const pattern of VALIDATION_CONSTANTS.UNSAFE_CONTENT_PATTERNS) {
295
+ normalized = normalized.replace(pattern, '');
296
+ }
297
+ }
298
+ // Truncate if too long
299
+ if (normalized.length > VALIDATION_CONSTANTS.MAX_PROMPT_LENGTH) {
300
+ normalized = normalized.substring(0, VALIDATION_CONSTANTS.MAX_PROMPT_LENGTH);
301
+ // Ensure we don't cut off mid-word by finding the last complete word
302
+ const lastSpaceIndex = normalized.lastIndexOf(' ');
303
+ if (lastSpaceIndex > normalized.length * 0.8) {
304
+ normalized = normalized.substring(0, lastSpaceIndex);
305
+ }
306
+ // Ensure trailing partial words are properly handled
307
+ normalized = normalized.trim();
308
+ }
309
+ return normalized;
310
+ }
311
+ /**
312
+ * Validate input against custom schema
313
+ */
314
+ async validateAgainstSchema(input, schema) {
315
+ const errors = [];
316
+ const warnings = [];
317
+ // Type validation
318
+ if (schema.type === 'string' && typeof input !== 'string') {
319
+ errors.push({
320
+ field: 'root',
321
+ message: `Expected type string, got ${typeof input}`,
322
+ severity: orchestrationErrorHandler_1.ErrorSeverity.FATAL,
323
+ code: 'TYPE_MISMATCH',
324
+ });
325
+ }
326
+ // String-specific validations
327
+ if (schema.type === 'string' && typeof input === 'string') {
328
+ if (schema.minLength && input.length < schema.minLength) {
329
+ errors.push({
330
+ field: 'root',
331
+ message: `Minimum length ${schema.minLength} required, got ${input.length}`,
332
+ severity: orchestrationErrorHandler_1.ErrorSeverity.RECOVERABLE,
333
+ code: 'MIN_LENGTH',
334
+ });
335
+ }
336
+ if (schema.maxLength && input.length > schema.maxLength) {
337
+ warnings.push({
338
+ field: 'root',
339
+ message: `Exceeds recommended length ${schema.maxLength}, got ${input.length}`,
340
+ suggestion: 'Consider shortening the input',
341
+ code: 'MAX_LENGTH',
342
+ });
343
+ }
344
+ if (schema.pattern && !schema.pattern.test(input)) {
345
+ errors.push({
346
+ field: 'root',
347
+ message: 'Input does not match required pattern',
348
+ severity: orchestrationErrorHandler_1.ErrorSeverity.RECOVERABLE,
349
+ code: 'PATTERN_MISMATCH',
350
+ });
351
+ }
352
+ }
353
+ return {
354
+ valid: errors.length === 0,
355
+ errors,
356
+ warnings,
357
+ normalizedInput: errors.length === 0 ? input : undefined,
358
+ };
359
+ }
360
+ }
361
+ exports.InputValidator = InputValidator;
362
+ //# sourceMappingURL=inputValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inputValidator.js","sourceRoot":"","sources":["../../../src/infrastructure/validation/inputValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Parameter optimizer for image generation based on structured prompts
3
+ * Analyzes structured prompts and optimizes image generation parameters
4
+ */
5
+ import type { Result } from '../types/result';
6
+ import type { ImageParameters, OptimizedParameters, ParameterOptimizer, PromptCharacteristics } from '../types/twoStageTypes';
7
+ import { GeminiAPIError } from '../utils/errors';
8
+ /**
9
+ * Implementation of parameter optimization based on structured prompt analysis
10
+ */
11
+ export declare class ParameterOptimizerImpl implements ParameterOptimizer {
12
+ /**
13
+ * Optimize parameters based on structured prompt analysis
14
+ */
15
+ optimizeForStructuredPrompt(structuredPrompt: string, baseParams: ImageParameters): Promise<Result<OptimizedParameters, GeminiAPIError>>;
16
+ /**
17
+ * Analyze prompt characteristics for optimization
18
+ */
19
+ analyzePromptCharacteristics(prompt: string): PromptCharacteristics;
20
+ /**
21
+ * Detect content type from prompt
22
+ */
23
+ private detectContentType;
24
+ /**
25
+ * Detect complexity level
26
+ */
27
+ private detectComplexity;
28
+ /**
29
+ * Suggest optimal aspect ratio based on content type
30
+ */
31
+ private suggestAspectRatio;
32
+ /**
33
+ * Suggest quality level based on complexity and requirements
34
+ */
35
+ private suggestQuality;
36
+ /**
37
+ * Suggest style based on prompt content
38
+ */
39
+ private suggestStyle;
40
+ /**
41
+ * Extract key elements from prompt
42
+ */
43
+ private extractElements;
44
+ /**
45
+ * Recommend features based on prompt analysis
46
+ */
47
+ private recommendFeatures;
48
+ /**
49
+ * Check if aspect ratio should be optimized
50
+ */
51
+ private shouldOptimizeAspectRatio;
52
+ /**
53
+ * Check if quality should be upgraded
54
+ */
55
+ private shouldUpgradeQuality;
56
+ /**
57
+ * Check if style should be optimized
58
+ */
59
+ private shouldOptimizeStyle;
60
+ /**
61
+ * Detect cinematic content
62
+ */
63
+ private detectsCinematicContent;
64
+ /**
65
+ * Detect macro photography content
66
+ */
67
+ private detectsMacroContent;
68
+ }
69
+ //# sourceMappingURL=parameterOptimizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameterOptimizer.d.ts","sourceRoot":"","sources":["../../src/integration/parameterOptimizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAkDhD;;GAEG;AACH,qBAAa,sBAAuB,YAAW,kBAAkB;IAC/D;;OAEG;IACG,2BAA2B,CAC/B,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,MAAM,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;IAuFvD;;OAEG;IACH,4BAA4B,CAAC,MAAM,EAAE,MAAM,GAAG,qBAAqB;IA+BnE;;OAEG;IACH,OAAO,CAAC,iBAAiB;IASzB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA0B1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAuBvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAuBjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAU5B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAK/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAS5B"}