openenv_jayesh / models.py
jayesh20's picture
Upload folder using huggingface_hub
1dd3485 verified
Raw
History Blame Contribute Delete
2.6 kB
# Copyright (c) Meta Platforms, Inc. and affiliates.
# All rights reserved.
"""
Data models for the Smart Personal Task Manager OpenEnv Environment.
Supports three difficulty levels:
Easy - add tasks & list them
Medium - priorities + deadlines; complete High-priority tasks before deadline
Hard - priorities + deadlines + dependencies; complete in valid topological order
"""
from typing import Optional, List, Dict, Any
from openenv.core.env_server.types import Action, Observation
from pydantic import Field
class TaskManagerAction(Action):
"""Action for the Smart Personal Task Manager."""
command: str = Field(
...,
description=(
"Command to execute. One of: 'add', 'complete', 'list'. "
"'add' - create a new task. "
"'complete' - mark an existing task as done. "
"'list' - display all current tasks."
),
)
title: Optional[str] = Field(
default=None,
description="Human-readable task title. Required for 'add' and 'complete'.",
)
priority: Optional[str] = Field(
default="Normal",
description="Task priority. One of: 'Low', 'Normal', 'High'. Used for 'add'.",
)
deadline: Optional[str] = Field(
default=None,
description=(
"Optional ISO-8601 date string (YYYY-MM-DD) indicating when the task "
"must be completed. Used for 'add'. Relevant in Medium and Hard modes."
),
)
depends_on: Optional[List[str]] = Field(
default=None,
description=(
"List of task titles that must be completed BEFORE this task can be "
"completed. Used for 'add'. Relevant in Hard mode only."
),
)
class TaskManagerObservation(Observation):
"""Observation returned after each step in the Task Manager."""
success: bool = Field(default=True, description="Whether the last action succeeded.")
message: str = Field(default="", description="System status message or error description.")
tasks: List[Dict[str, Any]] = Field(
default_factory=list,
description=(
"Snapshot of all tasks. Each entry contains: "
"title, priority, deadline, depends_on, completed, "
"deadline_missed (bool), dependency_violation (bool)."
),
)
violations: List[str] = Field(
default_factory=list,
description="List of rule violations encountered this episode (deadline misses, dependency order errors).",
)