| from __future__ import annotations |
|
|
| from typing import Dict |
|
|
| from openenv.core import EnvClient |
| from openenv.core.client_types import StepResult |
|
|
| from models import ( |
| ActionType, |
| B2BSupportPayload, |
| B2BSupportTriageAction, |
| B2BSupportTriageObservation, |
| B2BSupportTriageState, |
| RewardBreakdown, |
| VisibleTicket, |
| ) |
|
|
|
|
| class B2BSupportTriageEnv( |
| EnvClient[B2BSupportTriageAction, B2BSupportTriageObservation, B2BSupportTriageState] |
| ): |
| def _step_payload(self, action: B2BSupportTriageAction) -> Dict: |
| return { |
| "action_type": action.action_type.value, |
| "ticket_id": action.ticket_id, |
| "payload": action.payload.model_dump(exclude_none=True), |
| "metadata": action.metadata, |
| } |
|
|
| def _parse_result(self, payload: Dict) -> StepResult[B2BSupportTriageObservation]: |
| obs_data = payload.get("observation", {}) |
| reward_breakdown = obs_data.get("reward_breakdown", {}) |
|
|
| observation = B2BSupportTriageObservation( |
| task_id=obs_data.get("task_id", "easy"), |
| step_index=obs_data.get("step_index", 0), |
| max_steps=obs_data.get("max_steps", 0), |
| visible_ticket=VisibleTicket(**obs_data.get("visible_ticket", {})), |
| current_plan=obs_data.get("current_plan", []), |
| applied_decisions=obs_data.get("applied_decisions", {}), |
| last_action_error=obs_data.get("last_action_error"), |
| progress_score=obs_data.get("progress_score", 0.0), |
| reward_breakdown=RewardBreakdown(**reward_breakdown), |
| done=payload.get("done", False), |
| reward=payload.get("reward"), |
| metadata=obs_data.get("metadata", {}), |
| ) |
|
|
| return StepResult( |
| observation=observation, |
| reward=payload.get("reward"), |
| done=payload.get("done", False), |
| ) |
|
|
| def _parse_state(self, payload: Dict) -> B2BSupportTriageState: |
| return B2BSupportTriageState( |
| episode_id=payload.get("episode_id", ""), |
| step_count=payload.get("step_count", 0), |
| task_id=payload.get("task_id", ""), |
| seed=payload.get("seed"), |
| max_steps=payload.get("max_steps", 0), |
| cumulative_reward=payload.get("cumulative_reward", 0.0), |
| last_action_error=payload.get("last_action_error"), |
| applied_decisions=payload.get("applied_decisions", {}), |
| action_history=payload.get("action_history", []), |
| completion_flags=payload.get("completion_flags", {}), |
| ) |
|
|
|
|
| __all__ = [ |
| "ActionType", |
| "B2BSupportPayload", |
| "B2BSupportTriageAction", |
| "B2BSupportTriageEnv", |
| "B2BSupportTriageObservation", |
| "B2BSupportTriageState", |
| ] |
|
|