from types import SimpleNamespace from src.agents.protocol import AgentSessionStatus from src.services.decision_manager import _phase2_fallback_reason def _package(**kwargs): data = { "session_status": AgentSessionStatus.COMPLETED, "all_agents_degraded": False, "recommended_action": "kubectl rollout restart deployment/awoooi-api -n awoooi-prod", "requires_human_approval": False, } data.update(kwargs) return SimpleNamespace(**data) def test_phase2_timeout_continues_to_fallback() -> None: pkg = _package( session_status=AgentSessionStatus.TIMEOUT, recommended_action=None, requires_human_approval=True, ) assert _phase2_fallback_reason(pkg) == "session_timeout" def test_phase2_empty_manual_gate_continues_to_fallback() -> None: pkg = _package(recommended_action="", requires_human_approval=True) assert _phase2_fallback_reason(pkg) == "empty_action_requires_human" def test_phase2_actionable_package_stays_primary() -> None: pkg = _package() assert _phase2_fallback_reason(pkg) is None