mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-25 17:18:11 +00:00
test(gateway): cover effective context budget
This commit is contained in:
parent
265ac7d812
commit
4281151ae8
2 changed files with 47 additions and 0 deletions
|
|
@ -10613,6 +10613,7 @@ class GatewayRunner(GatewayAuthorizationMixin, GatewayKanbanWatchersMixin, Gatew
|
|||
_msg_cwd = os.environ.get("TERMINAL_CWD", os.path.expanduser("~"))
|
||||
_msg_config_ctx = None
|
||||
_msg_cfg = None
|
||||
_msg_model_cfg = {}
|
||||
_msg_custom_providers = []
|
||||
try:
|
||||
_msg_cfg = _load_gateway_config()
|
||||
|
|
|
|||
|
|
@ -279,6 +279,52 @@ async def test_at_reference_passes_compatible_custom_provider_context(monkeypatc
|
|||
assert captured["custom_providers"] == custom_providers
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_at_reference_applies_custom_runtime_budget_to_preprocessor(monkeypatch):
|
||||
"""The custom runtime's real budget must reach reference expansion."""
|
||||
runner = _make_runner()
|
||||
source = _source()
|
||||
captured = {}
|
||||
custom_providers = [{
|
||||
"name": "private",
|
||||
"base_url": "https://private.example/v1",
|
||||
"models": {"session/model": {"context_length": 32768}},
|
||||
}]
|
||||
monkeypatch.setattr(
|
||||
gateway_run,
|
||||
"_load_gateway_config",
|
||||
lambda: {"model": {"default": "global/model", "context_length": 128000}, "custom_providers": custom_providers},
|
||||
)
|
||||
monkeypatch.setattr(runner, "_resolve_session_agent_runtime", lambda **_kwargs: (
|
||||
"session/model",
|
||||
{"provider": "custom:private", "api_key": "test", "base_url": "https://private.example/v1"},
|
||||
))
|
||||
|
||||
import hermes_cli.config as config_mod
|
||||
import agent.model_metadata as model_meta_mod
|
||||
import agent.context_references as ctx_mod
|
||||
|
||||
monkeypatch.setattr(config_mod, "get_compatible_custom_providers", lambda _cfg: custom_providers)
|
||||
monkeypatch.setattr(config_mod, "get_custom_provider_context_length", lambda **_kwargs: 32768)
|
||||
|
||||
async def _fake_get_context(_model, **kwargs):
|
||||
captured["config_context_length"] = kwargs["config_context_length"]
|
||||
return kwargs["config_context_length"]
|
||||
|
||||
async def _preprocess(message, *, context_length, **_kwargs):
|
||||
captured["preprocessor_budget"] = context_length
|
||||
return ContextReferenceResult(message="expanded", original_message=message, expanded=True)
|
||||
|
||||
monkeypatch.setattr(model_meta_mod, "get_model_context_length_async", _fake_get_context)
|
||||
monkeypatch.setattr(ctx_mod, "preprocess_context_references_async", _preprocess)
|
||||
|
||||
result = await runner._prepare_inbound_message_text(
|
||||
event=MessageEvent(text="@file:note", source=source), source=source, history=[]
|
||||
)
|
||||
assert result == "expanded"
|
||||
assert captured == {"config_context_length": 32768, "preprocessor_budget": 32768}
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_at_reference_ignores_global_context_for_session_model_override(monkeypatch):
|
||||
"""A session model override must not inherit another model's global limit."""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue