import asyncio
import json
from kl_mcp_client.asyncio.tools import MCPTools

async def main():
    # 1. Khởi tạo và Kết nối Server (Sử dụng bản Async)
    tools = MCPTools()
    tools.connect_mcp("http://localhost:8080")
    print("🚀 Đã lập kết nối MCP (Chế độ Asyncio)")

    # 2. Tạo phiên hoạt động mới
    resp = await tools.create_session("ws://localhost:9222")
    sid = resp["sessionId"]
    print(f"📦 Khởi tạo phiên: {sid}")

    # 3. Điều hướng bất đồng bộ (Await)
    await tools.open_page(sid, "https://news.ycombinator.com")
    print("🌐 Đang truy cập Hacker News...")

    # 4. Tìm phần tử và nhấp chuột bằng AI (Await)
    print("🔍 AI đang tìm nút 'newest' và chuẩn bị nhấp...")
    await tools.click_by_prompt(sid, "nhấp vào liên kết newest")

    # 5. Đợi trang mới tải xong
    await tools.wait_for_selector(sid, ".athing")
    print("⏳ Trang Newest đã sẵn sàng")

    # 6. Trích xuất dữ liệu thông minh (Smart Extraction)
    print("📊 AI đang trích xuất 5 tin tức mới nhất...")
    extraction_prompt = "lấy tiêu đề bài viết và liên kết của 5 tin tức đầu tiên"
    data_json = await tools.extract_structured(sid, extraction_prompt)

    # 7. Hiển thị dữ liệu JSON có cấu trúc
    print("\n📦 Dữ liệu trích xuất thông minh từ AI (Async):")
    print(json.dumps(data_json, indent=4, ensure_ascii=False))

    # 8. Giải phóng tài nguyên bất đồng bộ
    await tools.close_session(sid)
    print("\n✅ Tác vụ Async hoàn tất")

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