55 lines
1.8 KiB
Bash
55 lines
1.8 KiB
Bash
#!/bin/sh
|
|
set -eu
|
|
|
|
CODEX_BIN="${CODEX_BIN:-codex}"
|
|
BOT_WORKSPACE_ROOT="${BOT_WORKSPACE_ROOT:-/workspaces}"
|
|
CODEX_APP_SERVER_URL="${CODEX_APP_SERVER_URL:-ws://127.0.0.1:4500}"
|
|
CODEX_APP_SERVER_LISTEN="${CODEX_APP_SERVER_LISTEN:-$CODEX_APP_SERVER_URL}"
|
|
CODEX_APP_SERVER_ENABLED="${CODEX_APP_SERVER_ENABLED:-true}"
|
|
CODEX_APP_SERVER_CWD="${CODEX_APP_SERVER_CWD:-$BOT_WORKSPACE_ROOT}"
|
|
CODEX_APP_SERVER_SANDBOX="${CODEX_APP_SERVER_SANDBOX:-${CODEX_READONLY_SANDBOX:-read-only}}"
|
|
CODEX_APP_SERVER_APPROVAL_POLICY="${CODEX_APP_SERVER_APPROVAL_POLICY:-never}"
|
|
|
|
APP_SERVER_PID=""
|
|
|
|
cleanup() {
|
|
if [ -n "$APP_SERVER_PID" ] && kill -0 "$APP_SERVER_PID" 2>/dev/null; then
|
|
kill "$APP_SERVER_PID" 2>/dev/null || true
|
|
wait "$APP_SERVER_PID" 2>/dev/null || true
|
|
fi
|
|
}
|
|
|
|
trap cleanup INT TERM EXIT
|
|
|
|
mkdir -p /app/data "$BOT_WORKSPACE_ROOT" "${CODEX_HOME:-/root/.codex}"
|
|
python -m app.ensure_codex_config
|
|
|
|
if [ "$CODEX_APP_SERVER_ENABLED" = "true" ]; then
|
|
echo "Starting Codex app-server at $CODEX_APP_SERVER_LISTEN"
|
|
"$CODEX_BIN" \
|
|
--cd "$CODEX_APP_SERVER_CWD" \
|
|
--sandbox "$CODEX_APP_SERVER_SANDBOX" \
|
|
--ask-for-approval "$CODEX_APP_SERVER_APPROVAL_POLICY" \
|
|
app-server \
|
|
--listen "$CODEX_APP_SERVER_LISTEN" \
|
|
&
|
|
APP_SERVER_PID="$!"
|
|
|
|
if echo "$CODEX_APP_SERVER_LISTEN" | grep -q '^ws://'; then
|
|
HEALTH_URL="$(echo "$CODEX_APP_SERVER_LISTEN" | sed 's#^ws://#http://#')/readyz"
|
|
for _ in $(seq 1 30); do
|
|
if curl -fsS "$HEALTH_URL" >/dev/null 2>&1; then
|
|
echo "Codex app-server is ready"
|
|
break
|
|
fi
|
|
if ! kill -0 "$APP_SERVER_PID" 2>/dev/null; then
|
|
echo "Codex app-server exited before becoming ready"
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
fi
|
|
fi
|
|
|
|
python -m app.main
|