@echo off
setlocal
REM Agent Runtime Server one-click deploy script (Windows)
echo ========================================
echo Agent Runtime Server Deploy Script
echo ========================================
echo.
REM 1) Check uv
echo [1/5] Checking environment...
uv --version >nul 2>&1
if %errorlevel% neq 0 (
echo [ERROR] uv is not installed. Please run: pip install uv
exit /b 1
)
echo [OK] uv is installed
uv --version
REM Move to script directory
cd /d "%~dp0"
echo Working directory: %CD%
REM Find an available port starting from 8100 (do not kill existing process)
echo.
echo [pre] Finding available port from :8100...
set "SERVER_PORT="
for /f %%p in ('powershell -NoProfile -Command "$start=8100; for($i=$start; $i -lt $start+200; $i++){ $used=Get-NetTCPConnection -LocalPort $i -State Listen -ErrorAction SilentlyContinue; if(-not $used){ Write-Output $i; exit 0 } }; exit 1"') do set "SERVER_PORT=%%p"
if "%SERVER_PORT%"=="" (
echo [ERROR] No available port found in range 8100-8299
exit /b 1
)
echo [OK] Selected port: %SERVER_PORT%
REM 2) Create venv
echo.
echo [2/5] Creating virtual environment...
if not exist ".venv" (
uv venv
echo [OK] Virtual environment created
) else (
if exist ".venv\pyvenv.cfg" (
echo [OK] Virtual environment already exists
) else (
echo [WARN] .venv is incomplete ^(missing pyvenv.cfg^), recreating...
if exist ".venv" rmdir /s /q ".venv"
uv venv
if errorlevel 1 (
echo [ERROR] Failed to recreate virtual environment
echo [HINT] Close running servers/terminals that may lock .venv, then retry
exit /b 1
)
echo [OK] Virtual environment recreated
)
)
REM 3) Sync dependencies if pyproject exists
echo.
echo [3/5] Sync dependencies...
uv sync >nul 2>&1
if %errorlevel% neq 0 (
echo [WARN] pyproject.toml not found, skip uv sync
) else (
echo [OK] Dependencies synced
)
REM 4) Install management SDK
echo.
echo [4/5] Installing management SDK...
uv pip install -e ..\management --force-reinstall >nul 2>&1
if errorlevel 1 (
echo [ERROR] Failed to install management SDK
echo [HINT] Ensure no old server process is using .venv files
exit /b 1
)
echo [OK] management SDK installed
REM 5) Install foundation SDK
echo.
echo [5/5] Installing foundation SDK...
uv pip install -e ..\foundation --force-reinstall >nul 2>&1
if errorlevel 1 (
echo [ERROR] Failed to install foundation SDK
echo [HINT] Ensure no old server process is using .venv files
exit /b 1
)
echo [OK] foundation SDK installed
REM Start server
echo.
echo Starting server...
echo.
echo ========================================
echo API: http://localhost:%SERVER_PORT%
echo Docs: http://localhost:%SERVER_PORT%/docs
echo ========================================
echo.
uv run -m uvicorn openjiuwen_runtime.server.main:app --host 0.0.0.0 --port %SERVER_PORT%