akhilsu's picture
Upload 32 files
f392960 verified
Raw
History Blame Contribute Delete
2.76 kB
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",
]