import argparse import sys import os project_root = os.path.dirname(os.path.abspath(__file__)) if project_root not in sys.path: sys.path.insert(0, project_root) thirdparty = os.path.join(project_root, "thirdparty") if thirdparty not in sys.path: sys.path.insert(0, thirdparty) os.environ["HF_HUB_DISABLE_SYMLINKS_WARNING"] = "1" os.environ["HF_HUB_DISABLE_PROGRESS_BARS"] = "1" os.environ["TOKENIZERS_PARALLELISM"] = "false" from defer.sugar import install as _install_defer _install_defer() parser = argparse.ArgumentParser(description="Manual Slop entry point") parser.add_argument("--headless", action="store_true", help="Run in headless mode without GUI") parser.add_argument("--web-host", default=None, help="Enable web mode and bind to this host (e.g., 0.0.0.0)") parser.add_argument("--web-port", type=int, default=8080, help="Web mode port (default: 8080)") parser.add_argument("--enable-test-hooks", action="store_true", help="Enable the HookServer on :8999 for external automation") args = parser.parse_args() if args.web_host is not None: from imgui_bundle import hello_imgui from src.api_hooks import HookServer from src.gui_2 import App app = App() if args.enable_test_hooks: hook_server = HookServer(app) hook_server.start() runner_params = hello_imgui.RunnerParams() runner_params.app_window_params.window_title = "Manual Slop (Web)" runner_params.app_window_params.borderless = True runner_params.imgui_window_params.default_imgui_window_type = hello_imgui.DefaultImGuiWindowType.provide_full_screen_docker_space runner_params.app_window_params.restore_previous_window_size = True hello_imgui.run(runner_params, lambda: app.render_frame()) elif args.headless: from src.app_controller import AppController controller = AppController(headless=True) controller.run() else: from src.gui_2 import main main()