resilientagent-prod / models.py
Ajay1232's picture
fix: clamp grader scores to (0.01, 0.99) - Phase 2 validator requires strictly between 0 and 1
a8ab4a8
Raw
History Blame Contribute Delete
2.04 kB
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
#
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.
"""
Data models for the ResilientAgent Production Environment.
The resilientagent-prod environment simulates ML model production incidents
including latency spikes, prediction drift, and cascading failures.
"""
from openenv.core.env_server.types import Action, Observation
from pydantic import Field
from typing import Optional, Dict, Any, List, Literal
class ResilientAgentAction(Action):
"""Action for the ResilientAgent environment - ML ops remediation actions."""
action_type: Literal[
"check_metrics", "read_logs", "check_deployment",
"analyze_drift", "scale_service", "rollback_model", "optimize_batch",
"restart_service", "verify_fix", "notify_team"
] = Field(..., description="Type of remediation action to execute")
target: str = Field(..., description="Target service for the action")
parameters: Optional[Dict[str, Any]] = Field(default=None, description="Optional action parameters")
class ResilientAgentObservation(Observation):
"""Observation from the ResilientAgent environment - system metrics and logs."""
metrics: Dict[str, float] = Field(default_factory=dict, description="Current system metrics")
recent_logs: List[str] = Field(default_factory=list, description="Recent log entries")
alert_status: str = Field(default="critical", description="Current alert status: healthy or critical")
time_elapsed: float = Field(default=0.0, description="Seconds since incident started")
last_action_result: str = Field(default="none", description="Result of last action taken")
root_cause_hint: Optional[str] = Field(default=None, description="Hint if root cause identified")
done: bool = Field(default=False, description="Whether the episode is complete")
reward: float = Field(default=0.0, description="Reward for the current step")