Spaces:
Sleeping
Sleeping
| """LeanMigrate OpenEnv environment implementation.""" | |
| from __future__ import annotations | |
| from pathlib import Path | |
| from openenv.core.env_server.interfaces import Environment | |
| from openenv.core.env_server.types import EnvironmentMetadata, State | |
| from ..env.models import LeanMigrateAction, LeanMigrateObservation | |
| from ..env.state import EpisodeState | |
| from ..env.tasks import get_task | |
| from ..lean_backend.kimina_backend import get_backend | |
| class LeanMigrateEnvironment( | |
| Environment[LeanMigrateAction, LeanMigrateObservation, State] | |
| ): | |
| SUPPORTS_CONCURRENT_SESSIONS: bool = True | |
| def __init__(self, transform=None, rubric=None): | |
| super().__init__(transform=transform, rubric=rubric) | |
| import os | |
| self._default_task_id = os.getenv("TASK_ID", "rbac_auth") | |
| self._backend = get_backend() | |
| self._state = EpisodeState.from_task( | |
| get_task(self._default_task_id), | |
| backend=self._backend, | |
| ) | |
| def reset( | |
| self, | |
| seed: int | None = None, | |
| episode_id: str | None = None, | |
| **kwargs, | |
| ) -> LeanMigrateObservation: | |
| task_id = str(kwargs.get("task_id") or self._default_task_id) | |
| del seed | |
| self._state = EpisodeState.from_task( | |
| get_task(task_id), | |
| backend=self._backend, | |
| episode_id=episode_id, | |
| ) | |
| return self._apply_transform(self._state.to_observation()) | |
| def step( | |
| self, | |
| action: LeanMigrateAction, | |
| timeout_s: float | None = None, | |
| **kwargs, | |
| ) -> LeanMigrateObservation: | |
| del timeout_s, kwargs | |
| observation, _, _, _ = self._state.apply(action) | |
| return self._apply_transform(observation) | |
| def state(self) -> State: | |
| return State( | |
| episode_id=self._state.episode_id, | |
| step_count=self._state.step_count, | |
| task_id=self._state.task.task_id, | |
| progress=self._state.progress, | |
| ) | |
| def get_metadata(self) -> EnvironmentMetadata: | |
| readme_path = Path(__file__).resolve().parents[1] / "README.md" | |
| readme_content = readme_path.read_text() if readme_path.exists() else None | |
| return EnvironmentMetadata( | |
| name="lean_migrate", | |
| description="Code migration environment with Lean 4 formal verification across eight tasks (Python→TypeScript, JavaScript→Python, C/C++→Rust).", | |
| readme_content=readme_content, | |
| version="1.0.0", | |
| author="Meta", | |
| ) | |
| __all__ = ["LeanMigrateEnvironment"] | |