feat(memory): initialize optional gateway layer
This commit is contained in:
@ -0,0 +1,84 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import logging
|
||||
|
||||
import pytest
|
||||
|
||||
from beaver.engine import EngineLoader
|
||||
from beaver.foundation.config import BeaverConfig, MemoryConfig, MemoryGatewayConfig
|
||||
|
||||
|
||||
def test_loader_keeps_curated_memory_in_explicit_curated_mode(tmp_path) -> None:
|
||||
config = BeaverConfig(memory=MemoryConfig(mode="curated", explicit=True))
|
||||
|
||||
loaded = EngineLoader(workspace=tmp_path, config=config).load()
|
||||
|
||||
try:
|
||||
assert loaded.memory_gateway_service is None
|
||||
assert loaded.curated_memory_store is not None
|
||||
assert loaded.memory_service is not None
|
||||
assert "memory" in loaded.tools
|
||||
assert loaded.memory_stores == ["curated"]
|
||||
finally:
|
||||
loaded.close()
|
||||
|
||||
|
||||
def test_loader_adds_gateway_service_without_disabling_curated_memory(tmp_path) -> None:
|
||||
gateway_config = MemoryGatewayConfig(
|
||||
base_url="http://gateway.test",
|
||||
user_id="gateway-user",
|
||||
user_key="uk_secret",
|
||||
)
|
||||
config = BeaverConfig(
|
||||
memory=MemoryConfig(mode="hybrid", explicit=True, gateway=gateway_config)
|
||||
)
|
||||
fake_gateway_service = object()
|
||||
|
||||
loaded = EngineLoader(
|
||||
workspace=tmp_path,
|
||||
config=config,
|
||||
memory_gateway_service=fake_gateway_service,
|
||||
).load()
|
||||
|
||||
try:
|
||||
assert loaded.memory_gateway_service is fake_gateway_service
|
||||
assert loaded.curated_memory_store is not None
|
||||
assert loaded.memory_service is not None
|
||||
assert "memory" in loaded.tools
|
||||
assert loaded.memory_stores == ["curated", "memory_gateway"]
|
||||
finally:
|
||||
loaded.close()
|
||||
|
||||
|
||||
def test_loader_implicit_hybrid_without_credentials_warns_and_degrades(
|
||||
tmp_path,
|
||||
caplog,
|
||||
) -> None:
|
||||
config = BeaverConfig(memory=MemoryConfig(mode="hybrid", explicit=False))
|
||||
|
||||
with caplog.at_level(logging.WARNING):
|
||||
loaded = EngineLoader(workspace=tmp_path, config=config).load()
|
||||
|
||||
try:
|
||||
assert loaded.memory_gateway_service is None
|
||||
assert loaded.curated_memory_store is not None
|
||||
assert "memory" in loaded.tools
|
||||
assert "continuing with curated memory only" in caplog.text
|
||||
finally:
|
||||
loaded.close()
|
||||
|
||||
|
||||
def test_loader_explicit_hybrid_without_credentials_fails_without_secret(tmp_path) -> None:
|
||||
config = BeaverConfig(
|
||||
memory=MemoryConfig(
|
||||
mode="hybrid",
|
||||
explicit=True,
|
||||
gateway=MemoryGatewayConfig(user_key="uk_super_secret"),
|
||||
)
|
||||
)
|
||||
|
||||
with pytest.raises(ValueError) as exc_info:
|
||||
EngineLoader(workspace=tmp_path, config=config).load()
|
||||
|
||||
assert "Memory Gateway" in str(exc_info.value)
|
||||
assert "uk_super_secret" not in str(exc_info.value)
|
||||
Reference in New Issue
Block a user