diff --git a/tests/test_trajectory_compressor.py b/tests/test_trajectory_compressor.py index 72708b8d9..dc66ef4c4 100644 --- a/tests/test_trajectory_compressor.py +++ b/tests/test_trajectory_compressor.py @@ -1,6 +1,9 @@ """Tests for trajectory_compressor.py — config, metrics, and compression logic.""" +import importlib import json +import os +import sys from types import SimpleNamespace from unittest.mock import AsyncMock, patch, MagicMock @@ -14,6 +17,20 @@ from trajectory_compressor import ( ) +def test_import_loads_env_from_hermes_home(tmp_path, monkeypatch): + home = tmp_path / ".hermes" + home.mkdir() + (home / ".env").write_text("OPENROUTER_API_KEY=from-hermes-home\n", encoding="utf-8") + + monkeypatch.setenv("HERMES_HOME", str(home)) + monkeypatch.delenv("OPENROUTER_API_KEY", raising=False) + + sys.modules.pop("trajectory_compressor", None) + importlib.import_module("trajectory_compressor") + + assert os.getenv("OPENROUTER_API_KEY") == "from-hermes-home" + + # --------------------------------------------------------------------------- # CompressionConfig # --------------------------------------------------------------------------- diff --git a/trajectory_compressor.py b/trajectory_compressor.py index 4c0de4029..3c0e3f1b7 100644 --- a/trajectory_compressor.py +++ b/trajectory_compressor.py @@ -43,12 +43,15 @@ from datetime import datetime import fire from rich.progress import Progress, SpinnerColumn, TextColumn, BarColumn, TaskProgressColumn, TimeElapsedColumn, TimeRemainingColumn from rich.console import Console -from hermes_constants import OPENROUTER_BASE_URL +from hermes_constants import OPENROUTER_BASE_URL, get_hermes_home from agent.retry_utils import jittered_backoff -# Load environment variables -from dotenv import load_dotenv -load_dotenv() +# Load .env from HERMES_HOME first, then project root as a dev fallback. +from hermes_cli.env_loader import load_hermes_dotenv + +_hermes_home = get_hermes_home() +_project_env = Path(__file__).parent / ".env" +load_hermes_dotenv(hermes_home=_hermes_home, project_env=_project_env) @dataclass