fix: allow re-enable sleeptime after deleted [LET-6553] (#8680)

fix: allow re-enable sleeptime after deleted
This commit is contained in:
Ari Webb
2026-01-14 10:40:30 -08:00
committed by Sarah Wooders
parent b888c4c17a
commit 20e4286382

View File

@@ -1241,9 +1241,34 @@ class AgentManager:
agent = await AgentModel.read_async(db_session=session, identifier=agent_id, actor=actor)
agents_to_delete = [agent]
sleeptime_group_to_delete = None
manager_agent_to_update = None
# Delete sleeptime agent and group (TODO this is flimsy pls fix)
if agent.multi_agent_group:
# Handle case where we're deleting a sleeptime agent (not the main agent)
# In this case, we need to clean up the group and the main agent's enable_sleeptime flag
if agent.agent_type in {AgentType.sleeptime_agent, AgentType.voice_sleeptime_agent}:
# Find the group that this sleeptime agent belongs to
group_query = (
select(GroupModel)
.join(GroupsAgents, GroupsAgents.group_id == GroupModel.id)
.where(GroupsAgents.agent_id == agent_id)
.where(GroupModel.manager_type.in_([ManagerType.sleeptime, ManagerType.voice_sleeptime]))
)
result = await session.execute(group_query)
sleeptime_group = result.scalars().first()
if sleeptime_group:
sleeptime_group_to_delete = sleeptime_group
# Get the manager (main) agent and mark it for update
if sleeptime_group.manager_agent_id:
try:
manager_agent_to_update = await AgentModel.read_async(
db_session=session, identifier=sleeptime_group.manager_agent_id, actor=actor
)
except NoResultFound:
pass # Manager agent already deleted
# Delete sleeptime agent and group when deleting the main agent
elif agent.multi_agent_group:
participant_agent_ids = agent.multi_agent_group.agent_ids
if agent.multi_agent_group.manager_type in {ManagerType.sleeptime, ManagerType.voice_sleeptime} and participant_agent_ids:
for participant_agent_id in participant_agent_ids:
@@ -1265,6 +1290,10 @@ class AgentManager:
await session.delete(agent)
# context manager now handles commits
# await session.commit()
# Update the manager agent's enable_sleeptime flag if we deleted a sleeptime agent
if manager_agent_to_update is not None:
manager_agent_to_update.enable_sleeptime = None
await session.commit()
except Exception as e:
await session.rollback()
logger.exception(f"Failed to hard delete Agent with ID {agent_id}")