23 lines
1.0 KiB
SQL
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;
|