#!/bin/bash # ============================================================================= # UNIFIED AGI CORE - MASTER STARTUP SCRIPT # Launches all components of the unified AGI system # ============================================================================= set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" LOG_DIR="${SCRIPT_DIR}/logs" PID_DIR="${SCRIPT_DIR}/pids" mkdir -p "$LOG_DIR" "$PID_DIR" "${SCRIPT_DIR}/state" "${SCRIPT_DIR}/data" echo "==============================================" echo " UNIFIED AGI CORE v3.0 - SYNTHESIS" echo "==============================================" echo "Starting all subsystems..." echo "" # Cleanup function cleanup() { echo "" echo "[UNIFIED] Shutting down all subsystems..." for pidfile in "${PID_DIR}"/*.pid; do if [ -f "$pidfile" ]; then pid=$(cat "$pidfile") name=$(basename "$pidfile" .pid) if kill -0 "$pid" 2>/dev/null; then echo "[UNIFIED] Stopping $name (PID: $pid)" kill "$pid" 2>/dev/null || true fi rm -f "$pidfile" fi done echo "[UNIFIED] Shutdown complete." exit 0 } trap cleanup SIGTERM SIGINT SIGHUP # Start a daemon start_daemon() { local name="$1" local script="$2" local log="${LOG_DIR}/${name}.log" local pid="${PID_DIR}/${name}.pid" if [ -f "$script" ]; then chmod +x "$script" echo "[UNIFIED] Starting $name..." nohup bash "$script" daemon >> "$log" 2>&1 & echo $! > "$pid" echo "[UNIFIED] -> $name started (PID: $(cat $pid))" sleep 1 else echo "[UNIFIED] Warning: $script not found, skipping $name" fi } # Start all subsystems echo "[UNIFIED] === Phase 1: Core Orchestrator ===" start_daemon "orchestrator" "${SCRIPT_DIR}/core/unified-orchestrator.sh" echo "" echo "[UNIFIED] === Phase 2: Agent Pantheon ===" start_daemon "pantheon" "${SCRIPT_DIR}/agents/pantheon-daemon.sh" echo "" echo "[UNIFIED] === Phase 3: Federation Mesh ===" start_daemon "federation" "${SCRIPT_DIR}/federation/federation-mesh.sh" echo "" echo "[UNIFIED] === Phase 4: Autonomous Learner ===" start_daemon "learner" "${SCRIPT_DIR}/knowledge/autonomous-learner.sh" echo "" echo "==============================================" echo " UNIFIED AGI CORE - ONLINE" echo "==============================================" echo "" echo "Running subsystems:" for pidfile in "${PID_DIR}"/*.pid; do if [ -f "$pidfile" ]; then name=$(basename "$pidfile" .pid) pid=$(cat "$pidfile") if kill -0 "$pid" 2>/dev/null; then echo " [ACTIVE] $name (PID: $pid)" else echo " [FAILED] $name" fi fi done echo "" echo "Logs: ${LOG_DIR}" echo "State: ${SCRIPT_DIR}/state" echo "Data: ${SCRIPT_DIR}/data" echo "" echo "Press Ctrl+C to shutdown all subsystems" echo "==============================================" # Keep running and monitor while true; do # Check subsystem health for pidfile in "${PID_DIR}"/*.pid; do if [ -f "$pidfile" ]; then pid=$(cat "$pidfile") name=$(basename "$pidfile" .pid) if ! kill -0 "$pid" 2>/dev/null; then echo "[UNIFIED] Warning: $name (PID: $pid) died, restarting..." case "$name" in orchestrator) start_daemon "orchestrator" "${SCRIPT_DIR}/core/unified-orchestrator.sh" ;; pantheon) start_daemon "pantheon" "${SCRIPT_DIR}/agents/pantheon-daemon.sh" ;; federation) start_daemon "federation" "${SCRIPT_DIR}/federation/federation-mesh.sh" ;; learner) start_daemon "learner" "${SCRIPT_DIR}/knowledge/autonomous-learner.sh" ;; esac fi fi done sleep 30 done