File size: 1,799 Bytes
378cf8e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
"""Data models for the Executive Assistant Arena Environment."""

from typing import Optional
from pydantic import Field

from openenv.core.env_server.types import Action, Observation, State


class AssistantAction(Action):
    """Action for the assistant environment - tool calls to manage calendar/email."""

    tool: str = Field(
        ...,
        description="Tool to invoke: check_calendar, check_inbox, reschedule, draft_reply, delegate_task, done",
    )
    arguments: dict = Field(
        default_factory=dict,
        description="Tool arguments, e.g. {'event_id': 'mtg_3', 'new_time': '2pm'}",
    )


class AssistantObservation(Observation):
    """Observation from the assistant environment."""

    inbox_summary: str = Field(default="", description="Current emails/messages")
    calendar_view: str = Field(default="", description="Today's schedule as text")
    pending_tasks: list[str] = Field(default_factory=list, description="Unresolved items")
    tool_result: str = Field(default="", description="Output of last tool call")
    conflicts: list[str] = Field(default_factory=list, description="Detected scheduling conflicts")


class AssistantState(State):
    """Internal state tracking for the assistant environment."""

    conflicts_resolved: int = Field(default=0)
    total_conflicts: int = Field(default=0)
    preferences_inferred: int = Field(default=0)
    total_preferences: int = Field(default=0)
    emails_drafted: int = Field(default=0)
    total_emails: int = Field(default=0)
    deadlines_met: int = Field(default=0)
    deadlines_missed: int = Field(default=0)
    unnecessary_actions: int = Field(default=0)
    late_changes_handled: int = Field(default=0)
    total_late_changes: int = Field(default=0)
    cumulative_reward: float = Field(default=0.0)