31 lines
1.1 KiB
Python
31 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
"""Capability and effort floors for quality-driven CLI retries."""
|
|
|
|
from __future__ import annotations
|
|
|
|
from cli_lane_config import CAPABILITIES, EFFORTS, Route
|
|
|
|
|
|
def quality_retry_assignee(previous: Route, selected: Route) -> str:
|
|
"""Raise effort before capability when quality feedback repeats a plan."""
|
|
capability = max(
|
|
CAPABILITIES.index(previous.capability), CAPABILITIES.index(selected.capability)
|
|
)
|
|
effort = max(EFFORTS.index(previous.effort), EFFORTS.index(selected.effort))
|
|
provider = selected.provider
|
|
if (
|
|
selected.provider == previous.provider
|
|
and selected.model == previous.model
|
|
and capability == CAPABILITIES.index(previous.capability)
|
|
and effort == EFFORTS.index(previous.effort)
|
|
):
|
|
if effort < len(EFFORTS) - 1:
|
|
effort += 1
|
|
elif capability < len(CAPABILITIES) - 1:
|
|
capability += 1
|
|
effort = EFFORTS.index(previous.effort)
|
|
else:
|
|
provider = "claude" if provider == "codex" else "codex"
|
|
role = CAPABILITIES[capability]
|
|
return f"cli-{provider}-{role}-{EFFORTS[effort]}"
|