@umituz/react-native-ai-generation-content 1.46.0 → 1.47.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 (33) hide show
  1. package/package.json +1 -1
  2. package/src/domains/generation/wizard/infrastructure/strategies/image-generation.executor.ts +1 -0
  3. package/src/domains/generation/wizard/infrastructure/strategies/image-generation.strategy.ts +2 -1
  4. package/src/domains/generation/wizard/infrastructure/strategies/image-generation.types.ts +3 -0
  5. package/src/domains/generation/wizard/infrastructure/strategies/shared/unified-prompt-builder.ts +16 -4
  6. package/src/domains/generation/wizard/presentation/hooks/wizard-generation.types.ts +3 -1
  7. package/src/domains/prompts/domain/entities/MultiPersonPromptStructure.ts +56 -1
  8. package/src/domains/prompts/domain/repositories/IAIPromptServices.ts +4 -83
  9. package/src/domains/prompts/index.ts +7 -53
  10. package/src/domains/scenarios/domain/Scenario.ts +8 -0
  11. package/src/domains/scenarios/index.ts +1 -1
  12. package/src/domains/prompts/domain/entities/BackgroundRemovalConfig.ts +0 -86
  13. package/src/domains/prompts/domain/entities/ColorizationConfig.ts +0 -101
  14. package/src/domains/prompts/domain/entities/FaceSwapConfig.ts +0 -54
  15. package/src/domains/prompts/domain/entities/FuturePredictionConfig.ts +0 -94
  16. package/src/domains/prompts/domain/entities/ImageEnhancementConfig.ts +0 -93
  17. package/src/domains/prompts/domain/entities/PhotoRestorationConfig.ts +0 -64
  18. package/src/domains/prompts/domain/entities/StyleTransferConfig.ts +0 -80
  19. package/src/domains/prompts/domain/entities/TextGenerationConfig.ts +0 -100
  20. package/src/domains/prompts/infrastructure/services/AIServiceProcessor.ts +0 -142
  21. package/src/domains/prompts/infrastructure/services/BackgroundRemovalService.ts +0 -75
  22. package/src/domains/prompts/infrastructure/services/ColorizationService.ts +0 -90
  23. package/src/domains/prompts/infrastructure/services/FaceSwapService.ts +0 -106
  24. package/src/domains/prompts/infrastructure/services/FuturePredictionService.ts +0 -129
  25. package/src/domains/prompts/infrastructure/services/ImageEnhancementService.ts +0 -75
  26. package/src/domains/prompts/infrastructure/services/PhotoRestorationService.ts +0 -82
  27. package/src/domains/prompts/infrastructure/services/StyleTransferService.ts +0 -94
  28. package/src/domains/prompts/infrastructure/services/TextGenerationService.ts +0 -90
  29. package/src/domains/prompts/presentation/hooks/useAIServices.ts +0 -99
  30. package/src/domains/prompts/presentation/hooks/useFaceSwap.ts +0 -97
  31. package/src/domains/prompts/presentation/hooks/useImageEnhancement.ts +0 -98
  32. package/src/domains/prompts/presentation/hooks/usePhotoRestoration.ts +0 -98
  33. package/src/domains/prompts/presentation/hooks/useStyleTransfer.ts +0 -123
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umituz/react-native-ai-generation-content",
3
- "version": "1.46.0",
3
+ "version": "1.47.0",
4
4
  "description": "Provider-agnostic AI generation orchestration for React Native with result preview components",
5
5
  "main": "src/index.ts",
6
6
  "types": "src/index.ts",
@@ -32,6 +32,7 @@ function buildFinalPrompt(input: WizardImageInput, imageUrls: string[]): string
32
32
  basePrompt: input.prompt,
33
33
  photoCount: imageUrls.length,
34
34
  interactionStyle: input.interactionStyle,
35
+ promptType: input.promptType,
35
36
  });
36
37
  }
37
38
 
@@ -47,8 +47,9 @@ export async function buildImageInput(
47
47
  const styleValue = extractSelection(wizardData.style);
48
48
  const style = typeof styleValue === "string" ? styleValue : undefined;
49
49
  const interactionStyle = (scenario.interactionStyle as InteractionStyle) ?? "romantic";
50
+ const promptType = scenario.promptType;
50
51
 
51
- return { photos, prompt: finalPrompt, style, interactionStyle };
52
+ return { photos, prompt: finalPrompt, style, interactionStyle, promptType };
52
53
  }
53
54
 
54
55
  /**
@@ -5,6 +5,7 @@
5
5
 
6
6
  import type { InteractionStyle } from "../../../../prompts/infrastructure/builders/interaction-style-builder";
7
7
  import type { WizardScenarioData } from "../../presentation/hooks/useWizardGeneration";
8
+ import type { ScenarioPromptType } from "../../../../scenarios/domain/Scenario";
8
9
 
9
10
  export interface WizardImageInput {
10
11
  /** Photos are optional for text-to-image */
@@ -14,6 +15,8 @@ export interface WizardImageInput {
14
15
  readonly interactionStyle?: InteractionStyle;
15
16
  /** Optional style from wizard selection */
16
17
  readonly style?: string;
18
+ /** Prompt type - identity preservation or genetic blend */
19
+ readonly promptType?: ScenarioPromptType;
17
20
  }
18
21
 
19
22
  export interface WizardImageResult {
@@ -5,8 +5,12 @@
5
5
  * Uses createPhotorealisticPrompt for text-only scenarios
6
6
  */
7
7
 
8
- import { createMultiPersonPrompt } from "../../../../../prompts/domain/entities/MultiPersonPromptStructure";
8
+ import {
9
+ createMultiPersonPrompt,
10
+ createGeneticBlendPrompt,
11
+ } from "../../../../../prompts/domain/entities/MultiPersonPromptStructure";
9
12
  import { createPhotorealisticPrompt } from "../../../../../prompts/domain/entities/BasePromptStructure";
13
+ import type { ScenarioPromptType } from "../../../../../scenarios/domain/Scenario";
10
14
 
11
15
  export interface BuildPromptOptions {
12
16
  /** Base scenario prompt (aiPrompt from scenario config) */
@@ -15,15 +19,18 @@ export interface BuildPromptOptions {
15
19
  readonly photoCount: number;
16
20
  /** Interaction style from scenario (optional - only if scenario specifies it) */
17
21
  readonly interactionStyle?: string;
22
+ /** Prompt type - identity preservation or genetic blend */
23
+ readonly promptType?: ScenarioPromptType;
18
24
  }
19
25
 
20
26
  /**
21
27
  * Build unified prompt for any generation type
22
- * - Photo-based: Uses createMultiPersonPrompt with @image1, @image2 references
28
+ * - Photo-based identity: Uses createMultiPersonPrompt with @image1, @image2 references
29
+ * - Photo-based genetic_blend: Uses createGeneticBlendPrompt for child prediction
23
30
  * - Text-only: Uses createPhotorealisticPrompt with identity preservation
24
31
  */
25
32
  export function buildUnifiedPrompt(options: BuildPromptOptions): string {
26
- const { basePrompt, photoCount, interactionStyle } = options;
33
+ const { basePrompt, photoCount, interactionStyle, promptType } = options;
27
34
 
28
35
  // Text-only generation (no photos)
29
36
  if (photoCount === 0) {
@@ -34,7 +41,12 @@ export function buildUnifiedPrompt(options: BuildPromptOptions): string {
34
41
  });
35
42
  }
36
43
 
37
- // Photo-based generation - use multi-person prompt with @imageN references
44
+ // Genetic blend for child prediction scenarios
45
+ if (promptType === "genetic_blend") {
46
+ return createGeneticBlendPrompt(basePrompt);
47
+ }
48
+
49
+ // Default: Photo-based generation with identity preservation
38
50
  let finalPrompt = createMultiPersonPrompt(basePrompt, photoCount);
39
51
 
40
52
  // Add interaction style if specified by scenario (no defaults)
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import type { AlertMessages } from "../../../../../presentation/hooks/generation/types";
7
- import type { ScenarioInputType } from "../../../../scenarios/domain/Scenario";
7
+ import type { ScenarioInputType, ScenarioPromptType } from "../../../../scenarios/domain/Scenario";
8
8
 
9
9
  export type WizardOutputType = "image" | "video";
10
10
 
@@ -14,6 +14,8 @@ export interface WizardScenarioData {
14
14
  readonly outputType?: WizardOutputType;
15
15
  /** Input type - determines required photo count. Default: "single" */
16
16
  readonly inputType?: ScenarioInputType;
17
+ /** Prompt type - identity preservation or genetic blend */
18
+ readonly promptType?: ScenarioPromptType;
17
19
  readonly model?: string;
18
20
  readonly title?: string;
19
21
  readonly description?: string;
@@ -3,7 +3,6 @@ import { IDENTITY_PRESERVATION_CORE, NATURAL_POSE_GUIDELINES, PHOTOREALISTIC_REN
3
3
  /**
4
4
  * Multi-person identity preservation rules
5
5
  * Ensures all people maintain their identities with strict rules
6
- * Supports any number of people (1, 2, 3, N)
7
6
  */
8
7
  export interface MultiPersonPreservationRules {
9
8
  requirement: string;
@@ -23,6 +22,28 @@ export const MULTI_PERSON_PRESERVATION_RULES: MultiPersonPreservationRules = {
23
22
  positioning: "Natural positioning, all looking at camera with natural expressions",
24
23
  };
25
24
 
25
+ /**
26
+ * Genetic blend rules for child prediction scenarios
27
+ * Creates a new face by blending features from parent photos
28
+ * Optimized for FAL AI / Nano Banana Edit semantic understanding
29
+ */
30
+ export const GENETIC_BLEND_RULES = {
31
+ requirement: "Create a COMPLETELY NEW child face by intelligently blending genetic features from both parents",
32
+ blendingRules: [
33
+ "Extract and analyze facial genetics from parent 1 (eye color, face shape, skin tone, hair color)",
34
+ "Extract and analyze facial genetics from parent 2 (eye color, face shape, skin tone, hair color)",
35
+ "Generate a NEW child face that naturally combines inherited traits from BOTH parents",
36
+ "The child must look like a realistic biological offspring - not a copy of either parent",
37
+ "Apply realistic child facial proportions (larger eyes, rounder cheeks, smaller nose)",
38
+ ],
39
+ forbidden: [
40
+ "NEVER show or copy either parent's face in the output",
41
+ "NEVER use parent photos directly - only extract genetic features for blending",
42
+ "Do NOT create an adult face - maintain child proportions",
43
+ "Do NOT favor one parent over the other - blend features equally",
44
+ ],
45
+ };
46
+
26
47
  /**
27
48
  * Creates a multi-person prompt dynamically
28
49
  *
@@ -57,3 +78,37 @@ ${NATURAL_POSE_GUIDELINES}
57
78
  SCENARIO DESCRIPTION:
58
79
  ${scenarioPrompt}`;
59
80
  };
81
+
82
+ /**
83
+ * Creates a genetic blend prompt for child prediction scenarios
84
+ * Instead of preserving identities, it blends parent features to create a child
85
+ * Optimized for FAL AI Nano Banana Edit's semantic understanding
86
+ *
87
+ * @param scenarioPrompt - The scenario description
88
+ * @returns Complete prompt with genetic blending instructions
89
+ */
90
+ export const createGeneticBlendPrompt = (scenarioPrompt: string): string => {
91
+ return `GENETIC CHILD PREDICTION - CRITICAL INSTRUCTIONS:
92
+
93
+ You are creating a PREDICTION of what a child would look like based on two parent reference images.
94
+
95
+ IMPORTANT: This is NOT a face swap or identity preservation task.
96
+ - The parent photos are ONLY for extracting genetic traits (eye color, face shape, skin tone, hair)
97
+ - You must CREATE a completely NEW child face that combines features from BOTH parents
98
+ - The output should show ONLY the child - never show or copy the parent faces
99
+
100
+ GENETIC EXTRACTION FROM REFERENCE IMAGES:
101
+ - From reference image 1: Extract eye color, face shape, skin tone, hair color/texture
102
+ - From reference image 2: Extract eye color, face shape, skin tone, hair color/texture
103
+
104
+ CHILD GENERATION RULES:
105
+ ${GENETIC_BLEND_RULES.blendingRules.map(rule => `- ${rule}`).join("\n")}
106
+
107
+ STRICTLY FORBIDDEN:
108
+ ${GENETIC_BLEND_RULES.forbidden.map(rule => `- ${rule}`).join("\n")}
109
+
110
+ ${PHOTOREALISTIC_RENDERING}
111
+
112
+ SCENARIO TO GENERATE:
113
+ ${scenarioPrompt}`;
114
+ };
@@ -1,81 +1,10 @@
1
1
  import type { AIPromptTemplate } from '../entities/AIPromptTemplate';
2
2
  import type { AIPromptResult } from '../entities/types';
3
- import type { FaceSwapConfig } from '../entities/FaceSwapConfig';
4
- import type {
5
- PhotoRestorationConfig
6
- } from '../entities/PhotoRestorationConfig';
7
- import type {
8
- ImageEnhancementConfig,
9
- EnhancementAdjustments
10
- } from '../entities/ImageEnhancementConfig';
11
- import type {
12
- StyleTransferConfig
13
- } from '../entities/StyleTransferConfig';
14
- import type {
15
- BackgroundRemovalConfig
16
- } from '../entities/BackgroundRemovalConfig';
17
- import type {
18
- TextGenerationConfig
19
- } from '../entities/TextGenerationConfig';
20
- import type {
21
- ColorizationConfig
22
- } from '../entities/ColorizationConfig';
23
- import type {
24
- FuturePredictionConfig,
25
- FuturePredictionResult,
26
- } from '../entities/FuturePredictionConfig';
27
-
28
- export interface IFaceSwapService {
29
- generateTemplate(config: FaceSwapConfig): Promise<AIPromptResult<AIPromptTemplate>>;
30
- generatePrompt(template: AIPromptTemplate, config: FaceSwapConfig): Promise<AIPromptResult<string>>;
31
- validateConfig(config: FaceSwapConfig): boolean;
32
- getAvailableStyles(): Promise<string[]>;
33
- }
34
-
35
- export interface IPhotoRestorationService {
36
- generateTemplate(config: PhotoRestorationConfig): Promise<AIPromptResult<AIPromptTemplate>>;
37
- generatePrompt(template: AIPromptTemplate, config: PhotoRestorationConfig): Promise<AIPromptResult<string>>;
38
- validateConfig(config: PhotoRestorationConfig): boolean;
39
- estimateQuality(config: PhotoRestorationConfig): number;
40
- }
41
-
42
- export interface IImageEnhancementService {
43
- generateTemplate(config: ImageEnhancementConfig): Promise<AIPromptResult<AIPromptTemplate>>;
44
- generatePrompt(template: AIPromptTemplate, config: ImageEnhancementConfig): Promise<AIPromptResult<string>>;
45
- validateConfig(config: ImageEnhancementConfig): boolean;
46
- calculateAdjustments(config: ImageEnhancementConfig): EnhancementAdjustments;
47
- }
48
-
49
- export interface IStyleTransferService {
50
- generateTemplate(config: StyleTransferConfig): Promise<AIPromptResult<AIPromptTemplate>>;
51
- generatePrompt(template: AIPromptTemplate, config: StyleTransferConfig): Promise<AIPromptResult<string>>;
52
- validateConfig(config: StyleTransferConfig): boolean;
53
- getAvailableStyles(): Promise<string[]>;
54
- }
55
-
56
- export interface IBackgroundRemovalService {
57
- generateTemplate(config: BackgroundRemovalConfig): Promise<AIPromptResult<AIPromptTemplate>>;
58
- generatePrompt(template: AIPromptTemplate, config: BackgroundRemovalConfig): Promise<AIPromptResult<string>>;
59
- validateConfig(config: BackgroundRemovalConfig): boolean;
60
- estimateProcessingTime(config: BackgroundRemovalConfig): number;
61
- }
62
-
63
- export interface ITextGenerationService {
64
- generateTemplate(config: TextGenerationConfig): Promise<AIPromptResult<AIPromptTemplate>>;
65
- generatePrompt(template: AIPromptTemplate, config: TextGenerationConfig): Promise<AIPromptResult<string>>;
66
- validateConfig(config: TextGenerationConfig): boolean;
67
- estimateTokens(config: TextGenerationConfig): number;
68
- getGenerationParameters(config: TextGenerationConfig): Record<string, number>;
69
- }
70
-
71
- export interface IColorizationService {
72
- generateTemplate(config: ColorizationConfig): Promise<AIPromptResult<AIPromptTemplate>>;
73
- generatePrompt(template: AIPromptTemplate, config: ColorizationConfig): Promise<AIPromptResult<string>>;
74
- validateConfig(config: ColorizationConfig): boolean;
75
- getColorPalette(config: ColorizationConfig): string[];
76
- getQualityScore(config: ColorizationConfig): number;
77
- }
78
3
 
4
+ /**
5
+ * Prompt Generation Service Interface
6
+ * Core service for generating prompts from templates
7
+ */
79
8
  export interface IPromptGenerationService {
80
9
  generateFromTemplate(
81
10
  template: AIPromptTemplate,
@@ -90,11 +19,3 @@ export interface IPromptGenerationService {
90
19
  variables: Record<string, unknown>
91
20
  ): string;
92
21
  }
93
-
94
- export interface IFuturePredictionService {
95
- generateTemplate(config: FuturePredictionConfig): Promise<AIPromptResult<AIPromptTemplate>>;
96
- generatePrompts(config: FuturePredictionConfig): Promise<AIPromptResult<FuturePredictionResult>>;
97
- validateConfig(config: FuturePredictionConfig): boolean;
98
- buildImagePrompt(config: FuturePredictionConfig): string;
99
- buildStoryPrompt(config: FuturePredictionConfig): string;
100
- }
@@ -12,69 +12,24 @@ export { createAIPromptTemplate, updateTemplateVersion, getTemplateString } from
12
12
  export type { GeneratedPrompt, CreateGeneratedPromptParams } from './domain/entities/GeneratedPrompt';
13
13
  export { createGeneratedPrompt, isPromptRecent } from './domain/entities/GeneratedPrompt';
14
14
 
15
- export type { FaceSwapConfig, FaceSwapTemplate, FaceSwapTemplateVariable, FaceSwapSafety, FaceSwapGenerationResult } from './domain/entities/FaceSwapConfig';
16
- export { validateFaceSwapConfig, createFaceSwapVariable } from './domain/entities/FaceSwapConfig';
17
-
18
- export type { PhotoRestorationConfig, PhotoRestorationTemplate, PhotoRestorationVariable, PhotoRestorationQuality, PhotoRestorationResult } from './domain/entities/PhotoRestorationConfig';
19
- export { validatePhotoRestorationConfig, createPhotoRestorationVariable, getQualityLevel } from './domain/entities/PhotoRestorationConfig';
20
-
21
- export type { ImageEnhancementConfig, ImageEnhancementTemplate, ImageEnhancementVariable, EnhancementSettings, ImageEnhancementResult, EnhancementAdjustments } from './domain/entities/ImageEnhancementConfig';
22
- export { validateImageEnhancementConfig, createImageEnhancementVariable, calculateAdjustments } from './domain/entities/ImageEnhancementConfig';
23
-
24
- export type { StyleTransferConfig, StyleTransferTemplate, StyleTransferVariable, StyleTransferSettings, StyleTransferResult } from './domain/entities/StyleTransferConfig';
25
- export { validateStyleTransferConfig, createStyleTransferVariable, getStyleStrengthValue, getArtisticModeDescription } from './domain/entities/StyleTransferConfig';
26
-
27
- export type { BackgroundRemovalConfig, BackgroundRemovalTemplate, BackgroundRemovalVariable, BackgroundRemovalSettings, BackgroundRemovalResult, DetectedObject } from './domain/entities/BackgroundRemovalConfig';
28
- export { validateBackgroundRemovalConfig, createBackgroundRemovalVariable, getProcessingTime, getQualityScore } from './domain/entities/BackgroundRemovalConfig';
29
-
30
- export type { TextGenerationConfig, TextGenerationTemplate, TextGenerationVariable, TextGenerationSettings, TextGenerationResult } from './domain/entities/TextGenerationConfig';
31
- export { validateTextGenerationConfig, createTextGenerationVariable, getTokenCount, getTemperature, getTopP } from './domain/entities/TextGenerationConfig';
32
-
33
- export type { ColorizationConfig, ColorizationTemplate, ColorizationVariable, ColorizationSettings, ColorizationResult } from './domain/entities/ColorizationConfig';
34
- export { validateColorizationConfig, createColorizationVariable, getColorizationQuality, getEraDescription, getSuggestedColorPalette } from './domain/entities/ColorizationConfig';
35
-
36
- export type { FuturePredictionConfig, FuturePredictionTemplate, FuturePredictionVariable, FuturePredictionSettings, FuturePredictionResult, FuturePredictionMetadata, FuturePredictionOutputType } from './domain/entities/FuturePredictionConfig';
37
- export { validateFuturePredictionConfig, createFuturePredictionVariable, getFutureYear } from './domain/entities/FuturePredictionConfig';
38
- export { IDENTITY_INSTRUCTION, createScenarioPrompt } from './infrastructure/services/FuturePredictionService';
39
-
15
+ // Repository interfaces and implementations
40
16
  export type { ITemplateRepository } from './domain/repositories/ITemplateRepository';
41
17
  export type { IPromptHistoryRepository } from './domain/repositories/IPromptHistoryRepository';
42
- export type { IFaceSwapService, IPhotoRestorationService, IImageEnhancementService, IStyleTransferService, IBackgroundRemovalService, ITextGenerationService, IColorizationService, IPromptGenerationService, IFuturePredictionService } from './domain/repositories/IAIPromptServices';
18
+ export type { IPromptGenerationService } from './domain/repositories/IAIPromptServices';
43
19
 
44
20
  export { TemplateRepository } from './infrastructure/repositories/TemplateRepository';
45
21
  export { PromptHistoryRepository } from './infrastructure/repositories/PromptHistoryRepository';
46
-
47
22
  export { PromptGenerationService } from './infrastructure/services/PromptGenerationService';
48
- export { FaceSwapService } from './infrastructure/services/FaceSwapService';
49
- export { PhotoRestorationService } from './infrastructure/services/PhotoRestorationService';
50
- export { ImageEnhancementService } from './infrastructure/services/ImageEnhancementService';
51
- export { StyleTransferService } from './infrastructure/services/StyleTransferService';
52
- export { BackgroundRemovalService } from './infrastructure/services/BackgroundRemovalService';
53
- export { TextGenerationService } from './infrastructure/services/TextGenerationService';
54
- export { ColorizationService } from './infrastructure/services/ColorizationService';
55
- export { FuturePredictionService } from './infrastructure/services/FuturePredictionService';
56
23
 
24
+ // Async state hook
57
25
  export type { AsyncState, AsyncActions } from './presentation/hooks/useAsyncState';
58
26
  export { useAsyncState } from './presentation/hooks/useAsyncState';
59
27
 
28
+ // Template repository hook
60
29
  export type { UseTemplateState, UseTemplateActions } from './presentation/hooks/useTemplateRepository';
61
30
  export { useTemplateRepository } from './presentation/hooks/useTemplateRepository';
62
31
 
63
- export type { UseFaceSwapState, UseFaceSwapActions } from './presentation/hooks/useFaceSwap';
64
- export { useFaceSwap } from './presentation/hooks/useFaceSwap';
65
-
66
- export type { UsePhotoRestorationState, UsePhotoRestorationActions } from './presentation/hooks/usePhotoRestoration';
67
- export { usePhotoRestoration } from './presentation/hooks/usePhotoRestoration';
68
-
69
- export type { UseImageEnhancementState, UseImageEnhancementActions } from './presentation/hooks/useImageEnhancement';
70
- export { useImageEnhancement } from './presentation/hooks/useImageEnhancement';
71
-
72
- export type { UseStyleTransferState, UseStyleTransferActions } from './presentation/hooks/useStyleTransfer';
73
- export { useStyleTransfer } from './presentation/hooks/useStyleTransfer';
74
-
75
- export type { UseAIServicesState, UseAIServicesActions } from './presentation/hooks/useAIServices';
76
- export { useAIServices } from './presentation/hooks/useAIServices';
77
-
32
+ // Prompt generation hook
78
33
  export type { UsePromptGenerationState, UsePromptGenerationActions } from './presentation/hooks/usePromptGeneration';
79
34
  export { usePromptGeneration } from './presentation/hooks/usePromptGeneration';
80
35
 
@@ -97,7 +52,9 @@ export type { CreatePromptOptions } from './domain/entities/BasePromptStructure'
97
52
 
98
53
  export {
99
54
  MULTI_PERSON_PRESERVATION_RULES,
55
+ GENETIC_BLEND_RULES,
100
56
  createMultiPersonPrompt,
57
+ createGeneticBlendPrompt,
101
58
  } from './domain/entities/MultiPersonPromptStructure';
102
59
  export type { MultiPersonPreservationRules } from './domain/entities/MultiPersonPromptStructure';
103
60
 
@@ -114,6 +71,3 @@ export {
114
71
  getInteractionForbidden,
115
72
  } from './infrastructure/builders/interaction-style-builder';
116
73
  export type { InteractionStyle, InteractionStyleOptions } from './infrastructure/builders/interaction-style-builder';
117
-
118
- export { AIServiceProcessor } from './infrastructure/services/AIServiceProcessor';
119
- export type { AIConfig, AIServices, ProcessResult } from './infrastructure/services/AIServiceProcessor';
@@ -13,6 +13,13 @@ export type ScenarioOutputType = "image" | "video";
13
13
 
14
14
  export type ScenarioInputType = "single" | "dual" | "text";
15
15
 
16
+ /**
17
+ * Prompt type determines how multi-person prompts are built
18
+ * - identity: Preserve exact facial features from input photos (default)
19
+ * - genetic_blend: Create new face by blending features from multiple inputs (for child prediction)
20
+ */
21
+ export type ScenarioPromptType = "identity" | "genetic_blend";
22
+
16
23
  export interface GeneratingMessages {
17
24
  title?: string;
18
25
  waitMessage?: string;
@@ -33,6 +40,7 @@ export interface Scenario {
33
40
  hidden?: boolean;
34
41
  outputType?: ScenarioOutputType;
35
42
  inputType?: ScenarioInputType;
43
+ promptType?: ScenarioPromptType;
36
44
  model?: string;
37
45
  enabled?: boolean;
38
46
  generatingMessages?: GeneratingMessages;
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  // Types
7
- export type { ScenarioOutputType, ScenarioInputType, GeneratingMessages } from "./domain/Scenario";
7
+ export type { ScenarioOutputType, ScenarioInputType, ScenarioPromptType, GeneratingMessages } from "./domain/Scenario";
8
8
  export { ScenarioCategory, ScenarioId } from "./domain/Scenario";
9
9
  export type { Scenario } from "./domain/Scenario";
10
10
 
@@ -1,86 +0,0 @@
1
- import type { AIPromptTemplate } from './AIPromptTemplate';
2
-
3
- export interface BackgroundRemovalConfig {
4
- precision: 'fast' | 'accurate' | 'ultra-accurate';
5
- edgeRefinement: boolean;
6
- preserveHair: boolean;
7
- outputFormat: 'png' | 'webp' | 'transparent';
8
- addNewBackground?: string;
9
- }
10
-
11
- export interface BackgroundRemovalTemplate {
12
- readonly id: string;
13
- readonly name: string;
14
- readonly description: string;
15
- readonly basePrompt: string;
16
- readonly variables: BackgroundRemovalVariable[];
17
- readonly processing: BackgroundRemovalSettings;
18
- }
19
-
20
- export interface BackgroundRemovalVariable {
21
- name: string;
22
- description: string;
23
- required: boolean;
24
- options?: string[];
25
- }
26
-
27
- export interface BackgroundRemovalSettings {
28
- supportedFormats: string[];
29
- maxResolution: number;
30
- processingTimes: Record<string, number>;
31
- }
32
-
33
- export interface BackgroundRemovalResult {
34
- template: AIPromptTemplate;
35
- config: BackgroundRemovalConfig;
36
- estimatedProcessingTime: number;
37
- qualityScore: number;
38
- }
39
-
40
- export interface DetectedObject {
41
- type: string;
42
- confidence: number;
43
- boundingBox: {
44
- x: number;
45
- y: number;
46
- width: number;
47
- height: number;
48
- };
49
- }
50
-
51
- export const validateBackgroundRemovalConfig = (config: BackgroundRemovalConfig): boolean => {
52
- return !!(
53
- config.precision &&
54
- config.outputFormat &&
55
- ['png', 'webp', 'transparent'].includes(config.outputFormat)
56
- );
57
- };
58
-
59
- export const createBackgroundRemovalVariable = (
60
- name: string,
61
- description: string,
62
- required: boolean = true,
63
- options?: string[]
64
- ): BackgroundRemovalVariable => ({
65
- name,
66
- description,
67
- required,
68
- options,
69
- });
70
-
71
- export const getProcessingTime = (precision: BackgroundRemovalConfig['precision']): number => {
72
- switch (precision) {
73
- case 'fast': return 2;
74
- case 'accurate': return 5;
75
- case 'ultra-accurate': return 10;
76
- default: return 5;
77
- }
78
- };
79
-
80
- export const getQualityScore = (config: BackgroundRemovalConfig): number => {
81
- let score = config.edgeRefinement ? 0.9 : 0.7;
82
- if (config.preserveHair) score += 0.05;
83
- if (config.precision === 'ultra-accurate') score += 0.15;
84
- if (config.precision === 'accurate') score += 0.1;
85
- return Math.min(score, 1.0);
86
- };
@@ -1,101 +0,0 @@
1
- import type { AIPromptTemplate } from './AIPromptTemplate';
2
-
3
- export interface ColorizationConfig {
4
- targetType: 'black-and-white' | 'sepia' | 'faded' | 'damaged';
5
- colorMode: 'realistic' | 'vibrant' | 'artistic' | 'vintage';
6
- preserveOriginal: boolean;
7
- adjustLighting: boolean;
8
- skinTonePreservation: boolean;
9
- era?: '1920s' | '1940s' | '1960s' | '1980s' | 'victorian';
10
- }
11
-
12
- export interface ColorizationTemplate {
13
- readonly id: string;
14
- readonly name: string;
15
- readonly description: string;
16
- readonly basePrompt: string;
17
- readonly variables: ColorizationVariable[];
18
- readonly colorization: ColorizationSettings;
19
- }
20
-
21
- export interface ColorizationVariable {
22
- name: string;
23
- description: string;
24
- required: boolean;
25
- options?: string[];
26
- }
27
-
28
- export interface ColorizationSettings {
29
- supportedModes: string[];
30
- eraPresets: Record<string, string>;
31
- skinToneAdjustments: number;
32
- }
33
-
34
- export interface ColorizationResult {
35
- template: AIPromptTemplate;
36
- config: ColorizationConfig;
37
- qualityScore: number;
38
- colorPalette?: string[];
39
- }
40
-
41
- export const validateColorizationConfig = (config: ColorizationConfig): boolean => {
42
- return !!(
43
- config.targetType &&
44
- config.colorMode &&
45
- ['realistic', 'vibrant', 'artistic', 'vintage'].includes(config.colorMode)
46
- );
47
- };
48
-
49
- export const createColorizationVariable = (
50
- name: string,
51
- description: string,
52
- required: boolean = true,
53
- options?: string[]
54
- ): ColorizationVariable => ({
55
- name,
56
- description,
57
- required,
58
- options,
59
- });
60
-
61
- export const getColorizationQuality = (config: ColorizationConfig): number => {
62
- let quality = 0.8;
63
-
64
- if (config.preserveOriginal) quality += 0.1;
65
- if (config.skinTonePreservation) quality += 0.05;
66
- if (config.colorMode === 'realistic') quality += 0.1;
67
- if (config.targetType === 'black-and-white') quality += 0.05;
68
-
69
- return Math.min(quality, 1.0);
70
- };
71
-
72
- export const getEraDescription = (era?: string): string => {
73
- switch (era) {
74
- case '1920s': return '1920s vintage aesthetic with soft colors';
75
- case '1940s': return '1940s wartime color palette';
76
- case '1960s': return '1960s vibrant, saturated colors';
77
- case '1980s': return '1980s neon and pastel tones';
78
- case 'victorian': return 'Victorian era muted, elegant colors';
79
- default: return 'Historically appropriate color palette';
80
- }
81
- };
82
-
83
- export const getSuggestedColorPalette = (
84
- targetType: ColorizationConfig['targetType'],
85
- colorMode: ColorizationConfig['colorMode']
86
- ): string[] => {
87
- switch (targetType) {
88
- case 'black-and-white':
89
- return colorMode === 'vibrant'
90
- ? ['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FFEAA7']
91
- : ['#2C3E50', '#34495E', '#7F8C8D', '#95A5A6', '#BDC3C7'];
92
- case 'sepia':
93
- return ['#8B7355', '#A0826D', '#BC9A6A', '#D2B48C', '#DEB887'];
94
- case 'faded':
95
- return ['#E27D60', '#41B3A3', '#85DCBA', '#C1E1DC', '#E8DDCB'];
96
- case 'damaged':
97
- return ['#C9302C', '#F0AD4E', '#5BC0DE', '#5CB85C'];
98
- default:
99
- return [];
100
- }
101
- };
@@ -1,54 +0,0 @@
1
- import type { AIPromptTemplate } from './AIPromptTemplate';
2
- import type { GeneratedPrompt } from './GeneratedPrompt';
3
-
4
- export interface FaceSwapConfig {
5
- preserveIdentity: boolean;
6
- allowHairStyle: boolean;
7
- allowAccessories: boolean;
8
- allowExpression: boolean;
9
- environment?: string;
10
- styleName: string;
11
- }
12
-
13
- export interface FaceSwapTemplate {
14
- readonly id: string;
15
- readonly name: string;
16
- readonly description: string;
17
- readonly basePrompt: string;
18
- readonly variables: FaceSwapTemplateVariable[];
19
- readonly safety: FaceSwapSafety;
20
- }
21
-
22
- export interface FaceSwapTemplateVariable {
23
- name: string;
24
- description: string;
25
- required: boolean;
26
- options?: string[];
27
- }
28
-
29
- export interface FaceSwapSafety {
30
- contentFilter: boolean;
31
- identityPreservation: boolean;
32
- adultContentFilter: boolean;
33
- }
34
-
35
- export interface FaceSwapGenerationResult {
36
- template: AIPromptTemplate;
37
- prompt: GeneratedPrompt;
38
- }
39
-
40
- export const validateFaceSwapConfig = (config: FaceSwapConfig): boolean => {
41
- return !!(config.styleName && config.styleName.trim().length > 0);
42
- };
43
-
44
- export const createFaceSwapVariable = (
45
- name: string,
46
- description: string,
47
- required: boolean = true,
48
- options?: string[]
49
- ): FaceSwapTemplateVariable => ({
50
- name,
51
- description,
52
- required,
53
- options,
54
- });