#!/bin/bash
# dequeue - Remove and return next task from queue
# Usage: dequeue [tier]
# If tier not specified, dequeues from highest priority (dev_followups > user_interrupts > background)

set -euo pipefail

QUEUE_FILE="$HOME/.kugetsu/queue.json"
TIER="${1:-}"

python3 << EOF
import json
import os
import sys

queue_file = os.path.expanduser("$QUEUE_FILE")
preferred_tier = "$TIER" if "$TIER" else None

try:
    with open(queue_file, 'r') as f:
        queue = json.load(f)
except:
    print("Queue empty")
    sys.exit(0)

tiers = ["dev_followups", "user_interrupts", "background"]
if preferred_tier:
    if preferred_tier not in tiers:
        print(f"Error: Invalid tier '{preferred_tier}'", file=sys.stderr)
        sys.exit(1)
    tiers = [preferred_tier]

task = None
dequeued_tier = None

for tier in tiers:
    if queue.get(tier) and len(queue[tier]) > 0:
        task = queue[tier].pop(0)
        dequeued_tier = tier
        break

if task is None:
    print("Queue empty")
    sys.exit(0)

with open(queue_file, 'w') as f:
    json.dump(queue, f, indent=2)

print(f"{dequeued_tier}|{task['id']}|{task['message']}")
EOF