# 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 Compressionenv Environment. The compressionenv environment gives the agent a Paul Graham essay and asks it to propose compression + decompression algorithms (as Python code). """ from typing import Any, Dict, Optional from pydantic import Field from openenv.core.env_server.types import Action, Observation class CompressionenvAction(Action): """ Agent-provided compression/decompression algorithms. The environment expects `compression_code` and `decompression_code` to define: - compress(text: str) -> bytes - decompress(data: bytes) -> str """ compression_code: str = Field( ..., description="Python code defining compress(text: str) -> bytes", min_length=1, ) decompression_code: str = Field( ..., description="Python code defining decompress(data: bytes) -> str", min_length=1, ) algo_name: str = Field( default="agent_algo", description="Optional name/label for this algorithm variant", ) class CompressionenvObservation(Observation): """Observation from the Compressionenv environment.""" essay_id: str = Field(..., description="Selected essay slug/id for this episode") essay_text: str = Field( ..., description="Full essay text for the agent to compress", ) valid: bool = Field( default=False, description="Whether the submitted algorithms successfully round-tripped", ) error: Optional[str] = Field( default=None, description="Error message if the algorithms failed validation/execution", ) compressed_size_bytes: Optional[int] = Field( default=None, description="Size of compressed bytes produced by the agent algorithm", ge=0, ) avg_prev_compressed_size_bytes: Optional[float] = Field( default=None, description="Average compressed size over previous successful steps for this essay", ge=0, ) improved_over_avg: Optional[bool] = Field( default=None, description="True if current compressed size < avg of previous sizes", ) baselines_size_bytes: Dict[str, int] = Field( default_factory=dict, description="Baseline compressor sizes for this essay (zlib/bz2/lzma)", ) best_baseline_size_bytes: Optional[int] = Field( default=None, description="Best (smallest) baseline size in bytes", ge=0, ) beat_any_baseline: Optional[bool] = Field( default=None, description="True if current compressed size is smaller than at least one baseline", ) beat_best_baseline: Optional[bool] = Field( default=None, description="True if current compressed size is smaller than the best baseline", ) reward: float = Field(default=0.0, description="Reward for this step") done: bool = Field(default=False, description="Whether episode is done") metadata: Dict[str, Any] = Field(default_factory=dict, description="Extra info")