Extract Insta pair builder orchestration

This commit is contained in:
2026-06-27 11:03:04 +02:00
parent 28612f9d00
commit 8398a97cdf
5 changed files with 406 additions and 205 deletions
+46
View File
@@ -45,6 +45,7 @@ import krea_cast # noqa: E402
import krea_formatter # noqa: E402
import location_config # noqa: E402
import loop_nodes # noqa: E402
import pair_builder # noqa: E402
import pair_camera # noqa: E402
import pair_cast # noqa: E402
import pair_clothing # noqa: E402
@@ -3066,6 +3067,50 @@ def smoke_pair_route_policy() -> None:
_expect(clothing_route.requires_body_exposure_scene is True, "Typed pair clothing route lost exposure-scene flag")
def smoke_pair_builder_policy() -> None:
request = pair_builder.InstaPairBuildRequest(
row_number=1,
start_index=1,
seed=2101,
ethnicity="any",
figure="random",
no_plus_women=False,
no_black=False,
trigger=Trigger,
prepend_trigger_to_prompt=True,
options_json=_insta_options(),
character_cast=_character_cast(),
hardcore_position_config=_action_filter("penetration_only"),
)
built = pair_builder.build_insta_of_pair(request, pb._insta_pair_build_dependencies())
delegated = pb.build_insta_of_pair(
row_number=request.row_number,
start_index=request.start_index,
seed=request.seed,
ethnicity=request.ethnicity,
figure=request.figure,
no_plus_women=request.no_plus_women,
no_black=request.no_black,
trigger=request.trigger,
prepend_trigger_to_prompt=request.prepend_trigger_to_prompt,
seed_config=request.seed_config,
options_json=request.options_json,
filter_config=request.filter_config,
camera_config=request.camera_config,
softcore_camera_config=request.softcore_camera_config,
hardcore_camera_config=request.hardcore_camera_config,
character_profile=request.character_profile,
character_cast=request.character_cast,
hardcore_position_config=request.hardcore_position_config,
location_config=request.location_config,
composition_config=request.composition_config,
extra_positive=request.extra_positive,
extra_negative=request.extra_negative,
)
_expect(built == delegated, "Prompt builder Insta/OF wrapper should delegate to pair_builder without output drift")
_expect_pair(built, "pair_builder_policy")
def _expect_pair(pair: dict[str, Any], name: str) -> None:
_expect(pair.get("mode") == "Insta/OF", f"{name}.mode should be Insta/OF")
_expect_row_base(pair.get("softcore_row") or {}, f"{name}.softcore_row")
@@ -4968,6 +5013,7 @@ SMOKE_CASES: list[tuple[str, Callable[[], None]]] = [
("krea_close_foreplay_route", smoke_krea_close_foreplay_route),
("pair_options_policy", smoke_pair_options_policy),
("pair_route_policy", smoke_pair_route_policy),
("pair_builder_policy", smoke_pair_builder_policy),
("insta_pair_same_cast", smoke_insta_pair),
("krea_pair_clothing_state", smoke_krea_pair_clothing_state),
("insta_pair_pov_man", smoke_insta_pair_pov),