agentex-sdk 0.7.1__py3-none-any.whl → 0.7.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. agentex/_version.py +1 -1
  2. agentex/lib/adk/providers/_modules/sync_provider.py +116 -15
  3. agentex/lib/cli/commands/init.py +16 -1
  4. agentex/lib/cli/templates/temporal-openai-agents/.dockerignore.j2 +43 -0
  5. agentex/lib/cli/templates/temporal-openai-agents/Dockerfile-uv.j2 +48 -0
  6. agentex/lib/cli/templates/temporal-openai-agents/Dockerfile.j2 +48 -0
  7. agentex/lib/cli/templates/temporal-openai-agents/README.md.j2 +224 -0
  8. agentex/lib/cli/templates/temporal-openai-agents/dev.ipynb.j2 +126 -0
  9. agentex/lib/cli/templates/temporal-openai-agents/environments.yaml.j2 +64 -0
  10. agentex/lib/cli/templates/temporal-openai-agents/manifest.yaml.j2 +140 -0
  11. agentex/lib/cli/templates/temporal-openai-agents/project/acp.py.j2 +80 -0
  12. agentex/lib/cli/templates/temporal-openai-agents/project/activities.py.j2 +116 -0
  13. agentex/lib/cli/templates/temporal-openai-agents/project/run_worker.py.j2 +56 -0
  14. agentex/lib/cli/templates/temporal-openai-agents/project/workflow.py.j2 +169 -0
  15. agentex/lib/cli/templates/temporal-openai-agents/pyproject.toml.j2 +35 -0
  16. agentex/lib/cli/templates/temporal-openai-agents/requirements.txt.j2 +4 -0
  17. agentex/lib/cli/templates/temporal-openai-agents/test_agent.py.j2 +147 -0
  18. agentex/types/__init__.py +2 -2
  19. {agentex_sdk-0.7.1.dist-info → agentex_sdk-0.7.2.dist-info}/METADATA +1 -1
  20. {agentex_sdk-0.7.1.dist-info → agentex_sdk-0.7.2.dist-info}/RECORD +23 -9
  21. {agentex_sdk-0.7.1.dist-info → agentex_sdk-0.7.2.dist-info}/WHEEL +0 -0
  22. {agentex_sdk-0.7.1.dist-info → agentex_sdk-0.7.2.dist-info}/entry_points.txt +0 -0
  23. {agentex_sdk-0.7.1.dist-info → agentex_sdk-0.7.2.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,169 @@
1
+ import json
2
+ import os
3
+
4
+ from temporalio import workflow
5
+
6
+ from agentex.lib import adk
7
+ from agentex.lib.types.acp import CreateTaskParams, SendEventParams
8
+ from agentex.lib.core.temporal.workflows.workflow import BaseWorkflow
9
+ from agentex.lib.core.temporal.types.workflow import SignalName
10
+ from agentex.lib.utils.logging import make_logger
11
+ from agentex.types.text_content import TextContent
12
+ from agentex.lib.environment_variables import EnvironmentVariables
13
+ from agents import Agent, Runner
14
+ from agentex.lib.core.temporal.plugins.openai_agents.hooks.hooks import TemporalStreamingHooks
15
+ from pydantic import BaseModel
16
+ from typing import List, Dict, Any
17
+ from temporalio.contrib import openai_agents
18
+ from project.activities import get_weather
19
+ from agentex.lib.core.tracing.tracing_processor_manager import (
20
+ add_tracing_processor_config,
21
+ )
22
+ from agentex.lib.types.tracing import SGPTracingProcessorConfig
23
+ from datetime import timedelta
24
+
25
+
26
+ environment_variables = EnvironmentVariables.refresh()
27
+
28
+ if environment_variables.WORKFLOW_NAME is None:
29
+ raise ValueError("Environment variable WORKFLOW_NAME is not set")
30
+
31
+ if environment_variables.AGENT_NAME is None:
32
+ raise ValueError("Environment variable AGENT_NAME is not set")
33
+
34
+ logger = make_logger(__name__)
35
+
36
+ # Setup tracing for SGP (Scale GenAI Platform)
37
+ # This enables visibility into your agent's execution in the SGP dashboard
38
+ add_tracing_processor_config(
39
+ SGPTracingProcessorConfig(
40
+ sgp_api_key=os.environ.get("SGP_API_KEY", ""),
41
+ sgp_account_id=os.environ.get("SGP_ACCOUNT_ID", ""),
42
+ )
43
+ )
44
+
45
+
46
+ class StateModel(BaseModel):
47
+ """
48
+ State model for preserving conversation history across turns.
49
+
50
+ This allows the agent to maintain context throughout the conversation,
51
+ making it possible to reference previous messages and build on the discussion.
52
+
53
+ Attributes:
54
+ input_list: The conversation history in OpenAI message format.
55
+ turn_number: Counter for tracking conversation turns (useful for tracing).
56
+ """
57
+
58
+ input_list: List[Dict[str, Any]]
59
+ turn_number: int
60
+
61
+
62
+ class TurnInput(BaseModel):
63
+ """Input model for tracing spans."""
64
+ input_list: List[Dict[str, Any]]
65
+
66
+
67
+ class TurnOutput(BaseModel):
68
+ """Output model for tracing spans."""
69
+ final_output: Any
70
+
71
+
72
+ @workflow.defn(name=environment_variables.WORKFLOW_NAME)
73
+ class {{ workflow_class }}(BaseWorkflow):
74
+ """
75
+ Workflow for {{ agent_name }} agent using OpenAI Agents SDK.
76
+
77
+ This workflow:
78
+ - Maintains conversation state across turns
79
+ - Creates tracing spans for each turn
80
+ - Runs an OpenAI agent with tools (activities)
81
+ - Streams responses back to the client
82
+ """
83
+
84
+ def __init__(self):
85
+ super().__init__(display_name=environment_variables.AGENT_NAME)
86
+ self._complete_task = False
87
+ self._state: StateModel = StateModel(input_list=[], turn_number=0)
88
+ self._task_id = None
89
+ self._trace_id = None
90
+ self._parent_span_id = None
91
+
92
+ @workflow.signal(name=SignalName.RECEIVE_EVENT)
93
+ async def on_task_event_send(self, params: SendEventParams) -> None:
94
+ logger.info(f"Received task message instruction: {params}")
95
+
96
+ # Increment turn number for tracing
97
+ self._state.turn_number += 1
98
+
99
+ self._task_id = params.task.id
100
+ self._trace_id = params.task.id
101
+ self._parent_span_id = params.task.id
102
+
103
+ # Add the user message to conversation history
104
+ self._state.input_list.append({"role": "user", "content": params.event.content.content})
105
+
106
+ # Echo back the client's message to show it in the UI
107
+ await adk.messages.create(task_id=params.task.id, content=params.event.content)
108
+
109
+ temporal_streaming_hooks = TemporalStreamingHooks(task_id=params.task.id)
110
+
111
+ # Create a span to track this turn of the conversation
112
+ turn_input = TurnInput(
113
+ input_list=self._state.input_list,
114
+ )
115
+ async with adk.tracing.span(
116
+ trace_id=params.task.id,
117
+ name=f"Turn {self._state.turn_number}",
118
+ input=turn_input.model_dump(),
119
+ ) as span:
120
+ self._parent_span_id = span.id if span else None
121
+
122
+ # Create the OpenAI agent with tools
123
+ # Add your activities as tools using activity_as_tool()
124
+ agent = Agent(
125
+ name="{{ agent_name }}",
126
+ instructions="You are a helpful assistant. Use your tools to help the user.",
127
+ model="gpt-4o-mini",
128
+ tools=[
129
+ openai_agents.workflow.activity_as_tool(
130
+ get_weather,
131
+ start_to_close_timeout=timedelta(minutes=5),
132
+ ),
133
+ # Add more tools here as you create new activities:
134
+ # openai_agents.workflow.activity_as_tool(
135
+ # your_new_activity,
136
+ # start_to_close_timeout=timedelta(minutes=5),
137
+ # ),
138
+ ],
139
+ )
140
+
141
+ # Run the agent with hooks to enable streaming responses
142
+ result = await Runner.run(agent, self._state.input_list, hooks=temporal_streaming_hooks)
143
+
144
+ # Update the state with the assistant's response for the next turn
145
+ self._state.input_list = result.to_input_list() # type: ignore[assignment]
146
+
147
+ # Set span output for tracing - include full state
148
+ if span:
149
+ turn_output = TurnOutput(final_output=result.final_output)
150
+ span.output = turn_output.model_dump()
151
+
152
+ @workflow.run
153
+ async def on_task_create(self, params: CreateTaskParams) -> str:
154
+ logger.info(f"Received task create params: {params}")
155
+
156
+ # Acknowledge that the task has been created
157
+ await adk.messages.create(
158
+ task_id=params.task.id,
159
+ content=TextContent(
160
+ author="agent",
161
+ content=f"Hello! I'm {{ agent_name }}, your AI assistant. How can I help you today?\n\nParams received:\n{json.dumps(params.params, indent=2)}",
162
+ ),
163
+ )
164
+
165
+ await workflow.wait_condition(
166
+ lambda: self._complete_task,
167
+ timeout=None,
168
+ )
169
+ return "Task completed"
@@ -0,0 +1,35 @@
1
+ [build-system]
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
+
5
+ [project]
6
+ name = "{{ project_name }}"
7
+ version = "0.1.0"
8
+ description = "{{ description }}"
9
+ requires-python = ">=3.12"
10
+ dependencies = [
11
+ "agentex-sdk",
12
+ "scale-gp",
13
+ "temporalio",
14
+ "openai-agents>=0.4.2",
15
+ ]
16
+
17
+ [project.optional-dependencies]
18
+ dev = [
19
+ "pytest",
20
+ "black",
21
+ "isort",
22
+ "flake8",
23
+ "debugpy>=1.8.15",
24
+ ]
25
+
26
+ [tool.hatch.build.targets.wheel]
27
+ packages = ["project"]
28
+
29
+ [tool.black]
30
+ line-length = 88
31
+ target-version = ['py312']
32
+
33
+ [tool.isort]
34
+ profile = "black"
35
+ line_length = 88
@@ -0,0 +1,4 @@
1
+ agentex-sdk
2
+ scale-gp
3
+ temporalio
4
+ openai-agents>=0.4.2
@@ -0,0 +1,147 @@
1
+ """
2
+ Sample tests for AgentEx ACP agent.
3
+
4
+ This test suite demonstrates how to test the main AgentEx API functions:
5
+ - Non-streaming event sending and polling
6
+ - Streaming event sending
7
+
8
+ To run these tests:
9
+ 1. Make sure the agent is running (via docker-compose or `agentex agents run`)
10
+ 2. Set the AGENTEX_API_BASE_URL environment variable if not using default
11
+ 3. Run: pytest test_agent.py -v
12
+
13
+ Configuration:
14
+ - AGENTEX_API_BASE_URL: Base URL for the AgentEx server (default: http://localhost:5003)
15
+ - AGENT_NAME: Name of the agent to test (default: {{ agent_name }})
16
+ """
17
+
18
+ import os
19
+ import uuid
20
+ import asyncio
21
+ import pytest
22
+ import pytest_asyncio
23
+ from agentex import AsyncAgentex
24
+ from agentex.types import TaskMessage
25
+ from agentex.types.agent_rpc_params import ParamsCreateTaskRequest
26
+ from agentex.types.text_content_param import TextContentParam
27
+ from test_utils.async_utils import (
28
+ poll_for_agent_response,
29
+ send_event_and_poll_yielding,
30
+ stream_agent_response,
31
+ validate_text_in_response,
32
+ poll_messages,
33
+ )
34
+
35
+
36
+ # Configuration from environment variables
37
+ AGENTEX_API_BASE_URL = os.environ.get("AGENTEX_API_BASE_URL", "http://localhost:5003")
38
+ AGENT_NAME = os.environ.get("AGENT_NAME", "{{ agent_name }}")
39
+
40
+
41
+ @pytest_asyncio.fixture
42
+ async def client():
43
+ """Create an AsyncAgentex client instance for testing."""
44
+ client = AsyncAgentex(base_url=AGENTEX_API_BASE_URL)
45
+ yield client
46
+ await client.close()
47
+
48
+
49
+ @pytest.fixture
50
+ def agent_name():
51
+ """Return the agent name for testing."""
52
+ return AGENT_NAME
53
+
54
+
55
+ @pytest_asyncio.fixture
56
+ async def agent_id(client, agent_name):
57
+ """Retrieve the agent ID based on the agent name."""
58
+ agents = await client.agents.list()
59
+ for agent in agents:
60
+ if agent.name == agent_name:
61
+ return agent.id
62
+ raise ValueError(f"Agent with name {agent_name} not found.")
63
+
64
+
65
+ class TestNonStreamingEvents:
66
+ """Test non-streaming event sending and polling."""
67
+
68
+ @pytest.mark.asyncio
69
+ async def test_send_event_and_poll(self, client: AsyncAgentex, _agent_name: str, agent_id: str):
70
+ """Test sending an event and polling for the response."""
71
+ # TODO: Create a task for this conversation
72
+ # task_response = await client.agents.create_task(agent_id, params=ParamsCreateTaskRequest(name=uuid.uuid1().hex))
73
+ # task = task_response.result
74
+ # assert task is not None
75
+
76
+ # TODO: Poll for the initial task creation message (if your agent sends one)
77
+ # async for message in poll_messages(
78
+ # client=client,
79
+ # task_id=task.id,
80
+ # timeout=30,
81
+ # sleep_interval=1.0,
82
+ # ):
83
+ # assert isinstance(message, TaskMessage)
84
+ # if message.content and message.content.type == "text" and message.content.author == "agent":
85
+ # # Check for your expected initial message
86
+ # assert "expected initial text" in message.content.content
87
+ # break
88
+
89
+ # TODO: Send an event and poll for response using the yielding helper function
90
+ # user_message = "Your test message here"
91
+ # async for message in send_event_and_poll_yielding(
92
+ # client=client,
93
+ # agent_id=agent_id,
94
+ # task_id=task.id,
95
+ # user_message=user_message,
96
+ # timeout=30,
97
+ # sleep_interval=1.0,
98
+ # ):
99
+ # assert isinstance(message, TaskMessage)
100
+ # if message.content and message.content.type == "text" and message.content.author == "agent":
101
+ # # Check for your expected response
102
+ # assert "expected response text" in message.content.content
103
+ # break
104
+ pass
105
+
106
+
107
+ class TestStreamingEvents:
108
+ """Test streaming event sending."""
109
+
110
+ @pytest.mark.asyncio
111
+ async def test_send_event_and_stream(self, client: AsyncAgentex, _agent_name: str, agent_id: str):
112
+ """Test sending an event and streaming the response."""
113
+ # TODO: Create a task for this conversation
114
+ # task_response = await client.agents.create_task(agent_id, params=ParamsCreateTaskRequest(name=uuid.uuid1().hex))
115
+ # task = task_response.result
116
+ # assert task is not None
117
+
118
+ # user_message = "Your test message here"
119
+
120
+ # # Collect events from stream
121
+ # all_events = []
122
+
123
+ # async def collect_stream_events():
124
+ # async for event in stream_agent_response(
125
+ # client=client,
126
+ # task_id=task.id,
127
+ # timeout=30,
128
+ # ):
129
+ # all_events.append(event)
130
+
131
+ # # Start streaming task
132
+ # stream_task = asyncio.create_task(collect_stream_events())
133
+
134
+ # # Send the event
135
+ # event_content = TextContentParam(type="text", author="user", content=user_message)
136
+ # await client.agents.send_event(agent_id=agent_id, params={"task_id": task.id, "content": event_content})
137
+
138
+ # # Wait for streaming to complete
139
+ # await stream_task
140
+
141
+ # # TODO: Add your validation here
142
+ # assert len(all_events) > 0, "No events received in streaming response"
143
+ pass
144
+
145
+
146
+ if __name__ == "__main__":
147
+ pytest.main([__file__, "-v"])
agentex/types/__init__.py CHANGED
@@ -63,8 +63,8 @@ from .task_message_content_param import TaskMessageContentParam as TaskMessageCo
63
63
  from .tool_request_content_param import ToolRequestContentParam as ToolRequestContentParam
64
64
  from .tool_response_content_param import ToolResponseContentParam as ToolResponseContentParam
65
65
  from .task_retrieve_by_name_params import TaskRetrieveByNameParams as TaskRetrieveByNameParams
66
- from .deployment_history_list_params import DeploymentHistoryListParams as DeploymentHistoryListParams
67
66
  from .message_list_paginated_params import MessageListPaginatedParams as MessageListPaginatedParams
67
+ from .deployment_history_list_params import DeploymentHistoryListParams as DeploymentHistoryListParams
68
68
  from .task_retrieve_by_name_response import TaskRetrieveByNameResponse as TaskRetrieveByNameResponse
69
- from .deployment_history_list_response import DeploymentHistoryListResponse as DeploymentHistoryListResponse
70
69
  from .message_list_paginated_response import MessageListPaginatedResponse as MessageListPaginatedResponse
70
+ from .deployment_history_list_response import DeploymentHistoryListResponse as DeploymentHistoryListResponse
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: agentex-sdk
3
- Version: 0.7.1
3
+ Version: 0.7.2
4
4
  Summary: The official Python library for the agentex API
5
5
  Project-URL: Homepage, https://github.com/scaleapi/scale-agentex-python
6
6
  Project-URL: Repository, https://github.com/scaleapi/scale-agentex-python
@@ -11,7 +11,7 @@ agentex/_resource.py,sha256=S1t7wmR5WUvoDIhZjo_x-E7uoTJBynJ3d8tPJMQYdjw,1106
11
11
  agentex/_response.py,sha256=Tb9zazsnemO2rTxWtBjAD5WBqlhli5ZaXGbiKgdu5DE,28794
12
12
  agentex/_streaming.py,sha256=aOvLOte7kaclPGm-D0iNdM3uRcWrZ-T2B8t9BDNmpuA,10225
13
13
  agentex/_types.py,sha256=00q2kgDxUPJC16dU-YIUeOFsN5MzNW0zjzVXMlBYGV0,7296
14
- agentex/_version.py,sha256=t63Lp-Z3w7p36sPMg2u_dX0Gm4PvvBY3HRChIRJXIgQ,159
14
+ agentex/_version.py,sha256=caLG6X6CsK6bHcI3GUgqs0h-eWS5M0XKW84P5cZtYPY,159
15
15
  agentex/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  agentex/_utils/__init__.py,sha256=7fch0GT9zpNnErbciSpUNa-SjTxxjY6kxHxKMOM4AGs,2305
17
17
  agentex/_utils/_compat.py,sha256=D8gtAvjJQrDWt9upS0XaG9Rr5l1QhiAx_I_1utT_tt0,1195
@@ -45,7 +45,7 @@ agentex/lib/adk/providers/_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQe
45
45
  agentex/lib/adk/providers/_modules/litellm.py,sha256=6eOdEpd1g9ZljQHXtIokjGymlFpnaw2g8ow11hldovo,9470
46
46
  agentex/lib/adk/providers/_modules/openai.py,sha256=rguTE4uGLodqr8zx5GRRtSkcWC9llNA1kUFKF0yhdK0,23679
47
47
  agentex/lib/adk/providers/_modules/sgp.py,sha256=x64axb0oVmVh5W8hwpnMMPqxad2HySf2DYHPxRNwjck,3208
48
- agentex/lib/adk/providers/_modules/sync_provider.py,sha256=9RQ_gMICiUN97bvnbVnVypiKoalCeiUiqonn3nKAjwU,26324
48
+ agentex/lib/adk/providers/_modules/sync_provider.py,sha256=Tekg78AUa27FTp2Yy9b0H0OIWswPYTz9dr35W8ATtvw,31384
49
49
  agentex/lib/adk/utils/__init__.py,sha256=7f6ayV0_fqyw5cwzVANNcZWGJZ-vrrYtZ0qi7KKBRFs,130
50
50
  agentex/lib/adk/utils/_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
51
  agentex/lib/adk/utils/_modules/client.py,sha256=UYSTThuZoX3nqF8iuRmRI8uPO00NrYgC_6BGX6HA7Js,1017
@@ -53,7 +53,7 @@ agentex/lib/adk/utils/_modules/templating.py,sha256=tSiJGoDrF-XkMEi4MB_wVH6nyKyh
53
53
  agentex/lib/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
54
  agentex/lib/cli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
55
  agentex/lib/cli/commands/agents.py,sha256=E6O7p3B3P4yX-oYWRtzfbEyI5Pws-yzFi-htYJ7B_kY,14079
56
- agentex/lib/cli/commands/init.py,sha256=u2FaPXJD-cJ2dYgdkqDCQezXJXV9-mPtp9_ygOGOsNA,14841
56
+ agentex/lib/cli/commands/init.py,sha256=CrKksw5l1w9hXSdDN6wPNgQlyE1k_kqHlA6QrOenqHM,15537
57
57
  agentex/lib/cli/commands/main.py,sha256=QWychw-Xq3nQ00BMypgOEF4w1WauNrgQ06PDardNP_8,1042
58
58
  agentex/lib/cli/commands/secrets.py,sha256=t4zvoyjOHmw-8qp6nsxdZCvqy43QXOl0MWXA3ooBO6Q,5640
59
59
  agentex/lib/cli/commands/tasks.py,sha256=fvZJjYI8Dh-6nbTVpRa2-VdF6A8D4w3Dmd4tMslSTPI,3741
@@ -103,6 +103,20 @@ agentex/lib/cli/templates/temporal/project/acp.py.j2,sha256=483kq_sfBP2bPvcciGVd
103
103
  agentex/lib/cli/templates/temporal/project/activities.py.j2,sha256=kRDCMs5YYY24K88WuoPBzSdLQdLILVlAbud0G5ULJvU,2304
104
104
  agentex/lib/cli/templates/temporal/project/run_worker.py.j2,sha256=_JeknhHcE77GwVdJAWRTdgREJQXGTVOI2HDfh4QNZSw,1065
105
105
  agentex/lib/cli/templates/temporal/project/workflow.py.j2,sha256=VPnHnzr09i5y68vCOIJ8wTrc8KVHoDp5WooQew0GiWg,3210
106
+ agentex/lib/cli/templates/temporal-openai-agents/.dockerignore.j2,sha256=hweGFxw5eDZYsb5EnRHpv27o9M1HF2PEWOxqsfBBcAE,320
107
+ agentex/lib/cli/templates/temporal-openai-agents/Dockerfile-uv.j2,sha256=g8zECsR9_byvlc8bPdbY4Lw97w9nlWb8edx5FPiJav0,1426
108
+ agentex/lib/cli/templates/temporal-openai-agents/Dockerfile.j2,sha256=N1Z73jb8pnxsjP9zbs-tSyNHO6usVzyOdtWorbR5gVY,1434
109
+ agentex/lib/cli/templates/temporal-openai-agents/README.md.j2,sha256=J2oohSuHeCNcaaAYhpjzxlYtYMOTxo0ywoL0_hZW7y4,5535
110
+ agentex/lib/cli/templates/temporal-openai-agents/dev.ipynb.j2,sha256=wWOZJuccKtrtN5-f44Ma8puQUNf-Q6geTPzI-QlioOA,3393
111
+ agentex/lib/cli/templates/temporal-openai-agents/environments.yaml.j2,sha256=zu7-nGRt_LF3qmWFxR_izTUOYQXuDZeypEVa03kVW10,2096
112
+ agentex/lib/cli/templates/temporal-openai-agents/manifest.yaml.j2,sha256=k1TVT6QmE25KEXyNxx7m58vCowsFq74naiRgKrbwaho,4604
113
+ agentex/lib/cli/templates/temporal-openai-agents/pyproject.toml.j2,sha256=FZXOaobtHdE_LOHUaM8utQ6G4yJhzhVRJq9aR-3iHIQ,576
114
+ agentex/lib/cli/templates/temporal-openai-agents/requirements.txt.j2,sha256=n6pteP39OzOALDokqOL7GanAPdzrD0hXuvOlNAOgZEU,53
115
+ agentex/lib/cli/templates/temporal-openai-agents/test_agent.py.j2,sha256=PAlGQC5p3CRQxZsa0QVb0EIHWanFKBOd4Xb5TNuVjzs,5186
116
+ agentex/lib/cli/templates/temporal-openai-agents/project/acp.py.j2,sha256=daC-xb9GpGi-LluxN0-FyVkexI_6qzkrwwHNeLVQbwE,3179
117
+ agentex/lib/cli/templates/temporal-openai-agents/project/activities.py.j2,sha256=fxdoocYW9Y98x8MWItcrRdtylMXhyE6-EYkNO4WkFu4,3325
118
+ agentex/lib/cli/templates/temporal-openai-agents/project/run_worker.py.j2,sha256=q7LyaVQM7lXmF-thA5DpTf8P6Jh7IQerx8DEgA_KmVY,2057
119
+ agentex/lib/cli/templates/temporal-openai-agents/project/workflow.py.j2,sha256=hOoxXyDLdSPZSCU_FYyMkLtJcmz7qHsFiFiX4E3DiaU,6215
106
120
  agentex/lib/cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
107
121
  agentex/lib/cli/utils/auth_utils.py,sha256=2CimSFs6pw2cwwc2SDTx5RYI7wcngzHYAqWimHCC-9o,1929
108
122
  agentex/lib/cli/utils/cli_utils.py,sha256=dB5NaL81VjDCyHkqM-Joi1t1aTWrHCQdXUAQQu3VrbY,446
@@ -264,7 +278,7 @@ agentex/resources/tracker.py,sha256=bxRuzI9ThHrZtJbZoctU9vodE1kxAqcdlwQVrcbQTb4,
264
278
  agentex/resources/messages/__init__.py,sha256=_J1eusFtr_k6zrAntJSuqx6LWEUBSTrV1OZZh7MaDPE,1015
265
279
  agentex/resources/messages/batch.py,sha256=bYDIf0ZF3-sTKnGfFmzFQUn8LMtMYoniY977J3zr8q8,9653
266
280
  agentex/resources/messages/messages.py,sha256=ae48_YXRBqPiwBkHavhZpJaFVhIL-MYng6Y8BUlnAYU,24756
267
- agentex/types/__init__.py,sha256=zmdABr-KEqbFkBIZIqWgeWI-C9bSqCfJ-sm2OzBQFB0,4725
281
+ agentex/types/__init__.py,sha256=8Hg4rMRoOY8k9Vl69Hr9bzb1U_tWNw9DNQtUarLXx18,4725
268
282
  agentex/types/acp_type.py,sha256=lEn_w4z-RIgyUVTQr8mm5l9OdFDQMDclbJU_lKa4Mi8,217
269
283
  agentex/types/agent.py,sha256=hwgmtylJYezzmGJbzbBQ7sn3oV2_bCZqgqlNq9WpZ0g,1318
270
284
  agentex/types/agent_list_params.py,sha256=s4heb3MQwMprmuol_smUDL2N0u-5WUbUCxt3J5Dqnag,515
@@ -337,8 +351,8 @@ agentex/types/messages/batch_update_params.py,sha256=Ug5CThbD49a8j4qucg04OdmVrp_
337
351
  agentex/types/messages/batch_update_response.py,sha256=TbSBe6SuPzjXXWSj-nRjT1JHGBooTshHQQDa1AixQA8,278
338
352
  agentex/types/shared/__init__.py,sha256=IKs-Qn5Yja0kFh1G1kDqYZo43qrOu1hSoxlPdN-85dI,149
339
353
  agentex/types/shared/delete_response.py,sha256=8qH3zvQXaOHYQSHyXi7UQxdR4miTzR7V9K4zXVsiUyk,215
340
- agentex_sdk-0.7.1.dist-info/METADATA,sha256=te0uU6OMYnh-QGBzUIHcL5izI4PS22QeLn8LbS87gqs,15553
341
- agentex_sdk-0.7.1.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
342
- agentex_sdk-0.7.1.dist-info/entry_points.txt,sha256=V7vJuMZdF0UlvgX6KiBN7XUvq_cxF5kplcYvc1QlFaQ,62
343
- agentex_sdk-0.7.1.dist-info/licenses/LICENSE,sha256=Q1AOx2FtRcMlyMgQJ9eVN2WKPq2mQ33lnB4tvWxabLA,11337
344
- agentex_sdk-0.7.1.dist-info/RECORD,,
354
+ agentex_sdk-0.7.2.dist-info/METADATA,sha256=_r2aCaHdObhJWE1_uUUYBoPpCV07rmCt6LumP5cnYGA,15553
355
+ agentex_sdk-0.7.2.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
356
+ agentex_sdk-0.7.2.dist-info/entry_points.txt,sha256=V7vJuMZdF0UlvgX6KiBN7XUvq_cxF5kplcYvc1QlFaQ,62
357
+ agentex_sdk-0.7.2.dist-info/licenses/LICENSE,sha256=Q1AOx2FtRcMlyMgQJ9eVN2WKPq2mQ33lnB4tvWxabLA,11337
358
+ agentex_sdk-0.7.2.dist-info/RECORD,,