#!/bin/bash
# M3 前置验证：ingest 注入消息 → 主链思考 → LLM 调用成功
set -e
BASE=http://10.168.3.36:19088

echo "=== 0. 当前实例清单 ==="
curl -sS -H "Authorization: Bearer dev-admin-token" "$BASE/api/v1/instances" | python3 -c "
import sys,json
d=json.load(sys.stdin)
items=d if isinstance(d,list) else d.get('instances',[])
for i in items:
    print(i.get('id'), '|', i.get('process_state'), '|', i.get('config_state'))"

echo ""
echo "=== 1. 找可用实例或提示需要新建 ==="
INST=$(curl -sS -H "Authorization: Bearer dev-admin-token" "$BASE/api/v1/instances" | python3 -c "
import sys,json
d=json.load(sys.stdin)
items=d if isinstance(d,list) else d.get('instances',[])
run=[i for i in items if i.get('process_state')=='running']
print(run[0]['id'] if run else '')")
echo "RUNNING_INSTANCE=$INST"

if [ -z "$INST" ]; then
  echo "NO_RUNNING_INSTANCE"
  exit 0
fi

C=$(curl -sS -H "Authorization: Bearer dev-admin-token" "$BASE/api/v1/instance-deployments" | python3 -c "
import sys,json
d=json.load(sys.stdin)
items=d if isinstance(d,list) else d.get('deployments',d.get('items',[]))
for x in items:
    if x.get('instance_id')=='$INST': print(x.get('runtime_name','')); break")
echo "CONTAINER=$C"

echo ""
echo "=== 2. httpapi 插件状态 ==="
docker exec $C sh -c 'ls /var/lib/friend/plugins/ 2>/dev/null; cat /var/lib/friend/plugins/httpapi/manifest.json 2>/dev/null | head -5' || echo "(容器名可能不对)"

echo ""
echo "=== 3. 探测 ingest 端口 ==="
docker exec $C sh -c 'netstat -tln 2>/dev/null | grep -E "8787|8000" || cat /proc/net/tcp | head -5'

echo ""
echo "=== 4. 容器内直发 ingest 消息 ==="
ITOK=$(docker exec $C sh -c "grep api_auth_token /app/config/config.yaml" | awk '{print $2}')
docker exec $C sh -c "wget -qO- --header='Authorization: Bearer $ITOK' --header='Content-Type: application/json' --post-data='{\"platform\":\"yunwo\",\"platform_user_id\":\"u97\",\"platform_chat_id\":\"chat97\",\"message_type\":\"text\",\"content\":{\"parts\":[{\"type\":\"text\",\"text\":\"你好，请回复一句话确认你能思考\"}]},\"timestamp\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"}' http://127.0.0.1:8787/ingest 2>&1" || echo INGEST_FAILED
echo ""
echo DONE_STEP1
