#!/bin/bash
# 🤖 MACP Quick Command v2.1 (Unified Edition)

set -euo pipefail

AGENT_ID_FILE=".agent/current_agent"

resolve_agent_id() {
    if [ -n "${MACP_AGENT_ID:-}" ]; then
        echo "$MACP_AGENT_ID"
        return
    fi

    if [ -f "$AGENT_ID_FILE" ]; then
        cat "$AGENT_ID_FILE"
        return
    fi

    echo "Error: MACP agent identity is not set. Export MACP_AGENT_ID or create .agent/current_agent." >&2
    exit 1
}

resolve_agent_name() {
    python3 - <<'PY2'
import os
import sqlite3
import sys

agent_id = os.environ.get("MACP_AGENT_ID", "").strip()
if not agent_id:
    path = os.path.join(os.getcwd(), ".agent", "current_agent")
    if os.path.exists(path):
        with open(path, "r", encoding="utf-8") as handle:
            agent_id = handle.read().strip()

db_path = os.path.join(os.getcwd(), ".agent", "agent_hub.db")
name = agent_id or "Agent"

if agent_id and os.path.exists(db_path):
    conn = sqlite3.connect(db_path)
    cur = conn.cursor()
    cur.execute("SELECT name FROM agents WHERE id = ?", (agent_id,))
    row = cur.fetchone()
    conn.close()
    if row and row[0]:
        name = row[0]

sys.stdout.write(name)
PY2
}

AGENT_ID="$(resolve_agent_id)"
export MACP_AGENT_ID="$AGENT_ID"
AGENT_NAME="$(resolve_agent_name)"

CMD="${1:-}"
if [ -z "$CMD" ]; then
    echo "Usage: ./scripts/macp [/status|/ping|/study|/broadcast|/summon|/handover|/note|/check|/resolve]" >&2
    exit 1
fi
shift

case "$CMD" in
    /study)
        TOPIC="$1"
        shift
        DESC="$*"
        if [ -n "$DESC" ]; then
            python3 scripts/agent_sync.py study "$AGENT_ID" "$TOPIC" --desc "$DESC"
        else
            python3 scripts/agent_sync.py study "$AGENT_ID" "$TOPIC"
        fi
        ;;
    /broadcast)
        python3 scripts/agent_sync.py broadcast "$AGENT_ID" manual "$*"
        ;;
    /summon)
        TO_AGENT="$1"
        shift
        python3 scripts/agent_sync.py assign "$AGENT_ID" "$TO_AGENT" "$*" --role worker --priority high
        ;;
    /handover)
        TO_AGENT="$1"
        shift
        python3 scripts/agent_sync.py assign "$AGENT_ID" "$TO_AGENT" "$*" --role worker
        python3 scripts/agent_sync.py register "$AGENT_ID" "$AGENT_NAME" "Idle"
        ;;
    /note)
        TOPIC="$1"
        shift
        python3 scripts/agent_sync.py note "$AGENT_ID" "$TOPIC" "$*" --type note
        ;;
    /check)
        python3 scripts/agent_sync.py check
        ;;
    /resolve)
        TOPIC="$1"
        shift
        python3 scripts/agent_sync.py resolve "$AGENT_ID" "$TOPIC" "$*"
        ;;
    /ping)
        python3 scripts/agent_sync.py status | grep "\["
        ;;
    /status)
        python3 scripts/agent_sync.py status
        ;;
    *)
        echo "Usage: ./scripts/macp [/status|/ping|/study|/broadcast|/summon|/handover|/note|/check|/resolve]"
        ;;
esac
