mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-18 04:41:56 +00:00
fix(auxiliary): resolve xai oauth compression from pool
This commit is contained in:
parent
c7db6a5800
commit
97a32afdc4
3 changed files with 119 additions and 10 deletions
|
|
@ -26,6 +26,7 @@ from agent.auxiliary_client import (
|
|||
_normalize_aux_provider,
|
||||
_try_payment_fallback,
|
||||
_resolve_auto,
|
||||
_resolve_xai_oauth_for_aux,
|
||||
_CodexCompletionsAdapter,
|
||||
)
|
||||
|
||||
|
|
@ -221,6 +222,77 @@ class TestReadCodexAccessToken:
|
|||
assert result == "plain-token-no-jwt"
|
||||
|
||||
|
||||
class TestResolveXaiOAuthForAux:
|
||||
def test_uses_pool_backed_credentials_without_singleton(self, tmp_path, monkeypatch):
|
||||
"""Auxiliary xAI OAuth must see pool-only credentials.
|
||||
|
||||
``hermes auth status`` already reports these as logged in; compression
|
||||
should not fall through to "no auxiliary provider configured" just
|
||||
because the singleton auth-store entry is absent.
|
||||
"""
|
||||
from agent.credential_pool import AUTH_TYPE_OAUTH, PooledCredential, load_pool
|
||||
from hermes_cli.auth import DEFAULT_XAI_OAUTH_BASE_URL
|
||||
|
||||
hermes_home = tmp_path / "hermes"
|
||||
hermes_home.mkdir(parents=True, exist_ok=True)
|
||||
(hermes_home / "auth.json").write_text(json.dumps({
|
||||
"version": 1,
|
||||
"providers": {},
|
||||
}))
|
||||
monkeypatch.setenv("HERMES_HOME", str(hermes_home))
|
||||
monkeypatch.delenv("HERMES_XAI_BASE_URL", raising=False)
|
||||
monkeypatch.delenv("XAI_BASE_URL", raising=False)
|
||||
|
||||
pool = load_pool("xai-oauth")
|
||||
pool.add_entry(PooledCredential(
|
||||
provider="xai-oauth",
|
||||
id="xai123",
|
||||
label="pool-only",
|
||||
auth_type=AUTH_TYPE_OAUTH,
|
||||
priority=0,
|
||||
source="manual:xai_pkce",
|
||||
access_token="pool-access-token",
|
||||
refresh_token="pool-refresh-token",
|
||||
base_url=DEFAULT_XAI_OAUTH_BASE_URL,
|
||||
))
|
||||
|
||||
assert _resolve_xai_oauth_for_aux() == (
|
||||
"pool-access-token",
|
||||
DEFAULT_XAI_OAUTH_BASE_URL,
|
||||
)
|
||||
|
||||
def test_pool_backed_credentials_honor_base_url_env_override(self, tmp_path, monkeypatch):
|
||||
from agent.credential_pool import AUTH_TYPE_OAUTH, PooledCredential, load_pool
|
||||
from hermes_cli.auth import DEFAULT_XAI_OAUTH_BASE_URL
|
||||
|
||||
hermes_home = tmp_path / "hermes"
|
||||
hermes_home.mkdir(parents=True, exist_ok=True)
|
||||
(hermes_home / "auth.json").write_text(json.dumps({
|
||||
"version": 1,
|
||||
"providers": {},
|
||||
}))
|
||||
monkeypatch.setenv("HERMES_HOME", str(hermes_home))
|
||||
monkeypatch.setenv("HERMES_XAI_BASE_URL", "https://example.x.ai/v1/")
|
||||
|
||||
pool = load_pool("xai-oauth")
|
||||
pool.add_entry(PooledCredential(
|
||||
provider="xai-oauth",
|
||||
id="xai456",
|
||||
label="pool-only",
|
||||
auth_type=AUTH_TYPE_OAUTH,
|
||||
priority=0,
|
||||
source="manual:xai_pkce",
|
||||
access_token="pool-access-token",
|
||||
refresh_token="pool-refresh-token",
|
||||
base_url=DEFAULT_XAI_OAUTH_BASE_URL,
|
||||
))
|
||||
|
||||
assert _resolve_xai_oauth_for_aux() == (
|
||||
"pool-access-token",
|
||||
"https://example.x.ai/v1",
|
||||
)
|
||||
|
||||
|
||||
class TestAnthropicOAuthFlag:
|
||||
"""Test that OAuth tokens get is_oauth=True in auxiliary Anthropic client."""
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue