Skip to content

Commit 02f0aba

Browse files
committed
env auth flow on client
1 parent 583190e commit 02f0aba

File tree

12 files changed

+38
-54
lines changed

12 files changed

+38
-54
lines changed

src/agentex/lib/adk/_modules/acp.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from temporalio.common import RetryPolicy
55

66
from agentex import AsyncAgentex
7-
from agentex.lib.adk.utils._modules.client import get_async_agentex_client
7+
from agentex.lib.adk.utils._modules.client import create_async_agentex_client
88
from agentex.lib.core.services.adk.acp.acp import ACPService
99
from agentex.lib.core.temporal.activities.activity_helpers import ActivityHelpers
1010
from agentex.lib.core.temporal.activities.adk.acp.acp_activities import (
@@ -41,7 +41,7 @@ def __init__(self, acp_service: ACPService | None = None):
4141
acp_activities (Optional[ACPActivities]): Optional pre-configured ACP activities. If None, will be auto-initialized.
4242
"""
4343
if acp_service is None:
44-
agentex_client = get_async_agentex_client()
44+
agentex_client = create_async_agentex_client()
4545
tracer = AsyncTracer(agentex_client)
4646
self._acp_service = ACPService(agentex_client=agentex_client, tracer=tracer)
4747
else:

src/agentex/lib/adk/_modules/agent_task_tracker.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from temporalio.common import RetryPolicy
44

55
from agentex import AsyncAgentex
6-
from agentex.lib.adk.utils._modules.client import get_async_agentex_client
6+
from agentex.lib.adk.utils._modules.client import create_async_agentex_client
77
from agentex.lib.core.services.adk.agent_task_tracker import AgentTaskTrackerService
88
from agentex.lib.core.temporal.activities.activity_helpers import ActivityHelpers
99
from agentex.lib.core.temporal.activities.adk.agent_task_tracker_activities import (
@@ -34,7 +34,7 @@ def __init__(
3434
agent_task_tracker_service: AgentTaskTrackerService | None = None,
3535
):
3636
if agent_task_tracker_service is None:
37-
agentex_client = get_async_agentex_client()
37+
agentex_client = create_async_agentex_client()
3838
tracer = AsyncTracer(agentex_client)
3939
self._agent_task_tracker_service = AgentTaskTrackerService(
4040
agentex_client=agentex_client, tracer=tracer

src/agentex/lib/adk/_modules/agents.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from datetime import timedelta
22
from typing import Optional
33

4-
from agentex.lib.adk.utils._modules.client import get_async_agentex_client
4+
from agentex.lib.adk.utils._modules.client import create_async_agentex_client
55
from agentex.lib.core.temporal.activities.adk.agents_activities import AgentsActivityName, GetAgentParams
66
from temporalio.common import RetryPolicy
77

@@ -29,7 +29,7 @@ def __init__(
2929
agents_service: Optional[AgentsService] = None,
3030
):
3131
if agents_service is None:
32-
agentex_client = get_async_agentex_client()
32+
agentex_client = create_async_agentex_client()
3333
tracer = AsyncTracer(agentex_client)
3434
self._agents_service = AgentsService(agentex_client=agentex_client, tracer=tracer)
3535
else:

src/agentex/lib/adk/_modules/events.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from temporalio.common import RetryPolicy
44

55
from agentex import AsyncAgentex
6-
from agentex.lib.adk.utils._modules.client import get_async_agentex_client
6+
from agentex.lib.adk.utils._modules.client import create_async_agentex_client
77
from agentex.lib.core.services.adk.events import EventsService
88
from agentex.lib.core.temporal.activities.activity_helpers import ActivityHelpers
99
from agentex.lib.core.temporal.activities.adk.events_activities import (
@@ -33,7 +33,7 @@ def __init__(
3333
events_service: EventsService | None = None,
3434
):
3535
if events_service is None:
36-
agentex_client = get_async_agentex_client()
36+
agentex_client = create_async_agentex_client()
3737
tracer = AsyncTracer(agentex_client)
3838
self._events_service = EventsService(
3939
agentex_client=agentex_client, tracer=tracer

src/agentex/lib/adk/_modules/messages.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from temporalio.common import RetryPolicy
44

55
from agentex import AsyncAgentex
6-
from agentex.lib.adk.utils._modules.client import get_async_agentex_client
6+
from agentex.lib.adk.utils._modules.client import create_async_agentex_client
77
from agentex.lib.core.adapters.streams.adapter_redis import RedisStreamRepository
88
from agentex.lib.core.services.adk.messages import MessagesService
99
from agentex.lib.core.services.adk.streaming import StreamingService
@@ -38,7 +38,7 @@ def __init__(
3838
messages_service: MessagesService | None = None,
3939
):
4040
if messages_service is None:
41-
agentex_client = get_async_agentex_client()
41+
agentex_client = create_async_agentex_client()
4242
stream_repository = RedisStreamRepository()
4343
streaming_service = StreamingService(
4444
agentex_client=agentex_client,

src/agentex/lib/adk/_modules/state.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from temporalio.common import RetryPolicy
66

77
from agentex import AsyncAgentex
8-
from agentex.lib.adk.utils._modules.client import get_async_agentex_client
8+
from agentex.lib.adk.utils._modules.client import create_async_agentex_client
99
from agentex.lib.core.services.adk.state import StateService
1010
from agentex.lib.core.temporal.activities.activity_helpers import ActivityHelpers
1111
from agentex.lib.core.temporal.activities.adk.state_activities import (
@@ -37,7 +37,7 @@ def __init__(
3737
state_service: StateService | None = None,
3838
):
3939
if state_service is None:
40-
agentex_client = get_async_agentex_client()
40+
agentex_client = create_async_agentex_client()
4141
tracer = AsyncTracer(agentex_client)
4242
self._state_service = StateService(
4343
agentex_client=agentex_client, tracer=tracer

src/agentex/lib/adk/_modules/streaming.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from temporalio.common import RetryPolicy
22

33
from agentex import AsyncAgentex
4-
from agentex.lib.adk.utils._modules.client import get_async_agentex_client
4+
from agentex.lib.adk.utils._modules.client import create_async_agentex_client
55
from agentex.lib.core.adapters.streams.adapter_redis import RedisStreamRepository
66
from agentex.lib.core.services.adk.streaming import (
77
StreamingService,
@@ -35,7 +35,7 @@ def __init__(self, streaming_service: StreamingService | None = None):
3535
"""
3636
if streaming_service is None:
3737
stream_repository = RedisStreamRepository()
38-
agentex_client = get_async_agentex_client()
38+
agentex_client = create_async_agentex_client()
3939
self._streaming_service = StreamingService(
4040
agentex_client=agentex_client,
4141
stream_repository=stream_repository,

src/agentex/lib/adk/_modules/tasks.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from temporalio.common import RetryPolicy
44

55
from agentex import AsyncAgentex
6-
from agentex.lib.adk.utils._modules.client import get_async_agentex_client
6+
from agentex.lib.adk.utils._modules.client import create_async_agentex_client
77
from agentex.lib.core.services.adk.tasks import TasksService
88
from agentex.lib.core.temporal.activities.activity_helpers import ActivityHelpers
99
from agentex.lib.core.temporal.activities.adk.tasks_activities import (
@@ -32,7 +32,7 @@ def __init__(
3232
tasks_service: TasksService | None = None,
3333
):
3434
if tasks_service is None:
35-
agentex_client = get_async_agentex_client()
35+
agentex_client = create_async_agentex_client()
3636
tracer = AsyncTracer(agentex_client)
3737
self._tasks_service = TasksService(
3838
agentex_client=agentex_client, tracer=tracer

src/agentex/lib/adk/_modules/tracing.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from temporalio.common import RetryPolicy
77

88
from agentex import AsyncAgentex
9-
from agentex.lib.adk.utils._modules.client import get_async_agentex_client
9+
from agentex.lib.adk.utils._modules.client import create_async_agentex_client
1010
from agentex.lib.core.services.adk.tracing import TracingService
1111
from agentex.lib.core.temporal.activities.activity_helpers import ActivityHelpers
1212
from agentex.lib.core.temporal.activities.adk.tracing_activities import (
@@ -39,7 +39,7 @@ def __init__(self, tracing_service: TracingService | None = None):
3939
tracing_activities (Optional[TracingActivities]): Optional pre-configured tracing activities. If None, will be auto-initialized.
4040
"""
4141
if tracing_service is None:
42-
agentex_client = get_async_agentex_client()
42+
agentex_client = create_async_agentex_client()
4343
tracer = AsyncTracer(agentex_client)
4444
self._tracing_service = TracingService(tracer=tracer)
4545
else:
Lines changed: 17 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,27 @@
1-
import threading
2-
from typing import Dict, Optional, Any
1+
import httpx
32

43
from agentex import AsyncAgentex
5-
from agentex.lib.environment_variables import EnvironmentVariables, refreshed_environment_variables
4+
from agentex.lib.environment_variables import refreshed_environment_variables
5+
from agentex.lib.utils.logging import make_logger
66

7-
_client: Optional["AsyncAgentex"] = None
8-
_cached_headers: Dict[str, str] = {}
9-
_init_kwargs: Dict[str, Any] = {}
10-
_lock = threading.RLock()
7+
logger = make_logger(__name__)
118

129

13-
def _build_headers() -> Dict[str, str]:
14-
EnvironmentVariables.refresh()
15-
if refreshed_environment_variables and getattr(refreshed_environment_variables, "AGENT_ID", None):
16-
return {"x-agent-identity": refreshed_environment_variables.AGENT_ID}
17-
return {}
10+
class EnvAuth(httpx.Auth):
11+
def __init__(self, header_name="x-agent-identity"):
12+
self.header_name = header_name
1813

14+
def auth_flow(self, request):
15+
# This gets called for every request
1916

20-
def get_async_agentex_client(**kwargs) -> "AsyncAgentex":
21-
"""
22-
Return a cached AsyncAgentex instance (created synchronously).
23-
Each call re-checks env vars and updates client.default_headers if needed.
24-
"""
25-
global _client, _cached_headers, _init_kwargs
17+
agent_id = refreshed_environment_variables.AGENT_ID
18+
if agent_id:
19+
request.headers[self.header_name] = agent_id
20+
logger.info(f"Adding header {self.header_name}:{agent_id}")
21+
yield request
2622

27-
new_headers = _build_headers()
2823

29-
with _lock:
30-
# First time (or kwargs changed) -> build a new client
31-
if _client is None or kwargs != _init_kwargs:
32-
_client = AsyncAgentex(default_headers=new_headers.copy(), **kwargs)
33-
_cached_headers = new_headers
34-
_init_kwargs = dict(kwargs)
35-
return _client
24+
def create_async_agentex_client(**kwargs) -> AsyncAgentex:
25+
http_client = httpx.AsyncClient(auth=EnvAuth())
3626

37-
# Same client; maybe headers changed
38-
if new_headers != _cached_headers:
39-
_cached_headers = new_headers
40-
_client.default_headers.clear()
41-
_client.default_headers.update(new_headers)
42-
43-
return _client
27+
return AsyncAgentex(http_client=http_client, **kwargs)

0 commit comments

Comments
 (0)