Spaces:
Sleeping
Sleeping
File size: 1,776 Bytes
d5fc8a7 37204eb d5fc8a7 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | """
server/models.py — Typed Pydantic models for the OpenEnv interface.
OpenEnv requires three typed models: Action, Observation, Reward.
All models use Pydantic v2.
"""
from __future__ import annotations
from pydantic import BaseModel, Field
class ActionParameters(BaseModel):
"""Flexible parameter bag — different action types use different fields."""
service: str | None = None
severity: str | None = None
failure_mode: str | None = None
summary: str | None = None
target_version: str | None = None
replicas: int | None = None
flag: str | None = None
runbook_action: str | None = None
target: str | None = None
reasoning: str | None = None
model_config = {"extra": "allow"}
class Action(BaseModel):
"""An action submitted by the agent to the environment."""
action_type: str
parameters: ActionParameters = Field(default_factory=ActionParameters)
model_config = {"extra": "allow"}
class Observation(BaseModel):
"""Observation returned after reset() or step()."""
episode_id: str
task_id: str
scenario_id: str
step_count: int
max_steps: int
incident_summary: str
alert: dict
available_actions: list[str]
queried_data: dict
cumulative_reward: float
done: bool
feedback: str
class Reward(BaseModel):
"""Reward signal returned after each step()."""
value: float
reason: str
cumulative: float
class EpisodeState(BaseModel):
"""Full episode state returned by GET /state."""
episode_id: str
task_id: str
scenario_id: str
step_count: int
max_steps: int
action_history: list[dict]
queried_data: dict
submitted: bool
resolved: bool
done: bool
cumulative_reward: float
feedback: str
|