File size: 1,010 Bytes
aad7814
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
"""Interference level resolution for generation depth (minimum / medium / maximum)."""

from __future__ import annotations

from typing import Literal

InterferenceLevel = Literal["minimum", "medium", "maximum"]

_SURVEY_TO_INTERFERENCE: dict[int, InterferenceLevel] = {
    1: "minimum",
    2: "medium",
    3: "maximum",
}


def resolve_interference_level(
    explicit: str | None,
    survey_level: int = 3,
) -> InterferenceLevel:
    """Resolve the composition path from an explicit level or RICS survey tier."""
    if explicit:
        level = explicit.strip().lower()
        if level in _SURVEY_TO_INTERFERENCE.values():
            return level  # type: ignore[return-value]
    tier = max(1, min(3, int(survey_level or 3)))
    return _SURVEY_TO_INTERFERENCE.get(tier, "maximum")


def uses_llm_composition(interference_level: InterferenceLevel) -> bool:
    """Medium and maximum always target the LLM compose/expand path when available."""
    return interference_level in ("medium", "maximum")