from support_ticket_env import SupportTicketEnvironment, list_task_ids, scripted_policy from support_ticket_env.models import EscalateTicketAction, IssueRefundAction, LookupAccountAction, ResolveTicketAction, SendReplyAction def run_actions(task_id: str, actions: list[object]): env = SupportTicketEnvironment() result = env.reset(task_id) for action in actions: result = env.step(action) if result.done: break return result def test_gold_policies_score_perfectly() -> None: env = SupportTicketEnvironment() for task_id in list_task_ids(): result = env.reset(task_id) while not result.done: action = scripted_policy(task_id, result.observation.steps_taken + 1, result.observation.customer_id) result = env.step(action) assert result.info["score"] == 1.0 def test_premature_resolution_scores_poorly() -> None: result = run_actions( "duplicate_charge_refund", [ResolveTicketAction(action_type="resolve_ticket", resolution_code="billing_refund_processed")], ) assert result.done is True assert result.info["score"] < 0.5 def test_task3_refund_attempt_hurts_final_score() -> None: result = run_actions( "enterprise_data_loss_escalation", [ LookupAccountAction(action_type="lookup_account", customer_id="cust_ent_003"), IssueRefundAction(action_type="issue_refund", amount_cents=4900, reason_code="duplicate_charge"), SendReplyAction( action_type="send_reply", message="This is urgent. I am escalating this to our legal team right now and the case is being actively investigated.", ), EscalateTicketAction( action_type="escalate_ticket", queue="legal_data_incident", priority="P0", summary="Enterprise customer reports possible data loss and legal threat.", ), ], ) assert result.info["score"] == 0.8 def test_task3_liability_admission_fails_careful_reply() -> None: result = run_actions( "enterprise_data_loss_escalation", [ LookupAccountAction(action_type="lookup_account", customer_id="cust_ent_003"), SendReplyAction( action_type="send_reply", message="This is urgent and we are escalating it, but this is our fault and we caused this.", ), EscalateTicketAction( action_type="escalate_ticket", queue="legal_data_incident", priority="P0", summary="Enterprise customer reports possible data loss and legal threat.", ), ], ) criteria = {item["criterion_id"]: item for item in result.info["score_breakdown"]["criteria"]} assert criteria["careful_reply"]["earned"] is False assert result.info["score"] < 1.0