"""
LifeAdmin AI - Main Gradio Application
Hackathon Project: Track 2 - MCP in Action
Updated with LifeAdmin Coach chatbot tab
"""
import gradio as gr
import asyncio
import os
from pathlib import Path
from dotenv import load_dotenv
# Load environment variables
load_dotenv()
from ui.manual_dashboard import create_manual_dashboard
from ui.voice_agent_ui import create_voice_agent_ui
from ui.lifeadmin_coach_ui import create_lifeadmin_coach_ui
from agent.agent_core import LifeAdminAgent
from utils.llm_utils import setup_llm_fallback
# Initialize directories
Path("data/uploads").mkdir(parents=True, exist_ok=True)
Path("data/outputs").mkdir(parents=True, exist_ok=True)
Path("data/chroma_db").mkdir(parents=True, exist_ok=True)
print("š¤ Initializing LifeAdmin AI Agent...")
agent = LifeAdminAgent()
print("ā Agent initialized successfully!")
# -------------------------------------------
# CUSTOM CSS
# -------------------------------------------
custom_css = """
"""
# ---------------------------------------------------------
# Create Gradio App
# ---------------------------------------------------------
def create_app():
app = gr.Blocks(
title="LifeAdmin AI - Your Autonomous Life Management Agent",
analytics_enabled=False
)
with app:
gr.HTML(custom_css)
# Header
with gr.Row():
gr.HTML("""
""")
# Tabs
with gr.Tabs():
# Manual Dashboard
with gr.Tab("š Manual Dashboard"):
gr.Markdown("### šÆ Manual Mode ā Full Control Over Tools")
create_manual_dashboard(agent)
# LifeAdmin Coach (NEW!)
with gr.Tab("š¬ LifeAdmin Coach"):
gr.Markdown("### š¤ AI Assistant ā Chat About Your Documents & Tasks")
create_lifeadmin_coach_ui(agent)
# Voice Agent
with gr.Tab("š¤ Voice Agent"):
gr.Markdown("### š¤ Voice Agent ā Speak Commands, Agent Executes")
create_voice_agent_ui(agent)
# Footer
gr.HTML("""
""")
return app
# ---------------------------------------------------------
# MAIN ENTRY POINT
# ---------------------------------------------------------
if __name__ == "__main__":
print("=" * 60)
print("š Starting LifeAdmin AI")
print("=" * 60)
print("\nāļø Setting up LLM providers...")
try:
setup_llm_fallback()
print("ā LLM providers configured!")
except Exception as e:
print("ā ļø Warning:", e)
print("\nš¤ Checking voice requirements...")
print("ā ElevenLabs API found" if os.getenv("ELEVENLABS_API_KEY") else "ā ļø Missing ElevenLabs")
print("ā Groq API found" if os.getenv("GROQ_API_KEY") else "ā ļø Missing Groq")
print("\nšØ Creating Gradio interface...")
app = create_app()
print("\nā
LifeAdmin AI is ready!")
print("š± Open: http://localhost:7860")
app.launch(
server_name="0.0.0.0",
server_port=int(os.getenv("GRADIO_SERVER_PORT", 7860)),
show_error=True
)