#!/usr/bin/env bash
set -euo pipefail
KEY=$(cat /tmp/node80_selected_user_key.txt)
UA='codex_cli_rs/0.117.0 (Mac OS 15.0.0; x86_64) iTerm.app/3.6.9'

cat >/tmp/node80_text_req.json <<'JSON'
{"model":"gpt-5.4","input":"只回复 OK"}
JSON

cat >/tmp/node80_img_req.json <<'JSON'
{
  "model":"gpt-5.4",
  "input":"画一个红色苹果",
  "tools":[{"type":"image_generation"}]
}
JSON

summarize_json() {
  python3 - "$1" <<'PY'
import json, sys
path = sys.argv[1]
obj = json.load(open(path, 'r', encoding='utf-8'))
out = obj.get('output')
summary = {
  'id': obj.get('id'),
  'status': obj.get('status'),
  'model': obj.get('model'),
  'error': obj.get('error'),
  'output_count': len(out) if isinstance(out, list) else None,
  'output_items': []
}
if isinstance(out, list):
  for item in out[:5]:
    if not isinstance(item, dict):
      summary['output_items'].append({'raw_type': type(item).__name__})
      continue
    node = {'type': item.get('type'), 'keys': sorted(item.keys())[:12]}
    content = item.get('content')
    if isinstance(content, list):
      node['content_types'] = [c.get('type') for c in content if isinstance(c, dict)]
    summary['output_items'].append(node)
print(json.dumps(summary, ensure_ascii=False, indent=2))
PY
}

run_case() {
  local name="$1"; shift
  local req="$1"; shift
  local header_out="$1"; shift
  local body_out="$1"; shift
  echo "=== $name ==="
  curl -sS -D "$header_out" -o "$body_out" -w 'HTTP_STATUS=%{http_code}\n' \
    http://127.0.0.1:8090/v1/responses \
    -H "Authorization: Bearer $KEY" \
    -H 'Content-Type: application/json' \
    -H "User-Agent: $UA" \
    --data-binary @"$req"
  python3 - <<'PY' "$header_out"
import sys
from pathlib import Path
p = Path(sys.argv[1])
for line in p.read_text(encoding='utf-8', errors='replace').splitlines():
    if line.lower().startswith('content-type:') or line.startswith('HTTP/'):
        print(line)
PY
  summarize_json "$body_out"
  echo
}

run_case 'origin text' /tmp/node80_text_req.json /tmp/node80_text_headers.txt /tmp/node80_text_body.json
run_case 'origin image' /tmp/node80_img_req.json /tmp/node80_img_headers.txt /tmp/node80_img_body.json
