Import AITURK IDE 1.0.0-beta.1 from Hermes 63279301; preserve MIT license
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
"""x-opencode-session rides on every OpenCode request, on every transport."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
from agent import auxiliary_client as aux
|
||||
from agent.chat_completion_helpers import build_api_kwargs
|
||||
from run_agent import AIAgent
|
||||
|
||||
_MSGS = [{"role": "user", "content": "hi"}]
|
||||
|
||||
|
||||
def _agent(provider, model, base_url, api_mode=None):
|
||||
agent = AIAgent(
|
||||
api_key="test-key",
|
||||
base_url=base_url,
|
||||
model=model,
|
||||
provider=provider,
|
||||
quiet_mode=True,
|
||||
skip_context_files=True,
|
||||
skip_memory=True,
|
||||
session_id="sess-affinity-1",
|
||||
)
|
||||
if api_mode:
|
||||
agent.api_mode = api_mode
|
||||
agent._transport = None
|
||||
agent._anthropic_base_url = base_url
|
||||
return agent
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"provider, model, base_url, api_mode",
|
||||
[
|
||||
("opencode-go", "glm-5", "https://opencode.ai/zen/go/v1", None), # chat_completions
|
||||
("opencode-go", "gpt-5.6-luna", "https://opencode.ai/zen/go/v1", None), # codex_responses
|
||||
("opencode-go", "minimax-m2.7", "https://opencode.ai/zen/go/v1", "anthropic_messages"),
|
||||
("opencode-free", "laguna-s-2.1-free", "https://opencode.ai/zen/v1", None),
|
||||
("custom", "glm-5", "https://opencode.ai/zen/go/v1", None), # URL-only detection
|
||||
],
|
||||
)
|
||||
def test_main_turn_sends_stable_session_header_on_every_transport(provider, model, base_url, api_mode):
|
||||
agent = _agent(provider, model, base_url, api_mode)
|
||||
first = build_api_kwargs(agent, _MSGS)["extra_headers"]["x-opencode-session"]
|
||||
second = build_api_kwargs(agent, _MSGS)["extra_headers"]["x-opencode-session"]
|
||||
assert first == second == "sess-affinity-1"
|
||||
|
||||
other = _agent("openrouter", "anthropic/claude-sonnet-4.6", "https://openrouter.ai/api/v1")
|
||||
assert "x-opencode-session" not in (build_api_kwargs(other, _MSGS).get("extra_headers") or {})
|
||||
|
||||
|
||||
def test_auxiliary_calls_share_the_main_turn_session_key():
|
||||
token = aux.set_runtime_main(
|
||||
"opencode-go", "glm-5", base_url="https://opencode.ai/zen/go/v1", session_id="sess-affinity-1"
|
||||
)
|
||||
try:
|
||||
kwargs = aux._build_call_kwargs("opencode-go", "glm-5", _MSGS, base_url="https://opencode.ai/zen/go/v1")
|
||||
assert kwargs["extra_headers"]["x-opencode-session"] == "sess-affinity-1"
|
||||
other = aux._build_call_kwargs("openrouter", "x", _MSGS, base_url="https://openrouter.ai/api/v1")
|
||||
assert "x-opencode-session" not in (other.get("extra_headers") or {})
|
||||
finally:
|
||||
aux._RUNTIME_MAIN_CONTEXT.reset(token)
|
||||
Reference in New Issue
Block a user