mirror of
https://github.com/OpenRouterTeam/spawn.git
synced 2026-04-28 11:59:29 +00:00
Eliminate ~70% boilerplate across 149 agent scripts by introducing a standard cloud_* adapter interface and spawn_agent orchestration runner. Each cloud's lib/common.sh now exports 7 adapter functions (cloud_authenticate, cloud_provision, cloud_wait_ready, cloud_run, cloud_upload, cloud_interactive, cloud_label) that wrap cloud-specific operations behind a uniform interface. Agent scripts define hooks (agent_install, agent_env_vars, agent_launch_cmd, etc.) and call `spawn_agent "Agent Name"` — the runner handles the full deployment flow: auth → provision → wait → install → API key → env → config → launch. - shared/common.sh: add spawn_agent(), _fn_exists(), _spawn_inject_env_vars() - 10 cloud lib/common.sh files: add cloud_* adapter functions - 149 agent scripts: rewrite to hook pattern (~40-80 lines → ~20-35 lines) - test/run.sh: update 2 sprite test patterns for new adapter paths - Net reduction: ~4,300 lines (2,257 added, 6,563 removed) Co-authored-by: lab <6723574+louisgv@users.noreply.github.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
28 lines
687 B
Bash
28 lines
687 B
Bash
#!/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/daytona/lib/common.sh)"
|
|
fi
|
|
|
|
log_info "OpenCode on Daytona"
|
|
echo ""
|
|
|
|
agent_install() {
|
|
install_agent "OpenCode" "$(opencode_install_cmd)" cloud_run
|
|
}
|
|
|
|
agent_env_vars() {
|
|
generate_env_config \
|
|
"OPENROUTER_API_KEY=${OPENROUTER_API_KEY}"
|
|
}
|
|
|
|
agent_launch_cmd() {
|
|
echo 'source ~/.zshrc && opencode'
|
|
}
|
|
|
|
spawn_agent "OpenCode"
|