Team Ai
Apppublic

jester1177/cloud-native-debug-env

sourceHugging Faceupdated 6mo agoView on Hugging Face
0likes
models.py179 linesDownload Raw Back to server
1"""Pydantic models for the API."""2 3from enum import Enum4from typing import Any, Dict, List, Optional, Union5 6from pydantic import BaseModel, Field7 8 9class TaskDifficulty(str, Enum):10    EASY = "easy"11    MEDIUM = "medium"12    HARD = "hard"13 14 15class ActionType(str, Enum):16    EDIT_FILE = "edit_file"17    ADD_LINE = "add_line"18    DELETE_LINE = "delete_line"19    REPLACE_LINE = "replace_line"20    ADD_BLOCK = "add_block"21    DELETE_BLOCK = "delete_block"22    SUBMIT = "submit"23    REQUEST_HINT = "request_hint"24 25 26class TaskDifficultyExtended(str, Enum):27    EASY = "easy"28    MEDIUM = "medium"29    MEDIUM_HARD = "medium-hard"30    HARD = "hard"31    EXPERT = "expert"32 33 34class FileType(str, Enum):35    DOCKERFILE = "dockerfile"36    WORKFLOW = "workflow"37    DOCKER_COMPOSE = "docker_compose"38    REQUIREMENTS = "requirements"39    KUBERNETES = "kubernetes"40    OTHER = "other"41 42 43class ErrorPhase(str, Enum):44    WORKFLOW_PARSE = "workflow_parse"45    DOCKER_BUILD = "docker_build"46    DOCKER_RUN = "docker_run"47    TEST = "test"48    PUSH = "push"49    DEPLOY = "deploy"50    K8S_VALIDATION = "k8s_validation"51    K8S_RUNTIME = "k8s_runtime"52    K8S_NETWORKING = "k8s_networking"53    PIPELINE_BUILD = "pipeline_build"54    PIPELINE_DEPLOY = "pipeline_deploy"55 56 57class FileContent(BaseModel):58    path: str59    content: str60    file_type: FileType61    line_count: int62 63 64class ErrorInfo(BaseModel):65    phase: ErrorPhase66    error_message: str67    exit_code: Optional[int] = None68    failed_step: Optional[str] = None69    line_hint: Optional[int] = None70 71 72class Observation(BaseModel):73    task_id: str74    task_description: str75    difficulty: TaskDifficulty76    files: List[FileContent]77    error: ErrorInfo78    available_secrets: List[str] = Field(default_factory=list)79    runner_os: str = "ubuntu-latest"80    step_number: int81    max_steps: int82    hints_used: int = 083    hints_available: int = 384    last_action_success: Optional[bool] = None85    last_action_feedback: Optional[str] = None86    issues_found: int = 087    issues_fixed: int = 088    total_issues: int89 90 91class FileEdit(BaseModel):92    file_path: str93    line_number: Optional[int] = None94    old_content: Optional[str] = None95    new_content: Optional[str] = None96 97 98class Action(BaseModel):99    action_type: ActionType100    edits: Optional[List[FileEdit]] = None101    reasoning: Optional[str] = None102 103 104 105class TaskInfo(BaseModel):106    id: str107    name: str108    description: str109    difficulty: TaskDifficulty110    num_scenarios: int111 112 113class EnvironmentInfo(BaseModel):114    name: str = "cloud-native-devops-env"115    version: str = "1.0.0"116    description: str = "Debug cloud-native deployment pipeline issues"117    tasks: List[TaskInfo]118    max_steps: int = 10119    action_space: Dict[str, Any]120    observation_space: Dict[str, Any]121 122 123class GraderResult(BaseModel):124    task_id: str125    score: float = Field(..., ge=0.0, le=1.0)126    max_score: float = 1.0127    breakdown: Dict[str, float] = Field(default_factory=dict)128    feedback: str = ""129    steps_taken: int130    hints_used: int = 0131 132 133class ResetRequest(BaseModel):134    task_id: Optional[Union[str, int]] = None135    scenario_id: Optional[str] = None136    seed: Optional[int] = None137 138 139class ResetResponse(BaseModel):140    observation: Observation141    info: Dict[str, Any] = Field(default_factory=dict)142 143 144class StepRequest(BaseModel):145    action: Action146 147 148class StepResponse(BaseModel):149    observation: Observation150    reward: float151    done: bool152    info: Dict[str, Any] = Field(default_factory=dict)153 154 155class StateResponse(BaseModel):156    observation: Observation157    episode_reward: float158    steps_taken: int159    done: bool160 161 162class GraderRequest(BaseModel):163    task_id: str164    trajectory: List[Dict[str, Any]]165 166 167class GraderResponse(BaseModel):168    result: GraderResult169 170 171class BaselineRequest(BaseModel):172    task_id: Optional[str] = None173    num_episodes: int = 1174 175 176class BaselineResponse(BaseModel):177    results: List[GraderResult]178    aggregate_score: float179