mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
[verified] fix: materialize hindsight profile env during setup
This commit is contained in:
parent
127048e643
commit
3e994e38f7
2 changed files with 182 additions and 43 deletions
|
|
@ -7,9 +7,8 @@ turn counting, tags), and schema completeness.
|
|||
|
||||
import json
|
||||
import re
|
||||
import threading
|
||||
from types import SimpleNamespace
|
||||
from unittest.mock import AsyncMock, MagicMock, patch
|
||||
from unittest.mock import AsyncMock, MagicMock
|
||||
|
||||
import pytest
|
||||
|
||||
|
|
@ -251,6 +250,86 @@ class TestConfig:
|
|||
assert cfg["banks"]["hermes"]["budget"] == "high"
|
||||
|
||||
|
||||
class TestPostSetup:
|
||||
def test_local_embedded_setup_materializes_profile_env(self, tmp_path, monkeypatch):
|
||||
hermes_home = tmp_path / "hermes-home"
|
||||
user_home = tmp_path / "user-home"
|
||||
user_home.mkdir()
|
||||
monkeypatch.setenv("HOME", str(user_home))
|
||||
|
||||
selections = iter([1, 0]) # local_embedded, openai
|
||||
monkeypatch.setattr("hermes_cli.memory_setup._curses_select", lambda *args, **kwargs: next(selections))
|
||||
monkeypatch.setattr("shutil.which", lambda name: None)
|
||||
monkeypatch.setattr("builtins.input", lambda prompt="": "")
|
||||
monkeypatch.setattr("sys.stdin.isatty", lambda: True)
|
||||
monkeypatch.setattr("getpass.getpass", lambda prompt="": "sk-local-test")
|
||||
saved_configs = []
|
||||
monkeypatch.setattr("hermes_cli.config.save_config", lambda cfg: saved_configs.append(cfg.copy()))
|
||||
|
||||
provider = HindsightMemoryProvider()
|
||||
provider.post_setup(str(hermes_home), {"memory": {}})
|
||||
|
||||
assert saved_configs[-1]["memory"]["provider"] == "hindsight"
|
||||
assert (hermes_home / ".env").read_text() == "HINDSIGHT_LLM_API_KEY=sk-local-test\n"
|
||||
|
||||
profile_env = user_home / ".hindsight" / "profiles" / "hermes.env"
|
||||
assert profile_env.exists()
|
||||
assert profile_env.read_text() == (
|
||||
"HINDSIGHT_API_LLM_PROVIDER=openai\n"
|
||||
"HINDSIGHT_API_LLM_API_KEY=sk-local-test\n"
|
||||
"HINDSIGHT_API_LLM_MODEL=gpt-4o-mini\n"
|
||||
"HINDSIGHT_API_LOG_LEVEL=info\n"
|
||||
)
|
||||
|
||||
def test_local_embedded_setup_respects_existing_profile_name(self, tmp_path, monkeypatch):
|
||||
hermes_home = tmp_path / "hermes-home"
|
||||
user_home = tmp_path / "user-home"
|
||||
user_home.mkdir()
|
||||
monkeypatch.setenv("HOME", str(user_home))
|
||||
|
||||
selections = iter([1, 0]) # local_embedded, openai
|
||||
monkeypatch.setattr("hermes_cli.memory_setup._curses_select", lambda *args, **kwargs: next(selections))
|
||||
monkeypatch.setattr("shutil.which", lambda name: None)
|
||||
monkeypatch.setattr("builtins.input", lambda prompt="": "")
|
||||
monkeypatch.setattr("sys.stdin.isatty", lambda: True)
|
||||
monkeypatch.setattr("getpass.getpass", lambda prompt="": "sk-local-test")
|
||||
monkeypatch.setattr("hermes_cli.config.save_config", lambda cfg: None)
|
||||
|
||||
provider = HindsightMemoryProvider()
|
||||
provider.save_config({"profile": "coder"}, str(hermes_home))
|
||||
provider.post_setup(str(hermes_home), {"memory": {}})
|
||||
|
||||
coder_env = user_home / ".hindsight" / "profiles" / "coder.env"
|
||||
hermes_env = user_home / ".hindsight" / "profiles" / "hermes.env"
|
||||
assert coder_env.exists()
|
||||
assert not hermes_env.exists()
|
||||
|
||||
def test_local_embedded_setup_preserves_existing_key_when_input_left_blank(self, tmp_path, monkeypatch):
|
||||
hermes_home = tmp_path / "hermes-home"
|
||||
user_home = tmp_path / "user-home"
|
||||
user_home.mkdir()
|
||||
monkeypatch.setenv("HOME", str(user_home))
|
||||
|
||||
selections = iter([1, 0]) # local_embedded, openai
|
||||
monkeypatch.setattr("hermes_cli.memory_setup._curses_select", lambda *args, **kwargs: next(selections))
|
||||
monkeypatch.setattr("shutil.which", lambda name: None)
|
||||
monkeypatch.setattr("builtins.input", lambda prompt="": "")
|
||||
monkeypatch.setattr("sys.stdin.isatty", lambda: True)
|
||||
monkeypatch.setattr("getpass.getpass", lambda prompt="": "")
|
||||
monkeypatch.setattr("hermes_cli.config.save_config", lambda cfg: None)
|
||||
|
||||
env_path = hermes_home / ".env"
|
||||
env_path.parent.mkdir(parents=True, exist_ok=True)
|
||||
env_path.write_text("HINDSIGHT_LLM_API_KEY=existing-key\n")
|
||||
|
||||
provider = HindsightMemoryProvider()
|
||||
provider.post_setup(str(hermes_home), {"memory": {}})
|
||||
|
||||
profile_env = user_home / ".hindsight" / "profiles" / "hermes.env"
|
||||
assert profile_env.exists()
|
||||
assert "HINDSIGHT_API_LLM_API_KEY=existing-key\n" in profile_env.read_text()
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Tool handler tests
|
||||
# ---------------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue