Centralize formatter target policy

This commit is contained in:
2026-06-27 13:42:06 +02:00
parent 194eb06465
commit c4d5477bf9
7 changed files with 137 additions and 16 deletions
+9 -3
View File
@@ -3,6 +3,11 @@ from __future__ import annotations
from dataclasses import dataclass
from typing import Any, Callable
try:
from . import formatter_target as target_policy
except ImportError: # pragma: no cover - plain-script smoke tests
import formatter_target as target_policy
@dataclass(frozen=True)
class KreaFormatRequest:
@@ -45,10 +50,11 @@ class KreaFormatDependencies:
def format_krea2_prompt_result(request: KreaFormatRequest, deps: KreaFormatDependencies) -> KreaFormatRoute:
detail_level = request.detail_level if request.detail_level in ("concise", "balanced", "dense") else "balanced"
style_mode = request.style_mode if request.style_mode in ("preserve", "photographic", "minimal") else "preserve"
target = request.target if request.target in ("auto", "single", "softcore", "hardcore") else "auto"
target = target_policy.normalize_target(request.target)
row, method = deps.row_from_inputs(request.source_text, request.metadata_json, request.input_hint)
if row and row.get("mode") == "Insta/OF":
pair_target = target_policy.pair_policy(target)
soft_prompt, soft_negative, hard_prompt, hard_negative = deps.insta_pair_to_krea(
row,
detail_level,
@@ -63,8 +69,8 @@ def format_krea2_prompt_result(request: KreaFormatRequest, deps: KreaFormatDepen
hard_prompt = f"{hard_prompt.rstrip()} {request.extra_positive.strip()}"
soft_prompt = deps.sanitize_prose_text(soft_prompt, triggers=deps.trigger_candidates)
hard_prompt = deps.sanitize_prose_text(hard_prompt, triggers=deps.trigger_candidates)
selected = hard_prompt if target == "hardcore" else soft_prompt if target == "softcore" else soft_prompt
selected_negative = hard_negative if target == "hardcore" else soft_negative
selected = hard_prompt if pair_target.selected_side == "hardcore" else soft_prompt
selected_negative = hard_negative if pair_target.selected_side == "hardcore" else soft_negative
negative = deps.sanitize_negative_text(
deps.combine_negative(selected_negative, request.negative_prompt, request.extra_negative)
)