From cda23d074faf2e0f2adabf34dcd96a4f11ba7fbe Mon Sep 17 00:00:00 2001 From: Francwa Date: Thu, 1 Jan 2026 04:44:15 +0100 Subject: [PATCH] feat: added current alfred version from pyproject.py to healthcheck --- .env.example | 1 + alfred/app.py | 2 +- alfred/settings.py | 3 +++ scripts/bootstrap.py | 12 ++++++++++++ 4 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.env.example b/.env.example index d0395fa..9d949bf 100644 --- a/.env.example +++ b/.env.example @@ -13,6 +13,7 @@ HOST=0.0.0.0 PORT=3080 # Build informations (Synced with pyproject.toml via bootstrap) +ALFRED_VERSION= IMAGE_NAME= LIBRECHAT_VERSION= PYTHON_VERSION= diff --git a/alfred/app.py b/alfred/app.py index 5a931b8..2a1c996 100644 --- a/alfred/app.py +++ b/alfred/app.py @@ -110,7 +110,7 @@ def extract_last_user_content(messages: list[dict[str, Any]]) -> str: @app.get("/health") async def health_check(): """Health check endpoint.""" - return {"status": "healthy", "version": "0.2.0"} # TODO: SHOULD BE DYNAMIC + return {"status": "healthy", "version": f"v{settings.alfred_version}"} @app.get("/v1/models") diff --git a/alfred/settings.py b/alfred/settings.py index 0b5e7b4..50ef520 100644 --- a/alfred/settings.py +++ b/alfred/settings.py @@ -25,6 +25,7 @@ class ProjectVersions(NamedTuple): librechat: str rag: str + alfred: str def get_versions_from_toml() -> ProjectVersions: @@ -42,6 +43,7 @@ def get_versions_from_toml() -> ProjectVersions: return ProjectVersions( librechat=data["tool"]["alfred"]["settings"]["librechat_version"], rag=data["tool"]["alfred"]["settings"]["rag_version"], + alfred=data["tool"]["poetry"]["version"], ) except KeyError as e: raise KeyError(f"Error: Missing key {e} in pyproject.toml") from e @@ -66,6 +68,7 @@ class Settings(BaseSettings): data_storage: str = "data" librechat_version: str = Field(VERSIONS.librechat, description="Librechat version") rag_version: str = Field(VERSIONS.rag, description="RAG engine version") + alfred_version: str = Field(VERSIONS.alfred, description="Alfred version") # --- CONTEXT SETTINGS --- max_history_messages: int = 10 diff --git a/scripts/bootstrap.py b/scripts/bootstrap.py index 0fb50c5..bb06d0b 100644 --- a/scripts/bootstrap.py +++ b/scripts/bootstrap.py @@ -87,6 +87,7 @@ def bootstrap(): # noqa: PLR0912, PLR0915 security_keys = data["tool"]["alfred"]["security"] settings_keys = data["tool"]["alfred"]["settings"] dependencies = data["tool"]["poetry"]["dependencies"] + alfred_version = data["tool"]["poetry"]["version"] # Normalize TOML keys to UPPER_CASE for .env format (done once) security_keys_upper = {k.upper(): v for k, v in security_keys.items()} @@ -144,6 +145,13 @@ def bootstrap(): # noqa: PLR0912, PLR0915 else: new_lines.append(f"{key}={existing_env[key]}\n") print(f" ↻ Kept Python (short): {existing_env[key]}") + elif key == "ALFRED_VERSION": + if existing_env.get(key) != alfred_version: + new_lines.append(f"{key}={alfred_version}\n") + print(f" ↻ Updated Alfred version: {existing_env.get(key, 'N/A')} → {alfred_version}") + else: + new_lines.append(f"{key}={alfred_version}\n") + print(f" ↻ Kept Alfred version: {alfred_version}") # Keep other existing values else: new_lines.append(f"{key}={existing_env[key]}\n") @@ -163,6 +171,9 @@ def bootstrap(): # noqa: PLR0912, PLR0915 elif key == "PYTHON_VERSION_SHORT": new_lines.append(f"{key}={python_version_short}\n") print(f" + Python version (short): {python_version_short}") + elif key == "ALFRED_VERSION": + new_lines.append(f"{key}={alfred_version}\n") + print(f" + Alfred version: {alfred_version}") else: new_lines.append(raw_line) else: @@ -217,6 +228,7 @@ def bootstrap(): # noqa: PLR0912, PLR0915 env_make_path = base_dir / ".env.make" with open(env_make_path, "w", encoding="utf-8") as f: f.write("# Auto-generated from pyproject.toml by bootstrap.py\n") + f.write(f"export ALFRED_VERSION={alfred_version}\n") f.write(f"export PYTHON_VERSION={python_version_full}\n") f.write(f"export PYTHON_VERSION_SHORT={python_version_short}\n") f.write(f"export RUNNER={settings_keys['runner']}\n")