#!/bin/bash
set -e

MANAGER="http://127.0.0.1:19088"
TOKEN="dev-admin-token"
DIGEST="f1af5b320690bb38645af3dd7759aefeed132f700b7240aa12a10567e7f221c8"
SIGNATURE="Zz6G5VhHQRqrTSBN29cPnQIhES1OD2WAQ4L8RWTp22LhZ4vbfQp6CfVsCdj1Lvd9m0NO69cqwCHImFZkfluxBQ=="
SIZE=10518539
OBJ_ID="sobj-7aa677c2-f"

echo "=== 删除旧 artifact ==="
curl -sS -X DELETE -H "Authorization: Bearer $TOKEN" "$MANAGER/api/v1/artifacts/artifact-a67a02de-2" 2>/dev/null || true
echo ""

echo "=== 创建新 agent artifact ==="
ARTIFACT_RESP=$(curl -sS -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "{
    \"kind\": \"friend\",
    \"name\": \"friend-agent\",
    \"version\": \"0.9.10\",
    \"platform\": \"linux/amd64\",
    \"storage_object_id\": \"$OBJ_ID\",
    \"size_bytes\": $SIZE,
    \"digest\": \"sha256:$DIGEST\",
    \"signature\": \"$SIGNATURE\",
    \"key_id\": \"release-2026\",
    \"signed\": true
  }" "$MANAGER/api/v1/artifacts" 2>/dev/null)
echo "$ARTIFACT_RESP"
ARTIFACT_ID=$(echo "$ARTIFACT_RESP" | python3 -c "import json,sys;print(json.load(sys.stdin).get('id',''))")
echo "ARTIFACT_ID=$ARTIFACT_ID"

echo ""
echo "=== 触发 agent.upgrade ==="
UPGRADE_RESP=$(curl -sS -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "{\"action\":\"agent.upgrade\",\"payload\":{\"program\":\"friend-agent\",\"version\":\"0.9.10\",\"source_url\":\"http://10.200.0.10:19088/artifact-content/$ARTIFACT_ID/$DIGEST\",\"digest\":\"sha256:$DIGEST\",\"signature\":\"$SIGNATURE\",\"key_id\":\"release-2026\"}}" \
  "$MANAGER/api/v1/instances/friend-043bd076/commands" 2>/dev/null)
echo "$UPGRADE_RESP"

echo ""
echo "等待升级完成..."
sleep 45

echo "=== 检查命令状态 ==="
python3 << 'PYEOF'
import sqlite3
conn = sqlite3.connect("/opt/friend-cluster/data/friend-cluster-v1.db")
cur = conn.cursor()
cur.execute("SELECT id,action,status,result FROM commands WHERE action LIKE '%upgrade%' ORDER BY created_at DESC LIMIT 3")
for r in cur.fetchall(): print("CMD:", r)
conn.close()
PYEOF

echo ""
echo "=== 检查实例状态 ==="
curl -sS -H "Authorization: Bearer $TOKEN" "$MANAGER/api/v1/instances/friend-043bd076" 2>/dev/null | python3 -c "
import json,sys
d=json.load(sys.stdin)
inst=d.get('instance',d)
print('process_state:', inst.get('process_state',''))
print('health_state:', inst.get('health_state',''))
print('config_state:', inst.get('config_state',''))
print('last_error:', inst.get('last_error','')[:200])
"

echo ""
echo "=== agent 日志 ==="
docker logs --tail 15 friend-deploy-8ee3dbd3-24b 2>&1 | tail -15
