diff options
Diffstat (limited to 'autogpts/autogpt/autogpt/core/planning/schema.py')
-rw-r--r-- | autogpts/autogpt/autogpt/core/planning/schema.py | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/autogpts/autogpt/autogpt/core/planning/schema.py b/autogpts/autogpt/autogpt/core/planning/schema.py new file mode 100644 index 000000000..b9ba81827 --- /dev/null +++ b/autogpts/autogpt/autogpt/core/planning/schema.py @@ -0,0 +1,48 @@ +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() |