136 lines
3.6 KiB
Bash
136 lines
3.6 KiB
Bash
#!/bin/bash
|
|
#
|
|
# ClawdTalk - Status Script
|
|
#
|
|
# Shows connection status, gateway status, and config summary.
|
|
#
|
|
# Usage: ./status.sh
|
|
#
|
|
# Env vars: none
|
|
# Endpoints: none
|
|
# Reads: skill-config.json, .connect.log, .connect.pid
|
|
# Writes: none
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
CONFIG_FILE="$SCRIPT_DIR/skill-config.json"
|
|
|
|
# Auto-detect CLI name
|
|
CLI_NAME="clawdbot"
|
|
if command -v openclaw &> /dev/null && ! command -v clawdbot &> /dev/null; then
|
|
CLI_NAME="openclaw"
|
|
fi
|
|
|
|
echo ""
|
|
echo "📞 ClawdTalk Status (v1.2.4)"
|
|
echo "============================"
|
|
echo ""
|
|
|
|
# Check if configuration exists
|
|
if [ ! -f "$CONFIG_FILE" ]; then
|
|
echo "❌ No configuration found."
|
|
echo ""
|
|
echo "Run './setup.sh' to set up ClawdTalk for the first time."
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
|
|
# Check for jq
|
|
if ! command -v jq &> /dev/null; then
|
|
echo "⚠️ 'jq' not found - showing raw config instead of parsed status"
|
|
echo ""
|
|
cat "$CONFIG_FILE"
|
|
echo ""
|
|
exit 0
|
|
fi
|
|
|
|
# Parse configuration
|
|
api_key=$(jq -r '.api_key // empty' "$CONFIG_FILE" 2>/dev/null || echo "")
|
|
server=$(jq -r '.server // "https://clawdtalk.com"' "$CONFIG_FILE" 2>/dev/null || echo "https://clawdtalk.com")
|
|
|
|
# Display config summary
|
|
echo "📋 Configuration"
|
|
echo "----------------"
|
|
echo "Server: $server"
|
|
|
|
if [ -z "$api_key" ] || [ "$api_key" = "null" ] || [ "$api_key" = "YOUR_API_KEY_HERE" ]; then
|
|
echo "API Key: ❌ NOT SET"
|
|
echo ""
|
|
echo "Get your API key from https://clawdtalk.com → Dashboard"
|
|
echo "Then add it to skill-config.json"
|
|
else
|
|
masked_key="${api_key:0:6}...${api_key: -4}"
|
|
echo "API Key: ✅ $masked_key"
|
|
fi
|
|
echo ""
|
|
|
|
# WebSocket connection status
|
|
echo "🔌 WebSocket Connection"
|
|
echo "----------------------"
|
|
|
|
if [ -f "$SCRIPT_DIR/.connect.pid" ]; then
|
|
ws_pid=$(cat "$SCRIPT_DIR/.connect.pid")
|
|
if ps -p "$ws_pid" &> /dev/null; then
|
|
echo "Status: ✅ CONNECTED (PID: $ws_pid)"
|
|
if [ -f "$SCRIPT_DIR/.connect.log" ]; then
|
|
echo ""
|
|
echo "Recent activity:"
|
|
tail -n 3 "$SCRIPT_DIR/.connect.log" 2>/dev/null | while IFS= read -r line; do
|
|
echo " $line"
|
|
done
|
|
fi
|
|
else
|
|
echo "Status: ❌ DISCONNECTED (stale PID)"
|
|
rm -f "$SCRIPT_DIR/.connect.pid"
|
|
echo "Start with: ./scripts/connect.sh start"
|
|
fi
|
|
else
|
|
echo "Status: ❌ NOT STARTED"
|
|
echo "Start with: ./scripts/connect.sh start"
|
|
fi
|
|
echo ""
|
|
|
|
# Gateway status
|
|
echo "🌐 Gateway Status"
|
|
echo "----------------"
|
|
|
|
# Try multiple detection methods
|
|
gateway_running=false
|
|
|
|
# Method 1: Check for gateway process directly
|
|
if pgrep -f "clawdbot.*gateway" &>/dev/null || pgrep -f "openclaw.*gateway" &>/dev/null; then
|
|
gateway_running=true
|
|
fi
|
|
|
|
# Method 2: Check for node process with gateway in cwd
|
|
if ! $gateway_running && pgrep -f "node.*clawd" &>/dev/null; then
|
|
gateway_running=true
|
|
fi
|
|
|
|
# Method 3: Try the CLI status command
|
|
if ! $gateway_running; then
|
|
gateway_status=$($CLI_NAME gateway status 2>/dev/null || echo "")
|
|
if [[ "$gateway_status" =~ "running" ]] || [[ "$gateway_status" =~ "Gateway" ]] || [[ "$gateway_status" =~ "pid" ]]; then
|
|
gateway_running=true
|
|
fi
|
|
fi
|
|
|
|
if $gateway_running; then
|
|
echo "Status: ✅ RUNNING"
|
|
else
|
|
echo "Status: ❌ NOT RUNNING"
|
|
echo "Start with: $CLI_NAME gateway start"
|
|
fi
|
|
echo ""
|
|
|
|
# Management commands
|
|
echo "🔧 Commands"
|
|
echo "-----------"
|
|
echo "Reconfigure: ./setup.sh"
|
|
echo "WebSocket: ./scripts/connect.sh start|stop|status|restart"
|
|
echo "Gateway: $CLI_NAME gateway status|start|stop|restart"
|
|
echo "Config: cat $CONFIG_FILE"
|
|
echo "Logs: tail -f .connect.log"
|
|
echo ""
|