import os import sys import warnings from pathlib import Path # Add project root to path project_root = Path(__file__).parent sys.path.insert(0, str(project_root)) # Environment detection IS_HUGGINGFACE = bool( os.environ.get('SPACE_ID') or os.environ.get('GRADIO_SERVER_NAME') or os.environ.get('HF_SPACE') ) IS_DOCKER = Path('/.dockerenv').exists() or os.environ.get('DOCKER_CONTAINER') def check_dependencies(): """Check and report available dependencies.""" deps = { 'gradio': False, 'numpy': False, 'pandas': False, 'psychopy': False, 'plotly': False, 'scipy': False } for dep in deps: try: __import__(dep) deps[dep] = True except ImportError: pass return deps def main(): """Main entry point.""" print("=" * 60) print("MULTI-AGENT PSYCHOPHYSICS SYSTEM") print("=" * 60) deps = check_dependencies() print(f"\nEnvironment: {'Hugging Face' if IS_HUGGINGFACE else 'Local'}") print(f"Docker: {'Yes' if IS_DOCKER else 'No'}") print(f"\nDependencies:") for dep, available in deps.items(): status = "āœ“" if available else "āœ—" print(f" {status} {dep}") # Launch appropriate interface if deps['gradio']: print("\nšŸš€ Launching Gradio interface...") from interface.gradio_app import create_app app = create_app() # Hugging Face specific settings server_name = os.environ.get('GRADIO_SERVER_NAME', '0.0.0.0') server_port = int(os.environ.get('GRADIO_SERVER_PORT', '7860')) app.launch( server_name=server_name, server_port=server_port, share=False, show_error=True ) else: print("\nāš ļø Gradio not available. Running CLI demo...") from agents.base import MultiAgentSystem from core.data_structures import ExperimentConfig config = ExperimentConfig( experiment_name="cli_demo", subject_id="test", n_trials=20, simulation_mode=True ) system = MultiAgentSystem() system.initialize(config) system.start_all() # Wait for completion import time while system.running: time.sleep(0.5) status = system.get_status() print(f"\rTrials: {status.get('trial_count', 0)} | " f"Agents: {sum(1 for v in status.get('agents', {}).values() if v == 'active')}/6", end='') print("\n\nExperiment complete!") system.stop_all() if __name__ == "__main__": main()