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.
- package/README.md +41 -17
- package/dist/api/geminiClient.d.ts +2 -12
- package/dist/api/geminiClient.d.ts.map +1 -1
- package/dist/api/geminiClient.js +28 -56
- package/dist/api/geminiClient.js.map +1 -1
- package/dist/api/geminiTextClient.d.ts +42 -0
- package/dist/api/geminiTextClient.d.ts.map +1 -0
- package/dist/api/geminiTextClient.js +198 -0
- package/dist/api/geminiTextClient.js.map +1 -0
- package/dist/business/__tests__/mocks/mcpSamplingClient.mock.d.ts +84 -0
- package/dist/business/__tests__/mocks/mcpSamplingClient.mock.d.ts.map +1 -0
- package/dist/business/__tests__/mocks/mcpSamplingClient.mock.js +100 -0
- package/dist/business/__tests__/mocks/mcpSamplingClient.mock.js.map +1 -0
- package/dist/business/bestPracticesEngine.d.ts +149 -0
- package/dist/business/bestPracticesEngine.d.ts.map +1 -0
- package/dist/business/bestPracticesEngine.js +781 -0
- package/dist/business/bestPracticesEngine.js.map +1 -0
- package/dist/business/complexityAssessment.d.ts +132 -0
- package/dist/business/complexityAssessment.d.ts.map +1 -0
- package/dist/business/complexityAssessment.js +488 -0
- package/dist/business/complexityAssessment.js.map +1 -0
- package/dist/business/fallbackStrategies.d.ts +177 -0
- package/dist/business/fallbackStrategies.d.ts.map +1 -0
- package/dist/business/fallbackStrategies.js +368 -0
- package/dist/business/fallbackStrategies.js.map +1 -0
- package/dist/business/imageGenerator.d.ts.map +1 -1
- package/dist/business/imageGenerator.js +26 -5
- package/dist/business/imageGenerator.js.map +1 -1
- package/dist/business/multiImage/aspectRatioController.d.ts +77 -0
- package/dist/business/multiImage/aspectRatioController.d.ts.map +1 -0
- package/dist/business/multiImage/aspectRatioController.js +580 -0
- package/dist/business/multiImage/aspectRatioController.js.map +1 -0
- package/dist/business/multiImage/multiImageCoordinator.d.ts +142 -0
- package/dist/business/multiImage/multiImageCoordinator.d.ts.map +1 -0
- package/dist/business/multiImage/multiImageCoordinator.js +801 -0
- package/dist/business/multiImage/multiImageCoordinator.js.map +1 -0
- package/dist/business/pomlTemplateEngine.d.ts +206 -0
- package/dist/business/pomlTemplateEngine.d.ts.map +1 -0
- package/dist/business/pomlTemplateEngine.js +737 -0
- package/dist/business/pomlTemplateEngine.js.map +1 -0
- package/dist/business/promptOrchestrator.d.ts +173 -0
- package/dist/business/promptOrchestrator.d.ts.map +1 -0
- package/dist/business/promptOrchestrator.js +490 -0
- package/dist/business/promptOrchestrator.js.map +1 -0
- package/dist/business/responseBuilder.d.ts +2 -2
- package/dist/business/responseBuilder.d.ts.map +1 -1
- package/dist/business/responseBuilder.js +6 -1
- package/dist/business/responseBuilder.js.map +1 -1
- package/dist/business/structuredPromptGenerator.d.ts +54 -0
- package/dist/business/structuredPromptGenerator.d.ts.map +1 -0
- package/dist/business/structuredPromptGenerator.js +208 -0
- package/dist/business/structuredPromptGenerator.js.map +1 -0
- package/dist/business/templateNormalizer.d.ts +81 -0
- package/dist/business/templateNormalizer.d.ts.map +1 -0
- package/dist/business/templateNormalizer.js +659 -0
- package/dist/business/templateNormalizer.js.map +1 -0
- package/dist/documentation/apiContractValidation.d.ts +62 -0
- package/dist/documentation/apiContractValidation.d.ts.map +1 -0
- package/dist/documentation/apiContractValidation.js +305 -0
- package/dist/documentation/apiContractValidation.js.map +1 -0
- package/dist/infrastructure/concurrency/concurrencyManager.d.ts +101 -0
- package/dist/infrastructure/concurrency/concurrencyManager.d.ts.map +1 -0
- package/dist/infrastructure/concurrency/concurrencyManager.js +345 -0
- package/dist/infrastructure/concurrency/concurrencyManager.js.map +1 -0
- package/dist/infrastructure/config/secureConfigManager.d.ts +319 -0
- package/dist/infrastructure/config/secureConfigManager.d.ts.map +1 -0
- package/dist/infrastructure/config/secureConfigManager.js +600 -0
- package/dist/infrastructure/config/secureConfigManager.js.map +1 -0
- package/dist/infrastructure/errorHandling/orchestrationErrorHandler.d.ts +229 -0
- package/dist/infrastructure/errorHandling/orchestrationErrorHandler.d.ts.map +1 -0
- package/dist/infrastructure/errorHandling/orchestrationErrorHandler.js +61 -0
- package/dist/infrastructure/errorHandling/orchestrationErrorHandler.js.map +1 -0
- package/dist/infrastructure/errorHandling/orchestrationErrorHandlerImpl.d.ts +133 -0
- package/dist/infrastructure/errorHandling/orchestrationErrorHandlerImpl.d.ts.map +1 -0
- package/dist/infrastructure/errorHandling/orchestrationErrorHandlerImpl.js +569 -0
- package/dist/infrastructure/errorHandling/orchestrationErrorHandlerImpl.js.map +1 -0
- package/dist/infrastructure/mcp/MCPSamplingClient.d.ts +19 -0
- package/dist/infrastructure/mcp/MCPSamplingClient.d.ts.map +1 -0
- package/dist/infrastructure/mcp/MCPSamplingClient.js +31 -0
- package/dist/infrastructure/mcp/MCPSamplingClient.js.map +1 -0
- package/dist/infrastructure/mcp/RealMCPSamplingClient.d.ts +59 -0
- package/dist/infrastructure/mcp/RealMCPSamplingClient.d.ts.map +1 -0
- package/dist/infrastructure/mcp/RealMCPSamplingClient.js +271 -0
- package/dist/infrastructure/mcp/RealMCPSamplingClient.js.map +1 -0
- package/dist/infrastructure/metadata/generationMetadata.d.ts +72 -0
- package/dist/infrastructure/metadata/generationMetadata.d.ts.map +1 -0
- package/dist/infrastructure/metadata/generationMetadata.js +228 -0
- package/dist/infrastructure/metadata/generationMetadata.js.map +1 -0
- package/dist/infrastructure/monitoring/OrchestrationMetrics.d.ts +106 -0
- package/dist/infrastructure/monitoring/OrchestrationMetrics.d.ts.map +1 -0
- package/dist/infrastructure/monitoring/OrchestrationMetrics.js +456 -0
- package/dist/infrastructure/monitoring/OrchestrationMetrics.js.map +1 -0
- package/dist/infrastructure/monitoring/alertingSystem.d.ts +135 -0
- package/dist/infrastructure/monitoring/alertingSystem.d.ts.map +1 -0
- package/dist/infrastructure/monitoring/alertingSystem.js +549 -0
- package/dist/infrastructure/monitoring/alertingSystem.js.map +1 -0
- package/dist/infrastructure/optimization/performanceOptimizer.d.ts +89 -0
- package/dist/infrastructure/optimization/performanceOptimizer.d.ts.map +1 -0
- package/dist/infrastructure/optimization/performanceOptimizer.js +375 -0
- package/dist/infrastructure/optimization/performanceOptimizer.js.map +1 -0
- package/dist/infrastructure/security/AdvancedContentFilter.d.ts +99 -0
- package/dist/infrastructure/security/AdvancedContentFilter.d.ts.map +1 -0
- package/dist/infrastructure/security/AdvancedContentFilter.js +363 -0
- package/dist/infrastructure/security/AdvancedContentFilter.js.map +1 -0
- package/dist/infrastructure/security/MCPSecurityValidator.d.ts +62 -0
- package/dist/infrastructure/security/MCPSecurityValidator.d.ts.map +1 -0
- package/dist/infrastructure/security/MCPSecurityValidator.js +129 -0
- package/dist/infrastructure/security/MCPSecurityValidator.js.map +1 -0
- package/dist/infrastructure/security/OrchestrationSecurityMiddleware.d.ts +304 -0
- package/dist/infrastructure/security/OrchestrationSecurityMiddleware.d.ts.map +1 -0
- package/dist/infrastructure/security/OrchestrationSecurityMiddleware.js +61 -0
- package/dist/infrastructure/security/OrchestrationSecurityMiddleware.js.map +1 -0
- package/dist/infrastructure/security/OrchestrationSecurityMiddlewareImpl.d.ts +62 -0
- package/dist/infrastructure/security/OrchestrationSecurityMiddlewareImpl.d.ts.map +1 -0
- package/dist/infrastructure/security/OrchestrationSecurityMiddlewareImpl.js +591 -0
- package/dist/infrastructure/security/OrchestrationSecurityMiddlewareImpl.js.map +1 -0
- package/dist/infrastructure/security/SecureMCPClient.d.ts +154 -0
- package/dist/infrastructure/security/SecureMCPClient.d.ts.map +1 -0
- package/dist/infrastructure/security/SecureMCPClient.js +292 -0
- package/dist/infrastructure/security/SecureMCPClient.js.map +1 -0
- package/dist/infrastructure/security/SecurityIncidentManager.d.ts +142 -0
- package/dist/infrastructure/security/SecurityIncidentManager.d.ts.map +1 -0
- package/dist/infrastructure/security/SecurityIncidentManager.js +260 -0
- package/dist/infrastructure/security/SecurityIncidentManager.js.map +1 -0
- package/dist/infrastructure/security/apiKeyManager.d.ts +297 -0
- package/dist/infrastructure/security/apiKeyManager.d.ts.map +1 -0
- package/dist/infrastructure/security/apiKeyManager.js +254 -0
- package/dist/infrastructure/security/apiKeyManager.js.map +1 -0
- package/dist/infrastructure/security/dataSanitizer.d.ts +157 -0
- package/dist/infrastructure/security/dataSanitizer.d.ts.map +1 -0
- package/dist/infrastructure/security/dataSanitizer.js +525 -0
- package/dist/infrastructure/security/dataSanitizer.js.map +1 -0
- package/dist/infrastructure/validation/inputValidator.d.ts +54 -0
- package/dist/infrastructure/validation/inputValidator.d.ts.map +1 -0
- package/dist/infrastructure/validation/inputValidator.js +362 -0
- package/dist/infrastructure/validation/inputValidator.js.map +1 -0
- package/dist/integration/parameterOptimizer.d.ts +69 -0
- package/dist/integration/parameterOptimizer.d.ts.map +1 -0
- package/dist/integration/parameterOptimizer.js +317 -0
- package/dist/integration/parameterOptimizer.js.map +1 -0
- package/dist/integration/twoStageProcessor.d.ts +66 -0
- package/dist/integration/twoStageProcessor.d.ts.map +1 -0
- package/dist/integration/twoStageProcessor.js +348 -0
- package/dist/integration/twoStageProcessor.js.map +1 -0
- package/dist/server/handlers/structuredPromptHandler.d.ts +65 -0
- package/dist/server/handlers/structuredPromptHandler.d.ts.map +1 -0
- package/dist/server/handlers/structuredPromptHandler.js +314 -0
- package/dist/server/handlers/structuredPromptHandler.js.map +1 -0
- package/dist/server/mcpServer.d.ts +16 -35
- package/dist/server/mcpServer.d.ts.map +1 -1
- package/dist/server/mcpServer.js +111 -150
- package/dist/server/mcpServer.js.map +1 -1
- package/dist/server/mcpServerWithOrchestration.d.ts +98 -0
- package/dist/server/mcpServerWithOrchestration.d.ts.map +1 -0
- package/dist/server/mcpServerWithOrchestration.js +284 -0
- package/dist/server/mcpServerWithOrchestration.js.map +1 -0
- package/dist/types/mcpOrchestrationTypes.d.ts +135 -0
- package/dist/types/mcpOrchestrationTypes.d.ts.map +1 -0
- package/dist/types/mcpOrchestrationTypes.js +28 -0
- package/dist/types/mcpOrchestrationTypes.js.map +1 -0
- package/dist/types/multiImageTypes.d.ts +328 -0
- package/dist/types/multiImageTypes.d.ts.map +1 -0
- package/dist/types/multiImageTypes.js +27 -0
- package/dist/types/multiImageTypes.js.map +1 -0
- package/dist/types/performanceTypes.d.ts +300 -0
- package/dist/types/performanceTypes.d.ts.map +1 -0
- package/dist/types/performanceTypes.js +50 -0
- package/dist/types/performanceTypes.js.map +1 -0
- package/dist/types/twoStageTypes.d.ts +123 -0
- package/dist/types/twoStageTypes.d.ts.map +1 -0
- package/dist/types/twoStageTypes.js +7 -0
- package/dist/types/twoStageTypes.js.map +1 -0
- package/dist/utils/config.d.ts +1 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +1 -0
- package/dist/utils/config.js.map +1 -1
- package/package.json +11 -4
- 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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"}
|