#!/usr/bin/env bash set -euo pipefail ROUTER_URL="http://127.0.0.1:9102" curl -fsS "$ROUTER_URL/health" >/dev/null echo "[INFO] Calling /v1/agents/devtools/infer for contract check" resp=$(curl -fsS -X POST "$ROUTER_URL/v1/agents/devtools/infer" \ -H "Content-Type: application/json" \ -d '{"prompt":"Reply with: ok","max_tokens":32,"temperature":0.1}') RESP="$resp" python3 - <<'PY' import json, os obj = json.loads(os.environ['RESP']) required = [ 'response', 'model', 'backend', 'tokens_used', 'image_base64', 'file_base64', 'file_name', 'file_mime' ] missing = [k for k in required if k not in obj] if missing: raise SystemExit(f"Missing keys: {missing}; got keys={sorted(obj.keys())}") print('[OK] Router infer contract keys present') PY echo "[OK] router contract canary passed"