Spaces:
Running
Running
File size: 3,822 Bytes
b19d31a 0d9d280 b19d31a 55bff24 0d9d280 2083ee0 7cd8723 0d9d280 2083ee0 b19d31a d88aa6c 970eeac 9512030 0d9d280 b19d31a 0d9d280 b19d31a 0d9d280 b19d31a 0d9d280 b19d31a 0fa48ff b19d31a 0d9d280 d8e86ce 970eeac b19d31a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | #!/bin/sh
set -e
BOOT_START=$(date +%s)
echo "[entrypoint] OpenClaw HuggingFace Spaces Entrypoint"
echo "[entrypoint] ======================================="
# ββ DNS pre-resolution (background β non-blocking) βββββββββββββββββββββββ
# Resolves WhatsApp domains via DoH for dns-fix.cjs to consume.
# Telegram connectivity is handled by API base auto-probe in sync_hf.py.
echo "[entrypoint] Starting DNS resolution in background..."
python3 /home/node/scripts/dns-resolve.py /tmp/dns-resolved.json 2>&1 &
DNS_PID=$!
echo "[entrypoint] DNS resolver PID: $DNS_PID"
# ββ Node.js memory limit (only if explicitly set) βββββββββββββββββββββββββ
if [ -n "$NODE_MEMORY_LIMIT" ]; then
export NODE_OPTIONS="${NODE_OPTIONS:+$NODE_OPTIONS }--max-old-space-size=$NODE_MEMORY_LIMIT"
echo "[entrypoint] Node.js memory limit: ${NODE_MEMORY_LIMIT}MB"
fi
# Enable Node.js DNS fix (will use resolved file when ready)
export NODE_OPTIONS="${NODE_OPTIONS:+$NODE_OPTIONS }--require /home/node/scripts/dns-fix.cjs"
# Enable Telegram API proxy (redirects fetch() to working mirror if needed)
export NODE_OPTIONS="${NODE_OPTIONS:+$NODE_OPTIONS }--require /home/node/scripts/telegram-proxy.cjs"
# Enable token redirect + A2A routing + state/agents endpoints (all in one preload)
export NODE_OPTIONS="${NODE_OPTIONS:+$NODE_OPTIONS }--require /home/node/scripts/token-redirect.cjs"
# ββ Extensions symlink ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SYMLINK_START=$(date +%s)
if [ ! -L /home/node/.openclaw/extensions ]; then
rm -rf /home/node/.openclaw/extensions 2>/dev/null || true
ln -s /app/openclaw/extensions /home/node/.openclaw/extensions
echo "[entrypoint] Created extensions symlink -> /app/openclaw/extensions"
fi
echo "[TIMER] Extensions symlink: $(($(date +%s) - SYMLINK_START))s"
# ββ WhatsApp credentials check ββββββββββββββββββββββββββββββββββββββββββββββ
if [ -d /home/node/.openclaw/credentials/whatsapp ]; then
echo "[entrypoint] Found existing WhatsApp credentials - will use for auto-connect"
fi
# ββ Build artifacts check βββββββββββββββββββββββββββββββββββββββββββββββββββ
cd /app/openclaw
echo "[entrypoint] Build artifacts check:"
test -f dist/entry.js && echo " OK dist/entry.js" || echo " INFO: dist/entry.js not found (pre-built image may use openclaw.mjs)"
test -f openclaw.mjs && echo " OK openclaw.mjs" || echo " INFO: openclaw.mjs not found"
test -f dist/plugin-sdk/index.js && echo " OK dist/plugin-sdk/index.js" || echo " INFO: dist/plugin-sdk/index.js not found"
echo " Extensions: $(ls extensions/ 2>/dev/null | wc -l | tr -d ' ') found"
echo " Global extensions link: $(readlink /home/node/.openclaw/extensions 2>/dev/null || echo 'NOT SET')"
# Create logs directory
mkdir -p /home/node/logs
touch /home/node/logs/app.log
ENTRYPOINT_END=$(date +%s)
echo "[TIMER] Entrypoint (before sync_hf.py): $((ENTRYPOINT_END - BOOT_START))s"
# ββ Set version from build artifact ββββββββββββββββββββββββββββββββββββββββ
if [ -f /app/openclaw/.version ]; then
export OPENCLAW_VERSION=$(cat /app/openclaw/.version)
echo "[entrypoint] OpenClaw version: $OPENCLAW_VERSION"
fi
# ββ Start OpenClaw via sync_hf.py (directly on port 7860, no proxy) βββββββ
echo "[entrypoint] Starting OpenClaw via sync_hf.py..."
exec python3 -u /home/node/scripts/sync_hf.py
|