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.
- agentex/_version.py +1 -1
- agentex/lib/adk/providers/_modules/sync_provider.py +116 -15
- agentex/lib/cli/commands/init.py +16 -1
- agentex/lib/cli/templates/temporal-openai-agents/.dockerignore.j2 +43 -0
- agentex/lib/cli/templates/temporal-openai-agents/Dockerfile-uv.j2 +48 -0
- agentex/lib/cli/templates/temporal-openai-agents/Dockerfile.j2 +48 -0
- agentex/lib/cli/templates/temporal-openai-agents/README.md.j2 +224 -0
- agentex/lib/cli/templates/temporal-openai-agents/dev.ipynb.j2 +126 -0
- agentex/lib/cli/templates/temporal-openai-agents/environments.yaml.j2 +64 -0
- agentex/lib/cli/templates/temporal-openai-agents/manifest.yaml.j2 +140 -0
- agentex/lib/cli/templates/temporal-openai-agents/project/acp.py.j2 +80 -0
- agentex/lib/cli/templates/temporal-openai-agents/project/activities.py.j2 +116 -0
- agentex/lib/cli/templates/temporal-openai-agents/project/run_worker.py.j2 +56 -0
- agentex/lib/cli/templates/temporal-openai-agents/project/workflow.py.j2 +169 -0
- agentex/lib/cli/templates/temporal-openai-agents/pyproject.toml.j2 +35 -0
- agentex/lib/cli/templates/temporal-openai-agents/requirements.txt.j2 +4 -0
- agentex/lib/cli/templates/temporal-openai-agents/test_agent.py.j2 +147 -0
- agentex/types/__init__.py +2 -2
- {agentex_sdk-0.7.1.dist-info → agentex_sdk-0.7.2.dist-info}/METADATA +1 -1
- {agentex_sdk-0.7.1.dist-info → agentex_sdk-0.7.2.dist-info}/RECORD +23 -9
- {agentex_sdk-0.7.1.dist-info → agentex_sdk-0.7.2.dist-info}/WHEEL +0 -0
- {agentex_sdk-0.7.1.dist-info → agentex_sdk-0.7.2.dist-info}/entry_points.txt +0 -0
- {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,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.
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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.
|
|
341
|
-
agentex_sdk-0.7.
|
|
342
|
-
agentex_sdk-0.7.
|
|
343
|
-
agentex_sdk-0.7.
|
|
344
|
-
agentex_sdk-0.7.
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|