111 lines
2.8 KiB
Bash
Executable File
111 lines
2.8 KiB
Bash
Executable File
#!/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
|