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,580 @@
1
+ "use strict";
2
+ /**
3
+ * AspectRatioController - Intelligent aspect ratio optimization for multi-image processing
4
+ * Supports adaptive, uniform, content-driven, and last-image strategies
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AspectRatioControllerImpl = void 0;
8
+ const multiImageTypes_1 = require("../../types/multiImageTypes");
9
+ const result_1 = require("../../types/result");
10
+ const errors_1 = require("../../utils/errors");
11
+ /**
12
+ * Default aspect ratio for fallbacks
13
+ */
14
+ const DEFAULT_ASPECT_RATIO = { width: 4, height: 3, ratio: '4:3' };
15
+ /**
16
+ * Helper function to get aspect ratio with safe fallback
17
+ */
18
+ function getSafeAspectRatio(aspectRatio) {
19
+ return aspectRatio || DEFAULT_ASPECT_RATIO;
20
+ }
21
+ /**
22
+ * Standard aspect ratios for image generation
23
+ */
24
+ const STANDARD_ASPECT_RATIOS = {
25
+ square: { width: 1, height: 1, ratio: '1:1' },
26
+ portrait: { width: 3, height: 4, ratio: '3:4' },
27
+ landscape: { width: 4, height: 3, ratio: '4:3' },
28
+ wide: { width: 16, height: 9, ratio: '16:9' },
29
+ ultrawide: { width: 21, height: 9, ratio: '21:9' },
30
+ vertical: { width: 9, height: 16, ratio: '9:16' },
31
+ };
32
+ /**
33
+ * Content type to aspect ratio mapping
34
+ */
35
+ const CONTENT_TYPE_RATIOS = {
36
+ portrait: STANDARD_ASPECT_RATIOS['portrait'],
37
+ landscape: STANDARD_ASPECT_RATIOS['landscape'],
38
+ object: STANDARD_ASPECT_RATIOS['square'],
39
+ scene: STANDARD_ASPECT_RATIOS['wide'],
40
+ abstract: STANDARD_ASPECT_RATIOS['square'],
41
+ };
42
+ /**
43
+ * Implementation of AspectRatioController with intelligent optimization strategies
44
+ */
45
+ class AspectRatioControllerImpl {
46
+ /**
47
+ * Optimize aspect ratios for multiple image requirements based on strategy
48
+ */
49
+ async optimizeAspectRatios(requirements, strategy) {
50
+ try {
51
+ if (!requirements || requirements.length === 0) {
52
+ return (0, result_1.Err)(new errors_1.GeminiAPIError('No image requirements provided for aspect ratio optimization'));
53
+ }
54
+ let optimizations;
55
+ switch (strategy) {
56
+ case multiImageTypes_1.AspectRatioStrategy.ADAPTIVE:
57
+ optimizations = await this.adaptiveOptimization(requirements);
58
+ break;
59
+ case multiImageTypes_1.AspectRatioStrategy.UNIFORM:
60
+ optimizations = await this.uniformOptimization(requirements);
61
+ break;
62
+ case multiImageTypes_1.AspectRatioStrategy.CONTENT_DRIVEN:
63
+ optimizations = await this.contentDrivenOptimization(requirements);
64
+ break;
65
+ case multiImageTypes_1.AspectRatioStrategy.LAST_IMAGE:
66
+ optimizations = await this.lastImageOptimization(requirements);
67
+ break;
68
+ default:
69
+ optimizations = await this.defaultOptimization(requirements);
70
+ }
71
+ const overallCoherence = this.calculateOverallCoherence(optimizations);
72
+ return (0, result_1.Ok)({
73
+ optimizations,
74
+ strategy,
75
+ overallCoherence,
76
+ });
77
+ }
78
+ catch (error) {
79
+ return (0, result_1.Err)(new errors_1.GeminiAPIError(`Aspect ratio optimization failed: ${error instanceof Error ? error.message : 'Unknown error'}`, 'Check image requirements and strategy configuration'));
80
+ }
81
+ }
82
+ /**
83
+ * Analyze content to determine optimal aspect ratio
84
+ */
85
+ async analyzeContentForAspectRatio(prompt) {
86
+ try {
87
+ if (!prompt || prompt.trim().length === 0) {
88
+ return (0, result_1.Err)(new errors_1.GeminiAPIError('Empty prompt provided for content analysis'));
89
+ }
90
+ // Analyze prompt for content characteristics
91
+ const primarySubject = this.detectPrimarySubject(prompt);
92
+ const composition = this.determineComposition(prompt, primarySubject);
93
+ const elements = this.extractElements(prompt);
94
+ const rationale = this.generateRationale(primarySubject, composition, elements);
95
+ const analysis = {
96
+ primarySubject,
97
+ composition,
98
+ elements,
99
+ rationale,
100
+ };
101
+ return (0, result_1.Ok)(analysis);
102
+ }
103
+ catch (error) {
104
+ return (0, result_1.Err)(new errors_1.GeminiAPIError(`Content analysis failed: ${error instanceof Error ? error.message : 'Unknown error'}`, 'Check prompt format and content'));
105
+ }
106
+ }
107
+ /**
108
+ * Select optimal aspect ratio based on content analysis
109
+ */
110
+ selectOptimalRatio(analysis) {
111
+ // Use composition to determine base ratio
112
+ if (analysis.composition === 'vertical') {
113
+ // Prefer portrait ratios for vertical compositions
114
+ if (analysis.primarySubject === 'portrait') {
115
+ return STANDARD_ASPECT_RATIOS['portrait'];
116
+ }
117
+ return STANDARD_ASPECT_RATIOS['vertical'];
118
+ }
119
+ if (analysis.composition === 'horizontal') {
120
+ // Prefer landscape ratios for horizontal compositions
121
+ if (analysis.primarySubject === 'landscape' || analysis.primarySubject === 'scene') {
122
+ return STANDARD_ASPECT_RATIOS['wide'];
123
+ }
124
+ return STANDARD_ASPECT_RATIOS['landscape'];
125
+ }
126
+ // Square composition - use content type mapping
127
+ return CONTENT_TYPE_RATIOS[analysis.primarySubject] || STANDARD_ASPECT_RATIOS['square'];
128
+ }
129
+ /**
130
+ * Adaptive optimization - choose best ratio for each image individually
131
+ */
132
+ async adaptiveOptimization(requirements) {
133
+ const optimizations = [];
134
+ for (const requirement of requirements) {
135
+ try {
136
+ const prompt = requirement.specificPrompt || 'generic image';
137
+ const contentAnalysisResult = await this.analyzeContentForAspectRatio(prompt);
138
+ if (!contentAnalysisResult.success) {
139
+ // Fallback to existing ratio or square
140
+ const fallbackRatio = requirement.aspectRatio || STANDARD_ASPECT_RATIOS['square'];
141
+ optimizations.push({
142
+ originalRatio: getSafeAspectRatio(requirement.aspectRatio),
143
+ optimizedRatio: fallbackRatio,
144
+ optimization: {
145
+ strategy: multiImageTypes_1.AspectRatioStrategy.ADAPTIVE,
146
+ contentAnalysis: {
147
+ primarySubject: 'abstract',
148
+ composition: 'square',
149
+ elements: [],
150
+ rationale: 'Content analysis failed, using fallback ratio',
151
+ },
152
+ recommendedRatio: fallbackRatio,
153
+ confidenceScore: 0.5,
154
+ },
155
+ reasoning: 'Fallback applied due to content analysis failure',
156
+ });
157
+ continue;
158
+ }
159
+ const contentAnalysis = contentAnalysisResult.data;
160
+ const recommendedRatio = this.selectOptimalRatio(contentAnalysis);
161
+ const confidenceScore = this.calculateConfidenceScore(contentAnalysis);
162
+ optimizations.push({
163
+ originalRatio: getSafeAspectRatio(requirement.aspectRatio),
164
+ optimizedRatio: recommendedRatio,
165
+ optimization: {
166
+ strategy: multiImageTypes_1.AspectRatioStrategy.ADAPTIVE,
167
+ contentAnalysis,
168
+ recommendedRatio,
169
+ confidenceScore,
170
+ },
171
+ reasoning: `Adaptive optimization based on content analysis: ${contentAnalysis.rationale}`,
172
+ });
173
+ }
174
+ catch (error) {
175
+ // Fallback for individual requirement failure
176
+ const fallbackRatio = requirement.aspectRatio || STANDARD_ASPECT_RATIOS['square'];
177
+ optimizations.push({
178
+ originalRatio: getSafeAspectRatio(requirement.aspectRatio),
179
+ optimizedRatio: fallbackRatio,
180
+ optimization: {
181
+ strategy: multiImageTypes_1.AspectRatioStrategy.ADAPTIVE,
182
+ contentAnalysis: {
183
+ primarySubject: 'abstract',
184
+ composition: 'square',
185
+ elements: [],
186
+ rationale: 'Error in processing, using fallback',
187
+ },
188
+ recommendedRatio: fallbackRatio,
189
+ confidenceScore: 0.3,
190
+ },
191
+ reasoning: `Error in adaptive optimization: ${error instanceof Error ? error.message : 'Unknown error'}`,
192
+ });
193
+ }
194
+ }
195
+ return optimizations;
196
+ }
197
+ /**
198
+ * Uniform optimization - use same ratio for all images
199
+ */
200
+ async uniformOptimization(requirements) {
201
+ // Analyze all prompts to find most common content type
202
+ const contentTypes = {};
203
+ const compositions = {};
204
+ for (const requirement of requirements) {
205
+ try {
206
+ const prompt = requirement.specificPrompt || 'generic image';
207
+ const contentAnalysisResult = await this.analyzeContentForAspectRatio(prompt);
208
+ if (contentAnalysisResult.success) {
209
+ const analysis = contentAnalysisResult.data;
210
+ contentTypes[analysis.primarySubject] = (contentTypes[analysis.primarySubject] || 0) + 1;
211
+ compositions[analysis.composition] = (compositions[analysis.composition] || 0) + 1;
212
+ }
213
+ }
214
+ catch { }
215
+ }
216
+ // Find most common content type and composition
217
+ const contentTypeKeys = Object.keys(contentTypes);
218
+ const compositionKeys = Object.keys(compositions);
219
+ const mostCommonContent = contentTypeKeys.length > 0
220
+ ? contentTypeKeys.reduce((a, b) => (contentTypes[a] || 0) > (contentTypes[b] || 0) ? a : b)
221
+ : 'portrait';
222
+ const mostCommonComposition = compositionKeys.length > 0
223
+ ? compositionKeys.reduce((a, b) => (compositions[a] || 0) > (compositions[b] || 0) ? a : b)
224
+ : 'portrait';
225
+ // Select uniform ratio based on most common characteristics
226
+ const uniformAnalysis = {
227
+ primarySubject: mostCommonContent,
228
+ composition: mostCommonComposition,
229
+ elements: ['uniform processing'],
230
+ rationale: `Uniform ratio selected based on most common content type: ${mostCommonContent}`,
231
+ };
232
+ const uniformRatio = this.selectOptimalRatio(uniformAnalysis);
233
+ const confidenceScore = this.calculateUniformConfidenceScore(contentTypes, compositions);
234
+ // Apply same optimization to all requirements
235
+ return requirements.map((requirement) => ({
236
+ originalRatio: getSafeAspectRatio(requirement.aspectRatio),
237
+ optimizedRatio: uniformRatio,
238
+ optimization: {
239
+ strategy: multiImageTypes_1.AspectRatioStrategy.UNIFORM,
240
+ contentAnalysis: uniformAnalysis,
241
+ recommendedRatio: uniformRatio,
242
+ confidenceScore,
243
+ },
244
+ reasoning: `Uniform optimization applied: ${uniformAnalysis.rationale}`,
245
+ }));
246
+ }
247
+ /**
248
+ * Content-driven optimization - detailed content analysis for each image
249
+ */
250
+ async contentDrivenOptimization(requirements) {
251
+ const optimizations = [];
252
+ for (const requirement of requirements) {
253
+ try {
254
+ const prompt = requirement.specificPrompt || 'generic content';
255
+ const contentAnalysisResult = await this.analyzeContentForAspectRatio(prompt);
256
+ if (!contentAnalysisResult.success) {
257
+ throw new Error('Content analysis failed for content-driven optimization');
258
+ }
259
+ const contentAnalysis = contentAnalysisResult.data;
260
+ const recommendedRatio = this.selectOptimalRatio(contentAnalysis);
261
+ // Enhanced confidence calculation for content-driven approach
262
+ const confidenceScore = this.calculateContentDrivenConfidence(contentAnalysis, prompt);
263
+ optimizations.push({
264
+ originalRatio: getSafeAspectRatio(requirement.aspectRatio),
265
+ optimizedRatio: recommendedRatio,
266
+ optimization: {
267
+ strategy: multiImageTypes_1.AspectRatioStrategy.CONTENT_DRIVEN,
268
+ contentAnalysis,
269
+ recommendedRatio,
270
+ confidenceScore,
271
+ },
272
+ reasoning: `Content-driven optimization: ${contentAnalysis.rationale}`,
273
+ });
274
+ }
275
+ catch (error) {
276
+ // For content-driven, we want higher accuracy, so use more conservative fallback
277
+ const fallbackRatio = requirement.aspectRatio || STANDARD_ASPECT_RATIOS['landscape'];
278
+ optimizations.push({
279
+ originalRatio: getSafeAspectRatio(requirement.aspectRatio),
280
+ optimizedRatio: fallbackRatio,
281
+ optimization: {
282
+ strategy: multiImageTypes_1.AspectRatioStrategy.CONTENT_DRIVEN,
283
+ contentAnalysis: {
284
+ primarySubject: 'scene',
285
+ composition: 'horizontal',
286
+ elements: ['fallback processing'],
287
+ rationale: 'Content-driven analysis failed, using conservative fallback',
288
+ },
289
+ recommendedRatio: fallbackRatio,
290
+ confidenceScore: 0.4,
291
+ },
292
+ reasoning: `Content-driven fallback: ${error instanceof Error ? error.message : 'Unknown error'}`,
293
+ });
294
+ }
295
+ }
296
+ return optimizations;
297
+ }
298
+ /**
299
+ * Last image optimization - use aspect ratio from the last uploaded/specified image
300
+ */
301
+ async lastImageOptimization(requirements) {
302
+ if (requirements.length === 0) {
303
+ return [];
304
+ }
305
+ // Find the last image with an aspect ratio
306
+ let lastImageRatio = STANDARD_ASPECT_RATIOS['landscape']; // default fallback
307
+ for (let i = requirements.length - 1; i >= 0; i--) {
308
+ const requirementRatio = requirements[i]?.aspectRatio;
309
+ if (requirementRatio) {
310
+ lastImageRatio = requirementRatio;
311
+ break;
312
+ }
313
+ }
314
+ // If no explicit aspect ratio found from uploaded images, analyze last requirement
315
+ if (lastImageRatio === STANDARD_ASPECT_RATIOS['landscape']) {
316
+ const lastRequirement = requirements[requirements.length - 1];
317
+ const prompt = lastRequirement?.specificPrompt || 'last image content';
318
+ const contentAnalysisResult = await this.analyzeContentForAspectRatio(prompt);
319
+ if (contentAnalysisResult.success) {
320
+ lastImageRatio = this.selectOptimalRatio(contentAnalysisResult.data);
321
+ }
322
+ // else keep the landscape default
323
+ }
324
+ // Apply last image ratio to all requirements
325
+ const lastImageAnalysis = {
326
+ primarySubject: 'scene',
327
+ composition: lastImageRatio.width > lastImageRatio.height
328
+ ? 'horizontal'
329
+ : lastImageRatio.width < lastImageRatio.height
330
+ ? 'vertical'
331
+ : 'square',
332
+ elements: ['last image reference'],
333
+ rationale: `Using aspect ratio from last image: ${lastImageRatio.ratio}`,
334
+ };
335
+ return requirements.map((requirement) => ({
336
+ originalRatio: getSafeAspectRatio(requirement.aspectRatio),
337
+ optimizedRatio: lastImageRatio,
338
+ optimization: {
339
+ strategy: multiImageTypes_1.AspectRatioStrategy.LAST_IMAGE,
340
+ contentAnalysis: lastImageAnalysis,
341
+ recommendedRatio: lastImageRatio,
342
+ confidenceScore: 0.8, // High confidence for explicit user choice
343
+ },
344
+ reasoning: `Last image optimization: Applied ratio ${lastImageRatio.ratio} from last uploaded image`,
345
+ }));
346
+ }
347
+ /**
348
+ * Default optimization - balanced approach
349
+ */
350
+ async defaultOptimization(requirements) {
351
+ // Default strategy is adaptive with fallback to landscape
352
+ try {
353
+ return await this.adaptiveOptimization(requirements);
354
+ }
355
+ catch {
356
+ // Complete fallback - use landscape for all
357
+ const fallbackRatio = STANDARD_ASPECT_RATIOS['landscape'];
358
+ return requirements.map((requirement) => ({
359
+ originalRatio: getSafeAspectRatio(requirement.aspectRatio),
360
+ optimizedRatio: fallbackRatio,
361
+ optimization: {
362
+ strategy: multiImageTypes_1.AspectRatioStrategy.ADAPTIVE,
363
+ contentAnalysis: {
364
+ primarySubject: 'scene',
365
+ composition: 'horizontal',
366
+ elements: ['default processing'],
367
+ rationale: 'Default optimization applied due to processing failure',
368
+ },
369
+ recommendedRatio: fallbackRatio,
370
+ confidenceScore: 0.6,
371
+ },
372
+ reasoning: 'Default optimization applied',
373
+ }));
374
+ }
375
+ }
376
+ /**
377
+ * Detect primary subject type from prompt
378
+ */
379
+ detectPrimarySubject(prompt) {
380
+ const lowerPrompt = prompt.toLowerCase();
381
+ if (lowerPrompt.includes('portrait') ||
382
+ lowerPrompt.includes('face') ||
383
+ lowerPrompt.includes('person') ||
384
+ lowerPrompt.includes('character') ||
385
+ lowerPrompt.includes('headshot')) {
386
+ return 'portrait';
387
+ }
388
+ if (lowerPrompt.includes('landscape') ||
389
+ lowerPrompt.includes('mountain') ||
390
+ lowerPrompt.includes('horizon') ||
391
+ lowerPrompt.includes('valley') ||
392
+ lowerPrompt.includes('vista')) {
393
+ return 'landscape';
394
+ }
395
+ if (lowerPrompt.includes('scene') ||
396
+ lowerPrompt.includes('environment') ||
397
+ lowerPrompt.includes('setting') ||
398
+ lowerPrompt.includes('background') ||
399
+ lowerPrompt.includes('location')) {
400
+ return 'scene';
401
+ }
402
+ if (lowerPrompt.includes('object') ||
403
+ lowerPrompt.includes('product') ||
404
+ lowerPrompt.includes('item') ||
405
+ lowerPrompt.includes('tool') ||
406
+ lowerPrompt.includes('artifact')) {
407
+ return 'object';
408
+ }
409
+ if (lowerPrompt.includes('abstract') ||
410
+ lowerPrompt.includes('pattern') ||
411
+ lowerPrompt.includes('texture') ||
412
+ lowerPrompt.includes('concept') ||
413
+ lowerPrompt.includes('artistic')) {
414
+ return 'abstract';
415
+ }
416
+ return 'scene'; // Default to scene for unknown content
417
+ }
418
+ /**
419
+ * Determine composition orientation from prompt and subject
420
+ */
421
+ determineComposition(prompt, primarySubject) {
422
+ const lowerPrompt = prompt.toLowerCase();
423
+ // Explicit orientation keywords
424
+ if (lowerPrompt.includes('vertical') ||
425
+ lowerPrompt.includes('tall') ||
426
+ lowerPrompt.includes('upright')) {
427
+ return 'vertical';
428
+ }
429
+ if (lowerPrompt.includes('horizontal') ||
430
+ lowerPrompt.includes('wide') ||
431
+ lowerPrompt.includes('panoramic')) {
432
+ return 'horizontal';
433
+ }
434
+ if (lowerPrompt.includes('square') ||
435
+ lowerPrompt.includes('centered') ||
436
+ lowerPrompt.includes('balanced')) {
437
+ return 'square';
438
+ }
439
+ // Infer from primary subject
440
+ if (primarySubject === 'portrait') {
441
+ return 'vertical';
442
+ }
443
+ if (primarySubject === 'landscape') {
444
+ return 'horizontal';
445
+ }
446
+ if (primarySubject === 'object' || primarySubject === 'abstract') {
447
+ return 'square';
448
+ }
449
+ // Scene analysis
450
+ if (lowerPrompt.includes('action') ||
451
+ lowerPrompt.includes('movement') ||
452
+ lowerPrompt.includes('running') ||
453
+ lowerPrompt.includes('flying')) {
454
+ return 'horizontal';
455
+ }
456
+ return 'horizontal'; // Default to horizontal for unknown composition
457
+ }
458
+ /**
459
+ * Extract relevant elements from prompt
460
+ */
461
+ extractElements(prompt) {
462
+ const elements = [];
463
+ const lowerPrompt = prompt.toLowerCase();
464
+ // Character elements
465
+ if (lowerPrompt.includes('character') ||
466
+ lowerPrompt.includes('person') ||
467
+ lowerPrompt.includes('figure')) {
468
+ elements.push('character');
469
+ }
470
+ // Environmental elements
471
+ if (lowerPrompt.includes('environment') ||
472
+ lowerPrompt.includes('background') ||
473
+ lowerPrompt.includes('setting')) {
474
+ elements.push('environment');
475
+ }
476
+ // Action elements
477
+ if (lowerPrompt.includes('action') ||
478
+ lowerPrompt.includes('movement') ||
479
+ lowerPrompt.includes('dynamic')) {
480
+ elements.push('action');
481
+ }
482
+ // Object elements
483
+ if (lowerPrompt.includes('object') ||
484
+ lowerPrompt.includes('item') ||
485
+ lowerPrompt.includes('prop')) {
486
+ elements.push('object');
487
+ }
488
+ // Lighting elements
489
+ if (lowerPrompt.includes('lighting') ||
490
+ lowerPrompt.includes('light') ||
491
+ lowerPrompt.includes('shadow')) {
492
+ elements.push('lighting');
493
+ }
494
+ return elements.length > 0 ? elements : ['generic'];
495
+ }
496
+ /**
497
+ * Generate rationale for aspect ratio selection
498
+ */
499
+ generateRationale(primarySubject, composition, elements) {
500
+ const baseRationale = `${primarySubject} content with ${composition} composition`;
501
+ if (elements.length > 0) {
502
+ return `${baseRationale} featuring ${elements.join(', ')} elements`;
503
+ }
504
+ return baseRationale;
505
+ }
506
+ /**
507
+ * Calculate confidence score for content analysis
508
+ */
509
+ calculateConfidenceScore(analysis) {
510
+ let confidence = 0.5; // Base confidence
511
+ // Increase confidence based on detected elements
512
+ if (analysis.elements.length > 0) {
513
+ confidence += 0.2;
514
+ }
515
+ // Increase confidence for clear subject types
516
+ if (analysis.primarySubject === 'portrait' || analysis.primarySubject === 'landscape') {
517
+ confidence += 0.2;
518
+ }
519
+ // Increase confidence for clear compositions
520
+ if (analysis.composition !== 'square') {
521
+ confidence += 0.1;
522
+ }
523
+ return Math.min(confidence, 1.0);
524
+ }
525
+ /**
526
+ * Calculate confidence score for uniform optimization
527
+ */
528
+ calculateUniformConfidenceScore(contentTypes, compositions) {
529
+ const totalContent = Object.values(contentTypes).reduce((sum, count) => sum + count, 0);
530
+ const totalComposition = Object.values(compositions).reduce((sum, count) => sum + count, 0);
531
+ if (totalContent === 0 || totalComposition === 0) {
532
+ return 0.5;
533
+ }
534
+ // Calculate dominance of most common types
535
+ const maxContent = Math.max(...Object.values(contentTypes));
536
+ const maxComposition = Math.max(...Object.values(compositions));
537
+ const contentDominance = maxContent / totalContent;
538
+ const compositionDominance = maxComposition / totalComposition;
539
+ return (contentDominance + compositionDominance) / 2;
540
+ }
541
+ /**
542
+ * Calculate confidence score for content-driven optimization
543
+ */
544
+ calculateContentDrivenConfidence(analysis, prompt) {
545
+ let confidence = this.calculateConfidenceScore(analysis);
546
+ // Boost confidence for detailed prompts
547
+ const promptLength = prompt.length;
548
+ if (promptLength > 50) {
549
+ confidence += 0.1;
550
+ }
551
+ if (promptLength > 100) {
552
+ confidence += 0.1;
553
+ }
554
+ // Boost confidence for specific keywords
555
+ const specificKeywords = ['detailed', 'specific', 'precise', 'exact', 'particular'];
556
+ const hasSpecificKeywords = specificKeywords.some((keyword) => prompt.toLowerCase().includes(keyword));
557
+ if (hasSpecificKeywords) {
558
+ confidence += 0.15;
559
+ }
560
+ return Math.min(confidence, 1.0);
561
+ }
562
+ /**
563
+ * Calculate overall coherence of optimizations
564
+ */
565
+ calculateOverallCoherence(optimizations) {
566
+ if (optimizations.length === 0) {
567
+ return 1.0;
568
+ }
569
+ // Calculate average confidence
570
+ const avgConfidence = optimizations.reduce((sum, opt) => sum + opt.optimization.confidenceScore, 0) /
571
+ optimizations.length;
572
+ // Check ratio consistency (bonus for similar ratios)
573
+ const ratios = optimizations.map((opt) => opt.optimizedRatio.ratio);
574
+ const uniqueRatios = new Set(ratios);
575
+ const consistencyBonus = uniqueRatios.size <= 2 ? 0.1 : 0;
576
+ return Math.min(avgConfidence + consistencyBonus, 1.0);
577
+ }
578
+ }
579
+ exports.AspectRatioControllerImpl = AspectRatioControllerImpl;
580
+ //# sourceMappingURL=aspectRatioController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aspectRatioController.js","sourceRoot":"","sources":["../../../src/business/multiImage/aspectRatioController.ts"],"names":[],"mappings":"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"}