from support_triage_openenv.env import SupportTriageEnv from support_triage_openenv.models import Action def test_reset_and_state_cycle(): env = SupportTriageEnv() obs = env.reset("easy_password_reset") assert obs.task_id == "easy_password_reset" assert obs.step_count == 0 state = env.state() assert state["done"] is False def test_easy_task_can_reach_high_score(): env = SupportTriageEnv() env.reset("easy_password_reset") env.step(Action(action_type="read_ticket", ticket_id="T-1001")) env.step( Action( action_type="classify_ticket", ticket_id="T-1001", priority="medium", category="account", needs_escalation=False, ) ) env.step( Action( action_type="draft_reply", message=( "We will send a reset link to your email. For security, please confirm the request " "from your device after receiving the reset link." ), ) ) _, reward, done, info = env.step(Action(action_type="resolve_ticket", ticket_id="T-1001")) assert done is True assert info["grader_score"] >= 0.9 assert reward.value >= 0.9 def test_invalid_ticket_penalty_and_done_guard(): env = SupportTriageEnv() env.reset("medium_billing_dispute") _, reward, _, info = env.step(Action(action_type="read_ticket", ticket_id="NOT-REAL")) assert reward.value < 0.5 assert info["penalties"]