#!/usr/bin/env bash set -euo pipefail log() { echo "[openclaw-sse-standalone] $*" } fail() { echo "[openclaw-sse-standalone] ERROR: $*" >&2 exit 1 } require_cmd() { local cmd="$1" command -v "$cmd" >/dev/null 2>&1 || fail "missing required command: $cmd" } require_cmd curl require_cmd jq require_cmd grep OPENCLAW_URL="${OPENCLAW_URL:-}" OPENCLAW_METHOD="${OPENCLAW_METHOD:-POST}" OPENCLAW_AUTH_HEADER="${OPENCLAW_AUTH_HEADER:-}" OPENCLAW_TIMEOUT_SEC="${OPENCLAW_TIMEOUT_SEC:-180}" OPENCLAW_MODEL="${OPENCLAW_MODEL:-openclaw}" OPENCLAW_USER="${OPENCLAW_USER:-paperclip-smoke}" PAPERCLIP_RUN_ID="${PAPERCLIP_RUN_ID:-smoke-run-$(date +%s)}" PAPERCLIP_AGENT_ID="${PAPERCLIP_AGENT_ID:-openclaw-smoke-agent}" PAPERCLIP_COMPANY_ID="${PAPERCLIP_COMPANY_ID:-openclaw-smoke-company}" PAPERCLIP_API_URL="${PAPERCLIP_API_URL:-http://localhost:3100}" PAPERCLIP_TASK_ID="${PAPERCLIP_TASK_ID:-openclaw-smoke-task}" PAPERCLIP_WAKE_REASON="${PAPERCLIP_WAKE_REASON:-openclaw_smoke_test}" PAPERCLIP_WAKE_COMMENT_ID="${PAPERCLIP_WAKE_COMMENT_ID:-}" PAPERCLIP_APPROVAL_ID="${PAPERCLIP_APPROVAL_ID:-}" PAPERCLIP_APPROVAL_STATUS="${PAPERCLIP_APPROVAL_STATUS:-}" PAPERCLIP_LINKED_ISSUE_IDS="${PAPERCLIP_LINKED_ISSUE_IDS:-}" OPENCLAW_TEXT_PREFIX="${OPENCLAW_TEXT_PREFIX:-Standalone OpenClaw SSE smoke test.}" [[ -n "$OPENCLAW_URL" ]] || fail "OPENCLAW_URL is required" read -r -d '' TEXT_BODY <&2 || true fail "non-success HTTP status: ${http_code}" fi if ! grep -Eqi '^content-type:.*text/event-stream' "$headers_file"; then tail -n 40 "$body_file" >&2 || true fail "response content-type was not text/event-stream" fi if grep -Eqi 'event:\s*(error|failed|cancel)|"status":"(failed|cancelled|error)"|"type":"[^"]*(failed|cancelled|error)"' "$body_file"; then tail -n 120 "$body_file" >&2 || true fail "stream reported a failure event" fi if ! grep -Eqi 'event:\s*(done|completed|response\.completed)|\[DONE\]|"status":"(completed|succeeded|done)"|"type":"response\.completed"' "$body_file"; then tail -n 120 "$body_file" >&2 || true fail "stream ended without a terminal completion marker" fi event_count="$(grep -Ec '^event:' "$body_file" || true)" log "stream completed successfully (events=${event_count})" echo tail -n 40 "$body_file"