Spaces:
Sleeping
Sleeping
| """ | |
| Membrane OpenEnv data contracts. | |
| Full field list and enums: ../docs/05-types-and-api.md and ../docs/SPEC.md | |
| """ | |
| from __future__ import annotations | |
| from dataclasses import dataclass, field | |
| from typing import Any, Dict, List, Literal, Optional | |
| Verb = Literal["QUERY", "SEND", "PLAN", "COMMIT", "REFUSE", "VERIFY"] | |
| MessageSurface = Literal["USER_REPLY", "AGENT_DM", "TEAM_MEMORY", "TOOL_PAYLOAD", "RUN_LOG"] | |
| try: | |
| from pydantic import Field | |
| from openenv.core.env_server import Action, Observation, State | |
| class MembraneAction(Action): | |
| verb: Verb = "QUERY" | |
| surface: Optional[MessageSurface] = None | |
| content: str = "" | |
| disclosure_tier: Optional[str] = None | |
| target_agent: Optional[str] = None | |
| reason: str = "" | |
| refusal_kind: Optional[str] = None | |
| acting_as: Optional[str] = None | |
| metadata: Dict[str, Any] = Field(default_factory=dict) | |
| class MembraneObservation(Observation): | |
| episode_goal: str = "" | |
| message: str = "" | |
| visible_fact_ids: List[str] = Field(default_factory=list) | |
| metadata: Dict[str, Any] = Field(default_factory=dict) | |
| class MembraneState(State): | |
| world_state_hash: str = "" | |
| surface_audit_json: str = "{}" | |
| failure_tags: List[str] = Field(default_factory=list) | |
| metadata: Dict[str, Any] = Field(default_factory=dict) | |
| except ImportError: | |
| # Minimal dataclasses for tests / docs without openenv-core + pydantic | |
| class MembraneAction: | |
| verb: Verb = "QUERY" | |
| surface: Optional[MessageSurface] = None | |
| content: str = "" | |
| disclosure_tier: Optional[str] = None | |
| target_agent: Optional[str] = None | |
| reason: str = "" | |
| refusal_kind: Optional[str] = None | |
| acting_as: Optional[str] = None | |
| metadata: Dict[str, Any] = field(default_factory=dict) | |
| class MembraneObservation: | |
| done: bool = False | |
| reward: Optional[float] = None | |
| episode_goal: str = "" | |
| message: str = "" | |
| visible_fact_ids: List[str] = field(default_factory=list) | |
| metadata: Dict[str, Any] = field(default_factory=dict) | |
| def model_dump(self) -> Dict[str, Any]: | |
| return { | |
| "done": self.done, | |
| "reward": self.reward, | |
| "episode_goal": self.episode_goal, | |
| "message": self.message, | |
| "visible_fact_ids": self.visible_fact_ids, | |
| "metadata": self.metadata, | |
| } | |
| class MembraneState: | |
| episode_id: Optional[str] = None | |
| step_count: int = 0 | |
| world_state_hash: str = "" | |
| surface_audit_json: str = "{}" | |
| failure_tags: List[str] = field(default_factory=list) | |
| metadata: Dict[str, Any] = field(default_factory=dict) | |
| def model_dump(self) -> Dict[str, Any]: | |
| return { | |
| "episode_id": self.episode_id, | |
| "step_count": self.step_count, | |
| "world_state_hash": self.world_state_hash, | |
| "surface_audit_json": self.surface_audit_json, | |
| "failure_tags": self.failure_tags, | |
| "metadata": self.metadata, | |
| } | |