159 lines
4.7 KiB
Bash
Executable file
159 lines
4.7 KiB
Bash
Executable file
#!/bin/bash
|
|
# Agents Orchestrator — Electrobun management script
|
|
# Usage: ./scripts/launch.sh <command> [options]
|
|
#
|
|
# Commands:
|
|
# start [--clean] Kill old, start PTY+Vite+Electrobun (--clean removes build/)
|
|
# stop Kill all running instances
|
|
# restart [--clean] Stop then start
|
|
# clean Remove build/, node_modules/.electrobun-cache, stale processes
|
|
# rebuild Full clean + npm install + vite build + rebuild PTY + rebuild C lib
|
|
# status Show running processes and ports
|
|
# kill-stale Kill ALL stale agor-ptyd instances (accumulate over sessions)
|
|
# build-native Rebuild libagor-resize.so and agor-ptyd
|
|
# logs Tail Electrobun output
|
|
|
|
set -e
|
|
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
|
|
EBUN="$ROOT/ui-electrobun"
|
|
PTYD="$ROOT/agor-pty/target/release/agor-ptyd"
|
|
RESIZE_SO="$ROOT/agor-pty/native/libagor-resize.so"
|
|
RESIZE_C="$ROOT/agor-pty/native/agor_resize.c"
|
|
LOG="/tmp/agor-electrobun.log"
|
|
|
|
cmd_stop() {
|
|
echo "[agor] Stopping all instances..."
|
|
pkill -f "electrobun|WebKit|AgentOrch|launcher" 2>/dev/null || true
|
|
fuser -k 9760/tcp 2>/dev/null || true
|
|
sleep 1
|
|
echo "[agor] Stopped."
|
|
}
|
|
|
|
cmd_kill_stale() {
|
|
echo "[agor] Killing ALL stale agor-ptyd instances..."
|
|
pkill -f agor-ptyd 2>/dev/null || true
|
|
sleep 1
|
|
local count=$(pgrep -fc agor-ptyd 2>/dev/null || echo 0)
|
|
echo "[agor] Remaining ptyd processes: $count"
|
|
}
|
|
|
|
cmd_clean() {
|
|
echo "[agor] Cleaning build artifacts..."
|
|
rm -rf "$EBUN/build/"
|
|
rm -rf "$EBUN/node_modules/.electrobun-cache/"
|
|
rm -rf "$EBUN/node_modules/electrobun/.cache/"
|
|
rm -f "$LOG"
|
|
echo "[agor] Cleaned."
|
|
}
|
|
|
|
cmd_build_native() {
|
|
echo "[agor] Building libagor-resize.so..."
|
|
cd "$ROOT/agor-pty/native"
|
|
gcc -shared -fPIC -o libagor-resize.so agor_resize.c $(pkg-config --cflags --libs gtk+-3.0)
|
|
echo "[agor] Built: $RESIZE_SO"
|
|
|
|
echo "[agor] Building agor-ptyd..."
|
|
cd "$ROOT/agor-pty"
|
|
cargo build --release 2>&1 | tail -3
|
|
echo "[agor] Built: $PTYD"
|
|
}
|
|
|
|
cmd_rebuild() {
|
|
cmd_stop
|
|
cmd_kill_stale
|
|
cmd_clean
|
|
|
|
echo "[agor] Installing npm dependencies..."
|
|
cd "$EBUN" && npm install --legacy-peer-deps 2>&1 | tail -3
|
|
|
|
echo "[agor] Building Vite frontend..."
|
|
cd "$EBUN" && npx vite build 2>&1 | tail -1
|
|
|
|
cmd_build_native
|
|
echo "[agor] Full rebuild complete."
|
|
}
|
|
|
|
cmd_start() {
|
|
local clean=false
|
|
[[ "${1:-}" == "--clean" ]] && clean=true
|
|
|
|
cmd_stop
|
|
|
|
if $clean; then
|
|
cmd_clean
|
|
fi
|
|
|
|
# Kill excess stale ptyd (keep max 1)
|
|
local ptyd_count=$(pgrep -fc agor-ptyd 2>/dev/null || echo 0)
|
|
if [ "$ptyd_count" -gt 1 ]; then
|
|
echo "[agor] Killing $ptyd_count stale ptyd instances..."
|
|
pkill -f agor-ptyd 2>/dev/null || true
|
|
sleep 1
|
|
fi
|
|
|
|
echo "[agor] Starting PTY daemon..."
|
|
pgrep -f agor-ptyd > /dev/null 2>&1 || "$PTYD" &>/dev/null &
|
|
sleep 1
|
|
|
|
echo "[agor] Starting Vite on :9760..."
|
|
fuser 9760/tcp > /dev/null 2>&1 || (cd "$EBUN" && npx vite dev --port 9760 --host localhost &>/dev/null &)
|
|
sleep 3
|
|
|
|
echo "[agor] Starting Electrobun..."
|
|
cd "$EBUN" && npx electrobun dev 2>&1 | tee "$LOG"
|
|
}
|
|
|
|
cmd_restart() {
|
|
cmd_stop
|
|
sleep 1
|
|
cmd_start "$@"
|
|
}
|
|
|
|
cmd_status() {
|
|
echo "=== Processes ==="
|
|
echo "PTY daemons: $(pgrep -fc agor-ptyd 2>/dev/null || echo 0)"
|
|
echo "Vite: $(fuser 9760/tcp 2>/dev/null && echo 'running' || echo 'stopped')"
|
|
echo "Electrobun: $(pgrep -fc electrobun 2>/dev/null || echo 0)"
|
|
echo "WebKit: $(pgrep -fc WebKitWebProcess 2>/dev/null || echo 0)"
|
|
echo ""
|
|
echo "=== Ports ==="
|
|
echo "9760 (Vite): $(fuser 9760/tcp 2>/dev/null || echo 'free')"
|
|
echo ""
|
|
echo "=== Window ==="
|
|
xdotool search --class "WebKit" 2>/dev/null | head -1 || echo "No window found"
|
|
}
|
|
|
|
cmd_logs() {
|
|
if [ -f "$LOG" ]; then
|
|
tail -f "$LOG"
|
|
else
|
|
echo "[agor] No log file at $LOG. Start with: ./scripts/launch.sh start"
|
|
fi
|
|
}
|
|
|
|
# Dispatch
|
|
case "${1:-help}" in
|
|
start) shift; cmd_start "$@" ;;
|
|
stop) cmd_stop ;;
|
|
restart) shift; cmd_restart "$@" ;;
|
|
clean) cmd_clean ;;
|
|
rebuild) cmd_rebuild ;;
|
|
status) cmd_status ;;
|
|
kill-stale) cmd_kill_stale ;;
|
|
build-native) cmd_build_native ;;
|
|
logs) cmd_logs ;;
|
|
*)
|
|
echo "Usage: $0 <command> [options]"
|
|
echo ""
|
|
echo "Commands:"
|
|
echo " start [--clean] Start the app (--clean removes build first)"
|
|
echo " stop Stop all instances"
|
|
echo " restart [--clean] Stop then start"
|
|
echo " clean Remove build artifacts and caches"
|
|
echo " rebuild Full clean + npm install + vite build + native build"
|
|
echo " status Show running processes and ports"
|
|
echo " kill-stale Kill ALL stale agor-ptyd instances"
|
|
echo " build-native Rebuild libagor-resize.so + agor-ptyd"
|
|
echo " logs Tail Electrobun output"
|
|
;;
|
|
esac
|