Files
nas_connection/scripts/start.sh

68 lines
2.3 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}"
GITEA_GIT_AUTH_ENABLED="${GITEA_GIT_AUTH_ENABLED:-true}"
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}"
if [ "$GITEA_GIT_AUTH_ENABLED" = "true" ] && [ -n "${GITEA_TOKEN:-}" ]; then
export GIT_ASKPASS="/app/scripts/gitea-askpass.sh"
export GIT_TERMINAL_PROMPT=0
if [ -n "${GITEA_USERNAME:-}" ]; then
git config --global user.name "$GITEA_USERNAME" || true
fi
if [ -n "${GITEA_EMAIL:-}" ]; then
git config --global user.email "$GITEA_EMAIL" || true
fi
fi
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