|
1 | 1 | #!/usr/bin/env bash |
2 | | -# Gated inference smoke-test for baudbot. |
| 2 | +# Inference smoke-test for baudbot. |
3 | 3 | # |
4 | 4 | # Verifies that the control-agent can complete at least one real LLM turn |
5 | | -# end-to-end via session-control RPC. Default OFF for PR CI; enabled by |
6 | | -# setting BAUDBOT_CI_INFERENCE_SMOKE=1. |
| 5 | +# end-to-end via session-control RPC. |
7 | 6 | # |
8 | | -# Optional fail-open mode: BAUDBOT_CI_INFERENCE_SMOKE_OPTIONAL=1 logs failure |
9 | | -# as a warning instead of failing the build (useful for non-nightly runs where |
10 | | -# flaky provider errors shouldn't block merges). |
| 7 | +# Requires CI_ANTHROPIC_API_KEY in the environment (injected into the |
| 8 | +# agent's .env before starting baudbot). |
11 | 9 | # |
12 | 10 | # Expects baudbot to be already installed and stoppable via `sudo baudbot`. |
13 | 11 |
|
@@ -149,20 +147,25 @@ finally: |
149 | 147 | PY |
150 | 148 | } |
151 | 149 |
|
152 | | -inject_api_key() { |
153 | | - # If a real API key is available in the environment, inject it into the |
154 | | - # agent's .env so the runtime can authenticate with the provider. |
155 | | - if [[ -n "${CI_ANTHROPIC_API_KEY:-}" ]]; then |
156 | | - log "injecting CI API key into agent .env" |
157 | | - sed -i "s|^ANTHROPIC_API_KEY=.*|ANTHROPIC_API_KEY=${CI_ANTHROPIC_API_KEY}|" "$AGENT_ENV" |
158 | | - elif grep -q "ANTHROPIC_API_KEY=sk-ant-testkey" "$AGENT_ENV" 2>/dev/null; then |
159 | | - log "WARNING: agent .env has dummy API key; inference will likely fail" |
160 | | - log " set CI_ANTHROPIC_API_KEY to provide a real key" |
| 150 | +readonly CI_MODEL="anthropic/claude-haiku" |
| 151 | + |
| 152 | +inject_ci_config() { |
| 153 | + if [[ -z "${CI_ANTHROPIC_API_KEY:-}" ]]; then |
| 154 | + log "ERROR: CI_ANTHROPIC_API_KEY is not set" |
| 155 | + return 1 |
| 156 | + fi |
| 157 | + log "injecting CI API key and model override into agent .env" |
| 158 | + sed -i "s|^ANTHROPIC_API_KEY=.*|ANTHROPIC_API_KEY=${CI_ANTHROPIC_API_KEY}|" "$AGENT_ENV" |
| 159 | + # Use a cheap model for the smoke test — no need to burn Sonnet/Opus tokens. |
| 160 | + if grep -q "^BAUDBOT_MODEL=" "$AGENT_ENV" 2>/dev/null; then |
| 161 | + sed -i "s|^BAUDBOT_MODEL=.*|BAUDBOT_MODEL=${CI_MODEL}|" "$AGENT_ENV" |
| 162 | + else |
| 163 | + echo "BAUDBOT_MODEL=${CI_MODEL}" >> "$AGENT_ENV" |
161 | 164 | fi |
162 | 165 | } |
163 | 166 |
|
164 | 167 | main() { |
165 | | - inject_api_key |
| 168 | + inject_ci_config |
166 | 169 |
|
167 | 170 | log "starting baudbot" |
168 | 171 | sudo baudbot start |
|
0 commit comments