#!/usr/bin/env python3 """ DynastAI Quick Test Script This script provides a simple way to test the DynastAI environment without requiring the full Atropos setup. It will start a local server and open the web UI in your default browser. """ import os import sys import subprocess import webbrowser import time import argparse # Ensure the script works from any directory SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) os.chdir(SCRIPT_DIR) # Add the parent directory to sys.path to allow importing atroposlib if available parent_dir = os.path.abspath(os.path.join(SCRIPT_DIR, '..', '..')) if parent_dir not in sys.path: sys.path.insert(0, parent_dir) def main(): # Parse arguments parser = argparse.ArgumentParser(description="Run DynastAI test environment") parser.add_argument("--no-browser", action="store_true", help="Don't open browser automatically") parser.add_argument("--api-port", type=int, default=9001, help="API port (default: 9001)") parser.add_argument("--web-port", type=int, default=3000, help="Web UI port (default: 3000)") args = parser.parse_args() # Install dependencies if needed try: import fastapi import uvicorn import pydantic print("Dependencies already installed.") except ImportError: print("Installing dependencies...") try: # First try using the setup script if os.path.exists(os.path.join(SCRIPT_DIR, "setup.py")): print("Running setup script...") subprocess.run([sys.executable, os.path.join(SCRIPT_DIR, "setup.py")]) else: # Fall back to direct installation subprocess.run([sys.executable, "-m", "pip", "install", "--upgrade", "pip"]) subprocess.run([sys.executable, "-m", "pip", "install", "-r", "requirements.txt"]) except Exception as e: print(f"Warning: Error installing dependencies: {e}") print("Please run 'python setup.py' manually before continuing.") # Create data directory if it doesn't exist os.makedirs(os.path.join(SCRIPT_DIR, "src/data"), exist_ok=True) # Start the local server print(f"Starting DynastAI server on http://localhost:{args.web_port}") server_process = subprocess.Popen( [sys.executable, os.path.join(SCRIPT_DIR, "dynastai_local_server.py"), "--api-port", str(args.api_port), "--web-port", str(args.web_port)] ) try: # Give the server time to start time.sleep(2) # Open the browser if requested if not args.no_browser: print("Opening web browser...") webbrowser.open(f"http://localhost:{args.web_port}") print("Press Ctrl+C to stop the server") server_process.wait() except KeyboardInterrupt: print("\nShutting down server...") server_process.terminate() server_process.wait() print("Server stopped.") if __name__ == "__main__": main()