JarvisFlowModule / UpdatePlanAtomicFlow.py
Tachi67's picture
Update UpdatePlanAtomicFlow.py
10a53dc
raw
history blame
1.61 kB
#TODO: generalize updateplanatomicflow with the one in extendlibrary
from typing import Dict, Any
from aiflows.base_flows.atomic import AtomicFlow
class UpdatePlanAtomicFlow(AtomicFlow):
"""This class is used to update the plan file with the updated plan, called by the controlller,
when it realizes one step of the plan is done, and provide the updated plan, it is exactly the same
as the old plan, except the step that is done is marked as done.
"""
def _check_input(self, input_data: Dict[str, Any]):
assert "memory_files" in input_data, "memory_files not passed to UpdatePlanAtomicFlow.yaml"
assert "plan" in input_data["memory_files"], "plan not in memory_files"
def _call(self, input_data: Dict[str, Any]):
try:
plan_file_location = input_data["memory_files"]["plan"]
plan_to_write = input_data["updated_plan"]
with open(plan_file_location, 'w') as file:
file.write(plan_to_write + "\n")
return {
"result": "updated plan saved to the plan file and has overriden the previous plan",
"summary": f"Jarvis/UpdatePlanFlow: updated plan saved to {plan_file_location}"
}
except Exception as e:
return {
"result": f"Error occurred: {str(e)}",
"summary": f"Jarvis/UpdatePlanFlow: error occurred while writing updated plan: {str(e)}"
}
def run(
self,
input_data: Dict[str, Any]
):
self._check_input(input_data)
return self._call(input_data)