# Voicebot Module Refactoring The voicebot/main.py functionality has been broken down into individual Python files for better organization and maintainability: ## New File Structure ### Core Modules 1. **`models.py`** - Data models and configuration - `VoicebotArgs` - Pydantic model for CLI arguments and configuration - `VoicebotMode` - Enum for client/provider modes - `Peer` - WebRTC peer representation - `JoinRequest` - Request model for joining lobbies - `MessageData` - Type alias for message payloads 2. **`webrtc_signaling.py`** - WebRTC signaling client functionality - `WebRTCSignalingClient` - Main WebRTC signaling client class - Handles peer connection management, ICE candidates, session descriptions - Registration status tracking and reconnection logic - Message processing and event handling 3. **`session_manager.py`** - Session and lobby management - `create_or_get_session()` - Session creation/retrieval - `create_or_get_lobby()` - Lobby creation/retrieval - HTTP API communication utilities 4. **`bot_orchestrator.py`** - FastAPI bot orchestration service - Bot discovery and management - FastAPI endpoints for bot operations - Provider registration with main server - Bot instance lifecycle management 5. **`client_main.py`** - Main client logic - `main_with_args()` - Core client functionality - `start_client_with_reload()` - Development mode with reload - Event handlers for peer and track management 6. **`client_app.py`** - Client FastAPI application - `create_client_app()` - Creates FastAPI app for client mode - Health check and status endpoints - Process isolation and locking 7. **`utils.py`** - Utility functions - URL conversion utilities (`http_base_url`, `ws_url`) - SSL context creation - Network information logging 8. **`main.py`** - Main orchestration and entry point - Command-line argument parsing - Mode selection (client vs provider) - Entry points for both modes ### Key Improvements - **Separation of Concerns**: Each file handles specific functionality - **Better Maintainability**: Smaller, focused modules are easier to understand and modify - **Reduced Coupling**: Dependencies between components are more explicit - **Type Safety**: Proper type hints and Pydantic models throughout - **Error Handling**: Centralized error handling and logging ### Usage The refactored code maintains the same CLI interface: ```bash # Client mode python voicebot/main.py --mode client --server-url http://localhost:8000/ai-voicebot # Provider mode python voicebot/main.py --mode provider --host 0.0.0.0 --port 8788 ``` ### Import Structure ```python from voicebot import VoicebotArgs, VoicebotMode, WebRTCSignalingClient from voicebot.models import Peer, JoinRequest from voicebot.session_manager import create_or_get_session, create_or_get_lobby from voicebot.client_main import main_with_args ``` The original `main_old.py` contains the monolithic implementation for reference.