Newer
Older
cortex-hub / scripts / test_eval_loop.py
import requests
import time
import sys

BASE_URL = "http://192.168.68.113:8000/api/v1"
HEADERS = {"X-User-ID": "585cd6e9-05e5-42ac-83a5-93029c6cb038"}

def check():
    print("1. Fetching agents...")
    resp = requests.get(f"{BASE_URL}/agents", headers=HEADERS)
    if not resp.ok:
        print(f"Failed to fetch agents: {resp.text}")
        sys.exit(1)
        
    agents = resp.json()
    if not agents:
        print("No agents found for user.")
        sys.exit(1)
        
    agent_id = agents[0]["id"]
    print(f"2. Injecting test task to Agent {agent_id}...")
    
    inject_resp = requests.post(f"{BASE_URL}/agents/{agent_id}/run", json={"prompt": "list the current directory on your node please"}, headers=HEADERS)
    if not inject_resp.ok:
        print(f"Inject failed: {inject_resp.text}")
        sys.exit(1)
        
    print("3. Polling for evaluation completion...")
    start_time = time.time()
    
    last_status = ""
    last_eval_status = ""
    
    while time.time() - start_time < 120:
        a_resp = requests.get(f"{BASE_URL}/agents", headers=HEADERS)
        if not a_resp.ok: continue
        
        alist = a_resp.json()
        me = next((a for a in alist if a["id"] == agent_id), None)
        if not me: continue
        
        curr_status = me.get("status", "unknown")
        curr_eval = me.get("evaluation_status", "")
        
        if curr_status != last_status or curr_eval != last_eval_status:
            print(f"[{int(time.time() - start_time)}s] Status: {curr_status} | Eval: {curr_eval}")
            last_status = curr_status
            last_eval_status = curr_eval
            
        if curr_status in ("idle", "error_suspended") and time.time() - start_time > 5:
            # Check if eval was passed
            print("\nFinal State Reached.")
            print(f"Successful Runs: {me.get('successful_runs', 0)}")
            print(f"Latest Score: {me.get('latest_quality_score', 0)}")
            
            # Print last message
            if me.get("session_id"):
                m_resp = requests.get(f"{BASE_URL}/sessions/{me['session_id']}/messages", headers=HEADERS)
                if m_resp.ok:
                    msgs = m_resp.json().get("messages", [])
                    if msgs:
                        print(f"Last Assistant Msg: {msgs[-1]['content'][:200]}...")
            break
            
        time.sleep(2)
        
if __name__ == "__main__":
    check()