openapp_env-v2-1-0 / models.py
burtenshaw's picture
burtenshaw HF Staff
Upload folder using huggingface_hub
8a381a4 verified
# 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 OpenApp Environment.
The OpenApp environment provides a simulated web application environment
for training and evaluating UI agents that interact with various apps
(calendar, todo, messenger, maps, etc.) using browser actions.
"""
from typing import Any, Dict, List, Optional
from pydantic import Field
# Support both in-repo and standalone imports
try:
from openenv_core.env_server.types import Action, Observation
except ImportError:
# Fallback for in-repo layouts that only expose openenv.*
from openenv.core.env_server.types import Action, Observation
class OpenAppAction(Action):
"""
Action for the OpenApp environment.
Supports BrowserGym-style actions for web interaction:
- click: Click on an element (requires bid - BrowserGym ID)
- fill: Fill a text field (requires bid and text)
- select_option: Select from dropdown (requires bid and value)
- goto: Navigate to URL (requires url)
- scroll: Scroll the page (requires direction)
- send_keys: Send keyboard input (requires text)
- noop: No operation
Attributes:
action_type: Type of action to perform
bid: BrowserGym element ID (for click, fill, select_option)
text: Text content (for fill, send_keys)
value: Value to select (for select_option)
url: URL to navigate to (for goto)
direction: Scroll direction - 'up' or 'down' (for scroll)
"""
action_type: str = Field(
..., description="Type of action: click, fill, select_option, goto, scroll, send_keys, noop"
)
bid: Optional[str] = Field(default=None, description="BrowserGym element ID")
text: Optional[str] = Field(default=None, description="Text content for fill or send_keys")
value: Optional[str] = Field(default=None, description="Value for select_option")
url: Optional[str] = Field(default=None, description="URL for goto action")
direction: Optional[str] = Field(default=None, description="Scroll direction: 'up' or 'down'")
class OpenAppObservation(Observation):
"""
Observation from the OpenApp environment.
Provides comprehensive state information about the web apps and browser state.
Attributes:
html: Current page HTML content
url: Current page URL
open_pages_urls: List of all open page URLs
active_page_index: Index of currently active page
screenshot: Base64-encoded screenshot (optional)
axtree_txt: Accessibility tree as text (for element interaction)
app_state: Current state of all apps (calendar, todo, messenger, map)
task_info: Information about the current task (if any)
last_action_error: Error message from last action (if failed)
"""
html: str = Field(default="", description="Current page HTML content")
url: str = Field(default="", description="Current page URL")
open_pages_urls: List[str] = Field(default_factory=list, description="List of all open page URLs")
active_page_index: int = Field(default=0, ge=0, description="Index of currently active page")
screenshot: Optional[str] = Field(default=None, description="Base64-encoded screenshot")
axtree_txt: str = Field(default="", description="Accessibility tree as text")
app_state: Dict[str, Any] = Field(default_factory=dict, description="State of all apps")
task_info: Optional[Dict[str, Any]] = Field(default=None, description="Current task information")
last_action_error: Optional[str] = Field(default=None, description="Error from last action")