--- sidebar_label: plan title: opendevin.plan --- ## Task Objects ```python class Task() ``` #### \_\_init\_\_ ```python def __init__(parent: 'Task | None', goal: str, state: str = OPEN_STATE, subtasks: List = []) ``` Initializes a new instance of the Task class. **Arguments**: - `parent` - The parent task, or None if it is the root task. - `goal` - The goal of the task. - `state` - The initial state of the task. - `subtasks` - A list of subtasks associated with this task. #### to\_string ```python def to_string(indent='') ``` Returns a string representation of the task and its subtasks. **Arguments**: - `indent` - The indentation string for formatting the output. **Returns**: A string representation of the task and its subtasks. #### to\_dict ```python def to_dict() ``` Returns a dictionary representation of the task. **Returns**: A dictionary containing the task's attributes. #### set\_state ```python def set_state(state) ``` Sets the state of the task and its subtasks. Args: state: The new state of the task. **Raises**: - `PlanInvalidStateError` - If the provided state is invalid. #### get\_current\_task ```python def get_current_task() -> 'Task | None' ``` Retrieves the current task in progress. **Returns**: The current task in progress, or None if no task is in progress. ## Plan Objects ```python class Plan() ``` Represents a plan consisting of tasks. **Attributes**: - `main_goal` - The main goal of the plan. - `task` - The root task of the plan. #### \_\_init\_\_ ```python def __init__(task: str) ``` Initializes a new instance of the Plan class. **Arguments**: - `task` - The main goal of the plan. #### \_\_str\_\_ ```python def __str__() ``` Returns a string representation of the plan. **Returns**: A string representation of the plan. #### get\_task\_by\_id ```python def get_task_by_id(id: str) -> Task ``` Retrieves a task by its ID. **Arguments**: - `id` - The ID of the task. **Returns**: The task with the specified ID. **Raises**: - `ValueError` - If the provided task ID is invalid or does not exist. #### add\_subtask ```python def add_subtask(parent_id: str, goal: str, subtasks: List = []) ``` Adds a subtask to a parent task. **Arguments**: - `parent_id` - The ID of the parent task. - `goal` - The goal of the subtask. - `subtasks` - A list of subtasks associated with the new subtask. #### set\_subtask\_state ```python def set_subtask_state(id: str, state: str) ``` Sets the state of a subtask. **Arguments**: - `id` - The ID of the subtask. - `state` - The new state of the subtask. #### get\_current\_task ```python def get_current_task() ``` Retrieves the current task in progress. **Returns**: The current task in progress, or None if no task is in progress.