mirror of
https://github.com/vegu-ai/talemate.git
synced 2025-12-16 03:37:51 +01:00
* some prompt cleanup * prompt tweaks * prompt tweaks * prompt tweaks * set 0.31.0 * relock * rag queries add brief analysis * brief analysis before building rag questions * rag improvements * prompt tweaks * address circular import issues * set 0.30.1 * docs * numpy to 2 * docs * prompt tweaks * prompt tweak * some template cleanup * prompt viewer increase height * fix codemirror highlighting not working * adjust details height * update default * change to log debug * allow response to scale to max height * template cleanup * prompt tweaks * first progress for installing modules to scene * package install logic * package install polish * package install polish * package install polish and fixes * refactor initial world state update and expose setting for it * add `num` property to ModuleProperty to control order of widgets * dynamic storyline package info * fix issue where deactivating player character would cause inconsistencies in the creative tools menui * cruft * add openrouter support * ollama support * refactor how model choices are loaded, so that can be done per client instance as opposed to just per client type * set num_ctx * remove debug messages * ollama tweaks * toggle for whether or not default character gets added to blank talemate scenes * narrator prompt tweaks and template cleanup * cleanup * prompt tweaks and template cleanup * prompt tweaks * fix instructor embeddings * add additional error handling to prevent broken world state templates from breaking the world editor side menu * fix openrouter breaking startup if not configured * remove debug message * promp tweaks * fix example dialogue generation no longer working * prompt tweaks and better showing of dialogue examples in conversation instructions * prompt tweak * add initial startup message * prompt tweaks * fix asset error * move complex acting instructions into the task block * fix content input socket on DynamicInstructions node * log.error with traceback over log.exception since that has a tendency to explode and hang everything * fix usse with number nodes where they would try to execute even if the incoming wire wasnt active * fix issue with editor revision events missing template_vars * DynamicInstruction node should only run if both header and content can resolve * removed remaining references to 90s adventure game writing style * prompt tweaks * support embeddings via client apis (koboldcpp) * fix label on client-api embeddings * fix issue where adding / removing an embedding preset would not be reflected immediately in the memory agent config * remove debug output * prompt tweaks * prompt tweaks * autocomplete passes message object * validate group names to be filename valid * embedded winsows env installs and up to poetry2 * version config * get-pip * relock * pin runpod * no longer needed * remove rapidfuzz dependency * nodejs directly into embedded_node without a versioned middleman dir - also remove defunct local-tts install script * fix update script * update script error handling * update.bat error handling * adjust wording * support loading jinja2 templates node modules in templates/modules * update google model list * client t/s and business indicator - also switch all clients to async streaming * formatting * support coercion for anthropic / google switch to the new google genai sdk upgrade websockets * more coercion fixes * gracefully handle keyboard interrupt * EmitSystemMessage node * allow visual prompt generation without image generation * relock * chromadb to v1 * fix error handling * fix issue where adding client model list would be empty * supress pip install warnings * allow overriding of base urls * remove key from log * add fade effect * tweak request info ux * further clarification of endpoint override api key * world state manager: fix issue that caused max changes setting to disappear from character progress config * fix issue with google safety settings off causing generation failures * update to base url should always reset the client * getattr * support v3 chara card version and attempt to future proof * client based embeddings improvements * more fixes for client based embeddings * use client icon * history management tools progress * history memory ids fixed and added validation * regenerate summary fixes * more history regeneration fixes * fix layered history gen and prompt twweaks * allow regeneration of individual layered history entries * return list of LayeredArchiveEntry * reorg for less code dupelication * new scene message renderer based on marked * add inspect functionality to history viewer * message if no history entries yet * allow adding of history entries manually * allow deletion of history * summarization unslop improvements * fix make charcter real action from worldstate listing * allow overriding length in all context generation isntructioon dialogs * fix issue where extract_list could fail with an unhandled error if the llm response didnt contain a list * update whats'new * fix issues with the new history management tools * fix check * Switch dependency handling to UV (#202) * Migrate from Poetry to uv package manager (#200) * migrate from poetry to uv package manager * Update all installation and startup scripts for uv migration * Fix pyproject.toml for uv - allow direct references for hatchling * Fix PR feedback: Restore removed functionality - Restored embedded Python/Node.js functionality in install.bat and update.bat - Restored environment variable exposure in docker-compose.yml (CUDA_AVAILABLE, port configs) - Fixed GitHub Actions branches (main, prep-* instead of main, dev) - Restored fail-fast: false and cache configuration in test.yml These changes preserve all the functionality that should not be removed during the migration from Poetry to uv. --------- Co-authored-by: Ztripez von Matérn <ztripez@bobby.se> * remove uv.lock from .gitignore * add lock file * fix install issues * warn if unable to remove legacy poetry virt env dir * uv needs to be explicitly installed into the .venv so its available * third time's the charm? * fix windows install scripts * add .venv guard to update.bat * call :die * fix docker venv install * node 21 * fix cuda install * start.bat calls install if needed * sync start-local to other startup scripts * no need to activate venv --------- Co-authored-by: Ztripez <reg@otherland.nu> Co-authored-by: Ztripez von Matérn <ztripez@bobby.se> * ignore hfhub symlink warnings * add openrouter and ollama mentions * update windows install documentation * docs * docs * fix issue with memory agent fingerprint * removing a client that supports embeddings will also remove any embedding functions it created * on invalid embeddings reset to default * docs * typo * formatting * docs * docs * install package * adjust topic * add more obvious way to exit creative mode * when importing character cards immediately persist a usable save after the restoration save --------- Co-authored-by: Ztripez <reg@otherland.nu> Co-authored-by: Ztripez von Matérn <ztripez@bobby.se>
228 lines
7.7 KiB
Batchfile
228 lines
7.7 KiB
Batchfile
@echo off
|
|
|
|
REM ===============================
|
|
REM Talemate project installer
|
|
REM ===============================
|
|
REM 1. Detect CPU architecture and pick the best-fitting embedded Python build.
|
|
REM 2. Download & extract that build into .\embedded_python\
|
|
REM 3. Bootstrap pip via install-utils\get-pip.py
|
|
REM 4. Install virtualenv and create .\talemate_env\ using the embedded Python.
|
|
REM 5. Activate the venv and proceed with Poetry + frontend installation.
|
|
REM ---------------------------------------------------------------
|
|
|
|
SETLOCAL ENABLEDELAYEDEXPANSION
|
|
|
|
REM Define fatal-error handler
|
|
REM Usage: CALL :die "Message explaining what failed"
|
|
goto :after_die
|
|
|
|
:die
|
|
echo.
|
|
echo ============================================================
|
|
echo !!! INSTALL FAILED !!!
|
|
echo %*
|
|
echo ============================================================
|
|
pause
|
|
exit 1
|
|
|
|
:after_die
|
|
|
|
REM ---------[ Check Prerequisites ]---------
|
|
ECHO Checking prerequisites...
|
|
where tar >nul 2>&1 || CALL :die "tar command not found. Please ensure Windows 10 version 1803+ or install tar manually."
|
|
where curl >nul 2>&1
|
|
IF %ERRORLEVEL% NEQ 0 (
|
|
where bitsadmin >nul 2>&1 || CALL :die "Neither curl nor bitsadmin found. Cannot download files."
|
|
)
|
|
|
|
REM ---------[ Remove legacy Poetry venv if present ]---------
|
|
IF EXIST "talemate_env" (
|
|
ECHO Detected legacy Poetry virtual environment 'talemate_env'. Removing...
|
|
RD /S /Q "talemate_env"
|
|
IF ERRORLEVEL 1 (
|
|
ECHO [WARNING] Failed to fully remove legacy 'talemate_env' directory. Continuing installation.
|
|
)
|
|
)
|
|
|
|
REM ---------[ Clean reinstall check ]---------
|
|
SET "NEED_CLEAN=0"
|
|
IF EXIST ".venv" SET "NEED_CLEAN=1"
|
|
IF EXIST "embedded_python" SET "NEED_CLEAN=1"
|
|
IF EXIST "embedded_node" SET "NEED_CLEAN=1"
|
|
|
|
IF "%NEED_CLEAN%"=="1" (
|
|
ECHO.
|
|
ECHO Detected existing Talemate environments.
|
|
REM Prompt user (empty input defaults to Y)
|
|
SET "ANSWER=Y"
|
|
SET /P "ANSWER=Perform a clean reinstall of the python and node.js environments? [Y/n] "
|
|
IF /I "!ANSWER!"=="N" (
|
|
ECHO Installation aborted by user.
|
|
GOTO :EOF
|
|
)
|
|
ECHO Removing previous installation...
|
|
IF EXIST ".venv" RD /S /Q ".venv"
|
|
IF EXIST "embedded_python" RD /S /Q "embedded_python"
|
|
IF EXIST "embedded_node" RD /S /Q "embedded_node"
|
|
ECHO Cleanup complete.
|
|
)
|
|
|
|
REM ---------[ Version configuration ]---------
|
|
SET "PYTHON_VERSION=3.11.9"
|
|
SET "NODE_VERSION=22.16.0"
|
|
|
|
REM ---------[ Detect architecture & choose download URL ]---------
|
|
REM Prefer PROCESSOR_ARCHITEW6432 when the script is run from a 32-bit shell on 64-bit Windows
|
|
IF DEFINED PROCESSOR_ARCHITEW6432 (
|
|
SET "ARCH=%PROCESSOR_ARCHITEW6432%"
|
|
) ELSE (
|
|
SET "ARCH=%PROCESSOR_ARCHITECTURE%"
|
|
)
|
|
|
|
REM Map architecture to download URL
|
|
IF /I "%ARCH%"=="AMD64" (
|
|
SET "PY_URL=https://www.python.org/ftp/python/%PYTHON_VERSION%/python-%PYTHON_VERSION%-embed-amd64.zip"
|
|
SET "NODE_URL=https://nodejs.org/dist/v%NODE_VERSION%/node-v%NODE_VERSION%-win-x64.zip"
|
|
) ELSE IF /I "%ARCH%"=="IA64" (
|
|
REM Itanium systems are rare, but AMD64 build works with WoW64 layer
|
|
SET "PY_URL=https://www.python.org/ftp/python/%PYTHON_VERSION%/python-%PYTHON_VERSION%-embed-amd64.zip"
|
|
SET "NODE_URL=https://nodejs.org/dist/v%NODE_VERSION%/node-v%NODE_VERSION%-win-x64.zip"
|
|
) ELSE IF /I "%ARCH%"=="ARM64" (
|
|
SET "PY_URL=https://www.python.org/ftp/python/%PYTHON_VERSION%/python-%PYTHON_VERSION%-embed-arm64.zip"
|
|
SET "NODE_URL=https://nodejs.org/dist/v%NODE_VERSION%/node-v%NODE_VERSION%-win-arm64.zip"
|
|
) ELSE (
|
|
REM Fallback to 64-bit build for x86 / unknown architectures
|
|
SET "PY_URL=https://www.python.org/ftp/python/%PYTHON_VERSION%/python-%PYTHON_VERSION%-embed-amd64.zip"
|
|
SET "NODE_URL=https://nodejs.org/dist/v%NODE_VERSION%/node-v%NODE_VERSION%-win-x86.zip"
|
|
)
|
|
ECHO Detected architecture: %ARCH%
|
|
ECHO Downloading embedded Python from: %PY_URL%
|
|
|
|
REM ---------[ Download ]---------
|
|
SET "PY_ZIP=python_embed.zip"
|
|
|
|
where curl >nul 2>&1
|
|
IF %ERRORLEVEL% EQU 0 (
|
|
ECHO Using curl to download Python...
|
|
curl -L -# -o "%PY_ZIP%" "%PY_URL%" || CALL :die "Failed to download Python embed package with curl."
|
|
) ELSE (
|
|
ECHO curl not found, falling back to bitsadmin...
|
|
bitsadmin /transfer "DownloadPython" /download /priority normal "%PY_URL%" "%CD%\%PY_ZIP%" || CALL :die "Failed to download Python embed package (curl & bitsadmin unavailable)."
|
|
)
|
|
|
|
REM ---------[ Extract ]---------
|
|
SET "PY_DIR=embedded_python"
|
|
IF EXIST "%PY_DIR%" RD /S /Q "%PY_DIR%"
|
|
mkdir "%PY_DIR%" || CALL :die "Could not create directory %PY_DIR%."
|
|
|
|
where tar >nul 2>&1
|
|
IF %ERRORLEVEL% EQU 0 (
|
|
ECHO Extracting with tar...
|
|
tar -xf "%PY_ZIP%" -C "%PY_DIR%" || CALL :die "Failed to extract Python embed package with tar."
|
|
) ELSE (
|
|
CALL :die "tar utility not found (required to unpack zip without PowerShell)."
|
|
)
|
|
|
|
DEL /F /Q "%PY_ZIP%"
|
|
|
|
SET "PYTHON=%PY_DIR%\python.exe"
|
|
ECHO Using embedded Python at %PYTHON%
|
|
|
|
REM ---------[ Enable site-packages in embedded Python ]---------
|
|
FOR %%f IN ("%PY_DIR%\python*._pth") DO (
|
|
ECHO Adding 'import site' to %%~nxf ...
|
|
echo import site>>"%%~ff"
|
|
)
|
|
|
|
REM ---------[ Ensure pip ]---------
|
|
ECHO Installing pip...
|
|
"%PYTHON%" install-utils\get-pip.py || (
|
|
CALL :die "pip installation failed."
|
|
)
|
|
|
|
REM Upgrade pip to latest
|
|
"%PYTHON%" -m pip install --no-warn-script-location --upgrade pip || CALL :die "Failed to upgrade pip in embedded Python."
|
|
|
|
REM ---------[ Install uv ]---------
|
|
ECHO Installing uv...
|
|
"%PYTHON%" -m pip install uv || (
|
|
CALL :die "uv installation failed."
|
|
)
|
|
|
|
REM ---------[ Create virtual environment with uv ]---------
|
|
ECHO Creating virtual environment with uv...
|
|
"%PYTHON%" -m uv venv || (
|
|
CALL :die "Virtual environment creation failed."
|
|
)
|
|
|
|
REM ---------[ Install dependencies using embedded Python's uv ]---------
|
|
ECHO Installing backend dependencies with uv...
|
|
"%PYTHON%" -m uv sync || CALL :die "Failed to install backend dependencies with uv."
|
|
|
|
REM Activate the venv for the remainder of the script
|
|
CALL .venv\Scripts\activate
|
|
|
|
REM echo python version
|
|
python --version
|
|
|
|
REM ---------[ Config file ]---------
|
|
IF NOT EXIST config.yaml COPY config.example.yaml config.yaml
|
|
|
|
REM ---------[ Node.js portable runtime ]---------
|
|
ECHO.
|
|
ECHO Downloading portable Node.js runtime...
|
|
|
|
REM Node download variables already set earlier based on %ARCH%.
|
|
ECHO Downloading Node.js from: %NODE_URL%
|
|
|
|
SET "NODE_ZIP=node_embed.zip"
|
|
|
|
where curl >nul 2>&1
|
|
IF %ERRORLEVEL% EQU 0 (
|
|
ECHO Using curl to download Node.js...
|
|
curl -L -# -o "%NODE_ZIP%" "%NODE_URL%" || CALL :die "Failed to download Node.js package with curl."
|
|
) ELSE (
|
|
ECHO curl not found, falling back to bitsadmin...
|
|
bitsadmin /transfer "DownloadNode" /download /priority normal "%NODE_URL%" "%CD%\%NODE_ZIP%" || CALL :die "Failed to download Node.js package (curl & bitsadmin unavailable)."
|
|
)
|
|
|
|
REM ---------[ Extract Node.js ]---------
|
|
SET "NODE_DIR=embedded_node"
|
|
IF EXIST "%NODE_DIR%" RD /S /Q "%NODE_DIR%"
|
|
mkdir "%NODE_DIR%" || CALL :die "Could not create directory %NODE_DIR%."
|
|
|
|
where tar >nul 2>&1
|
|
IF %ERRORLEVEL% EQU 0 (
|
|
ECHO Extracting Node.js...
|
|
tar -xf "%NODE_ZIP%" -C "%NODE_DIR%" --strip-components 1 || CALL :die "Failed to extract Node.js package with tar."
|
|
) ELSE (
|
|
CALL :die "tar utility not found (required to unpack zip without PowerShell)."
|
|
)
|
|
|
|
DEL /F /Q "%NODE_ZIP%"
|
|
|
|
REM Prepend Node.js folder to PATH so npm & node are available
|
|
SET "PATH=%CD%\%NODE_DIR%;%PATH%"
|
|
ECHO Using portable Node.js at %CD%\%NODE_DIR%\node.exe
|
|
ECHO Node.js version:
|
|
node -v
|
|
|
|
REM ---------[ Frontend ]---------
|
|
ECHO Installing frontend dependencies...
|
|
CD talemate_frontend
|
|
CALL npm install || CALL :die "npm install failed."
|
|
|
|
ECHO Building frontend...
|
|
CALL npm run build || CALL :die "Frontend build failed."
|
|
|
|
REM Return to repo root
|
|
CD ..
|
|
|
|
ECHO.
|
|
ECHO ==============================
|
|
ECHO Installation completed!
|
|
ECHO ==============================
|
|
PAUSE
|
|
|
|
ENDLOCAL
|