#!/usr/bin/env python3
"""
Check if the worker is properly registered with LiveKit Cloud
"""

import asyncio
import os
from dotenv import load_dotenv
from livekit import api

# Load environment variables
load_dotenv('/var/www/html/livekit_frontend/BackEnd/agent-starter-python/.env.local')

LIVEKIT_URL = os.getenv('LIVEKIT_URL')
API_KEY = os.getenv('LIVEKIT_API_KEY')
API_SECRET = os.getenv('LIVEKIT_API_SECRET')

async def check_workers():
    print("🔍 Checking LiveKit Workers\n")
    
    # Create API client
    lk_api = api.LiveKitAPI(
        LIVEKIT_URL,
        API_KEY,
        API_SECRET,
    )
    
    try:
        # List active rooms
        print("Active Rooms:")
        from livekit.protocol.room import ListRoomsRequest
        rooms = await lk_api.room.list_rooms(ListRoomsRequest())
        if not rooms.rooms:
            print("  No active rooms")
        for room in rooms.rooms:
            print(f"  - {room.name} ({room.num_participants} participants)")
        print()
        
        # List participants in each room
        for room in rooms.rooms:
            from livekit.protocol.room import ListParticipantsRequest
            participants = await lk_api.room.list_participants(ListParticipantsRequest(room=room.name))
            print(f"Participants in {room.name}:")
            for p in participants.participants:
                print(f"  - {p.identity} (kind: {p.kind})")
        
        print("\n✓ Successfully queried LiveKit API")
        print("\nNote: Worker registration is not visible via the API.")
        print("Workers register directly with LiveKit and wait for job dispatch.")
        print("\nIf the agent is not joining:")
        print("1. Check LiveKit Cloud dashboard for agent dispatch settings")
        print("2. Verify agent dispatch is enabled for your project")
        print("3. Check that the agent name 'default' is configured")
        
    except Exception as e:
        print(f"✗ Error: {e}")
        import traceback
        traceback.print_exc()
    finally:
        await lk_api.aclose()

if __name__ == "__main__":
    asyncio.run(check_workers())
