Files
byre/internal/store/migrations/066-fold-asking-held-and-ready-into-task-state.sql
T

23 lines
1.0 KiB
SQL

UPDATE tasks SET state = CASE
WHEN tasks.status != 'active' THEN tasks.status
WHEN tasks.discard_state != '' THEN 'discarding'
WHEN EXISTS (SELECT 1 FROM inbox_items i WHERE i.task_id = tasks.id AND i.state = 'open') THEN 'asking'
WHEN tasks.merging_by != '' OR tasks.finalizing != '' OR tasks.parent_merge_by != '' THEN 'merging'
WHEN tasks.merge_queued_by != '' THEN 'merge_held'
WHEN tasks.merge_after_review_by != '' THEN 'merge_after_review'
ELSE coalesce((
SELECT CASE
WHEN s.state != 'idle' THEN s.state
WHEN s.subagents > 0 THEN 'running'
WHEN EXISTS (SELECT 1 FROM reviews r WHERE r.task_id = tasks.id AND r.state = 'running') THEN 'reviewing'
WHEN tasks.review_requests > 0 THEN 'review_pending'
WHEN tasks.ready = 'merge' THEN 'ready_to_merge'
WHEN tasks.ready = 'discard' THEN 'discard_suggested'
ELSE 'idle'
END
FROM agent_sessions s
WHERE s.task_id = tasks.id AND s.role != 'reviewer' AND s.state != 'completed'
ORDER BY s.state = 'running' DESC, s.subagents > 0 DESC, s.created_at DESC LIMIT 1
), 'no_agent')
END;