agentex-sdk 0.2.3__py3-none-any.whl → 0.2.5__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/_modules/acp.py +2 -1
- agentex/lib/adk/_modules/agent_task_tracker.py +2 -1
- agentex/lib/adk/_modules/agents.py +2 -1
- agentex/lib/adk/_modules/events.py +2 -1
- agentex/lib/adk/_modules/messages.py +2 -1
- agentex/lib/adk/_modules/state.py +2 -1
- agentex/lib/adk/_modules/streaming.py +2 -1
- agentex/lib/adk/_modules/tasks.py +2 -1
- agentex/lib/adk/_modules/tracing.py +2 -1
- agentex/lib/adk/utils/_modules/client.py +43 -0
- agentex/lib/cli/commands/agents.py +3 -3
- agentex/lib/cli/handlers/agent_handlers.py +1 -1
- agentex/lib/cli/handlers/cleanup_handlers.py +9 -15
- agentex/lib/cli/handlers/deploy_handlers.py +28 -4
- agentex/lib/cli/handlers/run_handlers.py +19 -93
- agentex/lib/cli/templates/sync/project/acp.py.j2 +15 -64
- agentex/lib/cli/utils/path_utils.py +143 -0
- agentex/lib/sdk/fastacp/base/base_acp_server.py +11 -1
- agentex/lib/types/converters.py +60 -0
- agentex/resources/agents.py +9 -8
- agentex/resources/messages/messages.py +4 -0
- agentex/resources/tasks.py +9 -10
- agentex/types/__init__.py +1 -2
- agentex/types/message_list_params.py +1 -0
- agentex/types/shared/__init__.py +3 -0
- agentex/types/shared/delete_response.py +11 -0
- {agentex_sdk-0.2.3.dist-info → agentex_sdk-0.2.5.dist-info}/METADATA +2 -2
- {agentex_sdk-0.2.3.dist-info → agentex_sdk-0.2.5.dist-info}/RECORD +32 -29
- agentex/types/task_delete_by_name_response.py +0 -8
- agentex/types/task_delete_response.py +0 -8
- {agentex_sdk-0.2.3.dist-info → agentex_sdk-0.2.5.dist-info}/WHEEL +0 -0
- {agentex_sdk-0.2.3.dist-info → agentex_sdk-0.2.5.dist-info}/entry_points.txt +0 -0
- {agentex_sdk-0.2.3.dist-info → agentex_sdk-0.2.5.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,143 @@
|
|
1
|
+
from pathlib import Path
|
2
|
+
from typing import Dict
|
3
|
+
|
4
|
+
from agentex.lib.sdk.config.agent_manifest import AgentManifest
|
5
|
+
from agentex.lib.utils.logging import make_logger
|
6
|
+
|
7
|
+
logger = make_logger(__name__)
|
8
|
+
|
9
|
+
|
10
|
+
class PathResolutionError(Exception):
|
11
|
+
"""An error occurred during path resolution"""
|
12
|
+
|
13
|
+
|
14
|
+
def resolve_and_validate_path(base_path: Path, configured_path: str, file_type: str) -> Path:
|
15
|
+
"""Resolve and validate a configured path"""
|
16
|
+
path_obj = Path(configured_path)
|
17
|
+
|
18
|
+
if path_obj.is_absolute():
|
19
|
+
# Absolute path - resolve to canonical form
|
20
|
+
resolved_path = path_obj.resolve()
|
21
|
+
else:
|
22
|
+
# Relative path - resolve relative to manifest directory
|
23
|
+
resolved_path = (base_path / configured_path).resolve()
|
24
|
+
|
25
|
+
# Validate the file exists
|
26
|
+
if not resolved_path.exists():
|
27
|
+
raise PathResolutionError(
|
28
|
+
f"{file_type} file not found: {resolved_path}\n"
|
29
|
+
f" Configured path: {configured_path}\n"
|
30
|
+
f" Resolved from manifest: {base_path}"
|
31
|
+
)
|
32
|
+
|
33
|
+
# Validate it's actually a file
|
34
|
+
if not resolved_path.is_file():
|
35
|
+
raise PathResolutionError(f"{file_type} path is not a file: {resolved_path}")
|
36
|
+
|
37
|
+
return resolved_path
|
38
|
+
|
39
|
+
|
40
|
+
def validate_path_security(resolved_path: Path, manifest_dir: Path) -> None:
|
41
|
+
"""Basic security validation for resolved paths"""
|
42
|
+
try:
|
43
|
+
# Ensure the resolved path is accessible
|
44
|
+
resolved_path.resolve()
|
45
|
+
|
46
|
+
# Optional: Add warnings for paths that go too far up
|
47
|
+
try:
|
48
|
+
# Check if path goes more than 3 levels up from manifest
|
49
|
+
relative_to_manifest = resolved_path.relative_to(manifest_dir.parent.parent.parent)
|
50
|
+
if str(relative_to_manifest).startswith(".."):
|
51
|
+
logger.warning(
|
52
|
+
f"Path goes significantly outside project structure: {resolved_path}"
|
53
|
+
)
|
54
|
+
except ValueError:
|
55
|
+
# Path is outside the tree - that's okay, just log it
|
56
|
+
logger.info(f"Using path outside manifest directory tree: {resolved_path}")
|
57
|
+
|
58
|
+
except Exception as e:
|
59
|
+
raise PathResolutionError(f"Path resolution failed: {resolved_path} - {str(e)}") from e
|
60
|
+
|
61
|
+
|
62
|
+
def get_file_paths(manifest: AgentManifest, manifest_path: str) -> Dict[str, Path | None]:
|
63
|
+
"""Get resolved file paths from manifest configuration"""
|
64
|
+
manifest_dir = Path(manifest_path).parent.resolve()
|
65
|
+
|
66
|
+
# Use configured paths or fall back to defaults for backward compatibility
|
67
|
+
if manifest.local_development and manifest.local_development.paths:
|
68
|
+
paths_config = manifest.local_development.paths
|
69
|
+
|
70
|
+
# Resolve ACP path
|
71
|
+
acp_path = resolve_and_validate_path(manifest_dir, paths_config.acp, "ACP server")
|
72
|
+
validate_path_security(acp_path, manifest_dir)
|
73
|
+
|
74
|
+
# Resolve worker path if specified
|
75
|
+
worker_path = None
|
76
|
+
if paths_config.worker:
|
77
|
+
worker_path = resolve_and_validate_path(
|
78
|
+
manifest_dir, paths_config.worker, "Temporal worker"
|
79
|
+
)
|
80
|
+
validate_path_security(worker_path, manifest_dir)
|
81
|
+
else:
|
82
|
+
# Backward compatibility: use old hardcoded structure
|
83
|
+
project_dir = manifest_dir / "project"
|
84
|
+
acp_path = (project_dir / "acp.py").resolve()
|
85
|
+
worker_path = (project_dir / "run_worker.py").resolve() if manifest.agent.is_temporal_agent() else None
|
86
|
+
|
87
|
+
# Validate backward compatibility paths
|
88
|
+
if not acp_path.exists():
|
89
|
+
raise PathResolutionError(f"ACP file not found: {acp_path}")
|
90
|
+
|
91
|
+
if worker_path and not worker_path.exists():
|
92
|
+
raise PathResolutionError(f"Worker file not found: {worker_path}")
|
93
|
+
|
94
|
+
return {
|
95
|
+
"acp": acp_path,
|
96
|
+
"worker": worker_path,
|
97
|
+
"acp_dir": acp_path.parent,
|
98
|
+
"worker_dir": worker_path.parent if worker_path else None,
|
99
|
+
}
|
100
|
+
|
101
|
+
|
102
|
+
def calculate_uvicorn_target_for_local(acp_path: Path, manifest_dir: Path) -> str:
|
103
|
+
"""Calculate the uvicorn target path for local development"""
|
104
|
+
# Ensure both paths are resolved to canonical form for accurate comparison
|
105
|
+
acp_resolved = acp_path.resolve()
|
106
|
+
manifest_resolved = manifest_dir.resolve()
|
107
|
+
|
108
|
+
try:
|
109
|
+
# Try to use path relative to manifest directory
|
110
|
+
acp_relative = acp_resolved.relative_to(manifest_resolved)
|
111
|
+
# Convert to module notation: project/acp.py -> project.acp
|
112
|
+
module_path = str(acp_relative.with_suffix('')) # Remove .py extension
|
113
|
+
module_path = module_path.replace('/', '.') # Convert slashes to dots
|
114
|
+
module_path = module_path.replace('\\', '.') # Handle Windows paths
|
115
|
+
return module_path
|
116
|
+
except ValueError:
|
117
|
+
# Path cannot be made relative - use absolute file path
|
118
|
+
logger.warning(f"ACP file {acp_resolved} cannot be made relative to manifest directory {manifest_resolved}, using absolute file path")
|
119
|
+
return str(acp_resolved)
|
120
|
+
|
121
|
+
|
122
|
+
def calculate_docker_acp_module(manifest: AgentManifest, manifest_path: str) -> str:
|
123
|
+
"""Calculate the Python module path for the ACP file in the Docker container
|
124
|
+
|
125
|
+
This should return the same module notation as local development for consistency.
|
126
|
+
"""
|
127
|
+
# Use the same logic as local development
|
128
|
+
manifest_dir = Path(manifest_path).parent
|
129
|
+
|
130
|
+
# Get the configured ACP path (could be relative or absolute)
|
131
|
+
if manifest.local_development and manifest.local_development.paths:
|
132
|
+
acp_config_path = manifest.local_development.paths.acp
|
133
|
+
else:
|
134
|
+
acp_config_path = "project/acp.py" # Default
|
135
|
+
|
136
|
+
# Resolve to actual file path
|
137
|
+
acp_path = resolve_and_validate_path(manifest_dir, acp_config_path, "ACP")
|
138
|
+
|
139
|
+
# Use the same module calculation as local development
|
140
|
+
return calculate_uvicorn_target_for_local(acp_path, manifest_dir)
|
141
|
+
|
142
|
+
|
143
|
+
|
@@ -2,18 +2,20 @@ import asyncio
|
|
2
2
|
import base64
|
3
3
|
import inspect
|
4
4
|
import json
|
5
|
+
import os
|
5
6
|
from collections.abc import AsyncGenerator, Awaitable, Callable
|
6
7
|
from contextlib import asynccontextmanager
|
7
8
|
from typing import Any
|
8
9
|
|
9
10
|
import httpx
|
10
11
|
import uvicorn
|
12
|
+
from agentex.lib.adk.utils._modules.client import get_async_agentex_client
|
11
13
|
from fastapi import FastAPI, Request
|
12
14
|
from fastapi.responses import StreamingResponse
|
13
15
|
from pydantic import TypeAdapter, ValidationError
|
14
16
|
|
15
17
|
# from agentex.lib.sdk.fastacp.types import BaseACPConfig
|
16
|
-
from agentex.lib.environment_variables import EnvironmentVariables
|
18
|
+
from agentex.lib.environment_variables import EnvironmentVariables, refreshed_environment_variables
|
17
19
|
from agentex.lib.types.acp import (
|
18
20
|
PARAMS_MODEL_BY_METHOD,
|
19
21
|
RPC_SYNC_METHODS,
|
@@ -390,6 +392,14 @@ class BaseACPServer(FastAPI):
|
|
390
392
|
registration_url, json=registration_data, timeout=30.0
|
391
393
|
)
|
392
394
|
if response.status_code == 200:
|
395
|
+
agent = response.json()
|
396
|
+
agent_id, agent_name = agent["id"], agent["name"]
|
397
|
+
|
398
|
+
os.environ["AGENT_ID"] = agent_id
|
399
|
+
os.environ["AGENT_NAME"] = agent_name
|
400
|
+
refreshed_environment_variables.AGENT_ID = agent_id
|
401
|
+
refreshed_environment_variables.AGENT_NAME = agent_name
|
402
|
+
get_async_agentex_client() # refresh cache
|
393
403
|
logger.info(
|
394
404
|
f"Successfully registered agent '{env_vars.AGENT_NAME}' with Agentex server with acp_url: {full_acp_url}. Registration data: {registration_data}"
|
395
405
|
)
|
@@ -0,0 +1,60 @@
|
|
1
|
+
from agentex.types.task_message import TaskMessage
|
2
|
+
from agentex.types.text_content import TextContent
|
3
|
+
from agentex.types.tool_request_content import ToolRequestContent
|
4
|
+
from agentex.types.tool_response_content import ToolResponseContent
|
5
|
+
import json
|
6
|
+
from agents import TResponseInputItem
|
7
|
+
|
8
|
+
|
9
|
+
def convert_task_messages_to_oai_agents_inputs(
|
10
|
+
task_messages: list[TaskMessage],
|
11
|
+
) -> list[TResponseInputItem]:
|
12
|
+
"""
|
13
|
+
Convert a list of TaskMessages to a list of OpenAI Agents SDK inputs (TResponseInputItem).
|
14
|
+
|
15
|
+
Args:
|
16
|
+
task_messages: The list of TaskMessages to convert.
|
17
|
+
|
18
|
+
Returns:
|
19
|
+
A list of OpenAI Agents SDK inputs (TResponseInputItem).
|
20
|
+
"""
|
21
|
+
converted_messages = []
|
22
|
+
for task_message in task_messages:
|
23
|
+
task_message_content = task_message.content
|
24
|
+
if isinstance(task_message_content, TextContent):
|
25
|
+
converted_messages.append(
|
26
|
+
{
|
27
|
+
"role": (
|
28
|
+
"user" if task_message_content.author == "user" else "assistant"
|
29
|
+
),
|
30
|
+
"content": task_message_content.content,
|
31
|
+
}
|
32
|
+
)
|
33
|
+
elif isinstance(task_message_content, ToolRequestContent):
|
34
|
+
converted_messages.append(
|
35
|
+
{
|
36
|
+
"type": "function_call",
|
37
|
+
"call_id": task_message_content.tool_call_id,
|
38
|
+
"name": task_message_content.name,
|
39
|
+
"arguments": json.dumps(task_message_content.arguments),
|
40
|
+
}
|
41
|
+
)
|
42
|
+
elif isinstance(task_message_content, ToolResponseContent):
|
43
|
+
content_str = (
|
44
|
+
task_message_content.content
|
45
|
+
if isinstance(task_message_content.content, str)
|
46
|
+
else json.dumps(task_message_content.content)
|
47
|
+
)
|
48
|
+
converted_messages.append(
|
49
|
+
{
|
50
|
+
"type": "function_call_output",
|
51
|
+
"call_id": task_message_content.tool_call_id,
|
52
|
+
"output": content_str,
|
53
|
+
}
|
54
|
+
)
|
55
|
+
else:
|
56
|
+
raise ValueError(
|
57
|
+
f"Unsupported content type for converting TaskMessage to OpenAI Agents SDK input: {type(task_message.content)}"
|
58
|
+
)
|
59
|
+
|
60
|
+
return converted_messages
|
agentex/resources/agents.py
CHANGED
@@ -23,6 +23,7 @@ from ..types.agent import Agent
|
|
23
23
|
from .._base_client import make_request_options
|
24
24
|
from ..types.agent_rpc_response import AgentRpcResponse, CancelTaskResponse, CreateTaskResponse, SendEventResponse, SendMessageResponse, SendMessageStreamResponse
|
25
25
|
from ..types.agent_list_response import AgentListResponse
|
26
|
+
from ..types.shared.delete_response import DeleteResponse
|
26
27
|
|
27
28
|
__all__ = ["AgentsResource", "AsyncAgentsResource"]
|
28
29
|
|
@@ -127,7 +128,7 @@ class AgentsResource(SyncAPIResource):
|
|
127
128
|
extra_query: Query | None = None,
|
128
129
|
extra_body: Body | None = None,
|
129
130
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
130
|
-
) ->
|
131
|
+
) -> DeleteResponse:
|
131
132
|
"""
|
132
133
|
Delete an agent by its unique ID.
|
133
134
|
|
@@ -147,7 +148,7 @@ class AgentsResource(SyncAPIResource):
|
|
147
148
|
options=make_request_options(
|
148
149
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
149
150
|
),
|
150
|
-
cast_to=
|
151
|
+
cast_to=DeleteResponse,
|
151
152
|
)
|
152
153
|
|
153
154
|
def delete_by_name(
|
@@ -160,7 +161,7 @@ class AgentsResource(SyncAPIResource):
|
|
160
161
|
extra_query: Query | None = None,
|
161
162
|
extra_body: Body | None = None,
|
162
163
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
163
|
-
) ->
|
164
|
+
) -> DeleteResponse:
|
164
165
|
"""
|
165
166
|
Delete an agent by its unique name.
|
166
167
|
|
@@ -180,7 +181,7 @@ class AgentsResource(SyncAPIResource):
|
|
180
181
|
options=make_request_options(
|
181
182
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
182
183
|
),
|
183
|
-
cast_to=
|
184
|
+
cast_to=DeleteResponse,
|
184
185
|
)
|
185
186
|
|
186
187
|
def retrieve_by_name(
|
@@ -667,7 +668,7 @@ class AsyncAgentsResource(AsyncAPIResource):
|
|
667
668
|
extra_query: Query | None = None,
|
668
669
|
extra_body: Body | None = None,
|
669
670
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
670
|
-
) ->
|
671
|
+
) -> DeleteResponse:
|
671
672
|
"""
|
672
673
|
Delete an agent by its unique ID.
|
673
674
|
|
@@ -687,7 +688,7 @@ class AsyncAgentsResource(AsyncAPIResource):
|
|
687
688
|
options=make_request_options(
|
688
689
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
689
690
|
),
|
690
|
-
cast_to=
|
691
|
+
cast_to=DeleteResponse,
|
691
692
|
)
|
692
693
|
|
693
694
|
async def delete_by_name(
|
@@ -700,7 +701,7 @@ class AsyncAgentsResource(AsyncAPIResource):
|
|
700
701
|
extra_query: Query | None = None,
|
701
702
|
extra_body: Body | None = None,
|
702
703
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
703
|
-
) ->
|
704
|
+
) -> DeleteResponse:
|
704
705
|
"""
|
705
706
|
Delete an agent by its unique name.
|
706
707
|
|
@@ -720,7 +721,7 @@ class AsyncAgentsResource(AsyncAPIResource):
|
|
720
721
|
options=make_request_options(
|
721
722
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
722
723
|
),
|
723
|
-
cast_to=
|
724
|
+
cast_to=DeleteResponse,
|
724
725
|
)
|
725
726
|
|
726
727
|
async def retrieve_by_name(
|
@@ -192,6 +192,8 @@ class MessagesResource(SyncAPIResource):
|
|
192
192
|
List Messages
|
193
193
|
|
194
194
|
Args:
|
195
|
+
task_id: The task ID
|
196
|
+
|
195
197
|
extra_headers: Send extra headers
|
196
198
|
|
197
199
|
extra_query: Add additional query parameters to the request
|
@@ -377,6 +379,8 @@ class AsyncMessagesResource(AsyncAPIResource):
|
|
377
379
|
List Messages
|
378
380
|
|
379
381
|
Args:
|
382
|
+
task_id: The task ID
|
383
|
+
|
380
384
|
extra_headers: Send extra headers
|
381
385
|
|
382
386
|
extra_query: Add additional query parameters to the request
|
agentex/resources/tasks.py
CHANGED
@@ -17,8 +17,7 @@ from .._streaming import Stream, AsyncStream
|
|
17
17
|
from ..types.task import Task
|
18
18
|
from .._base_client import make_request_options
|
19
19
|
from ..types.task_list_response import TaskListResponse
|
20
|
-
from ..types.
|
21
|
-
from ..types.task_delete_by_name_response import TaskDeleteByNameResponse
|
20
|
+
from ..types.shared.delete_response import DeleteResponse
|
22
21
|
|
23
22
|
__all__ = ["TasksResource", "AsyncTasksResource"]
|
24
23
|
|
@@ -105,7 +104,7 @@ class TasksResource(SyncAPIResource):
|
|
105
104
|
extra_query: Query | None = None,
|
106
105
|
extra_body: Body | None = None,
|
107
106
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
108
|
-
) ->
|
107
|
+
) -> DeleteResponse:
|
109
108
|
"""
|
110
109
|
Delete a task by its unique ID.
|
111
110
|
|
@@ -125,7 +124,7 @@ class TasksResource(SyncAPIResource):
|
|
125
124
|
options=make_request_options(
|
126
125
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
127
126
|
),
|
128
|
-
cast_to=
|
127
|
+
cast_to=DeleteResponse,
|
129
128
|
)
|
130
129
|
|
131
130
|
def delete_by_name(
|
@@ -138,7 +137,7 @@ class TasksResource(SyncAPIResource):
|
|
138
137
|
extra_query: Query | None = None,
|
139
138
|
extra_body: Body | None = None,
|
140
139
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
141
|
-
) ->
|
140
|
+
) -> DeleteResponse:
|
142
141
|
"""
|
143
142
|
Delete a task by its unique name.
|
144
143
|
|
@@ -158,7 +157,7 @@ class TasksResource(SyncAPIResource):
|
|
158
157
|
options=make_request_options(
|
159
158
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
160
159
|
),
|
161
|
-
cast_to=
|
160
|
+
cast_to=DeleteResponse,
|
162
161
|
)
|
163
162
|
|
164
163
|
def retrieve_by_name(
|
@@ -347,7 +346,7 @@ class AsyncTasksResource(AsyncAPIResource):
|
|
347
346
|
extra_query: Query | None = None,
|
348
347
|
extra_body: Body | None = None,
|
349
348
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
350
|
-
) ->
|
349
|
+
) -> DeleteResponse:
|
351
350
|
"""
|
352
351
|
Delete a task by its unique ID.
|
353
352
|
|
@@ -367,7 +366,7 @@ class AsyncTasksResource(AsyncAPIResource):
|
|
367
366
|
options=make_request_options(
|
368
367
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
369
368
|
),
|
370
|
-
cast_to=
|
369
|
+
cast_to=DeleteResponse,
|
371
370
|
)
|
372
371
|
|
373
372
|
async def delete_by_name(
|
@@ -380,7 +379,7 @@ class AsyncTasksResource(AsyncAPIResource):
|
|
380
379
|
extra_query: Query | None = None,
|
381
380
|
extra_body: Body | None = None,
|
382
381
|
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
|
383
|
-
) ->
|
382
|
+
) -> DeleteResponse:
|
384
383
|
"""
|
385
384
|
Delete a task by its unique name.
|
386
385
|
|
@@ -400,7 +399,7 @@ class AsyncTasksResource(AsyncAPIResource):
|
|
400
399
|
options=make_request_options(
|
401
400
|
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
|
402
401
|
),
|
403
|
-
cast_to=
|
402
|
+
cast_to=DeleteResponse,
|
404
403
|
)
|
405
404
|
|
406
405
|
async def retrieve_by_name(
|
agentex/types/__init__.py
CHANGED
@@ -7,6 +7,7 @@ from .task import Task as Task
|
|
7
7
|
from .agent import Agent as Agent
|
8
8
|
from .event import Event as Event
|
9
9
|
from .state import State as State
|
10
|
+
from .shared import DeleteResponse as DeleteResponse
|
10
11
|
from .acp_type import AcpType as AcpType
|
11
12
|
from .data_delta import DataDelta as DataDelta
|
12
13
|
from .text_delta import TextDelta as TextDelta
|
@@ -40,7 +41,6 @@ from .state_update_params import StateUpdateParams as StateUpdateParams
|
|
40
41
|
from .task_message_update import TaskMessageUpdate as TaskMessageUpdate
|
41
42
|
from .tool_response_delta import ToolResponseDelta as ToolResponseDelta
|
42
43
|
from .tracker_list_params import TrackerListParams as TrackerListParams
|
43
|
-
from .task_delete_response import TaskDeleteResponse as TaskDeleteResponse
|
44
44
|
from .task_message_content import TaskMessageContent as TaskMessageContent
|
45
45
|
from .tool_request_content import ToolRequestContent as ToolRequestContent
|
46
46
|
from .message_create_params import MessageCreateParams as MessageCreateParams
|
@@ -53,4 +53,3 @@ from .agent_rpc_by_name_params import AgentRpcByNameParams as AgentRpcByNamePara
|
|
53
53
|
from .task_message_content_param import TaskMessageContentParam as TaskMessageContentParam
|
54
54
|
from .tool_request_content_param import ToolRequestContentParam as ToolRequestContentParam
|
55
55
|
from .tool_response_content_param import ToolResponseContentParam as ToolResponseContentParam
|
56
|
-
from .task_delete_by_name_response import TaskDeleteByNameResponse as TaskDeleteByNameResponse
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: agentex-sdk
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.5
|
4
4
|
Summary: The official Python library for the agentex API
|
5
5
|
Project-URL: Homepage, https://github.com/scaleapi/agentex-python
|
6
6
|
Project-URL: Repository, https://github.com/scaleapi/agentex-python
|
@@ -31,7 +31,7 @@ Requires-Dist: jsonschema<5,>=4.23.0
|
|
31
31
|
Requires-Dist: kubernetes<29.0.0,>=25.0.0
|
32
32
|
Requires-Dist: litellm<2,>=1.66.0
|
33
33
|
Requires-Dist: mcp[cli]>=1.4.1
|
34
|
-
Requires-Dist: openai-agents
|
34
|
+
Requires-Dist: openai-agents!=0.2.3,>=0.0.7
|
35
35
|
Requires-Dist: pydantic<3,>=2.0.0
|
36
36
|
Requires-Dist: pytest-asyncio>=1.0.0
|
37
37
|
Requires-Dist: pytest>=8.4.0
|
@@ -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=FNGJExRCF-vTRUZHFKUfoAWFhDGOB3XbioVCF37Jr7E,10104
|
13
13
|
agentex/_types.py,sha256=KyKYySGIfHPod2hho1fPxssk5NuVn8C4MeMTtA-lg80,6198
|
14
|
-
agentex/_version.py,sha256=
|
14
|
+
agentex/_version.py,sha256=fPT5ffTH4tk3Hr-8_tC-QuVMI2_qSnjmzLboSSdVt3k,159
|
15
15
|
agentex/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
16
|
agentex/_utils/__init__.py,sha256=PNZ_QJuzZEgyYXqkO1HVhGkj5IU9bglVUcw7H-Knjzw,2062
|
17
17
|
agentex/_utils/_logs.py,sha256=LUjFPc3fweSChBUmjhQD8uYmwQAmFMNDuVFKfjYBQfM,777
|
@@ -29,15 +29,15 @@ agentex/lib/environment_variables.py,sha256=FbJ-tm_thJs5Fv1q4-oY4CED4DNlwCeu3v4x
|
|
29
29
|
agentex/lib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
30
|
agentex/lib/adk/__init__.py,sha256=-PpVfEvYr_HD7TnxUWU8RCW2OnxfwpPxTW97dKTnqvI,1082
|
31
31
|
agentex/lib/adk/_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
32
|
-
agentex/lib/adk/_modules/acp.py,sha256=
|
33
|
-
agentex/lib/adk/_modules/agent_task_tracker.py,sha256=
|
34
|
-
agentex/lib/adk/_modules/agents.py,sha256=
|
35
|
-
agentex/lib/adk/_modules/events.py,sha256=
|
36
|
-
agentex/lib/adk/_modules/messages.py,sha256=
|
37
|
-
agentex/lib/adk/_modules/state.py,sha256=
|
38
|
-
agentex/lib/adk/_modules/streaming.py,sha256=
|
39
|
-
agentex/lib/adk/_modules/tasks.py,sha256=
|
40
|
-
agentex/lib/adk/_modules/tracing.py,sha256
|
32
|
+
agentex/lib/adk/_modules/acp.py,sha256=Km0YgWHqshIufMuoNMtuL_63SDquumU-7DdikJBpBjU,9021
|
33
|
+
agentex/lib/adk/_modules/agent_task_tracker.py,sha256=wiLcDh5zDfZvhaSnUJQMbC4IEeAqY9wjfIltkRZ6q18,7016
|
34
|
+
agentex/lib/adk/_modules/agents.py,sha256=Eh1X6zcBhmFIS7VRd7cdSYQhkqQPMlKztplPuxSC5_4,2782
|
35
|
+
agentex/lib/adk/_modules/events.py,sha256=WFahyafBFvFvGQ21zMXQtqT1q8my7aM8beYCMbcmo7o,5256
|
36
|
+
agentex/lib/adk/_modules/messages.py,sha256=6-OxYSuCiY-X9Vcq97naw4Lcf85W3H8zHNNsv0WnNJk,10630
|
37
|
+
agentex/lib/adk/_modules/state.py,sha256=8n52ensAq_ebH9gGMWtXFLZ1qqzBn7cbvT12DVBtmsg,10724
|
38
|
+
agentex/lib/adk/_modules/streaming.py,sha256=3xtuS5MqWuuDDpUmc4Y5aGET31pBCrZCWem-psvANAk,3089
|
39
|
+
agentex/lib/adk/_modules/tasks.py,sha256=iFrsIf2Qv52hCaIw4Xnz8CrXs9vwG1Cu8cTJI-SwSYk,4214
|
40
|
+
agentex/lib/adk/_modules/tracing.py,sha256=-D2yGPhvcA7V1JTA95DlrFwzBd-ihu_6R7zenv-URKU,7338
|
41
41
|
agentex/lib/adk/providers/__init__.py,sha256=KPWC8AYsl8lPgpFoRXlGwzozb-peKLAzV_DcTWXBsz4,306
|
42
42
|
agentex/lib/adk/providers/_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
43
43
|
agentex/lib/adk/providers/_modules/litellm.py,sha256=YUHZ_m0kL9wEG5pX9x4BeyioiDjOa2anCWk6uo6-vqQ,9393
|
@@ -45,20 +45,21 @@ agentex/lib/adk/providers/_modules/openai.py,sha256=h7G3y4Gd2wF3XuYEi_aQXORxZhtH
|
|
45
45
|
agentex/lib/adk/providers/_modules/sgp.py,sha256=Me5TeU7OPjPBVeEw7a-DQnYcJ3fbGi3liYbuW5CGiLE,3131
|
46
46
|
agentex/lib/adk/utils/__init__.py,sha256=7f6ayV0_fqyw5cwzVANNcZWGJZ-vrrYtZ0qi7KKBRFs,130
|
47
47
|
agentex/lib/adk/utils/_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
48
|
+
agentex/lib/adk/utils/_modules/client.py,sha256=2XrFTwB2y9fTTpSzmaXz8hzHR7VWf4F6cL_rCAwQLZo,1487
|
48
49
|
agentex/lib/adk/utils/_modules/templating.py,sha256=YPm2bY_iBv9jWf0lncRGUpBZyq_QHBCRlM-XbHjauRc,3502
|
49
50
|
agentex/lib/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
50
51
|
agentex/lib/cli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
51
|
-
agentex/lib/cli/commands/agents.py,sha256=
|
52
|
+
agentex/lib/cli/commands/agents.py,sha256=PJVkopMLQEg4lOQf-Dvjb_b0TL6qaWTH2dN6_cxRneo,11417
|
52
53
|
agentex/lib/cli/commands/init.py,sha256=JsfusiLTgPu5IAI0MVDR15qA6wx5R2ZowjUJ728GJyQ,8146
|
53
54
|
agentex/lib/cli/commands/main.py,sha256=aDn9xJIIQQD33v3caET_NX-8eBxoWC3QfZGMUgjeGN8,1093
|
54
55
|
agentex/lib/cli/commands/secrets.py,sha256=cVtsqyGGieBVM4dKkbJROmzR_NJRODFngcEbi1Nc92A,5604
|
55
56
|
agentex/lib/cli/commands/tasks.py,sha256=9ARR0VgM2ZZXSFDlMiA_E9RDL2V7Piipp8Fna_OBrKQ,3652
|
56
57
|
agentex/lib/cli/commands/uv.py,sha256=n6nk2F2gPUXrvWOljSN06Y5bOEnhaZH4rulproAJktA,3553
|
57
58
|
agentex/lib/cli/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
58
|
-
agentex/lib/cli/handlers/agent_handlers.py,sha256=
|
59
|
-
agentex/lib/cli/handlers/cleanup_handlers.py,sha256=
|
60
|
-
agentex/lib/cli/handlers/deploy_handlers.py,sha256=
|
61
|
-
agentex/lib/cli/handlers/run_handlers.py,sha256=
|
59
|
+
agentex/lib/cli/handlers/agent_handlers.py,sha256=ovhnQOa-lAi5g2J3BVutA0vbprsOFe0lt2qw-qIZah4,5470
|
60
|
+
agentex/lib/cli/handlers/cleanup_handlers.py,sha256=V1V0zeErOUGTgCQqjyUl6CWtzGjFW878uzFaLOQJEyQ,7073
|
61
|
+
agentex/lib/cli/handlers/deploy_handlers.py,sha256=Bj2a0zav7YVaaMM55o39k2-x2cl-DgPdISZXjzd7yPQ,14896
|
62
|
+
agentex/lib/cli/handlers/run_handlers.py,sha256=2DkaGN27nHcL5pZeoOVdlhttnft_jtVdmv_POgnRASE,13923
|
62
63
|
agentex/lib/cli/handlers/secret_handlers.py,sha256=VfAdAQovW9tG36Xgk_gGIGwTyFMxR3P6xc7fmAviNA8,24719
|
63
64
|
agentex/lib/cli/templates/default/.dockerignore.j2,sha256=hweGFxw5eDZYsb5EnRHpv27o9M1HF2PEWOxqsfBBcAE,320
|
64
65
|
agentex/lib/cli/templates/default/Dockerfile-uv.j2,sha256=tGJo_C4vwHYikV4QhGFtSiG6K7Nt4UDdJ71Gob_uTho,1109
|
@@ -81,7 +82,7 @@ agentex/lib/cli/templates/sync/manifest.yaml.j2,sha256=V497KXzvA76sHrgIJ5zRJptpI
|
|
81
82
|
agentex/lib/cli/templates/sync/pyproject.toml.j2,sha256=9cpTISM7rOoICWejV5GYMEwPn8RUmB6-E7csM1pmSFo,528
|
82
83
|
agentex/lib/cli/templates/sync/requirements.txt.j2,sha256=iTmO-z8qFkUa1jTctFCs0WYuq7Sqi6VNQAwATakh2fQ,94
|
83
84
|
agentex/lib/cli/templates/sync/deploy/example.yaml.j2,sha256=sHIEuhtruyCfGPgeLQ1ilCCnRH0HpsqhDdQT44UWUaU,1554
|
84
|
-
agentex/lib/cli/templates/sync/project/acp.py.j2,sha256=
|
85
|
+
agentex/lib/cli/templates/sync/project/acp.py.j2,sha256=X5RaE9iR4Dp-kPJL0r1QAe6ohfiOTcYizwtwGW2GzHg,1003
|
85
86
|
agentex/lib/cli/templates/temporal/.dockerignore.j2,sha256=hweGFxw5eDZYsb5EnRHpv27o9M1HF2PEWOxqsfBBcAE,320
|
86
87
|
agentex/lib/cli/templates/temporal/Dockerfile-uv.j2,sha256=bnvx-zba5DFjl7UC-TYt-Zi_UDJucjlNRCdkSqHgBiQ,1450
|
87
88
|
agentex/lib/cli/templates/temporal/Dockerfile.j2,sha256=pcszlprNTqKMpYEtA4XYlc3vWjq1b0IMQDrN1GxF7yI,1461
|
@@ -101,6 +102,7 @@ agentex/lib/cli/utils/credential_utils.py,sha256=EzI_Wdvr2lt9uf9sNML1RTkzqIv6Ljp
|
|
101
102
|
agentex/lib/cli/utils/exceptions.py,sha256=ZhQZzciroj4zeYlL0TWmoQ6oeLBcAowGhCGMP7Ac_lA,161
|
102
103
|
agentex/lib/cli/utils/kubectl_utils.py,sha256=ucI0z-Zn-sFwk84MKfCgfX9CLZxlLSx242W_0MsyYxU,4907
|
103
104
|
agentex/lib/cli/utils/kubernetes_secrets_utils.py,sha256=uKsUvKvHfRGvNxgRgOFW0MJ2RyA9QJJjPQ1QA-qcaZk,6978
|
105
|
+
agentex/lib/cli/utils/path_utils.py,sha256=WN5rZCdb9SIrtN-P6QqIQuaH54HgqQ3fUMUnaIYxT0I,5747
|
104
106
|
agentex/lib/core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
105
107
|
agentex/lib/core/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
106
108
|
agentex/lib/core/adapters/llm/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
@@ -176,7 +178,7 @@ agentex/lib/sdk/config/local_development_config.py,sha256=b1AZsOVo1RoHKbk8Nm5nC8
|
|
176
178
|
agentex/lib/sdk/config/project_config.py,sha256=CGH_r9KbnSFMj2CnBkZnfg41L2o0TeVNz6MwBDKPT_U,3642
|
177
179
|
agentex/lib/sdk/fastacp/__init__.py,sha256=UvAdexdnfb4z0F4a2sfXROFyh9EjH89kf3AxHPybzCM,75
|
178
180
|
agentex/lib/sdk/fastacp/fastacp.py,sha256=K4D7a9EiJfCgWp2hrE_TbpZBaF4Uc46MfndZK3F9mA0,3061
|
179
|
-
agentex/lib/sdk/fastacp/base/base_acp_server.py,sha256=
|
181
|
+
agentex/lib/sdk/fastacp/base/base_acp_server.py,sha256=mvNbY6-KAg1qaIYDfF9bm_fHTsDbvmmf69Z_b8NPa0k,17651
|
180
182
|
agentex/lib/sdk/fastacp/impl/agentic_base_acp.py,sha256=fWLX9_mxmX502EBXoymUz1Tu1vEppshS48-aOSpuvlM,2600
|
181
183
|
agentex/lib/sdk/fastacp/impl/sync_acp.py,sha256=8FEDfBxI31NoVLX9nyckQ8QwA0UV4svC3fhGKgXBIwk,3862
|
182
184
|
agentex/lib/sdk/fastacp/impl/temporal_acp.py,sha256=ZLqjzBBVrXJCXD2bFlrcDkFvpsXZp3thC2rTwZ6xNaY,3737
|
@@ -198,6 +200,7 @@ agentex/lib/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
|
|
198
200
|
agentex/lib/types/acp.py,sha256=lFuWZwlXy1TNUHGvCXmyPLPbt8ME_2lejdWwx8VcodY,2970
|
199
201
|
agentex/lib/types/agent_configs.py,sha256=3wRa2okimSzi2v8sJyMyrqRlcu_4sxes-_4smEK6fq8,2798
|
200
202
|
agentex/lib/types/agent_results.py,sha256=ev6WnPLfZRbhy2HnBmdIrZq1ExVeaweXoLRxYGspyWM,653
|
203
|
+
agentex/lib/types/converters.py,sha256=u6fLb0rBUDA6nF5hdbC8ms6H-Z21IQfLlIvYpau_P5g,2283
|
201
204
|
agentex/lib/types/credentials.py,sha256=xUyh0MiNgy1c-BSBGXqbAMgbFEqnglESK99SRbsCsZA,1442
|
202
205
|
agentex/lib/types/fastacp.py,sha256=nU4rT823Ckix7bFwvVXtPsk6el3U1E4TH-OEvMqIBr4,1304
|
203
206
|
agentex/lib/types/files.py,sha256=sNxiuR_oEo7Z0YMqjQShErvS3txWyobrZzc4QMMM61U,320
|
@@ -220,16 +223,16 @@ agentex/lib/utils/temporal.py,sha256=sXo8OPMMXiyrF7OSBCJBuN_ufyQOD2bLOXgDbVZoyds
|
|
220
223
|
agentex/lib/utils/dev_tools/__init__.py,sha256=oaHxw6ymfhNql-kzXHv3NWVHuqD4fHumasNXJG7kHTU,261
|
221
224
|
agentex/lib/utils/dev_tools/async_messages.py,sha256=-alUK1KFltcRb6xtRtIJIRJW9Sf1FwDRgaNPhOn-luw,18105
|
222
225
|
agentex/resources/__init__.py,sha256=74rMqWBzQ2dSrKQqsrd7-jskPws0O_ogkFltvZO3HoU,3265
|
223
|
-
agentex/resources/agents.py,sha256=
|
226
|
+
agentex/resources/agents.py,sha256=Iwt2jnBUgSynMdfxYjW7KV9o0nZjT7cgiSqS_Zd4jmU,46735
|
224
227
|
agentex/resources/events.py,sha256=Zc9JhUm3bq2VFnBAolC0M7KZernzj1AjZ_vj0ibP4GY,10412
|
225
228
|
agentex/resources/spans.py,sha256=wmcUs4XbXIF5rPeyU_f39c2RTbTLnkuh2LYogZEBD6s,20936
|
226
229
|
agentex/resources/states.py,sha256=O31A8--n7n0rHsng2e1oCUAzLNjQIxDUk7rq0IXfgGM,19262
|
227
|
-
agentex/resources/tasks.py,sha256=
|
230
|
+
agentex/resources/tasks.py,sha256=92jnjwHeGJ6sA7l0SuuKJKptTaIpk7N1pCxdlGr9OVg,23196
|
228
231
|
agentex/resources/tracker.py,sha256=YxSeiloMwIqrS9nY7SlHclauRA7142qrKw34xgwqYbA,14103
|
229
232
|
agentex/resources/messages/__init__.py,sha256=_J1eusFtr_k6zrAntJSuqx6LWEUBSTrV1OZZh7MaDPE,1015
|
230
233
|
agentex/resources/messages/batch.py,sha256=pegCmnjK_J0jek5ChX1pKpq5RmCucTYLbK69H6qGVS4,9629
|
231
|
-
agentex/resources/messages/messages.py,sha256=
|
232
|
-
agentex/types/__init__.py,sha256=
|
234
|
+
agentex/resources/messages/messages.py,sha256=fuFmmGNOjRJVzmYHcfP2trg0yii0n9MPPCpt7F8fDs4,17930
|
235
|
+
agentex/types/__init__.py,sha256=4urMNGYc6igsHctipe7CasICo7HGxq-SGAzqOSP_fdw,3451
|
233
236
|
agentex/types/acp_type.py,sha256=Fj-4SzmM6m95ck_ZXtNbcWggHiD9F49bxBLPbl1fxe4,208
|
234
237
|
agentex/types/agent.py,sha256=WZRc8VZtc-JIeNHw5FsVTSMrxlaJ5A0ABvHv3t_zA4s,792
|
235
238
|
agentex/types/agent_list_params.py,sha256=81IWnRZ2rLfHH7GB6VkXShYjb44DO0guG1znJcV3tuI,316
|
@@ -247,7 +250,7 @@ agentex/types/event_list_params.py,sha256=Rrz0yo2w3gMTNYe3HQS9YCX1VktE_aaktuHezx
|
|
247
250
|
agentex/types/event_list_response.py,sha256=rjUCkwS0pXnfqHEVPEKZdLIGJ14uXOrjatuOfR36s5s,254
|
248
251
|
agentex/types/message_author.py,sha256=_IIVLAcZsLTG_vQWFpjWuxLIaHrc6wkv3q7qu5gam0o,218
|
249
252
|
agentex/types/message_create_params.py,sha256=Vt7Hig0lI8qxWDpJ4JhjfjglSzptI2PjzbrOD1Qkmxk,502
|
250
|
-
agentex/types/message_list_params.py,sha256=
|
253
|
+
agentex/types/message_list_params.py,sha256=MGXLwUUBaaiG-rsGjui5dlJ0sxv1twkSugFoOLXcX0E,360
|
251
254
|
agentex/types/message_list_response.py,sha256=YYDf-57zLS-E1eX3EZxz7c6XCuBcRBws01_q2G7uk4Y,277
|
252
255
|
agentex/types/message_style.py,sha256=nuoXzoDyP3KAQsQeKHaiby1EMxeY-8TJjWr8eMMpQEE,219
|
253
256
|
agentex/types/message_update_params.py,sha256=_KpnJ56FNeoIcwodQmAgsweqH1YAeIgYVT2jo9ahUhY,502
|
@@ -262,8 +265,6 @@ agentex/types/state_list_params.py,sha256=jsBeE98mVvS-pk9iytNTVVSW6pz7OM4Zt-OxC2
|
|
262
265
|
agentex/types/state_list_response.py,sha256=3UyMRzP3zdEKo9hTkJdvBHjmv6II4KnwoZ8GvlzPCSI,254
|
263
266
|
agentex/types/state_update_params.py,sha256=TpCXMrYaT2MWeOPng9-RGvGX9vE61Te9r3CFRQzzIDg,377
|
264
267
|
agentex/types/task.py,sha256=Pgj5HSrThPJgFRKWXPgW3LRT9Jwgn9eR_CCnlbNznzU,543
|
265
|
-
agentex/types/task_delete_by_name_response.py,sha256=3kjX24vq7NkKSZ0uKsU-i2cPUu_05jb0InIaxS0ZmLg,245
|
266
|
-
agentex/types/task_delete_response.py,sha256=Pxq9Bak_NPudBQusbuQnAG6HihNCyA5ltKoqR5w3rPs,233
|
267
268
|
agentex/types/task_list_response.py,sha256=8Q-RIanLmUC9vOuDXoW5gjpZeE-HR6IrBugG7-cUAZQ,249
|
268
269
|
agentex/types/task_message.py,sha256=hoLAkiQJd1Fl7EjLof-vZq6zVnDw9SKmnV6V74Po58A,918
|
269
270
|
agentex/types/task_message_content.py,sha256=57ebp-65y52KOZ7usVJShArIdXqBhFo5eOn8uy4HM_c,575
|
@@ -287,8 +288,10 @@ agentex/types/messages/batch_create_params.py,sha256=trUV75ntEVnxYhd1FIWub6dHBaN
|
|
287
288
|
agentex/types/messages/batch_create_response.py,sha256=yaSLTw2MWWpHF23BGO1Xy9js38_7EIqHAuiLha8VSfc,278
|
288
289
|
agentex/types/messages/batch_update_params.py,sha256=Ug5CThbD49a8j4qucg04OdmVrp_gApgpw0hg6NLsR3g,433
|
289
290
|
agentex/types/messages/batch_update_response.py,sha256=TbSBe6SuPzjXXWSj-nRjT1JHGBooTshHQQDa1AixQA8,278
|
290
|
-
|
291
|
-
|
292
|
-
agentex_sdk-0.2.
|
293
|
-
agentex_sdk-0.2.
|
294
|
-
agentex_sdk-0.2.
|
291
|
+
agentex/types/shared/__init__.py,sha256=IKs-Qn5Yja0kFh1G1kDqYZo43qrOu1hSoxlPdN-85dI,149
|
292
|
+
agentex/types/shared/delete_response.py,sha256=8qH3zvQXaOHYQSHyXi7UQxdR4miTzR7V9K4zXVsiUyk,215
|
293
|
+
agentex_sdk-0.2.5.dist-info/METADATA,sha256=intnD9hPOyqlKmf-KxVVbIwUr2ew2l2WkC4X3sGcPew,14118
|
294
|
+
agentex_sdk-0.2.5.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
295
|
+
agentex_sdk-0.2.5.dist-info/entry_points.txt,sha256=V7vJuMZdF0UlvgX6KiBN7XUvq_cxF5kplcYvc1QlFaQ,62
|
296
|
+
agentex_sdk-0.2.5.dist-info/licenses/LICENSE,sha256=Q1AOx2FtRcMlyMgQJ9eVN2WKPq2mQ33lnB4tvWxabLA,11337
|
297
|
+
agentex_sdk-0.2.5.dist-info/RECORD,,
|