From 13a1a7c962c88e2afad745d68648164a1b8872b8 Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Thu, 25 Jun 2026 00:15:50 +0200 Subject: [PATCH] Use typed sockets for prompt builder configs --- __init__.py | 136 +++++++++++++++++++++++++++++----------------------- 1 file changed, 75 insertions(+), 61 deletions(-) diff --git a/__init__.py b/__init__.py index 7ed4941..963fc56 100644 --- a/__init__.py +++ b/__init__.py @@ -10,6 +10,20 @@ except Exception: web = None PromptServer = None +SXCP_HAIR_CONFIG = "SXCP_HAIR_CONFIG" +SXCP_CHARACTER_MANUAL = "SXCP_CHARACTER_MANUAL" +SXCP_ETHNICITY_LIST = "SXCP_ETHNICITY_LIST" +SXCP_FILTER_CONFIG = "SXCP_FILTER_CONFIG" +SXCP_SEED_CONFIG = "SXCP_SEED_CONFIG" +SXCP_CAMERA_CONFIG = "SXCP_CAMERA_CONFIG" +SXCP_CATEGORY_CONFIG = "SXCP_CATEGORY_CONFIG" +SXCP_CAST_CONFIG = "SXCP_CAST_CONFIG" +SXCP_GENERATION_PROFILE = "SXCP_GENERATION_PROFILE" +SXCP_INSTA_OF_OPTIONS = "SXCP_INSTA_OF_OPTIONS" +SXCP_CHARACTER_CAST = "SXCP_CHARACTER_CAST" +SXCP_CHARACTER_SLOT = "SXCP_CHARACTER_SLOT" +SXCP_CHARACTER_PROFILE = "SXCP_CHARACTER_PROFILE" + try: from .loop_nodes import ANY_TYPE, LOOP_NODE_CLASS_MAPPINGS, LOOP_NODE_DISPLAY_NAME_MAPPINGS from .prompt_builder import ( @@ -167,11 +181,11 @@ class SxCPPromptBuilder: "prepend_trigger_to_prompt": ("BOOLEAN", {"default": True}), }, "optional": { - "ethnicity_list": ("STRING", {"default": "", "multiline": True}), - "seed_config": ("STRING", {"default": "", "multiline": True}), - "camera_config": ("STRING", {"default": "", "multiline": True}), - "character_profile": ("STRING", {"default": "", "multiline": True}), - "character_cast": ("STRING", {"default": "", "multiline": True}), + "ethnicity_list": (SXCP_ETHNICITY_LIST,), + "seed_config": (SXCP_SEED_CONFIG,), + "camera_config": (SXCP_CAMERA_CONFIG,), + "character_profile": (SXCP_CHARACTER_PROFILE,), + "character_cast": (SXCP_CHARACTER_CAST,), "extra_positive": ("STRING", {"default": "", "multiline": True}), "extra_negative": ("STRING", {"default": "", "multiline": True}), }, @@ -274,7 +288,7 @@ class SxCPSeedControl: "required": required } - RETURN_TYPES = ("STRING",) + RETURN_TYPES = (SXCP_SEED_CONFIG,) RETURN_NAMES = ("seed_config",) FUNCTION = "build" CATEGORY = "prompt_builder" @@ -341,7 +355,7 @@ class SxCPGlobalSeed: } } - RETURN_TYPES = ("INT", "STRING", "STRING") + RETURN_TYPES = ("INT", SXCP_SEED_CONFIG, "STRING") RETURN_NAMES = ("seed", "seed_config", "summary") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -381,7 +395,7 @@ class SxCPSeedLocker: } } - RETURN_TYPES = ("STRING", "STRING") + RETURN_TYPES = (SXCP_SEED_CONFIG, "STRING") RETURN_NAMES = ("seed_config", "summary") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -409,7 +423,7 @@ class SxCPCameraControl: } } - RETURN_TYPES = ("STRING",) + RETURN_TYPES = (SXCP_CAMERA_CONFIG,) RETURN_NAMES = ("camera_config",) FUNCTION = "build" CATEGORY = "prompt_builder" @@ -462,7 +476,7 @@ class SxCPCameraOrbitControl: } } - RETURN_TYPES = ("STRING", "STRING", "STRING") + RETURN_TYPES = (SXCP_CAMERA_CONFIG, "STRING", "STRING") RETURN_NAMES = ("camera_config", "camera_prompt", "camera_info_json") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -525,7 +539,7 @@ class SxCPQwenCameraTranslator: }, } - RETURN_TYPES = ("STRING", "STRING", "STRING") + RETURN_TYPES = (SXCP_CAMERA_CONFIG, "STRING", "STRING") RETURN_NAMES = ("camera_config", "camera_prompt", "camera_info_json") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -574,7 +588,7 @@ class SxCPCategoryPreset: } } - RETURN_TYPES = ("STRING", "STRING", "STRING") + RETURN_TYPES = (SXCP_CATEGORY_CONFIG, "STRING", "STRING") RETURN_NAMES = ("category_config", "category", "subcategory") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -596,7 +610,7 @@ class SxCPCastControl: } } - RETURN_TYPES = ("STRING", "INT", "INT", "STRING") + RETURN_TYPES = (SXCP_CAST_CONFIG, "INT", "INT", "STRING") RETURN_NAMES = ("cast_config", "women_count", "men_count", "cast_summary") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -625,7 +639,7 @@ class SxCPGenerationProfile: } } - RETURN_TYPES = ("STRING", "STRING") + RETURN_TYPES = (SXCP_GENERATION_PROFILE, "STRING") RETURN_NAMES = ("generation_profile", "summary") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -678,7 +692,7 @@ class SxCPAdvancedFilters: } } - RETURN_TYPES = ("STRING",) + RETURN_TYPES = (SXCP_FILTER_CONFIG,) RETURN_NAMES = ("filter_config",) FUNCTION = "build" CATEGORY = "prompt_builder" @@ -746,8 +760,8 @@ class SxCPEthnicityList: } } - RETURN_TYPES = ("STRING", "STRING", "STRING") - RETURN_NAMES = ("ethnicity", "filter_config", "summary") + RETURN_TYPES = (SXCP_ETHNICITY_LIST, SXCP_FILTER_CONFIG, "STRING") + RETURN_NAMES = ("ethnicity_list", "filter_config", "summary") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -829,11 +843,11 @@ class _SxCPHairAxisNode: return { "required": required, "optional": { - "hair_config": ("STRING", {"default": "", "multiline": True}), + "hair_config": (SXCP_HAIR_CONFIG,), }, } - RETURN_TYPES = ("STRING", "STRING") + RETURN_TYPES = (SXCP_HAIR_CONFIG, "STRING") RETURN_NAMES = ("hair_config", "summary") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -882,11 +896,11 @@ class SxCPCharacterManualDetails: "hardcore_clothing": ("STRING", {"default": ""}), }, "optional": { - "manual": ("STRING", {"default": "", "multiline": True}), + "manual": (SXCP_CHARACTER_MANUAL,), }, } - RETURN_TYPES = ("STRING", "STRING") + RETURN_TYPES = (SXCP_CHARACTER_MANUAL, "STRING") RETURN_NAMES = ("manual", "summary") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -930,15 +944,15 @@ class SxCPPromptBuilderFromConfigs: "seed": ("INT", {"default": 20260614, "min": 0, "max": 0xFFFFFFFF, "step": 1}), }, "optional": { - "category_config": ("STRING", {"default": "", "multiline": True}), - "cast_config": ("STRING", {"default": "", "multiline": True}), - "generation_profile": ("STRING", {"default": "", "multiline": True}), - "filter_config": ("STRING", {"default": "", "multiline": True}), - "ethnicity_list": ("STRING", {"default": "", "multiline": True}), - "seed_config": ("STRING", {"default": "", "multiline": True}), - "camera_config": ("STRING", {"default": "", "multiline": True}), - "character_profile": ("STRING", {"default": "", "multiline": True}), - "character_cast": ("STRING", {"default": "", "multiline": True}), + "category_config": (SXCP_CATEGORY_CONFIG,), + "cast_config": (SXCP_CAST_CONFIG,), + "generation_profile": (SXCP_GENERATION_PROFILE,), + "filter_config": (SXCP_FILTER_CONFIG,), + "ethnicity_list": (SXCP_ETHNICITY_LIST,), + "seed_config": (SXCP_SEED_CONFIG,), + "camera_config": (SXCP_CAMERA_CONFIG,), + "character_profile": (SXCP_CHARACTER_PROFILE,), + "character_cast": (SXCP_CHARACTER_CAST,), "extra_positive": ("STRING", {"default": "", "multiline": True}), "extra_negative": ("STRING", {"default": "", "multiline": True}), }, @@ -1012,14 +1026,14 @@ class SxCPCharacterSlot: "hardcore_expression_intensity": ("FLOAT", {"default": -1.0, "min": -1.0, "max": 1.0, "step": 0.01}), }, "optional": { - "manual": ("STRING", {"default": "", "multiline": True}), - "ethnicity_list": ("STRING", {"default": "", "multiline": True}), - "hair_config": ("STRING", {"default": "", "multiline": True}), - "character_cast": ("STRING", {"default": "", "multiline": True}), + "manual": (SXCP_CHARACTER_MANUAL,), + "ethnicity_list": (SXCP_ETHNICITY_LIST,), + "hair_config": (SXCP_HAIR_CONFIG,), + "character_cast": (SXCP_CHARACTER_CAST,), }, } - RETURN_TYPES = ("STRING", "STRING", "STRING", "STRING") + RETURN_TYPES = (SXCP_CHARACTER_CAST, SXCP_CHARACTER_SLOT, "STRING", "STRING") RETURN_NAMES = ("character_cast", "character_slot", "summary", "status") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -1093,14 +1107,14 @@ class SxCPWomanSlot: "hardcore_expression_intensity": ("FLOAT", {"default": -1.0, "min": -1.0, "max": 1.0, "step": 0.01}), }, "optional": { - "manual": ("STRING", {"default": "", "multiline": True}), - "ethnicity_list": ("STRING", {"default": "", "multiline": True}), - "hair_config": ("STRING", {"default": "", "multiline": True}), - "character_cast": ("STRING", {"default": "", "multiline": True}), + "manual": (SXCP_CHARACTER_MANUAL,), + "ethnicity_list": (SXCP_ETHNICITY_LIST,), + "hair_config": (SXCP_HAIR_CONFIG,), + "character_cast": (SXCP_CHARACTER_CAST,), }, } - RETURN_TYPES = ("STRING", "STRING", "STRING", "STRING") + RETURN_TYPES = (SXCP_CHARACTER_CAST, SXCP_CHARACTER_SLOT, "STRING", "STRING") RETURN_NAMES = ("character_cast", "character_slot", "summary", "status") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -1171,14 +1185,14 @@ class SxCPManSlot: "hardcore_expression_intensity": ("FLOAT", {"default": -1.0, "min": -1.0, "max": 1.0, "step": 0.01}), }, "optional": { - "manual": ("STRING", {"default": "", "multiline": True}), - "ethnicity_list": ("STRING", {"default": "", "multiline": True}), - "hair_config": ("STRING", {"default": "", "multiline": True}), - "character_cast": ("STRING", {"default": "", "multiline": True}), + "manual": (SXCP_CHARACTER_MANUAL,), + "ethnicity_list": (SXCP_ETHNICITY_LIST,), + "hair_config": (SXCP_HAIR_CONFIG,), + "character_cast": (SXCP_CHARACTER_CAST,), }, } - RETURN_TYPES = ("STRING", "STRING", "STRING", "STRING") + RETURN_TYPES = (SXCP_CHARACTER_CAST, SXCP_CHARACTER_SLOT, "STRING", "STRING") RETURN_NAMES = ("character_cast", "character_slot", "summary", "status") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -1252,12 +1266,12 @@ class SxCPCharacterProfileSave: }, "optional": { "metadata_json": ("STRING", {"default": "", "multiline": True}), - "character_slot": ("STRING", {"default": "", "multiline": True}), + "character_slot": (SXCP_CHARACTER_SLOT,), }, } - RETURN_TYPES = ("STRING", "STRING", "STRING", "STRING", "STRING", "STRING") - RETURN_NAMES = ("character_profile", "descriptor", "profile_name", "saved_path", "status", "character_cast") + RETURN_TYPES = (SXCP_CHARACTER_PROFILE, "STRING", "STRING", "STRING", "STRING", SXCP_CHARACTER_PROFILE) + RETURN_NAMES = ("character_profile", "descriptor", "profile_name", "saved_path", "status", "profile_json") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -1325,7 +1339,7 @@ class SxCPCharacterProfileLoad: }, "optional": { "manual_profile_name": ("STRING", {"default": ""}), - "fallback_profile_json": ("STRING", {"default": "", "multiline": True}), + "fallback_profile_json": (SXCP_CHARACTER_PROFILE,), "override_subject_type": (["keep_profile", "woman", "man"], {"default": "keep_profile"}), "override_age": ("STRING", {"default": ""}), "override_body": ("STRING", {"default": ""}), @@ -1338,8 +1352,8 @@ class SxCPCharacterProfileLoad: }, } - RETURN_TYPES = ("STRING", "STRING", "STRING", "STRING", "STRING", "STRING") - RETURN_NAMES = ("character_profile", "descriptor", "profile_name", "saved_path", "status", "character_cast") + RETURN_TYPES = (SXCP_CHARACTER_PROFILE, "STRING", "STRING", "STRING", "STRING", SXCP_CHARACTER_PROFILE) + RETURN_NAMES = ("character_profile", "descriptor", "profile_name", "saved_path", "status", "profile_json") FUNCTION = "build" CATEGORY = "prompt_builder" @@ -1527,7 +1541,7 @@ class SxCPInstaOFOptions: } } - RETURN_TYPES = ("STRING",) + RETURN_TYPES = (SXCP_INSTA_OF_OPTIONS,) RETURN_NAMES = ("options_json",) FUNCTION = "build" CATEGORY = "prompt_builder" @@ -1589,15 +1603,15 @@ class SxCPInstaOFPromptPair: "prepend_trigger_to_prompt": ("BOOLEAN", {"default": True}), }, "optional": { - "seed_config": ("STRING", {"default": "", "multiline": True}), - "options_json": ("STRING", {"default": "", "multiline": True}), - "filter_config": ("STRING", {"default": "", "multiline": True}), - "ethnicity_list": ("STRING", {"default": "", "multiline": True}), - "camera_config": ("STRING", {"default": "", "multiline": True}), - "softcore_camera_config": ("STRING", {"default": "", "multiline": True}), - "hardcore_camera_config": ("STRING", {"default": "", "multiline": True}), - "character_profile": ("STRING", {"default": "", "multiline": True}), - "character_cast": ("STRING", {"default": "", "multiline": True}), + "seed_config": (SXCP_SEED_CONFIG,), + "options_json": (SXCP_INSTA_OF_OPTIONS,), + "filter_config": (SXCP_FILTER_CONFIG,), + "ethnicity_list": (SXCP_ETHNICITY_LIST,), + "camera_config": (SXCP_CAMERA_CONFIG,), + "softcore_camera_config": (SXCP_CAMERA_CONFIG,), + "hardcore_camera_config": (SXCP_CAMERA_CONFIG,), + "character_profile": (SXCP_CHARACTER_PROFILE,), + "character_cast": (SXCP_CHARACTER_CAST,), "extra_positive": ("STRING", {"default": "", "multiline": True}), "extra_negative": ("STRING", {"default": "", "multiline": True}), },