voiceCal / debug_app.py
Peter Michael Gits
feat: Deploy complete VoiceCal application with all files v0.5.6
5e8a657
#!/usr/bin/env python3
"""
Debug version of ChatCal to identify the crash cause
"""
import gradio as gr
import sys
import traceback
import os
import json
from version import get_version_info
def test_imports():
"""Test all imports to identify which one is failing"""
results = []
# Test basic imports
try:
import gradio
results.append("βœ… gradio imported successfully")
except Exception as e:
results.append(f"❌ gradio import failed: {e}")
try:
import pydantic
results.append(f"βœ… pydantic {pydantic.VERSION} imported successfully")
except Exception as e:
results.append(f"❌ pydantic import failed: {e}")
try:
from llama_index.core.llms import ChatMessage, MessageRole
results.append("βœ… llama_index.core.llms imported successfully")
except Exception as e:
results.append(f"❌ llama_index.core.llms import failed: {e}")
try:
from core.config import config
results.append("βœ… core.config imported successfully")
except Exception as e:
results.append(f"❌ core.config import failed: {e}")
try:
from core.chat_agent import ChatCalAgent
results.append("βœ… core.chat_agent imported successfully")
except Exception as e:
results.append(f"❌ core.chat_agent import failed: {e}")
# Test environment variables
env_vars = [
"GROQ_API_KEY", "ANTHROPIC_API_KEY", "SECRET_KEY",
"GOOGLE_CLIENT_ID", "GOOGLE_CLIENT_SECRET"
]
for var in env_vars:
if os.getenv(var):
results.append(f"βœ… {var} is set")
else:
results.append(f"⚠️ {var} is not set")
return "\n".join(results)
def simple_interface():
"""Simple interface to test basic functionality"""
return "ChatCal Debug App is working! Check import results above."
try:
# Run import tests
import_results = test_imports()
print("=== IMPORT TEST RESULTS ===")
print(import_results)
# Add version endpoint function
def version_endpoint():
"""Return version information as JSON"""
return json.dumps(get_version_info(), indent=2)
# Create simple Gradio interface
with gr.Blocks(title="ChatCal Debug") as demo:
gr.Markdown("# πŸ”§ ChatCal Debug Interface")
gr.Markdown("## Version Information:")
version_btn = gr.Button("Get Version Info")
version_output = gr.Textbox(label="Version", interactive=False)
version_btn.click(version_endpoint, outputs=version_output)
gr.Markdown("## Import Test Results:")
gr.Textbox(value=import_results, lines=15, label="Import Status", interactive=False)
gr.Markdown("## Simple Test:")
test_btn = gr.Button("Test Basic Functionality")
output = gr.Textbox(label="Output")
test_btn.click(simple_interface, outputs=output)
# Add custom API route for version endpoint
from fastapi import FastAPI
from fastapi.responses import JSONResponse
# Create FastAPI app
fastapi_app = FastAPI()
@fastapi_app.get("/version")
async def get_version():
"""RESTful API endpoint for version information"""
return JSONResponse(content=get_version_info())
# Mount FastAPI to Gradio
demo.mount_to(fastapi_app)
# Launch with error handling
demo.launch(
server_name="0.0.0.0",
server_port=7860,
share=True,
show_error=True
)
except Exception as e:
print(f"=== CRITICAL ERROR ===")
print(f"Error: {e}")
print(f"Traceback:")
traceback.print_exc()