Use typed sockets for prompt builder configs

This commit is contained in:
2026-06-25 00:15:50 +02:00
parent 01b59df30e
commit 13a1a7c962
+75 -61
View File
@@ -10,6 +10,20 @@ except Exception:
web = None web = None
PromptServer = 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: try:
from .loop_nodes import ANY_TYPE, LOOP_NODE_CLASS_MAPPINGS, LOOP_NODE_DISPLAY_NAME_MAPPINGS from .loop_nodes import ANY_TYPE, LOOP_NODE_CLASS_MAPPINGS, LOOP_NODE_DISPLAY_NAME_MAPPINGS
from .prompt_builder import ( from .prompt_builder import (
@@ -167,11 +181,11 @@ class SxCPPromptBuilder:
"prepend_trigger_to_prompt": ("BOOLEAN", {"default": True}), "prepend_trigger_to_prompt": ("BOOLEAN", {"default": True}),
}, },
"optional": { "optional": {
"ethnicity_list": ("STRING", {"default": "", "multiline": True}), "ethnicity_list": (SXCP_ETHNICITY_LIST,),
"seed_config": ("STRING", {"default": "", "multiline": True}), "seed_config": (SXCP_SEED_CONFIG,),
"camera_config": ("STRING", {"default": "", "multiline": True}), "camera_config": (SXCP_CAMERA_CONFIG,),
"character_profile": ("STRING", {"default": "", "multiline": True}), "character_profile": (SXCP_CHARACTER_PROFILE,),
"character_cast": ("STRING", {"default": "", "multiline": True}), "character_cast": (SXCP_CHARACTER_CAST,),
"extra_positive": ("STRING", {"default": "", "multiline": True}), "extra_positive": ("STRING", {"default": "", "multiline": True}),
"extra_negative": ("STRING", {"default": "", "multiline": True}), "extra_negative": ("STRING", {"default": "", "multiline": True}),
}, },
@@ -274,7 +288,7 @@ class SxCPSeedControl:
"required": required "required": required
} }
RETURN_TYPES = ("STRING",) RETURN_TYPES = (SXCP_SEED_CONFIG,)
RETURN_NAMES = ("seed_config",) RETURN_NAMES = ("seed_config",)
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" 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") RETURN_NAMES = ("seed", "seed_config", "summary")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" CATEGORY = "prompt_builder"
@@ -381,7 +395,7 @@ class SxCPSeedLocker:
} }
} }
RETURN_TYPES = ("STRING", "STRING") RETURN_TYPES = (SXCP_SEED_CONFIG, "STRING")
RETURN_NAMES = ("seed_config", "summary") RETURN_NAMES = ("seed_config", "summary")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" CATEGORY = "prompt_builder"
@@ -409,7 +423,7 @@ class SxCPCameraControl:
} }
} }
RETURN_TYPES = ("STRING",) RETURN_TYPES = (SXCP_CAMERA_CONFIG,)
RETURN_NAMES = ("camera_config",) RETURN_NAMES = ("camera_config",)
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" 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") RETURN_NAMES = ("camera_config", "camera_prompt", "camera_info_json")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" 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") RETURN_NAMES = ("camera_config", "camera_prompt", "camera_info_json")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" 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") RETURN_NAMES = ("category_config", "category", "subcategory")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" 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") RETURN_NAMES = ("cast_config", "women_count", "men_count", "cast_summary")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" CATEGORY = "prompt_builder"
@@ -625,7 +639,7 @@ class SxCPGenerationProfile:
} }
} }
RETURN_TYPES = ("STRING", "STRING") RETURN_TYPES = (SXCP_GENERATION_PROFILE, "STRING")
RETURN_NAMES = ("generation_profile", "summary") RETURN_NAMES = ("generation_profile", "summary")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" CATEGORY = "prompt_builder"
@@ -678,7 +692,7 @@ class SxCPAdvancedFilters:
} }
} }
RETURN_TYPES = ("STRING",) RETURN_TYPES = (SXCP_FILTER_CONFIG,)
RETURN_NAMES = ("filter_config",) RETURN_NAMES = ("filter_config",)
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" CATEGORY = "prompt_builder"
@@ -746,8 +760,8 @@ class SxCPEthnicityList:
} }
} }
RETURN_TYPES = ("STRING", "STRING", "STRING") RETURN_TYPES = (SXCP_ETHNICITY_LIST, SXCP_FILTER_CONFIG, "STRING")
RETURN_NAMES = ("ethnicity", "filter_config", "summary") RETURN_NAMES = ("ethnicity_list", "filter_config", "summary")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" CATEGORY = "prompt_builder"
@@ -829,11 +843,11 @@ class _SxCPHairAxisNode:
return { return {
"required": required, "required": required,
"optional": { "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") RETURN_NAMES = ("hair_config", "summary")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" CATEGORY = "prompt_builder"
@@ -882,11 +896,11 @@ class SxCPCharacterManualDetails:
"hardcore_clothing": ("STRING", {"default": ""}), "hardcore_clothing": ("STRING", {"default": ""}),
}, },
"optional": { "optional": {
"manual": ("STRING", {"default": "", "multiline": True}), "manual": (SXCP_CHARACTER_MANUAL,),
}, },
} }
RETURN_TYPES = ("STRING", "STRING") RETURN_TYPES = (SXCP_CHARACTER_MANUAL, "STRING")
RETURN_NAMES = ("manual", "summary") RETURN_NAMES = ("manual", "summary")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" CATEGORY = "prompt_builder"
@@ -930,15 +944,15 @@ class SxCPPromptBuilderFromConfigs:
"seed": ("INT", {"default": 20260614, "min": 0, "max": 0xFFFFFFFF, "step": 1}), "seed": ("INT", {"default": 20260614, "min": 0, "max": 0xFFFFFFFF, "step": 1}),
}, },
"optional": { "optional": {
"category_config": ("STRING", {"default": "", "multiline": True}), "category_config": (SXCP_CATEGORY_CONFIG,),
"cast_config": ("STRING", {"default": "", "multiline": True}), "cast_config": (SXCP_CAST_CONFIG,),
"generation_profile": ("STRING", {"default": "", "multiline": True}), "generation_profile": (SXCP_GENERATION_PROFILE,),
"filter_config": ("STRING", {"default": "", "multiline": True}), "filter_config": (SXCP_FILTER_CONFIG,),
"ethnicity_list": ("STRING", {"default": "", "multiline": True}), "ethnicity_list": (SXCP_ETHNICITY_LIST,),
"seed_config": ("STRING", {"default": "", "multiline": True}), "seed_config": (SXCP_SEED_CONFIG,),
"camera_config": ("STRING", {"default": "", "multiline": True}), "camera_config": (SXCP_CAMERA_CONFIG,),
"character_profile": ("STRING", {"default": "", "multiline": True}), "character_profile": (SXCP_CHARACTER_PROFILE,),
"character_cast": ("STRING", {"default": "", "multiline": True}), "character_cast": (SXCP_CHARACTER_CAST,),
"extra_positive": ("STRING", {"default": "", "multiline": True}), "extra_positive": ("STRING", {"default": "", "multiline": True}),
"extra_negative": ("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}), "hardcore_expression_intensity": ("FLOAT", {"default": -1.0, "min": -1.0, "max": 1.0, "step": 0.01}),
}, },
"optional": { "optional": {
"manual": ("STRING", {"default": "", "multiline": True}), "manual": (SXCP_CHARACTER_MANUAL,),
"ethnicity_list": ("STRING", {"default": "", "multiline": True}), "ethnicity_list": (SXCP_ETHNICITY_LIST,),
"hair_config": ("STRING", {"default": "", "multiline": True}), "hair_config": (SXCP_HAIR_CONFIG,),
"character_cast": ("STRING", {"default": "", "multiline": True}), "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") RETURN_NAMES = ("character_cast", "character_slot", "summary", "status")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" 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}), "hardcore_expression_intensity": ("FLOAT", {"default": -1.0, "min": -1.0, "max": 1.0, "step": 0.01}),
}, },
"optional": { "optional": {
"manual": ("STRING", {"default": "", "multiline": True}), "manual": (SXCP_CHARACTER_MANUAL,),
"ethnicity_list": ("STRING", {"default": "", "multiline": True}), "ethnicity_list": (SXCP_ETHNICITY_LIST,),
"hair_config": ("STRING", {"default": "", "multiline": True}), "hair_config": (SXCP_HAIR_CONFIG,),
"character_cast": ("STRING", {"default": "", "multiline": True}), "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") RETURN_NAMES = ("character_cast", "character_slot", "summary", "status")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" 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}), "hardcore_expression_intensity": ("FLOAT", {"default": -1.0, "min": -1.0, "max": 1.0, "step": 0.01}),
}, },
"optional": { "optional": {
"manual": ("STRING", {"default": "", "multiline": True}), "manual": (SXCP_CHARACTER_MANUAL,),
"ethnicity_list": ("STRING", {"default": "", "multiline": True}), "ethnicity_list": (SXCP_ETHNICITY_LIST,),
"hair_config": ("STRING", {"default": "", "multiline": True}), "hair_config": (SXCP_HAIR_CONFIG,),
"character_cast": ("STRING", {"default": "", "multiline": True}), "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") RETURN_NAMES = ("character_cast", "character_slot", "summary", "status")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" CATEGORY = "prompt_builder"
@@ -1252,12 +1266,12 @@ class SxCPCharacterProfileSave:
}, },
"optional": { "optional": {
"metadata_json": ("STRING", {"default": "", "multiline": True}), "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_TYPES = (SXCP_CHARACTER_PROFILE, "STRING", "STRING", "STRING", "STRING", SXCP_CHARACTER_PROFILE)
RETURN_NAMES = ("character_profile", "descriptor", "profile_name", "saved_path", "status", "character_cast") RETURN_NAMES = ("character_profile", "descriptor", "profile_name", "saved_path", "status", "profile_json")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" CATEGORY = "prompt_builder"
@@ -1325,7 +1339,7 @@ class SxCPCharacterProfileLoad:
}, },
"optional": { "optional": {
"manual_profile_name": ("STRING", {"default": ""}), "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_subject_type": (["keep_profile", "woman", "man"], {"default": "keep_profile"}),
"override_age": ("STRING", {"default": ""}), "override_age": ("STRING", {"default": ""}),
"override_body": ("STRING", {"default": ""}), "override_body": ("STRING", {"default": ""}),
@@ -1338,8 +1352,8 @@ class SxCPCharacterProfileLoad:
}, },
} }
RETURN_TYPES = ("STRING", "STRING", "STRING", "STRING", "STRING", "STRING") RETURN_TYPES = (SXCP_CHARACTER_PROFILE, "STRING", "STRING", "STRING", "STRING", SXCP_CHARACTER_PROFILE)
RETURN_NAMES = ("character_profile", "descriptor", "profile_name", "saved_path", "status", "character_cast") RETURN_NAMES = ("character_profile", "descriptor", "profile_name", "saved_path", "status", "profile_json")
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" CATEGORY = "prompt_builder"
@@ -1527,7 +1541,7 @@ class SxCPInstaOFOptions:
} }
} }
RETURN_TYPES = ("STRING",) RETURN_TYPES = (SXCP_INSTA_OF_OPTIONS,)
RETURN_NAMES = ("options_json",) RETURN_NAMES = ("options_json",)
FUNCTION = "build" FUNCTION = "build"
CATEGORY = "prompt_builder" CATEGORY = "prompt_builder"
@@ -1589,15 +1603,15 @@ class SxCPInstaOFPromptPair:
"prepend_trigger_to_prompt": ("BOOLEAN", {"default": True}), "prepend_trigger_to_prompt": ("BOOLEAN", {"default": True}),
}, },
"optional": { "optional": {
"seed_config": ("STRING", {"default": "", "multiline": True}), "seed_config": (SXCP_SEED_CONFIG,),
"options_json": ("STRING", {"default": "", "multiline": True}), "options_json": (SXCP_INSTA_OF_OPTIONS,),
"filter_config": ("STRING", {"default": "", "multiline": True}), "filter_config": (SXCP_FILTER_CONFIG,),
"ethnicity_list": ("STRING", {"default": "", "multiline": True}), "ethnicity_list": (SXCP_ETHNICITY_LIST,),
"camera_config": ("STRING", {"default": "", "multiline": True}), "camera_config": (SXCP_CAMERA_CONFIG,),
"softcore_camera_config": ("STRING", {"default": "", "multiline": True}), "softcore_camera_config": (SXCP_CAMERA_CONFIG,),
"hardcore_camera_config": ("STRING", {"default": "", "multiline": True}), "hardcore_camera_config": (SXCP_CAMERA_CONFIG,),
"character_profile": ("STRING", {"default": "", "multiline": True}), "character_profile": (SXCP_CHARACTER_PROFILE,),
"character_cast": ("STRING", {"default": "", "multiline": True}), "character_cast": (SXCP_CHARACTER_CAST,),
"extra_positive": ("STRING", {"default": "", "multiline": True}), "extra_positive": ("STRING", {"default": "", "multiline": True}),
"extra_negative": ("STRING", {"default": "", "multiline": True}), "extra_negative": ("STRING", {"default": "", "multiline": True}),
}, },