cadforge-cadquery-openenv / server /openenv_models.py
sanjuhs's picture
Upload folder using huggingface_hub
6de1b61 verified
from __future__ import annotations
from typing import Any
from openenv.core.env_server.types import Action, Observation, State
from pydantic import Field
class CadForgeAction(Action):
"""A complete CadQuery repair candidate to compile and score."""
code: str = Field(..., min_length=1, description="Complete executable Python CadQuery file")
task_id: str = Field(default="four_leg_chair_700n", description="CADForge task id from data/cad_tasks.json")
reward_mode: str = Field(default="fast", pattern="^(fast|full)$", description="Use fast dense reward or full report reward")
task_prompt: str | None = Field(default=None, description="Optional task prompt override")
class CadForgeObservation(Observation):
"""Verifier feedback returned after compiling and scoring CadQuery code."""
task_brief: str = Field(default="", description="Natural language design brief")
task_id: str = Field(default="four_leg_chair_700n", description="Active CADForge task id")
constraints: list[str] = Field(default_factory=list, description="CadQuery/runtime constraints the agent must obey")
current_code: str = Field(default="", description="Starting or most recently submitted CadQuery code")
reward_json: dict[str, Any] = Field(default_factory=dict, description="Latest scalar reward components")
verifier_notes: list[str] = Field(default_factory=list, description="Human-readable verifier notes")
artifacts_dir: str | None = Field(default=None, description="Directory containing candidate code, STL, reward JSON, and optional renders")
renders: dict[str, str] = Field(default_factory=dict, description="Full-mode render paths by view")
trace: list[dict[str, Any]] = Field(default_factory=list, description="Per-step action/reward trace")
class CadForgeState(State):
"""Internal CadQuery repair state."""
task_id: str = "four_leg_chair_700n"
task_brief: str = ""
current_code: str = ""
last_reward: dict[str, Any] = Field(default_factory=dict)
trace: list[dict[str, Any]] = Field(default_factory=list)
# Backward-compatible aliases for older local imports.
MechForgeAction = CadForgeAction
MechForgeObservation = CadForgeObservation
MechForgeState = CadForgeState