Expose seed control summary

This commit is contained in:
2026-06-27 12:59:51 +02:00
parent 6ff3b0cbd5
commit 58f74e44e5
4 changed files with 88 additions and 31 deletions
+39 -22
View File
@@ -76,8 +76,8 @@ class SxCPSeedControl:
required[f"{axis}_seed"] = ("INT", seed_spec)
return {"required": required}
RETURN_TYPES = (SXCP_SEED_CONFIG,)
RETURN_NAMES = ("seed_config",)
RETURN_TYPES = (SXCP_SEED_CONFIG, "STRING")
RETURN_NAMES = ("seed_config", "summary")
FUNCTION = "build"
CATEGORY = "prompt_builder"
@@ -88,6 +88,21 @@ class SxCPSeedControl:
return random.random()
return tuple(args), tuple(sorted(kwargs.items()))
@classmethod
def _summary(cls, config_json):
try:
config = json.loads(config_json)
except (TypeError, ValueError, json.JSONDecodeError):
return "invalid seed config"
parts = []
for axis in cls.SEED_AXES:
try:
value = int(config.get(f"{axis}_seed", -1))
except (TypeError, ValueError):
value = -1
parts.append(f"{axis}={'follow_main' if value < 0 else value}")
return "resolved seeds: " + "; ".join(parts)
def build(
self,
category_seed_mode,
@@ -109,27 +124,29 @@ class SxCPSeedControl:
composition_seed_mode,
composition_seed,
):
config = build_seed_config_json(
category_seed=category_seed,
subcategory_seed=subcategory_seed,
content_seed=content_seed,
person_seed=person_seed,
scene_seed=scene_seed,
pose_seed=pose_seed,
role_seed=role_seed,
expression_seed=expression_seed,
composition_seed=composition_seed,
category_seed_mode=category_seed_mode,
subcategory_seed_mode=subcategory_seed_mode,
content_seed_mode=content_seed_mode,
person_seed_mode=person_seed_mode,
scene_seed_mode=scene_seed_mode,
pose_seed_mode=pose_seed_mode,
role_seed_mode=role_seed_mode,
expression_seed_mode=expression_seed_mode,
composition_seed_mode=composition_seed_mode,
)
return (
build_seed_config_json(
category_seed=category_seed,
subcategory_seed=subcategory_seed,
content_seed=content_seed,
person_seed=person_seed,
scene_seed=scene_seed,
pose_seed=pose_seed,
role_seed=role_seed,
expression_seed=expression_seed,
composition_seed=composition_seed,
category_seed_mode=category_seed_mode,
subcategory_seed_mode=subcategory_seed_mode,
content_seed_mode=content_seed_mode,
person_seed_mode=person_seed_mode,
scene_seed_mode=scene_seed_mode,
pose_seed_mode=pose_seed_mode,
role_seed_mode=role_seed_mode,
expression_seed_mode=expression_seed_mode,
composition_seed_mode=composition_seed_mode,
),
config,
self._summary(config),
)