@umituz/react-native-ai-generation-content 1.26.2 → 1.26.4
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/package.json +3 -2
- package/src/domains/generation/application/feature-registry.ts +101 -0
- package/src/domains/generation/application/generation-strategy.factory.ts +128 -0
- package/src/domains/generation/domain/feature-config.types.ts +61 -0
- package/src/domains/generation/domain/generation.types.ts +74 -0
- package/src/domains/generation/index.ts +37 -0
- package/src/domains/generation/presentation/useAIGeneration.hook.ts +106 -0
- package/src/domains/wizard/infrastructure/strategies/wizard-strategy.factory.ts +3 -4
- package/src/index.ts +1 -25
- package/src/infrastructure/executors/executor-factory.ts +53 -0
- package/src/infrastructure/executors/image-executor.ts +133 -0
- package/src/infrastructure/executors/video-executor.ts +130 -0
- package/src/features/ai-hug/README.md +0 -438
- package/src/features/ai-hug/domain/index.ts +0 -5
- package/src/features/ai-hug/domain/types/ai-hug.types.ts +0 -25
- package/src/features/ai-hug/domain/types/index.ts +0 -7
- package/src/features/ai-hug/index.ts +0 -19
- package/src/features/ai-hug/presentation/components/AIHugFeature.tsx +0 -77
- package/src/features/ai-hug/presentation/components/index.ts +0 -2
- package/src/features/ai-hug/presentation/hooks/index.ts +0 -9
- package/src/features/ai-hug/presentation/hooks/useAIHugFeature.ts +0 -34
- package/src/features/ai-hug/presentation/index.ts +0 -6
- package/src/features/ai-kiss/README.md +0 -445
- package/src/features/ai-kiss/domain/index.ts +0 -5
- package/src/features/ai-kiss/domain/types/ai-kiss.types.ts +0 -25
- package/src/features/ai-kiss/domain/types/index.ts +0 -7
- package/src/features/ai-kiss/index.ts +0 -19
- package/src/features/ai-kiss/presentation/components/AIKissFeature.tsx +0 -77
- package/src/features/ai-kiss/presentation/components/index.ts +0 -2
- package/src/features/ai-kiss/presentation/hooks/index.ts +0 -9
- package/src/features/ai-kiss/presentation/hooks/useAIKissFeature.ts +0 -34
- package/src/features/ai-kiss/presentation/index.ts +0 -6
- package/src/features/anime-selfie/README.md +0 -396
- package/src/features/anime-selfie/domain/index.ts +0 -5
- package/src/features/anime-selfie/domain/types/anime-selfie.types.ts +0 -52
- package/src/features/anime-selfie/domain/types/index.ts +0 -8
- package/src/features/anime-selfie/index.ts +0 -20
- package/src/features/anime-selfie/presentation/components/AnimeSelfieFeature.tsx +0 -86
- package/src/features/anime-selfie/presentation/components/index.ts +0 -2
- package/src/features/anime-selfie/presentation/hooks/index.ts +0 -9
- package/src/features/anime-selfie/presentation/hooks/useAnimeSelfieFeature.ts +0 -59
- package/src/features/anime-selfie/presentation/index.ts +0 -6
- package/src/features/couple-future/README.md +0 -445
- package/src/features/couple-future/domain/types.ts +0 -63
- package/src/features/couple-future/domain/wizard-config.adapter.ts +0 -76
- package/src/features/couple-future/domain/wizard.types.ts +0 -121
- package/src/features/couple-future/index.ts +0 -83
- package/src/features/couple-future/infrastructure/coupleFeatureRegistry.ts +0 -76
- package/src/features/couple-future/infrastructure/couplePromptEnhancer.ts +0 -100
- package/src/features/couple-future/infrastructure/executor.ts +0 -188
- package/src/features/couple-future/infrastructure/generationUtils.ts +0 -228
- package/src/features/couple-future/presentation/components/ArtStyleSelector.tsx +0 -146
- package/src/features/couple-future/presentation/components/ArtistStyleSelector.tsx +0 -122
- package/src/features/couple-future/presentation/components/CoupleFutureWizard.tsx +0 -239
- package/src/features/couple-future/presentation/components/GeneratingStepContent.tsx +0 -86
- package/src/features/couple-future/presentation/components/RomanticMoodSelector.tsx +0 -147
- package/src/features/couple-future/presentation/components/WardrobeSelector.tsx +0 -141
- package/src/features/couple-future/presentation/components/index.ts +0 -12
- package/src/features/couple-future/presentation/hooks/useCoupleFutureFlow.ts +0 -166
- package/src/features/couple-future/presentation/hooks/useCoupleFutureFlow.types.ts +0 -69
- package/src/features/couple-future/presentation/hooks/useCoupleFutureHandlers.ts +0 -117
- package/src/features/couple-future/presentation/screens/CoupleFeatureScreen.tsx +0 -113
- package/src/features/face-swap/README.md +0 -431
- package/src/features/face-swap/domain/index.ts +0 -5
- package/src/features/face-swap/domain/types/face-swap.types.ts +0 -26
- package/src/features/face-swap/domain/types/index.ts +0 -7
- package/src/features/face-swap/index.ts +0 -19
- package/src/features/face-swap/presentation/components/FaceSwapFeature.tsx +0 -87
- package/src/features/face-swap/presentation/components/index.ts +0 -2
- package/src/features/face-swap/presentation/hooks/index.ts +0 -6
- package/src/features/face-swap/presentation/hooks/useFaceSwapFeature.ts +0 -35
- package/src/features/face-swap/presentation/index.ts +0 -6
- package/src/features/hd-touch-up/README.md +0 -396
- package/src/features/hd-touch-up/domain/index.ts +0 -1
- package/src/features/hd-touch-up/domain/types/hd-touch-up.types.ts +0 -62
- package/src/features/hd-touch-up/domain/types/index.ts +0 -9
- package/src/features/hd-touch-up/index.ts +0 -21
- package/src/features/hd-touch-up/presentation/components/HDTouchUpFeature.tsx +0 -86
- package/src/features/hd-touch-up/presentation/components/index.ts +0 -2
- package/src/features/hd-touch-up/presentation/hooks/index.ts +0 -1
- package/src/features/hd-touch-up/presentation/hooks/useHDTouchUpFeature.ts +0 -23
- package/src/features/hd-touch-up/presentation/index.ts +0 -2
- package/src/features/image-to-image/README.md +0 -459
- package/src/features/image-to-image/domain/index.ts +0 -1
- package/src/features/image-to-image/domain/types/base.types.ts +0 -48
- package/src/features/image-to-image/domain/types/index.ts +0 -1
- package/src/features/image-to-image/domain/types/partials/config.types.ts +0 -37
- package/src/features/image-to-image/domain/types/partials/hook.types.ts +0 -53
- package/src/features/image-to-image/domain/types/partials/metadata.types.ts +0 -32
- package/src/features/image-to-image/domain/types/partials/result.types.ts +0 -44
- package/src/features/image-to-image/domain/types/partials/state.types.ts +0 -34
- package/src/features/image-to-image/domain/types/partials/translation.types.ts +0 -57
- package/src/features/image-to-image/index.ts +0 -2
- package/src/features/image-to-image/presentation/hooks/index.ts +0 -3
- package/src/features/image-to-image/presentation/hooks/useDualImageFeature.ts +0 -204
- package/src/features/image-to-image/presentation/hooks/useImageWithPromptFeature.ts +0 -223
- package/src/features/image-to-image/presentation/hooks/useSingleImageFeature.ts +0 -166
- package/src/features/image-to-image/presentation/index.ts +0 -1
- package/src/features/image-to-video/README.md +0 -414
- package/src/features/image-to-video/domain/constants/animation.constants.ts +0 -47
- package/src/features/image-to-video/domain/constants/duration.constants.ts +0 -13
- package/src/features/image-to-video/domain/constants/form.constants.ts +0 -22
- package/src/features/image-to-video/domain/constants/index.ts +0 -23
- package/src/features/image-to-video/domain/constants/music.constants.ts +0 -53
- package/src/features/image-to-video/domain/index.ts +0 -5
- package/src/features/image-to-video/domain/types/animation.types.ts +0 -20
- package/src/features/image-to-video/domain/types/config.types.ts +0 -56
- package/src/features/image-to-video/domain/types/duration.types.ts +0 -11
- package/src/features/image-to-video/domain/types/form.types.ts +0 -35
- package/src/features/image-to-video/domain/types/image-to-video.types.ts +0 -122
- package/src/features/image-to-video/domain/types/index.ts +0 -39
- package/src/features/image-to-video/domain/types/music.types.ts +0 -21
- package/src/features/image-to-video/index.ts +0 -116
- package/src/features/image-to-video/infrastructure/index.ts +0 -1
- package/src/features/image-to-video/infrastructure/services/image-to-video-executor.ts +0 -154
- package/src/features/image-to-video/infrastructure/services/index.ts +0 -5
- package/src/features/image-to-video/presentation/components/AddMoreCard.tsx +0 -52
- package/src/features/image-to-video/presentation/components/AnimationStyleSelector.tsx +0 -135
- package/src/features/image-to-video/presentation/components/DurationSelector.tsx +0 -110
- package/src/features/image-to-video/presentation/components/EmptyGridState.tsx +0 -69
- package/src/features/image-to-video/presentation/components/GridImageItem.tsx +0 -64
- package/src/features/image-to-video/presentation/components/ImageSelectionGrid.styles.ts +0 -84
- package/src/features/image-to-video/presentation/components/ImageSelectionGrid.tsx +0 -77
- package/src/features/image-to-video/presentation/components/ImageSelectionGrid.types.ts +0 -18
- package/src/features/image-to-video/presentation/components/MusicMoodSelector.tsx +0 -181
- package/src/features/image-to-video/presentation/components/index.ts +0 -30
- package/src/features/image-to-video/presentation/hooks/index.ts +0 -27
- package/src/features/image-to-video/presentation/hooks/useFormState.ts +0 -116
- package/src/features/image-to-video/presentation/hooks/useGeneration.ts +0 -85
- package/src/features/image-to-video/presentation/hooks/useGenerationExecution.ts +0 -143
- package/src/features/image-to-video/presentation/hooks/useImageToVideoFeature.ts +0 -107
- package/src/features/image-to-video/presentation/hooks/useImageToVideoForm.ts +0 -119
- package/src/features/image-to-video/presentation/hooks/useImageToVideoValidation.ts +0 -46
- package/src/features/image-to-video/presentation/index.ts +0 -5
- package/src/features/love-message/domain/constants.ts +0 -162
- package/src/features/love-message/domain/types.ts +0 -58
- package/src/features/love-message/index.ts +0 -37
- package/src/features/love-message/infrastructure/persistence/PartnerProfileRepository.ts +0 -52
- package/src/features/love-message/infrastructure/prompts/messagePromptBuilder.ts +0 -109
- package/src/features/love-message/infrastructure/services/LoveMessageService.ts +0 -35
- package/src/features/love-message/presentation/components/CategoryGrid.tsx +0 -88
- package/src/features/love-message/presentation/components/DetailsInput.tsx +0 -74
- package/src/features/love-message/presentation/components/ExploreHeader.tsx +0 -67
- package/src/features/love-message/presentation/components/FieldInput.tsx +0 -83
- package/src/features/love-message/presentation/components/GeneratorHeader.tsx +0 -88
- package/src/features/love-message/presentation/components/LoveMessageHeroSection.tsx +0 -114
- package/src/features/love-message/presentation/components/MessageListItem.tsx +0 -77
- package/src/features/love-message/presentation/components/MessageResult.tsx +0 -105
- package/src/features/love-message/presentation/components/PartnerInput.tsx +0 -78
- package/src/features/love-message/presentation/components/ProgressDots.tsx +0 -48
- package/src/features/love-message/presentation/components/StepDetails.tsx +0 -23
- package/src/features/love-message/presentation/components/StepPartner.tsx +0 -116
- package/src/features/love-message/presentation/components/StepVibe.tsx +0 -30
- package/src/features/love-message/presentation/components/ToneSelector.tsx +0 -100
- package/src/features/love-message/presentation/components/TrendingSection.tsx +0 -130
- package/src/features/love-message/presentation/components/TypeSelector.tsx +0 -99
- package/src/features/love-message/presentation/hooks/useLoveMessageGenerator.ts +0 -114
- package/src/features/love-message/presentation/hooks/usePartnerProfile.ts +0 -43
- package/src/features/love-message/presentation/navigation/LoveMessageStack.tsx +0 -39
- package/src/features/love-message/presentation/screens/LoveMessageExploreScreen.tsx +0 -53
- package/src/features/love-message/presentation/screens/LoveMessageGeneratorScreen.tsx +0 -169
- package/src/features/love-message/presentation/screens/MessageListScreen.tsx +0 -127
- package/src/features/love-message/presentation/screens/PartnerProfileScreen.tsx +0 -119
- package/src/features/meme-generator/README.md +0 -408
- package/src/features/meme-generator/index.ts +0 -3
- package/src/features/meme-generator/infrastructure/services/MemeGenerationService.ts +0 -87
- package/src/features/meme-generator/presentation/components/MemeGeneratorFeature.tsx +0 -180
- package/src/features/meme-generator/presentation/components/index.ts +0 -2
- package/src/features/meme-generator/presentation/screens/MemeGeneratorScreen.tsx +0 -168
- package/src/features/meme-generator/presentation/screens/index.ts +0 -1
- package/src/features/partner-upload/domain/types.ts +0 -59
- package/src/features/partner-upload/index.ts +0 -30
- package/src/features/partner-upload/presentation/components/PartnerInfoInput.tsx +0 -112
- package/src/features/partner-upload/presentation/components/PhotoTips.tsx +0 -53
- package/src/features/partner-upload/presentation/components/index.ts +0 -4
- package/src/features/partner-upload/presentation/hooks/index.ts +0 -7
- package/src/features/partner-upload/presentation/hooks/usePartnerStep.ts +0 -130
- package/src/features/partner-upload/presentation/screens/PartnerStepScreen.tsx +0 -231
- package/src/features/partner-upload/presentation/screens/index.ts +0 -6
- package/src/features/photo-restoration/README.md +0 -399
- package/src/features/photo-restoration/domain/index.ts +0 -1
- package/src/features/photo-restoration/domain/types/index.ts +0 -9
- package/src/features/photo-restoration/domain/types/photo-restore.types.ts +0 -64
- package/src/features/photo-restoration/index.ts +0 -22
- package/src/features/photo-restoration/presentation/components/PhotoRestoreFeature.tsx +0 -88
- package/src/features/photo-restoration/presentation/components/PhotoRestoreResultView.tsx +0 -86
- package/src/features/photo-restoration/presentation/components/index.ts +0 -4
- package/src/features/photo-restoration/presentation/hooks/index.ts +0 -1
- package/src/features/photo-restoration/presentation/hooks/usePhotoRestoreFeature.ts +0 -23
- package/src/features/photo-restoration/presentation/index.ts +0 -2
- package/src/features/remove-background/README.md +0 -393
- package/src/features/remove-background/domain/index.ts +0 -5
- package/src/features/remove-background/domain/types/index.ts +0 -7
- package/src/features/remove-background/domain/types/remove-background.types.ts +0 -28
- package/src/features/remove-background/index.ts +0 -19
- package/src/features/remove-background/presentation/components/RemoveBackgroundFeature.tsx +0 -86
- package/src/features/remove-background/presentation/components/index.ts +0 -2
- package/src/features/remove-background/presentation/hooks/index.ts +0 -1
- package/src/features/remove-background/presentation/hooks/useRemoveBackgroundFeature.ts +0 -28
- package/src/features/remove-background/presentation/index.ts +0 -6
- package/src/features/remove-object/README.md +0 -405
- package/src/features/remove-object/domain/index.ts +0 -5
- package/src/features/remove-object/domain/types/index.ts +0 -7
- package/src/features/remove-object/domain/types/remove-object.types.ts +0 -54
- package/src/features/remove-object/index.ts +0 -23
- package/src/features/remove-object/presentation/components/RemoveObjectFeature.tsx +0 -136
- package/src/features/remove-object/presentation/components/index.ts +0 -2
- package/src/features/remove-object/presentation/hooks/index.ts +0 -9
- package/src/features/remove-object/presentation/hooks/useRemoveObjectFeature.ts +0 -221
- package/src/features/remove-object/presentation/index.ts +0 -6
- package/src/features/replace-background/README.md +0 -405
- package/src/features/replace-background/domain/types/index.ts +0 -7
- package/src/features/replace-background/domain/types/replace-background.types.ts +0 -33
- package/src/features/replace-background/index.ts +0 -23
- package/src/features/replace-background/presentation/components/ReplaceBackgroundFeature.tsx +0 -105
- package/src/features/replace-background/presentation/components/index.ts +0 -6
- package/src/features/replace-background/presentation/hooks/index.ts +0 -9
- package/src/features/replace-background/presentation/hooks/useReplaceBackgroundFeature.ts +0 -55
- package/src/features/scenarios/domain/types.ts +0 -147
- package/src/features/scenarios/index.ts +0 -64
- package/src/features/scenarios/presentation/components/InspirationChips.tsx +0 -82
- package/src/features/scenarios/presentation/components/MagicPromptHeadline.tsx +0 -79
- package/src/features/scenarios/presentation/components/ScenarioGrid.tsx +0 -224
- package/src/features/scenarios/presentation/components/ScenarioHeader.tsx +0 -55
- package/src/features/scenarios/presentation/components/StyleSelector.tsx +0 -119
- package/src/features/scenarios/presentation/components/index.ts +0 -18
- package/src/features/scenarios/presentation/containers/CategoryNavigationContainer.tsx +0 -178
- package/src/features/scenarios/presentation/screens/HierarchicalScenarioListScreen.tsx +0 -266
- package/src/features/scenarios/presentation/screens/MagicPromptScreen.tsx +0 -242
- package/src/features/scenarios/presentation/screens/MainCategoryScreen.tsx +0 -198
- package/src/features/scenarios/presentation/screens/ScenarioPreviewScreen.tsx +0 -164
- package/src/features/scenarios/presentation/screens/ScenarioSelectorScreen.tsx +0 -66
- package/src/features/scenarios/presentation/screens/SubCategoryScreen.tsx +0 -216
- package/src/features/script-generator/README.md +0 -433
- package/src/features/script-generator/domain/constants/index.ts +0 -10
- package/src/features/script-generator/domain/types/script.types.ts +0 -30
- package/src/features/script-generator/index.ts +0 -5
- package/src/features/script-generator/infrastructure/services/ScriptGenerationService.ts +0 -62
- package/src/features/script-generator/presentation/components/ScriptDisplay.tsx +0 -158
- package/src/features/script-generator/presentation/components/VideoTypeSelector.tsx +0 -102
- package/src/features/script-generator/presentation/components/index.ts +0 -2
- package/src/features/script-generator/presentation/hooks/index.ts +0 -1
- package/src/features/script-generator/presentation/hooks/useScriptGenerator.ts +0 -77
- package/src/features/shared/README.md +0 -311
- package/src/features/shared/dual-image-video/domain/types/dual-image-video.types.ts +0 -88
- package/src/features/shared/dual-image-video/domain/types/index.ts +0 -14
- package/src/features/shared/dual-image-video/index.ts +0 -17
- package/src/features/shared/dual-image-video/presentation/hooks/index.ts +0 -5
- package/src/features/shared/dual-image-video/presentation/hooks/useDualImageVideoFeature.ts +0 -185
- package/src/features/shared/index.ts +0 -6
- package/src/features/text-to-image/README.md +0 -394
- package/src/features/text-to-image/domain/constants/index.ts +0 -8
- package/src/features/text-to-image/domain/constants/options.constants.ts +0 -39
- package/src/features/text-to-image/domain/constants/styles.constants.ts +0 -34
- package/src/features/text-to-image/domain/index.ts +0 -7
- package/src/features/text-to-image/domain/types/config.types.ts +0 -75
- package/src/features/text-to-image/domain/types/form.types.ts +0 -58
- package/src/features/text-to-image/domain/types/index.ts +0 -38
- package/src/features/text-to-image/domain/types/text-to-image.types.ts +0 -58
- package/src/features/text-to-image/index.ts +0 -116
- package/src/features/text-to-image/infrastructure/index.ts +0 -1
- package/src/features/text-to-image/infrastructure/services/index.ts +0 -5
- package/src/features/text-to-image/infrastructure/services/text-to-image-executor.ts +0 -147
- package/src/features/text-to-image/presentation/components/index.ts +0 -30
- package/src/features/text-to-image/presentation/hooks/index.ts +0 -30
- package/src/features/text-to-image/presentation/hooks/useFormState.ts +0 -103
- package/src/features/text-to-image/presentation/hooks/useGeneration.ts +0 -139
- package/src/features/text-to-image/presentation/hooks/useTextToImageFeature.ts +0 -111
- package/src/features/text-to-image/presentation/hooks/useTextToImageForm.ts +0 -58
- package/src/features/text-to-image/presentation/index.ts +0 -7
- package/src/features/text-to-video/README.md +0 -412
- package/src/features/text-to-video/domain/index.ts +0 -1
- package/src/features/text-to-video/domain/types/callback.types.ts +0 -69
- package/src/features/text-to-video/domain/types/component.types.ts +0 -106
- package/src/features/text-to-video/domain/types/config.types.ts +0 -61
- package/src/features/text-to-video/domain/types/index.ts +0 -56
- package/src/features/text-to-video/domain/types/request.types.ts +0 -36
- package/src/features/text-to-video/domain/types/state.types.ts +0 -53
- package/src/features/text-to-video/index.ts +0 -68
- package/src/features/text-to-video/infrastructure/index.ts +0 -1
- package/src/features/text-to-video/infrastructure/services/index.ts +0 -5
- package/src/features/text-to-video/infrastructure/services/text-to-video-executor.ts +0 -141
- package/src/features/text-to-video/presentation/components/FrameSelector.tsx +0 -153
- package/src/features/text-to-video/presentation/components/GenerationTabs.tsx +0 -73
- package/src/features/text-to-video/presentation/components/HeroSection.tsx +0 -61
- package/src/features/text-to-video/presentation/components/HintCarousel.tsx +0 -96
- package/src/features/text-to-video/presentation/components/OptionsPanel.tsx +0 -121
- package/src/features/text-to-video/presentation/components/index.ts +0 -10
- package/src/features/text-to-video/presentation/hooks/index.ts +0 -17
- package/src/features/text-to-video/presentation/hooks/useTextToVideoFeature.ts +0 -225
- package/src/features/text-to-video/presentation/hooks/useTextToVideoForm.ts +0 -134
- package/src/features/text-to-video/presentation/index.ts +0 -7
- package/src/features/text-to-voice/README.md +0 -445
- package/src/features/text-to-voice/domain/index.ts +0 -1
- package/src/features/text-to-voice/domain/types/component.types.ts +0 -91
- package/src/features/text-to-voice/domain/types/config.types.ts +0 -34
- package/src/features/text-to-voice/domain/types/form.types.ts +0 -39
- package/src/features/text-to-voice/domain/types/generation.types.ts +0 -43
- package/src/features/text-to-voice/domain/types/index.ts +0 -38
- package/src/features/text-to-voice/index.ts +0 -53
- package/src/features/text-to-voice/infrastructure/index.ts +0 -1
- package/src/features/text-to-voice/infrastructure/services/index.ts +0 -4
- package/src/features/text-to-voice/infrastructure/services/text-to-voice-executor.ts +0 -103
- package/src/features/text-to-voice/presentation/components/TextToVoiceAudioPlayer.tsx +0 -81
- package/src/features/text-to-voice/presentation/components/index.ts +0 -7
- package/src/features/text-to-voice/presentation/hooks/index.ts +0 -6
- package/src/features/text-to-voice/presentation/hooks/useTextToVoiceForm.ts +0 -91
- package/src/features/text-to-voice/presentation/hooks/useTextToVoiceGeneration.ts +0 -116
- package/src/features/text-to-voice/presentation/index.ts +0 -2
- package/src/features/upscaling/README.md +0 -396
- package/src/features/upscaling/domain/index.ts +0 -1
- package/src/features/upscaling/domain/types/index.ts +0 -1
- package/src/features/upscaling/domain/types/upscale.types.ts +0 -23
- package/src/features/upscaling/index.ts +0 -20
- package/src/features/upscaling/presentation/components/ComparisonSlider.tsx +0 -200
- package/src/features/upscaling/presentation/components/UpscaleFeature.tsx +0 -89
- package/src/features/upscaling/presentation/components/UpscaleResultView.tsx +0 -98
- package/src/features/upscaling/presentation/components/index.ts +0 -6
- package/src/features/upscaling/presentation/hooks/index.ts +0 -1
- package/src/features/upscaling/presentation/hooks/useUpscaleFeature.ts +0 -28
- package/src/features/upscaling/presentation/index.ts +0 -2
- package/src/features/wizard/domain/types.ts +0 -154
- package/src/features/wizard/index.ts +0 -43
- package/src/features/wizard/presentation/components/AIFeatureWizard.tsx +0 -231
- package/src/features/wizard/presentation/components/AIGenerationWizard.tsx +0 -132
- package/src/features/wizard/presentation/hooks/useWizard.ts +0 -120
- package/src/features/wizard/presentation/store/useWizardStore.ts +0 -82
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* useAnimeSelfieFeature Hook
|
|
3
|
-
* Uses base single image hook for anime selfie transformation
|
|
4
|
-
* Uses centralized orchestrator for credit/error handling
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { useMemo } from "react";
|
|
8
|
-
import {
|
|
9
|
-
useSingleImageFeature,
|
|
10
|
-
type BaseSingleImageHookReturn,
|
|
11
|
-
} from "../../../image-to-image";
|
|
12
|
-
import type { AlertMessages } from "../../../../presentation/hooks/generation";
|
|
13
|
-
import { createAnimeSelfiePrompt } from "../../../../domains/prompts";
|
|
14
|
-
import type { AnimeSelfieFeatureConfig } from "../../domain/types";
|
|
15
|
-
|
|
16
|
-
export interface UseAnimeSelfieFeatureProps {
|
|
17
|
-
config: AnimeSelfieFeatureConfig;
|
|
18
|
-
onSelectImage: () => Promise<string | null>;
|
|
19
|
-
onSaveImage: (imageUrl: string) => Promise<void>;
|
|
20
|
-
onBeforeProcess?: () => Promise<boolean>;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface UseAnimeSelfieFeatureOptions {
|
|
24
|
-
/** Alert messages for error handling */
|
|
25
|
-
alertMessages?: AlertMessages;
|
|
26
|
-
/** User ID for credit operations */
|
|
27
|
-
userId?: string;
|
|
28
|
-
/** Callback when credits are exhausted */
|
|
29
|
-
onCreditsExhausted?: () => void;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export type UseAnimeSelfieFeatureReturn = BaseSingleImageHookReturn;
|
|
33
|
-
|
|
34
|
-
export function useAnimeSelfieFeature(
|
|
35
|
-
props: UseAnimeSelfieFeatureProps,
|
|
36
|
-
options?: UseAnimeSelfieFeatureOptions,
|
|
37
|
-
): UseAnimeSelfieFeatureReturn {
|
|
38
|
-
const { config, onSelectImage, onSaveImage, onBeforeProcess } = props;
|
|
39
|
-
|
|
40
|
-
const promptConfig = useMemo(
|
|
41
|
-
() => createAnimeSelfiePrompt(config.defaultStyle),
|
|
42
|
-
[config.defaultStyle],
|
|
43
|
-
);
|
|
44
|
-
|
|
45
|
-
// Cast config to any to bypass strict type checking while maintaining runtime behavior
|
|
46
|
-
return useSingleImageFeature(
|
|
47
|
-
{ config: config as never, onSelectImage, onSaveImage, onBeforeProcess },
|
|
48
|
-
{
|
|
49
|
-
buildInput: (imageBase64) => ({
|
|
50
|
-
imageBase64,
|
|
51
|
-
prompt: promptConfig.prompt,
|
|
52
|
-
options: {
|
|
53
|
-
guidance_scale: promptConfig.guidance_scale,
|
|
54
|
-
},
|
|
55
|
-
}),
|
|
56
|
-
...options,
|
|
57
|
-
},
|
|
58
|
-
);
|
|
59
|
-
}
|
|
@@ -1,445 +0,0 @@
|
|
|
1
|
-
# Couple Future Feature
|
|
2
|
-
|
|
3
|
-
Generate images showing couples in future scenarios using AI.
|
|
4
|
-
|
|
5
|
-
## 📍 Import Path
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
import { useCoupleFutureGeneration } from '@umituz/react-native-ai-generation-content';
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
**Location**: `src/features/couple-future/`
|
|
12
|
-
|
|
13
|
-
## 🎯 Feature Purpose
|
|
14
|
-
|
|
15
|
-
Create AI-generated images showing couples in various future scenarios including wedding day, old age, anniversary celebrations, and family moments. Features natural aging progression and high-quality facial matching for heartwarming results.
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## 📋 Usage Strategy
|
|
20
|
-
|
|
21
|
-
### When to Use This Feature
|
|
22
|
-
|
|
23
|
-
✅ **Use Cases:**
|
|
24
|
-
- Creating fun future predictions with partners
|
|
25
|
-
- Generating anniversary content
|
|
26
|
-
- Social media couple content
|
|
27
|
-
- Creative romantic projects
|
|
28
|
-
- Gift ideas for couples
|
|
29
|
-
|
|
30
|
-
❌ **When NOT to Use:**
|
|
31
|
-
- Non-consensual image generation
|
|
32
|
-
- Misleading or deceptive content
|
|
33
|
-
- Harassment or bullying
|
|
34
|
-
- Commercial use without permissions
|
|
35
|
-
|
|
36
|
-
### Implementation Strategy
|
|
37
|
-
|
|
38
|
-
1. **Select TWO photos** (person 1 and person 2)
|
|
39
|
-
2. **Choose future scenario** (wedding, old-age, anniversary, family)
|
|
40
|
-
3. **Validate both photos** before generation
|
|
41
|
-
4. **Generate future image** with progress tracking
|
|
42
|
-
5. **Preview result** and offer regeneration
|
|
43
|
-
6. **Save or share** final image
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## ⚠️ Critical Rules (MUST FOLLOW)
|
|
48
|
-
|
|
49
|
-
### 1. Image Requirements
|
|
50
|
-
- **MUST** provide TWO distinct images (person 1 + person 2)
|
|
51
|
-
- **MUST** contain at least one visible person in each image
|
|
52
|
-
- **MUST** use high-quality images (min 512x512 recommended)
|
|
53
|
-
- **MUST** ensure faces are clearly visible
|
|
54
|
-
- **MUST NOT** use images with no detectable people
|
|
55
|
-
|
|
56
|
-
### 2. Configuration
|
|
57
|
-
- **MUST** provide valid `userId` for tracking
|
|
58
|
-
- **MUST** specify `scenario` (wedding, old-age, anniversary, family)
|
|
59
|
-
- **MUST** implement `onError` callback
|
|
60
|
-
- **MUST** implement `onSelectPerson1` and `onSelectPerson2` callbacks
|
|
61
|
-
- **MUST** handle both images being selected before processing
|
|
62
|
-
|
|
63
|
-
### 3. State Management
|
|
64
|
-
- **MUST** check `isReady` before enabling generate button
|
|
65
|
-
- **MUST** verify both images are selected
|
|
66
|
-
- **MUST** handle `isProcessing` state to prevent duplicate requests
|
|
67
|
-
- **MUST** display `error` state to users
|
|
68
|
-
- **MUST** implement proper cleanup on unmount
|
|
69
|
-
|
|
70
|
-
### 4. Performance
|
|
71
|
-
- **MUST** limit image size (<10MB each)
|
|
72
|
-
- **MUST** compress images before processing
|
|
73
|
-
- **MUST** implement loading indicators during processing
|
|
74
|
-
- **MUST** cache results locally
|
|
75
|
-
- **MUST NOT** generate multiple futures simultaneously
|
|
76
|
-
|
|
77
|
-
### 5. Ethics & Privacy
|
|
78
|
-
- **MUST** obtain consent from people whose photos are used
|
|
79
|
-
- **MUST** provide clear usage terms
|
|
80
|
-
- **MUST** implement content moderation
|
|
81
|
-
- **MUST** prevent malicious use cases
|
|
82
|
-
- **MUST** log processing for audit trail
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## 🚫 Prohibitions (MUST AVOID)
|
|
87
|
-
|
|
88
|
-
### Strictly Forbidden
|
|
89
|
-
|
|
90
|
-
❌ **NEVER** do the following:
|
|
91
|
-
|
|
92
|
-
1. **No Single Image**
|
|
93
|
-
- Always requires TWO images (person 1 + person 2)
|
|
94
|
-
- Never attempt with missing image
|
|
95
|
-
|
|
96
|
-
2. **No Non-Consensual Generation**
|
|
97
|
-
- Always obtain permission from subjects
|
|
98
|
-
- Never generate futures without consent
|
|
99
|
-
- Implement age verification for minors
|
|
100
|
-
|
|
101
|
-
3. **No Malicious Use**
|
|
102
|
-
- Never use for harassment or bullying
|
|
103
|
-
- Never create misleading content
|
|
104
|
-
- Never use for deception
|
|
105
|
-
|
|
106
|
-
4. **No Unhandled Errors**
|
|
107
|
-
- Never ignore generation failures
|
|
108
|
-
- Always handle detection errors gracefully
|
|
109
|
-
- Provide clear error messages
|
|
110
|
-
|
|
111
|
-
5. **No Memory Leaks**
|
|
112
|
-
- Never store large images in state unnecessarily
|
|
113
|
-
- Always cleanup image references on unmount
|
|
114
|
-
- Implement proper image disposal
|
|
115
|
-
|
|
116
|
-
6. **No Blocked UI**
|
|
117
|
-
- Never process without user confirmation
|
|
118
|
-
- Always show progress indicator
|
|
119
|
-
- Never block main thread with image processing
|
|
120
|
-
|
|
121
|
-
7. **No Missing Context**
|
|
122
|
-
- Never confuse which person is which
|
|
123
|
-
- Always provide clear UI labels
|
|
124
|
-
- Show preview before processing
|
|
125
|
-
|
|
126
|
-
---
|
|
127
|
-
|
|
128
|
-
## 🤖 AI Agent Directions
|
|
129
|
-
|
|
130
|
-
### For AI Code Generation Tools
|
|
131
|
-
|
|
132
|
-
When using this feature with AI code generation tools, follow these guidelines:
|
|
133
|
-
|
|
134
|
-
#### Prompt Template for AI Agents
|
|
135
|
-
|
|
136
|
-
```
|
|
137
|
-
You are implementing a couple future generation feature using @umituz/react-native-ai-generation-content.
|
|
138
|
-
|
|
139
|
-
REQUIREMENTS:
|
|
140
|
-
1. Import from: @umituz/react-native-ai-generation-content
|
|
141
|
-
2. Use the useCoupleFutureGeneration hook
|
|
142
|
-
3. Require TWO images (person 1 + person 2)
|
|
143
|
-
4. Implement dual image selection UI
|
|
144
|
-
5. Select future scenario (wedding, old-age, anniversary, family)
|
|
145
|
-
6. Validate both images before generation
|
|
146
|
-
7. Add confirmation dialog before generation
|
|
147
|
-
8. Handle long processing times with progress
|
|
148
|
-
9. Implement proper error handling
|
|
149
|
-
10. Implement cleanup on unmount
|
|
150
|
-
|
|
151
|
-
CRITICAL RULES:
|
|
152
|
-
- MUST obtain consent from subjects
|
|
153
|
-
- MUST validate both images before processing
|
|
154
|
-
- MUST provide clear UI for person 1 vs person 2
|
|
155
|
-
- MUST handle generation errors gracefully
|
|
156
|
-
- MUST prevent malicious use cases
|
|
157
|
-
- MUST implement content moderation
|
|
158
|
-
- NEVER process without user confirmation
|
|
159
|
-
|
|
160
|
-
CONFIGURATION:
|
|
161
|
-
- Provide valid userId (string)
|
|
162
|
-
- Set scenario: 'wedding' | 'old-age' | 'anniversary' | 'family'
|
|
163
|
-
- Set preserveFaces: boolean (maintain facial features)
|
|
164
|
-
- Set enhanceQuality: boolean (enhance output quality)
|
|
165
|
-
- Implement onSelectPerson1 callback
|
|
166
|
-
- Implement onSelectPerson2 callback
|
|
167
|
-
- Implement onSaveResult callback
|
|
168
|
-
- Configure callbacks: onProcessingStart, onProcessingComplete, onError
|
|
169
|
-
|
|
170
|
-
SCENARIOS:
|
|
171
|
-
- wedding: Couples on their wedding day
|
|
172
|
-
- old-age: The couple as elderly
|
|
173
|
-
- anniversary: Celebrating an anniversary
|
|
174
|
-
- family: The couple with a family
|
|
175
|
-
|
|
176
|
-
OPTIONS:
|
|
177
|
-
- preserveFaces: Maintain facial features (default: true)
|
|
178
|
-
- enhanceQuality: Enhance output quality (default: true)
|
|
179
|
-
|
|
180
|
-
STRICTLY FORBIDDEN:
|
|
181
|
-
- No single image processing
|
|
182
|
-
- No non-consensual generation
|
|
183
|
-
- No malicious use
|
|
184
|
-
- No unhandled errors
|
|
185
|
-
- No memory leaks
|
|
186
|
-
- No missing UI context
|
|
187
|
-
|
|
188
|
-
ETHICS CHECKLIST:
|
|
189
|
-
- [ ] Consent mechanism implemented
|
|
190
|
-
- [ ] Age verification for minors
|
|
191
|
-
- [ ] Content moderation in place
|
|
192
|
-
- [ ] Usage terms provided
|
|
193
|
-
- [ ] Audit trail logging
|
|
194
|
-
- [ ] Report/flag functionality
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
#### AI Implementation Checklist
|
|
198
|
-
|
|
199
|
-
Use this checklist when generating code:
|
|
200
|
-
|
|
201
|
-
- [ ] Feature imported from correct path
|
|
202
|
-
- [ ] Dual image selection implemented
|
|
203
|
-
- [ ] Person 1/Person 2 labels clear
|
|
204
|
-
- [ ] Future scenario selector added
|
|
205
|
-
- [ ] Both images validated before processing
|
|
206
|
-
- [ ] Confirmation dialog added
|
|
207
|
-
- [ ] Progress indicator during processing
|
|
208
|
-
- [ ] Error display with user-friendly message
|
|
209
|
-
- [ ] Result preview before saving
|
|
210
|
-
- [ ] Consent mechanism in place
|
|
211
|
-
- [ ] Cleanup on unmount
|
|
212
|
-
- [ ] Content moderation configured
|
|
213
|
-
|
|
214
|
-
---
|
|
215
|
-
|
|
216
|
-
## 🛠️ Configuration Strategy
|
|
217
|
-
|
|
218
|
-
### Essential Configuration
|
|
219
|
-
|
|
220
|
-
```typescript
|
|
221
|
-
// Required fields
|
|
222
|
-
{
|
|
223
|
-
userId: string
|
|
224
|
-
scenario: 'wedding' | 'old-age' | 'anniversary' | 'family'
|
|
225
|
-
onSelectPerson1: () => Promise<string | null>
|
|
226
|
-
onSelectPerson2: () => Promise<string | null>
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
// Optional callbacks
|
|
230
|
-
{
|
|
231
|
-
onProcessingStart?: () => void
|
|
232
|
-
onProcessingComplete?: (result) => void
|
|
233
|
-
onError?: (error: string) => void
|
|
234
|
-
}
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
### Recommended Settings
|
|
238
|
-
|
|
239
|
-
1. **Future Scenarios**
|
|
240
|
-
- Wedding: Romantic wedding day imagery
|
|
241
|
-
- Old Age: Realistic aging progression
|
|
242
|
-
- Anniversary: Celebration scenes
|
|
243
|
-
- Family: Couple with children
|
|
244
|
-
|
|
245
|
-
2. **Image Quality**
|
|
246
|
-
- Minimum: 512x512 resolution
|
|
247
|
-
- Recommended: 1024x1024 or higher
|
|
248
|
-
- Format: JPEG or PNG
|
|
249
|
-
- Max size: 10MB per image
|
|
250
|
-
|
|
251
|
-
3. **Performance Settings**
|
|
252
|
-
- Compress images before upload
|
|
253
|
-
- Show progress for long operations
|
|
254
|
-
- Implement timeout (120s default)
|
|
255
|
-
- Enable result caching
|
|
256
|
-
|
|
257
|
-
---
|
|
258
|
-
|
|
259
|
-
## 📊 State Management
|
|
260
|
-
|
|
261
|
-
### Feature States
|
|
262
|
-
|
|
263
|
-
**isReady**: boolean
|
|
264
|
-
- Both images selected and validated
|
|
265
|
-
- Check before enabling generate button
|
|
266
|
-
|
|
267
|
-
**isProcessing**: boolean
|
|
268
|
-
- Future generation in progress
|
|
269
|
-
- Show loading/progress indicator
|
|
270
|
-
- Disable generate button
|
|
271
|
-
|
|
272
|
-
**progress**: number (0-100)
|
|
273
|
-
- Generation progress percentage
|
|
274
|
-
- Update progress bar
|
|
275
|
-
|
|
276
|
-
**error**: string | null
|
|
277
|
-
- Error message if generation failed
|
|
278
|
-
- Common errors: "No person found in image", "Generation failed"
|
|
279
|
-
|
|
280
|
-
**result**: {
|
|
281
|
-
imageUrl: string
|
|
282
|
-
scenario?: string
|
|
283
|
-
metadata?: any
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
---
|
|
287
|
-
|
|
288
|
-
## 🔐 Ethics & Privacy
|
|
289
|
-
|
|
290
|
-
### Consent Requirements
|
|
291
|
-
|
|
292
|
-
- **MUST** obtain explicit consent from all subjects
|
|
293
|
-
- **MUST** provide clear explanation of how images will be used
|
|
294
|
-
- **MUST** implement age verification
|
|
295
|
-
- **MUST** allow subjects to opt-out
|
|
296
|
-
|
|
297
|
-
### Content Moderation
|
|
298
|
-
|
|
299
|
-
- **MUST** filter inappropriate content
|
|
300
|
-
- **MUST** prevent malicious use cases
|
|
301
|
-
- **MUST** implement reporting mechanism
|
|
302
|
-
- **MUST** review flagged content
|
|
303
|
-
|
|
304
|
-
### Usage Guidelines
|
|
305
|
-
|
|
306
|
-
- **MUST** provide terms of service
|
|
307
|
-
- **MUST** clearly label AI-generated content
|
|
308
|
-
- **MUST** prevent deception/misrepresentation
|
|
309
|
-
- **MUST** comply with deepfake regulations
|
|
310
|
-
|
|
311
|
-
---
|
|
312
|
-
|
|
313
|
-
## 🎨 Best Practices
|
|
314
|
-
|
|
315
|
-
### Photo Selection
|
|
316
|
-
|
|
317
|
-
1. **Photo Quality**
|
|
318
|
-
- Good: High-quality, well-lit photos
|
|
319
|
-
- Bad: Blurry, dark, low-resolution images
|
|
320
|
-
|
|
321
|
-
2. **Face Visibility**
|
|
322
|
-
- Good: Clear, frontal face shots
|
|
323
|
-
- Bad: Occluded or profile faces
|
|
324
|
-
|
|
325
|
-
3. **Similar Angles**
|
|
326
|
-
- Similar head angles produce better results
|
|
327
|
-
- Forward-facing photos work best
|
|
328
|
-
|
|
329
|
-
4. **Lighting**
|
|
330
|
-
- Similar lighting conditions work best
|
|
331
|
-
- Front-facing well-lit photos ideal
|
|
332
|
-
|
|
333
|
-
### User Experience
|
|
334
|
-
|
|
335
|
-
1. **Clear UI**
|
|
336
|
-
- Label person 1 vs person 2 clearly
|
|
337
|
-
- Show preview before processing
|
|
338
|
-
- Add confirmation dialog
|
|
339
|
-
|
|
340
|
-
2. **Error Handling**
|
|
341
|
-
- Explain "no person found" errors
|
|
342
|
-
- Provide troubleshooting tips
|
|
343
|
-
- Offer retry option
|
|
344
|
-
|
|
345
|
-
3. **Performance**
|
|
346
|
-
- Compress images before upload
|
|
347
|
-
- Show progress for long operations
|
|
348
|
-
- Cache results for re-download
|
|
349
|
-
|
|
350
|
-
---
|
|
351
|
-
|
|
352
|
-
## 🐛 Common Pitfalls
|
|
353
|
-
|
|
354
|
-
### Detection Issues
|
|
355
|
-
|
|
356
|
-
❌ **Problem**: "No person found" error
|
|
357
|
-
✅ **Solution**: Ensure people are clearly visible, well-lit, frontal
|
|
358
|
-
|
|
359
|
-
### Quality Issues
|
|
360
|
-
|
|
361
|
-
❌ **Problem**: Poor quality generation
|
|
362
|
-
✅ **Solution**: Use higher resolution images, better lighting
|
|
363
|
-
|
|
364
|
-
### UX Confusion
|
|
365
|
-
|
|
366
|
-
❌ **Problem**: Users confused about which person is which
|
|
367
|
-
✅ **Solution**: Clear labels, visual indicators, preview
|
|
368
|
-
|
|
369
|
-
### Privacy Concerns
|
|
370
|
-
|
|
371
|
-
❌ **Problem**: Non-consensual image generation
|
|
372
|
-
✅ **Solution**: Implement consent mechanisms, age verification
|
|
373
|
-
|
|
374
|
-
---
|
|
375
|
-
|
|
376
|
-
## 📦 Related Components
|
|
377
|
-
|
|
378
|
-
Use these components from the library:
|
|
379
|
-
|
|
380
|
-
- **DualImagePicker**: Select two images
|
|
381
|
-
- **ScenarioSelector**: Choose future scenario
|
|
382
|
-
- **ResultImageCard**: Display result with actions
|
|
383
|
-
- **ConfirmationDialog**: Confirm before processing
|
|
384
|
-
|
|
385
|
-
Located at: `src/presentation/components/`
|
|
386
|
-
|
|
387
|
-
---
|
|
388
|
-
|
|
389
|
-
## 🔄 Migration Strategy
|
|
390
|
-
|
|
391
|
-
If migrating from previous implementation:
|
|
392
|
-
|
|
393
|
-
1. **Update imports** to new path
|
|
394
|
-
2. **Add dual image selection** (person 1 + person 2)
|
|
395
|
-
3. **Implement consent mechanism**
|
|
396
|
-
4. **Add scenario selector**
|
|
397
|
-
5. **Update state handling** for both images
|
|
398
|
-
6. **Test all error cases**
|
|
399
|
-
|
|
400
|
-
---
|
|
401
|
-
|
|
402
|
-
## ⚖️ Legal Considerations
|
|
403
|
-
|
|
404
|
-
### Compliance
|
|
405
|
-
|
|
406
|
-
- **Deepfake Regulations**: Comply with local laws
|
|
407
|
-
- **Privacy Laws**: GDPR, CCPA compliance
|
|
408
|
-
- **Consent Requirements**: Explicit permission needed
|
|
409
|
-
- **Age Restrictions**: Verify adult subjects
|
|
410
|
-
- **Content Labeling**: Mark as AI-generated
|
|
411
|
-
|
|
412
|
-
### Best Practices
|
|
413
|
-
|
|
414
|
-
- Provide attribution for source images
|
|
415
|
-
- Allow content reporting/flagging
|
|
416
|
-
- Implement audit trail logging
|
|
417
|
-
- Cooperate with takedown requests
|
|
418
|
-
|
|
419
|
-
---
|
|
420
|
-
|
|
421
|
-
## 📚 Additional Resources
|
|
422
|
-
|
|
423
|
-
- Main documentation: `/docs/`
|
|
424
|
-
- API reference: `/docs/api/`
|
|
425
|
-
- Examples: `/docs/examples/basic/couple-future/`
|
|
426
|
-
- Ethics guidelines: `/docs/ethics.md`
|
|
427
|
-
|
|
428
|
-
---
|
|
429
|
-
|
|
430
|
-
**Last Updated**: 2025-01-08
|
|
431
|
-
**Version**: 2.0.0 (Strategy-based Documentation)
|
|
432
|
-
|
|
433
|
-
---
|
|
434
|
-
|
|
435
|
-
## 📝 Changelog
|
|
436
|
-
|
|
437
|
-
### v2.0.0 - 2025-01-08
|
|
438
|
-
- **BREAKING**: Documentation format changed to strategy-based
|
|
439
|
-
- Removed extensive code examples
|
|
440
|
-
- Added ethics and privacy guidelines
|
|
441
|
-
- Added rules, prohibitions, and AI agent directions
|
|
442
|
-
- Focus on responsible AI usage
|
|
443
|
-
|
|
444
|
-
### v1.0.0 - Initial Release
|
|
445
|
-
- Initial feature documentation
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Couple Future Types
|
|
3
|
-
* Multi-reference image generation for couples using Nano Banana
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
export type NanoBananaAspectRatio =
|
|
7
|
-
| "auto"
|
|
8
|
-
| "21:9"
|
|
9
|
-
| "16:9"
|
|
10
|
-
| "3:2"
|
|
11
|
-
| "4:3"
|
|
12
|
-
| "5:4"
|
|
13
|
-
| "1:1"
|
|
14
|
-
| "4:5"
|
|
15
|
-
| "3:4"
|
|
16
|
-
| "2:3"
|
|
17
|
-
| "9:16";
|
|
18
|
-
|
|
19
|
-
export type NanoBananaOutputFormat = "jpeg" | "png" | "webp";
|
|
20
|
-
|
|
21
|
-
export interface CoupleFutureInput {
|
|
22
|
-
partnerABase64: string;
|
|
23
|
-
partnerBBase64: string;
|
|
24
|
-
prompt: string;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface CoupleFutureConfig {
|
|
28
|
-
/** REQUIRED: AI model ID from app config */
|
|
29
|
-
model: string;
|
|
30
|
-
timeoutMs?: number;
|
|
31
|
-
aspectRatio?: NanoBananaAspectRatio;
|
|
32
|
-
outputFormat?: NanoBananaOutputFormat;
|
|
33
|
-
onProgress?: (progress: number) => void;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export interface CoupleFutureResult {
|
|
37
|
-
success: boolean;
|
|
38
|
-
imageUrl?: string;
|
|
39
|
-
error?: string;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export const COUPLE_FUTURE_DEFAULTS = {
|
|
43
|
-
aspectRatio: "4:3" as NanoBananaAspectRatio,
|
|
44
|
-
outputFormat: "jpeg" as NanoBananaOutputFormat,
|
|
45
|
-
timeoutMs: 300000,
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export type CoupleFeatureId =
|
|
49
|
-
| "romantic-mood"
|
|
50
|
-
| "art-style"
|
|
51
|
-
| "artist-style"
|
|
52
|
-
| "wardrobe";
|
|
53
|
-
|
|
54
|
-
export interface CoupleFeatureSelection {
|
|
55
|
-
romanticMoods?: string[];
|
|
56
|
-
romanticIntensity?: number;
|
|
57
|
-
artStyle?: string | null;
|
|
58
|
-
artStyleIntensity?: number;
|
|
59
|
-
artist?: string | null;
|
|
60
|
-
artistIntensity?: number;
|
|
61
|
-
wardrobeStyle?: string | null;
|
|
62
|
-
wardrobeIntensity?: number;
|
|
63
|
-
}
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wizard Configuration Adapter
|
|
3
|
-
* Adapts old wizard config to new dynamic step system
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import { buildStepsFromScenario, buildStepsWithNavigation, SCENARIO_CONFIGS } from "../../../infrastructure/flow/step-builder";
|
|
7
|
-
import type { DynamicStepDefinition } from "../../../domain/entities/step-config.types";
|
|
8
|
-
import type { WizardScenarioData } from "../presentation/types";
|
|
9
|
-
import { StepType } from "../../../domain/entities/flow-config.types";
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Build steps for a scenario
|
|
13
|
-
* Returns dynamically generated step definitions based on scenario type
|
|
14
|
-
*/
|
|
15
|
-
export const buildStepsForScenario = (scenario: WizardScenarioData | undefined): DynamicStepDefinition[] => {
|
|
16
|
-
if (!scenario) {
|
|
17
|
-
// No scenario selected - only show scenario selection
|
|
18
|
-
return [
|
|
19
|
-
{
|
|
20
|
-
id: "SCENARIO_SELECTION",
|
|
21
|
-
type: StepType.SCENARIO_SELECTION,
|
|
22
|
-
required: true,
|
|
23
|
-
},
|
|
24
|
-
];
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
const steps: DynamicStepDefinition[] = [];
|
|
28
|
-
|
|
29
|
-
// Always start with scenario preview if scenario is selected
|
|
30
|
-
steps.push({
|
|
31
|
-
id: "SCENARIO_PREVIEW",
|
|
32
|
-
type: StepType.SCENARIO_PREVIEW,
|
|
33
|
-
required: true,
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
// Get scenario-specific config
|
|
37
|
-
const scenarioConfig = SCENARIO_CONFIGS[scenario.category || ""] || SCENARIO_CONFIGS["romantic-kiss"];
|
|
38
|
-
|
|
39
|
-
// Build dynamic steps from config
|
|
40
|
-
const dynamicSteps = buildStepsFromScenario(scenario.id, scenarioConfig);
|
|
41
|
-
steps.push(...dynamicSteps);
|
|
42
|
-
|
|
43
|
-
// Add generating step
|
|
44
|
-
steps.push({
|
|
45
|
-
id: "GENERATING",
|
|
46
|
-
type: StepType.GENERATING,
|
|
47
|
-
required: true,
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
// Link steps together
|
|
51
|
-
return buildStepsWithNavigation(steps);
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Get photo upload count for a scenario
|
|
56
|
-
* Used to determine how many partner images are needed
|
|
57
|
-
*/
|
|
58
|
-
export const getPhotoUploadCount = (scenario: WizardScenarioData | undefined): number => {
|
|
59
|
-
if (!scenario) return 0;
|
|
60
|
-
|
|
61
|
-
const scenarioConfig = SCENARIO_CONFIGS[scenario.category || ""] || SCENARIO_CONFIGS["romantic-kiss"];
|
|
62
|
-
return scenarioConfig.photoUploads?.count ?? 0;
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* Get photo upload label for a specific index
|
|
67
|
-
*/
|
|
68
|
-
export const getPhotoUploadLabel = (
|
|
69
|
-
scenario: WizardScenarioData | undefined,
|
|
70
|
-
index: number,
|
|
71
|
-
): string => {
|
|
72
|
-
if (!scenario) return `Photo ${index + 1}`;
|
|
73
|
-
|
|
74
|
-
const scenarioConfig = SCENARIO_CONFIGS[scenario.category || ""] || SCENARIO_CONFIGS["romantic-kiss"];
|
|
75
|
-
return scenarioConfig.photoUploads?.labels?.[index] || `Photo ${index + 1}`;
|
|
76
|
-
};
|