Files
Fu-Jie_openwebui-extensions/scripts/macp

111 lines
2.8 KiB
Plaintext
Raw Normal View History

#!/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