Spaces:
Sleeping
Sleeping
File size: 1,689 Bytes
5add236 | 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 | """Pydantic v2 models for OpenEnv interface."""
from __future__ import annotations
from typing import Any, Dict, List, Literal, Optional, Union
from pydantic import BaseModel, Field
# ββ Alert model ββ
class Alert(BaseModel):
alert_id: str
timestamp: str
service: str
metric: str
metric_value: float
threshold: float
message: str
context: Optional[str] = None
triaged: bool = False
agent_decision: Optional[Dict[str, Any]] = None
# ββ Observation ββ
class Observation(BaseModel):
alerts: List[Alert]
service_map: Dict[str, List[str]]
pending_count: int
step_number: int
max_steps: int
feedback: str = ""
# ββ Actions ββ
class TriageAction(BaseModel):
action_type: Literal["triage"] = "triage"
alert_id: str
root_cause: str
severity: str
remediation: str
class LinkAlertsAction(BaseModel):
action_type: Literal["link_alerts"] = "link_alerts"
alert_ids: List[str]
incident_label: str
class SkipAction(BaseModel):
action_type: Literal["skip"] = "skip"
alert_id: str
Action = Union[TriageAction, LinkAlertsAction, SkipAction]
# ββ Step response ββ
class StepResponse(BaseModel):
observation: Observation
reward: float
done: bool
info: Dict[str, Any] = {}
# ββ Request models ββ
class ResetRequest(BaseModel):
task_id: str
seed: int = 42
class StepRequest(BaseModel):
action_type: str
alert_id: Optional[str] = None
alert_ids: Optional[List[str]] = None
incident_label: Optional[str] = None
root_cause: Optional[str] = None
severity: Optional[str] = None
remediation: Optional[str] = None
|