import os import time import threading import gradio as gr from groq import Groq from playwright.sync_api import sync_playwright # Initialize Groq client = Groq(api_key=os.environ.get("GROQ_API_KEY")) # Shared state browser_instance = None context = None page = None is_logged_in = False logs = ["Welcome! Please wait for the browser to launch to log in manually."] def launch_browser(): global browser_instance, context, page with sync_playwright() as p: # Launch browser with GUI (headless=False) so you can see it browser_instance = p.chromium.launch(headless=False, args=["--start-maximized"]) context = browser_instance.new_context(no_viewport=True) page = context.new_page() page.goto("https://www.instagram.com/direct/inbox/") logs.append("Browser opened. Please login to Instagram manually in the browser window.") # Keep the browser thread alive while True: time.sleep(1) def start_ai_agent(): global is_logged_in is_logged_in = True logs.append("Handover successful! AI Agent starting in 5 seconds...") # Trigger the agent logic (use the same logic as previous loops) # ... insert your run_agent_loop logic here ... return "Agent is now in control." # UI Layout with gr.Blocks() as demo: gr.Markdown("# 🔑 Manual Login & Handover") status = gr.Textbox(label="Status") login_btn = gr.Button("Launch Browser for Login") handover_btn = gr.Button("Handover to AI Agent", variant="primary") login_btn.click(lambda: threading.Thread(target=launch_browser, daemon=True).start()) handover_btn.click(start_ai_agent, outputs=status) demo.launch()