@echo off TITLE SuperAI Forecast Terminal COLOR 0B chcp 65001 >nul 2>&1 echo. echo SUPERAI FORECAST TERMINAL - STARTUP echo Powered by Kronos + TimesFM + Chronos-2 echo ==================================================== echo. :: Set explicit venv python path (avoids conflict with global Python 3.13) set "PYEXE=%~dp0venv\Scripts\python.exe" set "PROJECT_ROOT=%~dp0" set "TIMESFM_CHECK_SCRIPT=%PROJECT_ROOT%scripts\check_timesfm_env.py" set "RUN_SETUP=%AIFORECAST_RUN_SETUP%" if /I "%~1"=="--setup" set "RUN_SETUP=1" if /I "%~1"=="setup" set "RUN_SETUP=1" :: [1/2] Check virtual environment echo [1/2] Checking virtual environment... if not exist "%PYEXE%" ( echo [ERROR] venv not found. Run: python -m venv venv pause exit /b 1 ) echo [OK] venv found. set "TIMESFM_CHECK_EXIT=0" if exist "%TIMESFM_CHECK_SCRIPT%" ( "%PYEXE%" "%TIMESFM_CHECK_SCRIPT%" --project-root "%PROJECT_ROOT%" --quiet-ready set "TIMESFM_CHECK_EXIT=%ERRORLEVEL%" ) else ( echo [WARN] TimesFM check script not found: "%TIMESFM_CHECK_SCRIPT%" "%PYEXE%" -c "import timesfm" >nul 2>&1 set "TIMESFM_CHECK_EXIT=%ERRORLEVEL%" ) if "%RUN_SETUP%"=="1" ( echo [INFO] Setup mode enabled. Running one-time dependency preparation... if not "%TIMESFM_CHECK_EXIT%"=="0" ( if "%TIMESFM_CHECK_EXIT%"=="3" ( echo [WARN] Broken TimesFM editable install detected. Reinstalling from current repo... ) else ( echo [WARN] TimesFM is not importable in the launcher venv. Reinstalling... ) "%PYEXE%" -m pip uninstall -y timesfm >nul 2>&1 if exist "%~dp0libs\timesfm\pyproject.toml" ( echo [INFO] Installing from libs\timesfm... "%PYEXE%" -m pip install -e "%~dp0libs\timesfm[torch]" -q ) else ( echo [INFO] Cloning TimesFM from GitHub... git clone --depth=1 https://github.com/google-research/timesfm.git "%~dp0libs\timesfm" if %ERRORLEVEL% neq 0 ( echo [ERROR] git clone failed. Check internet connection. pause exit /b 1 ) "%PYEXE%" -m pip install -e "%~dp0libs\timesfm[torch]" -q ) if %ERRORLEVEL% neq 0 ( echo [ERROR] TimesFM install failed. pause exit /b 1 ) "%PYEXE%" "%TIMESFM_CHECK_SCRIPT%" --project-root "%PROJECT_ROOT%" if %ERRORLEVEL% neq 0 ( echo [ERROR] TimesFM repair did not fix the current venv. pause exit /b 1 ) echo [OK] TimesFM repaired for the current repo path. ) else ( echo [OK] TimesFM is ready. ) if exist "%~dp0libs\chronos-forecasting\src\chronos\__init__.py" ( echo [OK] Chronos-2 repository is ready. ) else ( echo [INFO] Chronos-2 repository not found. Cloning... git clone --depth=1 https://github.com/amazon-science/chronos-forecasting "%~dp0libs\chronos-forecasting" if %ERRORLEVEL% neq 0 ( echo [WARN] Chronos-2 clone failed. The app will continue, but Chronos-2 may be unavailable. ) else ( echo [OK] Chronos-2 repository is ready. ) ) if exist "%~dp0scripts\patch_timesfm.py" ( echo [INFO] Applying one-time compatibility patch... "%PYEXE%" "%~dp0scripts\patch_timesfm.py" >nul 2>&1 echo [OK] Patch applied. ) else ( echo [WARN] Patch script not found, skipping. ) ) else ( echo [INFO] Skipping heavy dependency checks for fast startup. echo [INFO] Run "run.bat --setup" after dependency changes or fresh clone. if not "%TIMESFM_CHECK_EXIT%"=="0" ( echo [WARN] TimesFM is not ready in this venv. echo [WARN] Repair command: run.bat --setup ) ) :: [2/2] Launch server echo [2/2] Launching server... echo. echo [INFO] Browser opens automatically when the server is ready. echo [INFO] Check launcher log for the exact local address. echo [INFO] Press CTRL+C to stop. echo. "%PYEXE%" -m backend.launcher if %ERRORLEVEL% neq 0 ( echo. echo [ERROR] Server exited with error. See log above. pause )