#!/usr/bin/env bash set -euo pipefail PORT="${PORT:-7860}" if [[ -z "${PASSWORD:-}" && -z "${HASHED_PASSWORD:-}" ]]; then echo "[ERROR] Missing PASSWORD/HASHED_PASSWORD secret." exit 1 fi if [[ -d "/data" ]]; then WORKDIR="/data/workspace" EXT_DIR="/data/code-server/extensions" USER_DATA_DIR="/data/code-server/user-data" CODEX_DIR="/data/.codex" else WORKDIR="${HOME}/workspace" EXT_DIR="${HOME}/.local/share/code-server/extensions" USER_DATA_DIR="${HOME}/.local/share/code-server/user-data" CODEX_DIR="${HOME}/.codex" fi mkdir -p "$WORKDIR" "$EXT_DIR" "$USER_DATA_DIR" "${USER_DATA_DIR}/User" "${HOME}/.config/code-server" "$CODEX_DIR" cat > "${HOME}/.config/code-server/config.yaml" <> "${HOME}/.config/code-server/config.yaml" else echo "password: ${PASSWORD}" >> "${HOME}/.config/code-server/config.yaml" fi # Codex config.toml : "${CODEX_MODEL_PROVIDER:=sub2api}" : "${CODEX_MODEL:=gpt-5.2-codex}" : "${CODEX_REASONING_EFFORT:=xhigh}" : "${CODEX_NETWORK_ACCESS:=enabled}" : "${CODEX_DISABLE_RESPONSE_STORAGE:=true}" : "${CODEX_WSL_ACK:=true}" : "${CODEX_VERBOSITY:=high}" : "${CODEX_PROVIDER_NAME:=sub2api}" : "${CODEX_BASE_URL:=https://cacode-sub2api-dev.hf.space}" : "${CODEX_WIRE_API:=responses}" : "${CODEX_REQUIRES_OPENAI_AUTH:=true}" : "${PLAYWRIGHT_MCP_ENABLE:=true}" : "${PLAYWRIGHT_MCP_HOST:=127.0.0.1}" : "${PLAYWRIGHT_MCP_PORT:=8931}" : "${PLAYWRIGHT_MCP_URL:=http://${PLAYWRIGHT_MCP_HOST}:${PLAYWRIGHT_MCP_PORT}/mcp}" cat > "${CODEX_DIR}/config.toml" <> "${CODEX_DIR}/config.toml" < "${CODEX_DIR}/auth.json" elif [[ -n "${OPENAI_API_KEY:-}" ]]; then cat > "${CODEX_DIR}/auth.json" </dev/null || true chmod 600 "${CODEX_DIR}/auth.json" 2>/dev/null || true if [[ "${CODEX_DIR}" != "${HOME}/.codex" ]]; then rm -rf "${HOME}/.codex" ln -s "${CODEX_DIR}" "${HOME}/.codex" fi # 默认中文界面 cat > "${USER_DATA_DIR}/User/locale.json" </dev/null 2>&1; then echo "[INFO] Starting Playwright MCP server at ${PLAYWRIGHT_MCP_URL}" nohup playwright-mcp --headless --browser chromium --no-sandbox --port "${PLAYWRIGHT_MCP_PORT}" --host "${PLAYWRIGHT_MCP_HOST}" >/tmp/playwright-mcp.log 2>&1 & else echo "[WARN] Playwright MCP not installed; skipping server start." fi fi echo "[INFO] Java: $(java -version 2>&1 | head -n1 || true)" echo "[INFO] Python: $(python --version || true)" echo "[INFO] Pip: $(pip --version || true)" echo "[INFO] Node: $(node --version || true)" echo "[INFO] g++: $(g++ --version | head -n1 || true)" echo "[INFO] Rust: $(rustc --version || true)" echo "[INFO] Cargo: $(cargo --version || true)" echo "[INFO] Go: $(go version || true)" echo "[INFO] Playwright: $(playwright --version 2>/dev/null || true)" exec code-server "$WORKDIR" \ --extensions-dir "$EXT_DIR" \ --user-data-dir "$USER_DATA_DIR" \ --disable-telemetry \ --disable-update-check \ --log warn