Scope auxiliary LLM endpoints by owner (#2996)

* fix(auth): scope auxiliary llm endpoints by owner

* fix(auth): scope auxiliary llm fallbacks by owner
This commit is contained in:
Vykos
2026-06-07 14:47:44 +02:00
committed by GitHub
parent 12a7e741d0
commit 83b0ab7cd3
11 changed files with 146 additions and 32 deletions
+29 -2
View File
@@ -79,6 +79,7 @@ class _FakeSession:
endpoint_url = "http://example.test/v1"
model = "test-model"
headers = {}
owner = "session-owner"
def __init__(self, history):
self.history = history
@@ -107,7 +108,11 @@ def _compact_prompt_for(monkeypatch, history):
import src.model_context as model_context
monkeypatch.setattr(agent_runs, "is_active", lambda session_id: False)
monkeypatch.setattr(endpoint_resolver, "resolve_endpoint", lambda kind, owner=None: (None, None, {}))
def fake_resolve_endpoint(kind, owner=None):
captured.setdefault("resolve_calls", []).append((kind, owner))
return None, None, {}
monkeypatch.setattr(endpoint_resolver, "resolve_endpoint", fake_resolve_endpoint)
monkeypatch.setattr(llm_core, "llm_call_async", fake_llm_call_async)
monkeypatch.setattr(model_context, "estimate_tokens", lambda messages: 100)
monkeypatch.setattr(model_context, "get_context_length", lambda endpoint_url, model: 1000)
@@ -146,7 +151,11 @@ def _registered_compact_response(monkeypatch, history, active_run=False):
import src.llm_core as llm_core
monkeypatch.setattr(agent_runs, "is_active", lambda session_id: active_run)
monkeypatch.setattr(endpoint_resolver, "resolve_endpoint", lambda kind, owner=None: (None, None, {}))
def fake_resolve_endpoint(kind, owner=None):
captured.setdefault("resolve_calls", []).append((kind, owner))
return None, None, {}
monkeypatch.setattr(endpoint_resolver, "resolve_endpoint", fake_resolve_endpoint)
monkeypatch.setattr(llm_core, "llm_call_async", fake_llm_call_async)
session = _FakeSession(history)
@@ -212,6 +221,24 @@ def test_registered_manual_compact_route_tolerates_none_content(monkeypatch):
assert manager.replaced_messages is not None
def test_registered_manual_compact_route_uses_session_owner(monkeypatch):
response, captured, manager = _registered_compact_response(
monkeypatch,
[
ChatMessage(role="user", content="start"),
ChatMessage(role="assistant", content="tool call"),
ChatMessage(role="tool", content="tool result"),
ChatMessage(role="assistant", content="done"),
ChatMessage(role="user", content="next"),
ChatMessage(role="assistant", content="final"),
],
)
assert response.status_code == 200
assert manager.replaced_messages is not None
assert ("utility", "session-owner") in captured["resolve_calls"]
def test_registered_manual_compact_route_rejects_active_agent_run(monkeypatch):
response, captured, manager = _registered_compact_response(
monkeypatch,