Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 23 additions & 14 deletions src/core/env/__init__.py → src/core/env_server/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,34 @@

"""Core environment interfaces and types."""

from .interfaces import Environment, Transform, Tool, ToolRegistry
from .types import (
Action, CodeAction, Observation, CodeObservation,
State, CodeState, ExecutionResult
)
from .base_transforms import CompositeTransform, NullTransform
from .code_execution_environment import CodeExecutionEnvironment
from .interfaces import Environment, Transform
from .types import (
Action,
CodeAction,
CodeObservation,
CodeState,
ExecutionResult,
Observation,
State,
)

__all__ = [
# Core interfaces
"Environment", "Transform", "Tool", "ToolRegistry",

"Environment",
"Transform",
# Types
"Action", "CodeAction", "Observation", "CodeObservation",
"State", "CodeState", "ExecutionResult",

"Action",
"CodeAction",
"Observation",
"CodeObservation",
"State",
"CodeState",
"ExecutionResult",
# Base transforms
"CompositeTransform", "NullTransform",

"CompositeTransform",
"NullTransform",
# Base environment implementation
"CodeExecutionEnvironment"
]
"CodeExecutionEnvironment",
]
File renamed without changes.
34 changes: 1 addition & 33 deletions src/core/env/interfaces.py → src/core/env_server/interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ def __call__(self, observation: Observation) -> Observation:


class Environment(ABC):
"""Base class for all environments following Gym/Gymnasium API.
"""Base class for all environment servers following Gym/Gymnasium API.

Args:
transform: Optional transform to apply to observations
Expand Down Expand Up @@ -62,35 +62,3 @@ def _apply_transform(self, observation: Observation) -> Observation:
if self.transform is not None:
return self.transform(observation)
return observation


class Tool(ABC):
"""Base class for tools that can be used in code execution."""

@abstractmethod
def __call__(self, *args, **kwargs) -> Any:
"""Execute the tool."""
pass


class ToolRegistry:
"""Registry for managing tools available to code execution."""

def __init__(self):
self._tools: dict[str, Any] = {}

def register(self, name: str, tool: Any):
"""Register a tool with a name."""
self._tools[name] = tool

def get(self, name: str) -> Any | None:
"""Get a tool by name."""
return self._tools.get(name)

def get_all(self) -> dict[str, Any]:
"""Get all registered tools."""
return self._tools.copy()

def get_names(self) -> list[str]:
"""Get all tool names."""
return list(self._tools.keys())
File renamed without changes.