11import asyncio
22import multiprocessing
3- import random
4- import time
5- import json
6- from typing import List , Optional , Dict , Any , Union , AsyncGenerator , Tuple , Callable , Set
73import os
8- import traceback
9- from contextlib import asynccontextmanager
10- import sys
11- import platform
124import logging
13- import logging .handlers
14- import socket
15- from asyncio import Queue , Lock , Future , Task , Event
5+ from typing import List , Optional , Dict , Any , Set
6+ from asyncio import Queue , Lock , Task , Event
167from dotenv import load_dotenv
178load_dotenv ()
18- from fastapi import FastAPI , Request , HTTPException
19- from fastapi .responses import JSONResponse , StreamingResponse , FileResponse
9+ from fastapi .responses import JSONResponse
2010from fastapi .staticfiles import StaticFiles
21- from fastapi import WebSocket , WebSocketDisconnect
22- from pydantic import BaseModel
23- from playwright .async_api import Page as AsyncPage , Browser as AsyncBrowser , Playwright as AsyncPlaywright , Error as PlaywrightAsyncError , expect as expect_async , BrowserContext as AsyncBrowserContext , Locator , TimeoutError
24- from playwright .async_api import async_playwright
25- from urllib .parse import urljoin , urlparse
26- import uuid
27- import datetime
28- import aiohttp
29- import queue
11+ from playwright .async_api import Page as AsyncPage , Browser as AsyncBrowser , Playwright as AsyncPlaywright
3012from config import *
31- from models import FunctionCall , ToolCall , MessageContentItem , Message , ChatCompletionRequest , ClientDisconnectedError , StreamToLogger , WebSocketConnectionManager , WebSocketLogHandler
32- from logger import initialize_logging , restore_streams
33- from browser import _initialize_page_logic , _close_page_logic , signal_camoufox_shutdown , _handle_model_list_response , detect_and_extract_page_error , save_error_snapshot , get_response_via_edit_button , get_response_via_copy_button , _wait_for_response_completion , _get_final_response_content , get_raw_text_content , switch_ai_studio_model , load_excluded_models , _handle_initial_model_state_and_storage , _set_model_from_page_display
34- from api import generate_sse_chunk , generate_sse_stop_chunk , generate_sse_error_chunk , use_helper_get_response , use_stream_response , clear_stream_queue , prepare_combined_prompt , validate_chat_request , _process_request_refactored , create_app , queue_worker
13+ from models import WebSocketConnectionManager
14+ from api import create_app
15+
3516STREAM_QUEUE : Optional [multiprocessing .Queue ] = None
3617STREAM_PROCESS = None
3718STREAM_PORT_ACTUAL : Optional [int ] = None
5536page_params_cache : Dict [str , Any ] = {}
5637params_cache_lock : Optional [Lock ] = None
5738logger = logging .getLogger ('AIStudioProxyServer' )
58- log_ws_manager = None
39+ log_ws_manager : Optional [ WebSocketConnectionManager ] = None
5940app = create_app ()
6041
6142STATIC_DIR = os .path .join (os .path .dirname (os .path .abspath (__file__ )), 'static' )
@@ -74,4 +55,4 @@ async def read_root():
7455 import uvicorn
7556 port = int (os .environ .get ('PORT' , 2048 ))
7657 logger .info (f"✨ Dashboard available at: http://localhost:{ port } " )
77- uvicorn .run ('server:app' , host = '0.0.0.0' , port = port , log_level = 'info' , access_log = False )
58+ uvicorn .run ('server:app' , host = '0.0.0.0' , port = port , log_level = 'info' , access_log = False )
0 commit comments