diff --git a/local/codex.sh b/local/codex.sh new file mode 100644 index 00000000..14441e8d --- /dev/null +++ b/local/codex.sh @@ -0,0 +1,72 @@ +#!/bin/bash +set -eo pipefail + +# Source common functions - try local file first, fall back to remote +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" 2>/dev/null && pwd)" +if [[ -f "${SCRIPT_DIR}/lib/common.sh" ]]; then + source "${SCRIPT_DIR}/lib/common.sh" +else + eval "$(curl -fsSL https://raw.githubusercontent.com/OpenRouterTeam/spawn/main/local/lib/common.sh)" +fi + +log_info "Codex CLI on local machine" +echo "" + +# 1. Ensure local prerequisites +ensure_local_ready + +# 2. Install Node.js if not already installed +if ! command -v node &>/dev/null; then + log_error "Node.js is required but not installed" + log_error "Please install Node.js from https://nodejs.org/" + exit 1 +fi + +# 3. Install Codex if not already installed +if command -v codex &>/dev/null; then + log_info "Codex already installed" +else + log_warn "Installing Codex..." + npm install -g @openai/codex +fi + +# Verify installation +if ! command -v codex &>/dev/null; then + log_error "Codex installation failed" + log_error "The 'codex' command is not available" + log_error "Try installing manually: npm install -g @openai/codex" + exit 1 +fi +log_info "Codex installation verified" + +# 4. Get OpenRouter API key +echo "" +if [[ -n "${OPENROUTER_API_KEY:-}" ]]; then + log_info "Using OpenRouter API key from environment" +else + OPENROUTER_API_KEY=$(get_openrouter_api_key_oauth 5180) +fi + +# 5. Inject environment variables +log_warn "Appending environment variables to ~/.zshrc..." +inject_env_vars_local upload_file run_server \ + "OPENAI_API_KEY=${OPENROUTER_API_KEY}" \ + "OPENAI_BASE_URL=https://openrouter.ai/api/v1" \ + "OPENROUTER_API_KEY=${OPENROUTER_API_KEY}" + +echo "" +log_info "Local setup completed successfully!" +echo "" + +# 6. Start Codex +if [[ -n "${SPAWN_PROMPT:-}" ]]; then + log_warn "Executing Codex with prompt..." + source ~/.zshrc 2>/dev/null || true + codex -m "${SPAWN_PROMPT}" +else + log_warn "Starting Codex..." + sleep 1 + clear 2>/dev/null || true + source ~/.zshrc 2>/dev/null || true + exec codex +fi diff --git a/manifest.json b/manifest.json index 26930fc2..11f89276 100644 --- a/manifest.json +++ b/manifest.json @@ -1191,7 +1191,7 @@ "local/nanoclaw": "implemented", "local/aider": "missing", "local/goose": "implemented", - "local/codex": "missing", + "local/codex": "implemented", "local/interpreter": "missing", "local/gemini": "missing", "local/amazonq": "missing",