#!/bin/bash
set -e

MANAGER="http://127.0.0.1:19088"
TOKEN="dev-admin-token"
PROFILE_ID="profile-c92edf65-a"

echo "=== 当前 Config Profile ==="
curl -sS -H "Authorization: Bearer $TOKEN" "$MANAGER/api/v1/config-profiles/$PROFILE_ID" 2>/dev/null | python3 -c "
import json,sys
d=json.load(sys.stdin)
print('Revision:', d.get('revision',''))
for r in d.get('resources',[]):
    print(f\"  {r.get('kind','')} {r.get('resource_uid','')} {r.get('key','')} = {json.dumps(r.get('value',''))[:150]}\")
"

echo ""
echo "=== 更新 Config Profile (新增小模型 + 多路由) ==="

curl -sS -X PUT -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{
    "name": "YunWo Brain State",
    "cluster_id": "yunwocloud-4af3c7",
    "priority": 0,
    "resources": [
      {
        "kind": "runtime.key",
        "key": "brain.enabled",
        "value": true
      },
      {
        "kind": "runtime.key",
        "key": "brain.context_window_size",
        "value": 200000
      },
      {
        "kind": "llm.channel",
        "resource_uid": "channel/llm-proxy",
        "value": {
          "name": "llm-proxy",
          "protocol": "openai",
          "api_base": "http://127.0.0.1:39527/v1",
          "credential_configured": true
        }
      },
      {
        "kind": "llm.model",
        "resource_uid": "model/llm-proxy/glm-5-2",
        "value": {
          "model_key": "glm-5-2",
          "enabled": true,
          "supports_tools": false
        }
      },
      {
        "kind": "llm.model",
        "resource_uid": "model/llm-proxy/nemotron-3-super-120b",
        "value": {
          "model_key": "nvidia/nemotron-3-super-120b-a12b:free",
          "enabled": true,
          "supports_tools": false
        }
      },
      {
        "kind": "llm.group",
        "resource_uid": "group/default",
        "value": {
          "name": "Default",
          "members": ["channel/llm-proxy"]
        }
      },
      {
        "kind": "llm.route",
        "resource_uid": "route/brain-thinking",
        "value": {
          "purpose": "brain_thinking",
          "candidates": [
            {"target": "group/default", "position": 0}
          ]
        }
      },
      {
        "kind": "llm.route",
        "resource_uid": "route/context-compression",
        "value": {
          "purpose": "context_compression",
          "candidates": [
            {"target": "model/llm-proxy/nemotron-3-super-120b", "position": 0}
          ]
        }
      },
      {
        "kind": "llm.route",
        "resource_uid": "route/memory-narrative",
        "value": {
          "purpose": "memory_narrative",
          "candidates": [
            {"target": "model/llm-proxy/nemotron-3-super-120b", "position": 0}
          ]
        }
      },
      {
        "kind": "llm.route",
        "resource_uid": "route/memory-generator",
        "value": {
          "purpose": "memory_generator",
          "candidates": [
            {"target": "model/llm-proxy/nemotron-3-super-120b", "position": 0}
          ]
        }
      },
      {
        "kind": "llm.route",
        "resource_uid": "route/memory-episode-extractor",
        "value": {
          "purpose": "memory_episode_extractor",
          "candidates": [
            {"target": "model/llm-proxy/nemotron-3-super-120b", "position": 0}
          ]
        }
      },
      {
        "kind": "llm.route",
        "resource_uid": "route/memory-cognition-extractor",
        "value": {
          "purpose": "memory_cognition_extractor",
          "candidates": [
            {"target": "model/llm-proxy/nemotron-3-super-120b", "position": 0}
          ]
        }
      },
      {
        "kind": "llm.route",
        "resource_uid": "route/recall-memory-summary",
        "value": {
          "purpose": "recall_memory_summary",
          "candidates": [
            {"target": "model/llm-proxy/nemotron-3-super-120b", "position": 0}
          ]
        }
      },
      {
        "kind": "llm.route",
        "resource_uid": "route/memory-cognition-dedup",
        "value": {
          "purpose": "memory_cognition_dedup",
          "candidates": [
            {"target": "model/llm-proxy/nemotron-3-super-120b", "position": 0}
          ]
        }
      },
      {
        "kind": "llm.route",
        "resource_uid": "route/memory-step-experience",
        "value": {
          "purpose": "memory_step_experience_extractor",
          "candidates": [
            {"target": "model/llm-proxy/nemotron-3-super-120b", "position": 0}
          ]
        }
      },
      {
        "kind": "llm.route",
        "resource_uid": "route/memory-task-experience",
        "value": {
          "purpose": "memory_task_experience_summarizer",
          "candidates": [
            {"target": "model/llm-proxy/nemotron-3-super-120b", "position": 0}
          ]
        }
      },
      {
        "kind": "llm.route",
        "resource_uid": "route/memory-operation-detail",
        "value": {
          "purpose": "memory_operation_detail_learner",
          "candidates": [
            {"target": "model/llm-proxy/nemotron-3-super-120b", "position": 0}
          ]
        }
      }
    ],
    "issued_by": "admin"
  }' \
  "$MANAGER/api/v1/config-profiles/$PROFILE_ID" 2>/dev/null

echo ""
echo "等待配置收敛..."
sleep 15

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('config_state:', inst.get('config_state',''))
print('desired_config_generation:', inst.get('desired_config_generation',''))
print('applied_config_generation:', inst.get('applied_config_generation',''))
print('health_state:', inst.get('health_state',''))
print('last_error:', inst.get('last_error','')[:300])
"

echo ""
echo "=== 测试实例状态 ==="
curl -sS -H "Authorization: Bearer $TOKEN" "$MANAGER/api/v1/instances/friend-4f864178" 2>/dev/null | python3 -c "
import json,sys
d=json.load(sys.stdin)
inst=d.get('instance',d)
print('config_state:', inst.get('config_state',''))
print('desired_config_generation:', inst.get('desired_config_generation',''))
print('applied_config_generation:', inst.get('applied_config_generation',''))
print('health_state:', inst.get('health_state',''))
print('last_error:', inst.get('last_error','')[:300])
"

echo ""
echo "=== 更新后的 Config Profile ==="
curl -sS -H "Authorization: Bearer $TOKEN" "$MANAGER/api/v1/config-profiles/$PROFILE_ID" 2>/dev/null | python3 -c "
import json,sys
d=json.load(sys.stdin)
print('Revision:', d.get('revision',''))
for r in d.get('resources',[]):
    print(f\"  {r.get('kind','')} {r.get('resource_uid','')} {r.get('key','')} = {json.dumps(r.get('value',''))[:150]}\")
"
