mirror of
https://github.com/OpenRouterTeam/spawn.git
synced 2026-04-30 21:09:29 +00:00
Consistently use log_step for progress/status messages ("Waiting for...",
"Fetching...", "Creating...") and reserve log_info for success/completion
messages. This gives users a clear visual distinction between operations
that are still running (cyan) vs operations that have completed (green).
Also adds periodic progress updates to silent polling loops in ramnode,
cherry, and netcup IP wait functions so users see activity during long waits.
Agent: ux-engineer
Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
72 lines
2 KiB
Bash
Executable file
72 lines
2 KiB
Bash
Executable file
#!/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/github-codespaces/lib/common.sh)"
|
|
fi
|
|
|
|
log_info "gptme on GitHub Codespaces"
|
|
echo ""
|
|
|
|
# 1. Ensure gh CLI and authentication
|
|
ensure_gh_cli
|
|
ensure_gh_auth
|
|
|
|
# 2. Get repository and create codespace
|
|
REPO="${GITHUB_REPO:-OpenRouterTeam/spawn}"
|
|
MACHINE="${CODESPACE_MACHINE:-basicLinux32gb}"
|
|
IDLE_TIMEOUT="${CODESPACE_IDLE_TIMEOUT:-30m}"
|
|
|
|
log_step "Creating codespace for repo: $REPO"
|
|
CODESPACE=$(create_codespace "$REPO" "$MACHINE" "$IDLE_TIMEOUT")
|
|
|
|
if [[ -z "$CODESPACE" ]]; then
|
|
log_error "Failed to create codespace"
|
|
exit 1
|
|
fi
|
|
|
|
log_info "Codespace created: $CODESPACE"
|
|
|
|
# Set CODESPACE_NAME for upload_file/run_server/inject_env_vars helpers
|
|
CODESPACE_NAME="$CODESPACE"
|
|
|
|
# 3. Wait for codespace to be ready
|
|
wait_for_codespace "$CODESPACE"
|
|
|
|
# 4. Install gptme
|
|
log_step "Installing gptme..."
|
|
run_server "pip install gptme 2>/dev/null || pip3 install gptme"
|
|
log_info "gptme installed"
|
|
|
|
# 5. 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
|
|
|
|
# 6. Get model preference
|
|
MODEL_ID=$(get_model_id_interactive "openrouter/auto" "gptme") || exit 1
|
|
|
|
# 7. Inject environment variables via safe temp file upload
|
|
inject_env_vars \
|
|
"OPENROUTER_API_KEY=${OPENROUTER_API_KEY}"
|
|
|
|
echo ""
|
|
log_info "GitHub Codespace setup completed successfully!"
|
|
log_info "Codespace: $CODESPACE"
|
|
echo ""
|
|
|
|
# 8. Start gptme interactively
|
|
log_step "Starting gptme..."
|
|
log_info "To delete codespace later, run: gh codespace delete --codespace $CODESPACE --force"
|
|
echo ""
|
|
sleep 1
|
|
|
|
# Launch gptme with model
|
|
run_server "source ~/.bashrc && gptme -m openrouter/${MODEL_ID}"
|