Spaces:
Sleeping
Sleeping
| # 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 SRE Terminal Agent RL Environment. | |
| OpenEnv-compatible observation and action types for SRE agent training. | |
| """ | |
| from openenv.core.env_server.types import Action, Observation | |
| from pydantic import Field, field_validator | |
| class SREAction(Action): | |
| """Action: single shell command to execute on the remote server.""" | |
| command: str = Field(..., description="Shell command to execute (single line, max 500 chars)") | |
| def validate_command(cls, v): | |
| """Strip whitespace, reject empty, enforce single-line and 500 char limit.""" | |
| if not isinstance(v, str): | |
| raise ValueError("command must be a string") | |
| v = v.strip() | |
| if not v: | |
| raise ValueError("command cannot be empty") | |
| if "\n" in v: | |
| raise ValueError("command must be a single line") | |
| if len(v) > 500: | |
| v = v[:500] | |
| return v | |
| class SREObservation(Observation): | |
| """Observation: terminal output, health state, and context from the remote server.""" | |
| terminal_output: str = Field( | |
| default="", description="Raw stdout+stderr from the last command" | |
| ) | |
| prompt: str = Field( | |
| default="[sre@prod-01 ~]$", description="Shell prompt line (e.g. [sre@prod-01 ~]$)" | |
| ) | |
| step: int = Field(default=0, description="Current step number (0-indexed)") | |
| steps_remaining: int = Field(default=8, description="Steps remaining in episode") | |
| health_score: float = Field( | |
| default=0.0, description="System health score from 0.0 to 1.0" | |
| ) | |
| alert: str = Field(default="", description="Original pager alert message (repeated every step)") | |