AgentZero / _90_organize_history_wait.py
lattmamb's picture
Upload 377 files
301a0ac verified
from python.helpers.extension import Extension
from agent import LoopData
from python.extensions.message_loop_end._10_organize_history import DATA_NAME_TASK
import asyncio
class OrganizeHistoryWait(Extension):
async def execute(self, loop_data: LoopData = LoopData(), **kwargs):
# sync action only required if the history is too large, otherwise leave it in background
while self.agent.history.is_over_limit():
# get task
task = self.agent.get_data(DATA_NAME_TASK)
# Check if the task is already done
if task:
if not task.done():
self.agent.context.log.set_progress("Compressing history...")
# Wait for the task to complete
await task
# Clear the coroutine data after it's done
self.agent.set_data(DATA_NAME_TASK, None)
else:
# no task running, start and wait
self.agent.context.log.set_progress("Compressing history...")
await self.agent.history.compress()