CoolFace
Apppublic

VAKYA/Report_generation

sourceHugging Faceupdated 5mo agoView on Hugging Face
0likes
models.py91 linesDownload Raw Back to root
1# Copyright (c) Meta-style OSS header for OpenEnv-style environments.2 3"""Typed Action, Observation, Reward, and State models for the daily report environment."""4 5from __future__ import annotations6 7from typing import Any, Dict, List, Literal, Optional8 9from pydantic import BaseModel, Field10 11try:12    from openenv.core.env_server.types import Action, Observation, State13except ImportError:14    from openenv_core.env_server.types import Action, Observation, State  # type: ignore15 16 17TaskName = Literal["daily_header", "daily_summary", "daily_full"]18 19 20class ReportReward(BaseModel):21    """Decomposed reward for debugging and learning (all components in [0, 1] where noted)."""22 23    progress_score: float = Field(24        ..., ge=0.0, le=1.0, description="Task grader after this step (0–1)"25    )26    delta_progress: float = Field(27        ..., description="Change in grader since previous step (can be negative)"28    )29    step_total: float = Field(30        ...,31        ge=0.0,32        le=1.0,33        description="Shaped reward for this step (progress delta + bonuses − penalties, clamped)",34    )35 36 37class DailyReportAction(Action):38    """Agent command for assembling a scheduled daily merge (MRG) PDF report."""39 40    command: Literal[41        "set_header_field",42        "set_summary_metric",43        "add_kpi_row",44        "finalize_pdf",45        "submit_report",46        "noop",47    ]48    key: Optional[str] = Field(49        default=None,50        description="Header key (title, report_date, author) or metric key (revenue_musd, incidents, uptime_pct)",51    )52    value: Optional[str] = Field(default=None, description="Value to set for header or metric")53    row_cells: Optional[List[str]] = Field(54        default=None,55        description="One KPI table row (hard task): cells left-to-right",56    )57 58 59class DailyReportObservation(Observation):60    """What the agent sees after each step."""61 62    task: TaskName63    instructions: str64    static_data: Dict[str, Any] = Field(default_factory=dict)65    header_fields: Dict[str, str] = Field(default_factory=dict)66    summary_metrics: Dict[str, str] = Field(default_factory=dict)67    kpi_rows: List[List[str]] = Field(default_factory=list)68    pdf_generated: bool = False69    submitted: bool = False70    graded_score: float = Field(0.0, ge=0.0, le=1.0)71    max_steps: int = 3072    steps_remaining: int = 3073    feedback: str = ""74    last_action_error: Optional[str] = None75    reward_detail: Optional[ReportReward] = None76 77 78class DailyReportState(State):79    """Serializable server state beyond episode_id / step_count."""80 81    task: TaskName = "daily_header"82    header_fields: Dict[str, str] = Field(default_factory=dict)83    summary_metrics: Dict[str, str] = Field(default_factory=dict)84    kpi_rows: List[List[str]] = Field(default_factory=list)85    pdf_generated: bool = False86    submitted: bool = False87    graded_score: float = 0.088    last_action_error: Optional[str] = None89    repeat_action_streak: int = 090    last_action_fingerprint: Optional[str] = None91