"""
Minimal voice agent worker: connects to LiveKit as agent, joins room on job assignment,
subscribes to user audio -> STT (Deepgram) -> LLM (placeholder) -> TTS (ElevenLabs) -> publish.
Posts turns to Django backend.
"""
import asyncio
import sys
from pathlib import Path
from dotenv import load_dotenv

# Load .env from worker directory so keys are found when run from repo root or worker/
load_dotenv(Path(__file__).resolve().parent / ".env")

# Run from worker/ dir: "worker" = inner folder worker/worker/. Run from repo root: "worker" = outer worker/.
_worker_dir = Path(__file__).resolve().parent
_repo_root = _worker_dir.parent
# Prefer repo root so "worker.worker.agent" resolves (worker = outer, worker.worker = inner)
if str(_repo_root) not in sys.path:
    sys.path.insert(0, str(_repo_root))

async def main():
    try:
        from worker.worker.agent import run_worker
    except ModuleNotFoundError:
        # Run from worker/ with no outer package: import from inner worker
        import importlib.util
        spec = importlib.util.spec_from_file_location("agent", _worker_dir / "worker" / "agent.py")
        agent = importlib.util.module_from_spec(spec)
        spec.loader.exec_module(agent)
        await agent.run_worker()
        return
    await run_worker()


if __name__ == "__main__":
    asyncio.run(main())
