blob: 0af4cbcc12ab866e605ebd2e895f1c14c79c2125 (
plain)
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
|
import enum
from typing import Optional
from pydantic import BaseModel, Field
from autogpt.core.ability.schema import AbilityResult
class TaskType(str, enum.Enum):
RESEARCH = "research"
WRITE = "write"
EDIT = "edit"
CODE = "code"
DESIGN = "design"
TEST = "test"
PLAN = "plan"
class TaskStatus(str, enum.Enum):
BACKLOG = "backlog"
READY = "ready"
IN_PROGRESS = "in_progress"
DONE = "done"
class TaskContext(BaseModel):
cycle_count: int = 0
status: TaskStatus = TaskStatus.BACKLOG
parent: Optional["Task"] = None
prior_actions: list[AbilityResult] = Field(default_factory=list)
memories: list = Field(default_factory=list)
user_input: list[str] = Field(default_factory=list)
supplementary_info: list[str] = Field(default_factory=list)
enough_info: bool = False
class Task(BaseModel):
objective: str
type: str # TaskType FIXME: gpt does not obey the enum parameter in its schema
priority: int
ready_criteria: list[str]
acceptance_criteria: list[str]
context: TaskContext = Field(default_factory=TaskContext)
# Need to resolve the circular dependency between Task and TaskContext once both models are defined.
TaskContext.update_forward_refs()
|