Parse config.yaml into typed AppConfig dataclass

- ServerConfig, VideoConfig, ModelConfig, DeadBugConfig,
  AudioConfig, LoggingConfig as nested dataclasses
- Consumers use config.server.host, config.model.resolved_path etc.
- env var overrides preserved via _apply_env_overrides()
This commit is contained in:
2026-06-10 10:23:51 +08:00
parent c8fd057129
commit f9384f7bc1
7 changed files with 116 additions and 109 deletions
+8 -7
View File
@@ -1,10 +1,5 @@
from __future__ import annotations
import os
os.environ["MEDIAPIPE_DISABLE_LOGGING"] = "1"
os.environ["GLOG_minloglevel"] = "3"
import asyncio
from loguru import logger
@@ -16,8 +11,14 @@ from app.signaling.websocket_server import main as serve
def main():
startup()
logger.info("Starting server...")
asyncio.run(serve())
try:
asyncio.run(serve())
except (KeyboardInterrupt, SystemExit):
logger.info("Server stopped by user")
except Exception as e:
logger.error(f"Server error: {e}")
raise
if __name__ == "__main__":
main()
main()