File size: 1,726 Bytes
1f213fe
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74d0de6
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
48
49
50
from typing import Any, Dict, List, Literal, Optional
from pydantic import Field
from openenv.core.env_server.types import Action, Observation, State


class PMOpsAction(Action):
    action_type: Literal[
        "ticketing.create_ticket",
        "ticketing.update_ticket",
        "ticketing.get_ticket",
        "ticketing.list_tickets",
        "ticketing.assign_ticket",
        "ticketing.comment_ticket",
        "ticketing.transition_ticket",
        "codebase.list_commits",
        "codebase.get_commit",
        "codebase.list_prs",
        "chat.post_message",
        "chat.read_channel",
        "chat.list_channels",
        "chat.search",
        "meta.read_runbook",
        "meta.finish",
        "meta.noop",
    ] = Field(default="meta.noop")
    args: Dict[str, Any] = Field(default_factory=dict)


class PMOpsObservation(Observation):
    step: int = Field(default=0)
    max_steps: int = Field(default=40)
    task_brief: str = Field(default="")
    last_action_result: Dict[str, Any] = Field(default_factory=dict)
    app_state_deltas: Dict[str, List[Any]] = Field(
        default_factory=lambda: {"ticketing": [], "chat": [], "codebase": []}
    )
    steps_remaining: int = Field(default=40)
    token_budget_remaining: int = Field(default=12000)


class PMOpsState(State):
    org_config: Dict[str, Any] = Field(default_factory=dict)
    task_config: Dict[str, Any] = Field(default_factory=dict)
    ticketing: Dict[str, Any] = Field(default_factory=dict)
    chat: Dict[str, Any] = Field(default_factory=dict)
    codebase: Dict[str, Any] = Field(default_factory=dict)
    step_count: int = Field(default=0)
    finished: bool = Field(default=False)
    episode_id: str | None = Field(default="")