agentex-sdk 0.4.16__py3-none-any.whl → 0.4.18__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/_constants.py +1 -1
- agentex/_version.py +1 -1
- agentex/lib/cli/handlers/deploy_handlers.py +4 -2
- agentex/lib/core/clients/temporal/temporal_client.py +12 -5
- agentex/lib/core/clients/temporal/utils.py +42 -2
- agentex/lib/core/temporal/services/temporal_task_service.py +1 -0
- agentex/lib/core/temporal/workers/worker.py +21 -3
- agentex/lib/environment_variables.py +4 -0
- agentex/lib/sdk/fastacp/fastacp.py +23 -3
- agentex/lib/sdk/fastacp/impl/temporal_acp.py +7 -5
- agentex/lib/types/fastacp.py +12 -2
- agentex/lib/utils/registration.py +12 -1
- {agentex_sdk-0.4.16.dist-info → agentex_sdk-0.4.18.dist-info}/METADATA +1 -1
- {agentex_sdk-0.4.16.dist-info → agentex_sdk-0.4.18.dist-info}/RECORD +17 -17
- {agentex_sdk-0.4.16.dist-info → agentex_sdk-0.4.18.dist-info}/WHEEL +0 -0
- {agentex_sdk-0.4.16.dist-info → agentex_sdk-0.4.18.dist-info}/entry_points.txt +0 -0
- {agentex_sdk-0.4.16.dist-info → agentex_sdk-0.4.18.dist-info}/licenses/LICENSE +0 -0
agentex/_constants.py
CHANGED
@@ -7,7 +7,7 @@ OVERRIDE_CAST_TO_HEADER = "____stainless_override_cast_to"
|
|
7
7
|
|
8
8
|
# default timeout is 1 minute
|
9
9
|
DEFAULT_TIMEOUT = httpx.Timeout(timeout=300, connect=5.0)
|
10
|
-
DEFAULT_MAX_RETRIES =
|
10
|
+
DEFAULT_MAX_RETRIES = 2
|
11
11
|
DEFAULT_CONNECTION_LIMITS = httpx.Limits(max_connections=1000, max_keepalive_connections=1000)
|
12
12
|
|
13
13
|
INITIAL_RETRY_DELAY = 0.5
|
agentex/_version.py
CHANGED
@@ -260,8 +260,10 @@ def merge_deployment_configs(
|
|
260
260
|
helm_values["global"]["imagePullSecrets"] = pull_secrets
|
261
261
|
helm_values["imagePullSecrets"] = pull_secrets
|
262
262
|
|
263
|
-
# Add dynamic ACP command based on manifest configuration
|
264
|
-
|
263
|
+
# Add dynamic ACP command based on manifest configuration if command is not set in helm overrides
|
264
|
+
helm_overrides_command = agent_env_config and agent_env_config.helm_overrides and "command" in agent_env_config.helm_overrides
|
265
|
+
if not helm_overrides_command:
|
266
|
+
add_acp_command_to_helm_values(helm_values, manifest, manifest_path)
|
265
267
|
|
266
268
|
print("Deploying with the following helm values: ", helm_values)
|
267
269
|
return helm_values
|
@@ -71,11 +71,12 @@ DUPLICATE_POLICY_TO_ID_REUSE_POLICY = {
|
|
71
71
|
|
72
72
|
|
73
73
|
class TemporalClient:
|
74
|
-
def __init__(self, temporal_client: Client | None = None):
|
74
|
+
def __init__(self, temporal_client: Client | None = None, plugins: list[Any] = []):
|
75
75
|
self._client: Client = temporal_client
|
76
|
+
self._plugins = plugins
|
76
77
|
|
77
78
|
@classmethod
|
78
|
-
async def create(cls, temporal_address: str):
|
79
|
+
async def create(cls, temporal_address: str, plugins: list[Any] = []):
|
79
80
|
if temporal_address in [
|
80
81
|
"false",
|
81
82
|
"False",
|
@@ -88,8 +89,11 @@ class TemporalClient:
|
|
88
89
|
]:
|
89
90
|
_client = None
|
90
91
|
else:
|
91
|
-
_client = await get_temporal_client(
|
92
|
-
|
92
|
+
_client = await get_temporal_client(
|
93
|
+
temporal_address,
|
94
|
+
plugins=plugins
|
95
|
+
)
|
96
|
+
return cls(_client, plugins)
|
93
97
|
|
94
98
|
async def setup(self, temporal_address: str):
|
95
99
|
self._client = await self._get_temporal_client(
|
@@ -109,7 +113,10 @@ class TemporalClient:
|
|
109
113
|
]:
|
110
114
|
return None
|
111
115
|
else:
|
112
|
-
return await get_temporal_client(
|
116
|
+
return await get_temporal_client(
|
117
|
+
temporal_address,
|
118
|
+
plugins=self._plugins
|
119
|
+
)
|
113
120
|
|
114
121
|
async def start_workflow(
|
115
122
|
self,
|
@@ -1,4 +1,5 @@
|
|
1
|
-
from
|
1
|
+
from typing import Any
|
2
|
+
from temporalio.client import Client, Plugin as ClientPlugin
|
2
3
|
from temporalio.contrib.pydantic import pydantic_data_converter
|
3
4
|
from temporalio.runtime import OpenTelemetryConfig, Runtime, TelemetryConfig
|
4
5
|
|
@@ -38,12 +39,50 @@ from temporalio.runtime import OpenTelemetryConfig, Runtime, TelemetryConfig
|
|
38
39
|
# )
|
39
40
|
|
40
41
|
|
41
|
-
|
42
|
+
def validate_client_plugins(plugins: list[Any]) -> None:
|
43
|
+
"""
|
44
|
+
Validate that all items in the plugins list are valid Temporal client plugins.
|
45
|
+
|
46
|
+
Args:
|
47
|
+
plugins: List of plugins to validate
|
48
|
+
|
49
|
+
Raises:
|
50
|
+
TypeError: If any plugin is not a valid ClientPlugin instance
|
51
|
+
"""
|
52
|
+
for i, plugin in enumerate(plugins):
|
53
|
+
if not isinstance(plugin, ClientPlugin):
|
54
|
+
raise TypeError(
|
55
|
+
f"Plugin at index {i} must be an instance of temporalio.client.Plugin, "
|
56
|
+
f"got {type(plugin).__name__}. Note: WorkerPlugin is not valid for workflow clients."
|
57
|
+
)
|
58
|
+
|
59
|
+
|
60
|
+
async def get_temporal_client(
|
61
|
+
temporal_address: str,
|
62
|
+
metrics_url: str = None,
|
63
|
+
plugins: list[Any] = []
|
64
|
+
) -> Client:
|
65
|
+
"""
|
66
|
+
Create a Temporal client with plugin integration.
|
67
|
+
|
68
|
+
Args:
|
69
|
+
temporal_address: Temporal server address
|
70
|
+
metrics_url: Optional metrics endpoint URL
|
71
|
+
plugins: List of Temporal plugins to include
|
72
|
+
|
73
|
+
Returns:
|
74
|
+
Configured Temporal client
|
75
|
+
"""
|
76
|
+
# Validate plugins if any are provided
|
77
|
+
if plugins:
|
78
|
+
validate_client_plugins(plugins)
|
79
|
+
|
42
80
|
if not metrics_url:
|
43
81
|
client = await Client.connect(
|
44
82
|
target_host=temporal_address,
|
45
83
|
# data_converter=custom_data_converter,
|
46
84
|
data_converter=pydantic_data_converter,
|
85
|
+
plugins=plugins,
|
47
86
|
)
|
48
87
|
else:
|
49
88
|
runtime = Runtime(telemetry=TelemetryConfig(metrics=OpenTelemetryConfig(url=metrics_url)))
|
@@ -52,5 +91,6 @@ async def get_temporal_client(temporal_address: str, metrics_url: str = None) ->
|
|
52
91
|
# data_converter=custom_data_converter,
|
53
92
|
data_converter=pydantic_data_converter,
|
54
93
|
runtime=runtime,
|
94
|
+
plugins=plugins,
|
55
95
|
)
|
56
96
|
return client
|
@@ -7,7 +7,7 @@ from concurrent.futures import ThreadPoolExecutor
|
|
7
7
|
from typing import Any, overload
|
8
8
|
|
9
9
|
from aiohttp import web
|
10
|
-
from temporalio.client import Client
|
10
|
+
from temporalio.client import Client, Plugin as ClientPlugin
|
11
11
|
from temporalio.converter import (
|
12
12
|
AdvancedJSONEncoder,
|
13
13
|
CompositePayloadConverter,
|
@@ -19,6 +19,7 @@ from temporalio.converter import (
|
|
19
19
|
)
|
20
20
|
from temporalio.runtime import OpenTelemetryConfig, Runtime, TelemetryConfig
|
21
21
|
from temporalio.worker import (
|
22
|
+
Plugin as WorkerPlugin,
|
22
23
|
UnsandboxedWorkflowRunner,
|
23
24
|
Worker,
|
24
25
|
)
|
@@ -65,11 +66,25 @@ custom_data_converter = dataclasses.replace(
|
|
65
66
|
payload_converter_class=DateTimePayloadConverter,
|
66
67
|
)
|
67
68
|
|
69
|
+
def _validate_plugins(plugins: list) -> None:
|
70
|
+
"""Validate that all items in the plugins list are valid Temporal plugins."""
|
71
|
+
for i, plugin in enumerate(plugins):
|
72
|
+
if not isinstance(plugin, (ClientPlugin, WorkerPlugin)):
|
73
|
+
raise TypeError(
|
74
|
+
f"Plugin at index {i} must be an instance of temporalio.client.Plugin "
|
75
|
+
f"or temporalio.worker.Plugin, got {type(plugin).__name__}"
|
76
|
+
)
|
77
|
+
|
78
|
+
|
79
|
+
|
80
|
+
async def get_temporal_client(temporal_address: str, metrics_url: str = None, plugins: list = []) -> Client:
|
81
|
+
|
82
|
+
if plugins != []: # We don't need to validate the plugins if they are empty
|
83
|
+
_validate_plugins(plugins)
|
68
84
|
|
69
|
-
async def get_temporal_client(temporal_address: str, metrics_url: str = None) -> Client:
|
70
85
|
if not metrics_url:
|
71
86
|
client = await Client.connect(
|
72
|
-
target_host=temporal_address, data_converter=custom_data_converter
|
87
|
+
target_host=temporal_address, data_converter=custom_data_converter, plugins=plugins
|
73
88
|
)
|
74
89
|
else:
|
75
90
|
runtime = Runtime(
|
@@ -90,6 +105,7 @@ class AgentexWorker:
|
|
90
105
|
max_workers: int = 10,
|
91
106
|
max_concurrent_activities: int = 10,
|
92
107
|
health_check_port: int = 80,
|
108
|
+
plugins: list = [],
|
93
109
|
):
|
94
110
|
self.task_queue = task_queue
|
95
111
|
self.activity_handles = []
|
@@ -98,6 +114,7 @@ class AgentexWorker:
|
|
98
114
|
self.health_check_server_running = False
|
99
115
|
self.healthy = False
|
100
116
|
self.health_check_port = health_check_port
|
117
|
+
self.plugins = plugins
|
101
118
|
|
102
119
|
@overload
|
103
120
|
async def run(
|
@@ -126,6 +143,7 @@ class AgentexWorker:
|
|
126
143
|
await self._register_agent()
|
127
144
|
temporal_client = await get_temporal_client(
|
128
145
|
temporal_address=os.environ.get("TEMPORAL_ADDRESS", "localhost:7233"),
|
146
|
+
plugins=self.plugins,
|
129
147
|
)
|
130
148
|
|
131
149
|
# Enable debug mode if AgentEx debug is enabled (disables deadlock detection)
|
@@ -34,6 +34,8 @@ class EnvVarKeys(str, Enum):
|
|
34
34
|
WORKFLOW_TASK_QUEUE = "WORKFLOW_TASK_QUEUE"
|
35
35
|
# Auth Configuration
|
36
36
|
AUTH_PRINCIPAL_B64 = "AUTH_PRINCIPAL_B64"
|
37
|
+
# Build Information
|
38
|
+
BUILD_INFO_PATH = "BUILD_INFO_PATH"
|
37
39
|
|
38
40
|
|
39
41
|
class Environment(str, Enum):
|
@@ -63,6 +65,8 @@ class EnvironmentVariables(BaseModel):
|
|
63
65
|
WORKFLOW_TASK_QUEUE: str | None = None
|
64
66
|
WORKFLOW_NAME: str | None = None
|
65
67
|
AUTH_PRINCIPAL_B64: str | None = None
|
68
|
+
# Build Information
|
69
|
+
BUILD_INFO_PATH: str | None = None
|
66
70
|
|
67
71
|
@classmethod
|
68
72
|
def refresh(cls) -> EnvironmentVariables:
|
@@ -1,4 +1,8 @@
|
|
1
|
-
|
1
|
+
import inspect
|
2
|
+
import os
|
3
|
+
from pathlib import Path
|
4
|
+
|
5
|
+
from typing import Any, Literal
|
2
6
|
from agentex.lib.sdk.fastacp.base.base_acp_server import BaseACPServer
|
3
7
|
from agentex.lib.sdk.fastacp.impl.agentic_base_acp import AgenticBaseACP
|
4
8
|
from agentex.lib.sdk.fastacp.impl.sync_acp import SyncACP
|
@@ -8,6 +12,7 @@ from agentex.lib.types.fastacp import (
|
|
8
12
|
BaseACPConfig,
|
9
13
|
SyncACPConfig,
|
10
14
|
)
|
15
|
+
from agentex.lib.utils.logging import make_logger
|
11
16
|
|
12
17
|
# Add new mappings between ACP types and configs here
|
13
18
|
# Add new mappings between ACP types and implementations here
|
@@ -16,6 +21,7 @@ AGENTIC_ACP_IMPLEMENTATIONS: dict[Literal["temporal", "base"], type[BaseACPServe
|
|
16
21
|
"base": AgenticBaseACP,
|
17
22
|
}
|
18
23
|
|
24
|
+
logger = make_logger(__name__)
|
19
25
|
|
20
26
|
class FastACP:
|
21
27
|
"""Factory for creating FastACP instances
|
@@ -43,17 +49,29 @@ class FastACP:
|
|
43
49
|
implementation_class = AGENTIC_ACP_IMPLEMENTATIONS[config.type]
|
44
50
|
# Handle temporal-specific configuration
|
45
51
|
if config.type == "temporal":
|
46
|
-
# Extract temporal_address from config if it's a TemporalACPConfig
|
52
|
+
# Extract temporal_address and plugins from config if it's a TemporalACPConfig
|
47
53
|
temporal_config = kwargs.copy()
|
48
54
|
if hasattr(config, "temporal_address"):
|
49
55
|
temporal_config["temporal_address"] = config.temporal_address
|
56
|
+
if hasattr(config, "plugins"):
|
57
|
+
temporal_config["plugins"] = config.plugins
|
50
58
|
return implementation_class.create(**temporal_config)
|
51
59
|
else:
|
52
60
|
return implementation_class.create(**kwargs)
|
53
61
|
|
62
|
+
@staticmethod
|
63
|
+
def locate_build_info_path() -> None:
|
64
|
+
"""If a build-info.json file is present, set the BUILD_INFO_PATH environment variable"""
|
65
|
+
acp_root = Path(inspect.stack()[2].filename).resolve().parents[0]
|
66
|
+
build_info_path = acp_root / "build-info.json"
|
67
|
+
if build_info_path.exists():
|
68
|
+
os.environ["BUILD_INFO_PATH"] = str(build_info_path)
|
69
|
+
|
54
70
|
@staticmethod
|
55
71
|
def create(
|
56
|
-
acp_type: Literal["sync", "agentic"],
|
72
|
+
acp_type: Literal["sync", "agentic"],
|
73
|
+
config: BaseACPConfig | None = None,
|
74
|
+
**kwargs
|
57
75
|
) -> BaseACPServer | SyncACP | AgenticBaseACP | TemporalACP:
|
58
76
|
"""Main factory method to create any ACP type
|
59
77
|
|
@@ -63,6 +81,8 @@ class FastACP:
|
|
63
81
|
**kwargs: Additional configuration parameters
|
64
82
|
"""
|
65
83
|
|
84
|
+
FastACP.locate_build_info_path()
|
85
|
+
|
66
86
|
if acp_type == "sync":
|
67
87
|
sync_config = config if isinstance(config, SyncACPConfig) else None
|
68
88
|
return FastACP.create_sync_acp(sync_config, **kwargs)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from contextlib import asynccontextmanager
|
2
|
-
from typing import AsyncGenerator, Callable
|
2
|
+
from typing import Any, AsyncGenerator, Callable
|
3
3
|
|
4
4
|
from fastapi import FastAPI
|
5
5
|
|
@@ -24,18 +24,19 @@ class TemporalACP(BaseACPServer):
|
|
24
24
|
"""
|
25
25
|
|
26
26
|
def __init__(
|
27
|
-
self, temporal_address: str, temporal_task_service: TemporalTaskService | None = None
|
27
|
+
self, temporal_address: str, temporal_task_service: TemporalTaskService | None = None, plugins: list[Any] | None = None
|
28
28
|
):
|
29
29
|
super().__init__()
|
30
30
|
self._temporal_task_service = temporal_task_service
|
31
31
|
self._temporal_address = temporal_address
|
32
|
+
self._plugins = plugins or []
|
32
33
|
|
33
34
|
@classmethod
|
34
|
-
def create(cls, temporal_address: str) -> "TemporalACP":
|
35
|
+
def create(cls, temporal_address: str, plugins: list[Any] | None = None) -> "TemporalACP":
|
35
36
|
logger.info("Initializing TemporalACP instance")
|
36
37
|
|
37
38
|
# Create instance without temporal client initially
|
38
|
-
temporal_acp = cls(temporal_address=temporal_address)
|
39
|
+
temporal_acp = cls(temporal_address=temporal_address, plugins=plugins)
|
39
40
|
temporal_acp._setup_handlers()
|
40
41
|
logger.info("TemporalACP instance initialized now")
|
41
42
|
return temporal_acp
|
@@ -51,7 +52,8 @@ class TemporalACP(BaseACPServer):
|
|
51
52
|
if self._temporal_task_service is None:
|
52
53
|
env_vars = EnvironmentVariables.refresh()
|
53
54
|
temporal_client = await TemporalClient.create(
|
54
|
-
temporal_address=self._temporal_address
|
55
|
+
temporal_address=self._temporal_address,
|
56
|
+
plugins=self._plugins
|
55
57
|
)
|
56
58
|
self._temporal_task_service = TemporalTaskService(
|
57
59
|
temporal_client=temporal_client,
|
agentex/lib/types/fastacp.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
from typing import Literal
|
1
|
+
from typing import Any, Literal
|
2
2
|
|
3
|
-
from pydantic import BaseModel, Field
|
3
|
+
from pydantic import BaseModel, Field, field_validator
|
4
|
+
from agentex.lib.core.clients.temporal.utils import validate_client_plugins
|
4
5
|
|
5
6
|
|
6
7
|
class BaseACPConfig(BaseModel):
|
@@ -43,12 +44,21 @@ class TemporalACPConfig(AgenticACPConfig):
|
|
43
44
|
Attributes:
|
44
45
|
type: The type of ACP implementation
|
45
46
|
temporal_address: The address of the temporal server
|
47
|
+
plugins: List of Temporal client plugins
|
46
48
|
"""
|
47
49
|
|
48
50
|
type: Literal["temporal"] = Field(default="temporal", frozen=True)
|
49
51
|
temporal_address: str = Field(
|
50
52
|
default="temporal-frontend.temporal.svc.cluster.local:7233", frozen=True
|
51
53
|
)
|
54
|
+
plugins: list[Any] = Field(default=[], frozen=True)
|
55
|
+
|
56
|
+
@field_validator("plugins")
|
57
|
+
@classmethod
|
58
|
+
def validate_plugins(cls, v: list[Any]) -> list[Any]:
|
59
|
+
"""Validate that all plugins are valid Temporal client plugins."""
|
60
|
+
validate_client_plugins(v)
|
61
|
+
return v
|
52
62
|
|
53
63
|
|
54
64
|
class AgenticBaseACPConfig(AgenticACPConfig):
|
@@ -19,6 +19,16 @@ def get_auth_principal(env_vars: EnvironmentVariables):
|
|
19
19
|
except Exception:
|
20
20
|
return None
|
21
21
|
|
22
|
+
def get_build_info(env_vars: EnvironmentVariables):
|
23
|
+
logger.info(f"Getting build info from {env_vars.BUILD_INFO_PATH}")
|
24
|
+
if not env_vars.BUILD_INFO_PATH:
|
25
|
+
return None
|
26
|
+
try:
|
27
|
+
with open(env_vars.BUILD_INFO_PATH, "r") as f:
|
28
|
+
return json.load(f)
|
29
|
+
except Exception:
|
30
|
+
return None
|
31
|
+
|
22
32
|
async def register_agent(env_vars: EnvironmentVariables):
|
23
33
|
"""Register this agent with the Agentex server"""
|
24
34
|
if not env_vars.AGENTEX_BASE_URL:
|
@@ -38,7 +48,8 @@ async def register_agent(env_vars: EnvironmentVariables):
|
|
38
48
|
"description": description,
|
39
49
|
"acp_url": full_acp_url,
|
40
50
|
"acp_type": env_vars.ACP_TYPE,
|
41
|
-
"principal_context": get_auth_principal(env_vars)
|
51
|
+
"principal_context": get_auth_principal(env_vars),
|
52
|
+
"registration_metadata": get_build_info(env_vars)
|
42
53
|
}
|
43
54
|
|
44
55
|
if env_vars.AGENT_ID:
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: agentex-sdk
|
3
|
-
Version: 0.4.
|
3
|
+
Version: 0.4.18
|
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
|
@@ -2,7 +2,7 @@ agentex/__init__.py,sha256=j0BX5IfIjYaWdXQC7P4bh1Ev2-0bJe4Uh7IbqG551ng,2667
|
|
2
2
|
agentex/_base_client.py,sha256=Y_EaL4x9g7EsRADVD6vJ303tLO0iyB3K5SbTSvKCS2k,67048
|
3
3
|
agentex/_client.py,sha256=Fae6qw42eIjFaENpQ5nrq5SyW1310UoHZGNrG-DSa_g,20493
|
4
4
|
agentex/_compat.py,sha256=DQBVORjFb33zch24jzkhM14msvnzY7mmSmgDLaVFUM8,6562
|
5
|
-
agentex/_constants.py,sha256=
|
5
|
+
agentex/_constants.py,sha256=oGldMuFz7eZtwD8_6rJUippKhZB5fGSA7ffbCDGourA,466
|
6
6
|
agentex/_exceptions.py,sha256=B09aFjWFRSShb9BFJd-MNDblsGDyGk3w-vItYmjg_AI,3222
|
7
7
|
agentex/_files.py,sha256=KnEzGi_O756MvKyJ4fOCW_u3JhOeWPQ4RsmDvqihDQU,3545
|
8
8
|
agentex/_models.py,sha256=c29x_mRccdxlGwdUPfSR5eJxGXe74Ea5Dje5igZTrKQ,30024
|
@@ -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=lO491FSd7vM_uBp7-TvItbauEAH8SsEPYcyNO_5lKGM,7297
|
14
|
-
agentex/_version.py,sha256=
|
14
|
+
agentex/_version.py,sha256=8azpxMAVbxSJfOSmVjFkPPS49oSMFsAqfcYO7jXRKZg,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
|
@@ -27,7 +27,7 @@ agentex/_utils/_typing.py,sha256=N_5PPuFNsaygbtA_npZd98SVN1LQQvFTKL6bkWPBZGU,478
|
|
27
27
|
agentex/_utils/_utils.py,sha256=D2QE7mVPNEJzaB50u8rvDQAUDS5jx7JoeFD7zdj-TeI,12231
|
28
28
|
agentex/lib/.keep,sha256=wuNrz-5SXo3jJaJOJgz4vFHM41YH_g20F5cRQo0vLes,224
|
29
29
|
agentex/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
|
-
agentex/lib/environment_variables.py,sha256=
|
30
|
+
agentex/lib/environment_variables.py,sha256=8iMiBxDCFnG63IJ0VkFlOArTuGdwy2ADTO4fThRzUhU,3369
|
31
31
|
agentex/lib/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
32
32
|
agentex/lib/adk/__init__.py,sha256=-PpVfEvYr_HD7TnxUWU8RCW2OnxfwpPxTW97dKTnqvI,1082
|
33
33
|
agentex/lib/adk/_modules/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -63,7 +63,7 @@ agentex/lib/cli/debug/debug_handlers.py,sha256=i2Og0v5MPKIxG0uMZIp4NpmCpAro23t7P
|
|
63
63
|
agentex/lib/cli/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
64
64
|
agentex/lib/cli/handlers/agent_handlers.py,sha256=iVZ-4TSQJuq7XpPBYjYIN76M33XwxDjQTuNwTzzynec,5573
|
65
65
|
agentex/lib/cli/handlers/cleanup_handlers.py,sha256=V1V0zeErOUGTgCQqjyUl6CWtzGjFW878uzFaLOQJEyQ,7073
|
66
|
-
agentex/lib/cli/handlers/deploy_handlers.py,sha256=
|
66
|
+
agentex/lib/cli/handlers/deploy_handlers.py,sha256=rGZxGfcghc-FNAy7xItoYNQyo3TSSmI5graahPz4dSg,16038
|
67
67
|
agentex/lib/cli/handlers/run_handlers.py,sha256=TMelCWTwFxUJJJ7At3zG-cXTn2mBmK1ZJuJ63Ero6xs,15396
|
68
68
|
agentex/lib/cli/handlers/secret_handlers.py,sha256=VfAdAQovW9tG36Xgk_gGIGwTyFMxR3P6xc7fmAviNA8,24719
|
69
69
|
agentex/lib/cli/templates/default/.dockerignore.j2,sha256=hweGFxw5eDZYsb5EnRHpv27o9M1HF2PEWOxqsfBBcAE,320
|
@@ -117,9 +117,9 @@ agentex/lib/core/adapters/streams/adapter_redis.py,sha256=Q7mFSAcAvROsVCMD_K9bwm
|
|
117
117
|
agentex/lib/core/adapters/streams/port.py,sha256=cVIjbQYatHFceYecq87poH4xOxFWIMkXH5tyb9BbrsY,1225
|
118
118
|
agentex/lib/core/clients/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
119
119
|
agentex/lib/core/clients/temporal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
120
|
-
agentex/lib/core/clients/temporal/temporal_client.py,sha256=
|
120
|
+
agentex/lib/core/clients/temporal/temporal_client.py,sha256=rNQMT_1Yjfaoarp2wYO88GJbV4UCmGOxioOo6Jljy7Y,6549
|
121
121
|
agentex/lib/core/clients/temporal/types.py,sha256=tewjVflWPzSuLqg8Z_ewXhSFI7q0EoF6_s-p2mD2-zM,1334
|
122
|
-
agentex/lib/core/clients/temporal/utils.py,sha256=
|
122
|
+
agentex/lib/core/clients/temporal/utils.py,sha256=rGEVS8hpviOGE78GViiK0YZvUO1SsCieDrNd0fzCCHY,3221
|
123
123
|
agentex/lib/core/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
124
124
|
agentex/lib/core/services/adk/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
125
125
|
agentex/lib/core/services/adk/agent_task_tracker.py,sha256=7HHxzTezx0FEmUlIcWusoXT0D91QVeggOKowIA919gI,2897
|
@@ -159,11 +159,11 @@ agentex/lib/core/temporal/activities/adk/providers/sgp_activities.py,sha256=C8n9
|
|
159
159
|
agentex/lib/core/temporal/activities/adk/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
160
160
|
agentex/lib/core/temporal/activities/adk/utils/templating_activities.py,sha256=dX6wpcTKY_qWsm3uJV-XU5fQLqwWAhnjO83k8EK0N7o,1189
|
161
161
|
agentex/lib/core/temporal/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
162
|
-
agentex/lib/core/temporal/services/temporal_task_service.py,sha256=
|
162
|
+
agentex/lib/core/temporal/services/temporal_task_service.py,sha256=TkeGtGI6uPy-j3lCoKC408e0NPADRqm76yJHMwSqbIk,2342
|
163
163
|
agentex/lib/core/temporal/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
164
164
|
agentex/lib/core/temporal/types/workflow.py,sha256=o8lBUloI44NTYFfbA1BLgzUneyN7aLbt042Eq_9OKo8,89
|
165
165
|
agentex/lib/core/temporal/workers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
166
|
-
agentex/lib/core/temporal/workers/worker.py,sha256=
|
166
|
+
agentex/lib/core/temporal/workers/worker.py,sha256=tNG19QuNcY7tzEbeB1bU5-6grcGFN9Q73JO_x98nMvg,7953
|
167
167
|
agentex/lib/core/temporal/workflows/workflow.py,sha256=VTS4nqwdJqqjIy6nTyvFLdAoBHnunO8-8rVY0Gx5_zo,723
|
168
168
|
agentex/lib/core/tracing/__init__.py,sha256=3dLjXGTwAJxi_xxwdh8Mt04pdLyzN9VxAl8XHmV70Ak,229
|
169
169
|
agentex/lib/core/tracing/trace.py,sha256=45Nn0Z97kC_9XNyb9N8IWUFo0OIdb7dDZShhgOTGJB0,8952
|
@@ -183,12 +183,12 @@ agentex/lib/sdk/config/local_development_config.py,sha256=b1AZsOVo1RoHKbk8Nm5nC8
|
|
183
183
|
agentex/lib/sdk/config/project_config.py,sha256=CGH_r9KbnSFMj2CnBkZnfg41L2o0TeVNz6MwBDKPT_U,3642
|
184
184
|
agentex/lib/sdk/config/validation.py,sha256=QGAlAzlVJiWRlIksqxNS-JSwkk8Z4gXMSFUJc4qPrIQ,8989
|
185
185
|
agentex/lib/sdk/fastacp/__init__.py,sha256=UvAdexdnfb4z0F4a2sfXROFyh9EjH89kf3AxHPybzCM,75
|
186
|
-
agentex/lib/sdk/fastacp/fastacp.py,sha256=
|
186
|
+
agentex/lib/sdk/fastacp/fastacp.py,sha256=RM89_4_G2ZtIybPeMg641cw4ixFn4rZHy260FGSAa6o,3770
|
187
187
|
agentex/lib/sdk/fastacp/base/base_acp_server.py,sha256=mVi8uSOZtf70rogS7xDJwHU1hF_5Fv7S8383rUN0kK8,15604
|
188
188
|
agentex/lib/sdk/fastacp/base/constants.py,sha256=W4vpJ-5NML7239JyqzUWdu2IypIl8Cey8CS41KR2Vk0,519
|
189
189
|
agentex/lib/sdk/fastacp/impl/agentic_base_acp.py,sha256=LWLAlHrs-2Lc2UICBAEFL8c3JwTA6oxPnzUzW0qQWSA,2694
|
190
190
|
agentex/lib/sdk/fastacp/impl/sync_acp.py,sha256=0y_cYD-0UJOiVJv-BBMOt6PvElDf5zmc1uvbr81VcSI,3897
|
191
|
-
agentex/lib/sdk/fastacp/impl/temporal_acp.py,sha256=
|
191
|
+
agentex/lib/sdk/fastacp/impl/temporal_acp.py,sha256=Xz3PSzeItBulOKDHFpWSu6kUmII4qIHx2vDrtRGaA9k,3930
|
192
192
|
agentex/lib/sdk/fastacp/tests/README.md,sha256=HejScemERLCs-wCgU3l1Xo4tcQ4gQy15GgoF-CkNh-0,8270
|
193
193
|
agentex/lib/sdk/fastacp/tests/conftest.py,sha256=wU3DCGZNBqY-HcJ4tz_tlphhS_5xGbZ6gSd72fGY2E0,9490
|
194
194
|
agentex/lib/sdk/fastacp/tests/pytest.ini,sha256=MdF2xHp4oPyUC4z7-xoNZR9vFyYkBoFvuCfgEEprv4k,231
|
@@ -209,7 +209,7 @@ agentex/lib/types/agent_configs.py,sha256=3wRa2okimSzi2v8sJyMyrqRlcu_4sxes-_4smE
|
|
209
209
|
agentex/lib/types/agent_results.py,sha256=ev6WnPLfZRbhy2HnBmdIrZq1ExVeaweXoLRxYGspyWM,653
|
210
210
|
agentex/lib/types/converters.py,sha256=u6fLb0rBUDA6nF5hdbC8ms6H-Z21IQfLlIvYpau_P5g,2283
|
211
211
|
agentex/lib/types/credentials.py,sha256=xUyh0MiNgy1c-BSBGXqbAMgbFEqnglESK99SRbsCsZA,1442
|
212
|
-
agentex/lib/types/fastacp.py,sha256=
|
212
|
+
agentex/lib/types/fastacp.py,sha256=konVHb3FQid3bt0q1TnKA6AB0huxO4LtW9M-na82unk,1746
|
213
213
|
agentex/lib/types/files.py,sha256=sNxiuR_oEo7Z0YMqjQShErvS3txWyobrZzc4QMMM61U,320
|
214
214
|
agentex/lib/types/json_rpc.py,sha256=9sPADVEduOnyTm1yCS8vhZDfjMQVEdzqIWpycY_NrV8,1068
|
215
215
|
agentex/lib/types/llm_messages.py,sha256=eXsVJt_aQf3eGg_tPrDOPjFOhkbolb9IN1tU1c-IHYM,10668
|
@@ -226,7 +226,7 @@ agentex/lib/utils/mcp.py,sha256=lYQPwKAOH6Gf2I_TeovhEG9YUijUPcN0rENNdT0Vk6c,505
|
|
226
226
|
agentex/lib/utils/model_utils.py,sha256=bkcB1I0DMRAtFQpznsXgFGKZGrT7NGJ4tIwFM4dtUXQ,2547
|
227
227
|
agentex/lib/utils/parsing.py,sha256=2T-B4nJSupo2RLf9AkpV6VQHqDnF97ZBgO6zvGCauCo,369
|
228
228
|
agentex/lib/utils/regex.py,sha256=Y3VcehCznAqa59D4WTwK_ki722oudHBlFqBk0I930zo,212
|
229
|
-
agentex/lib/utils/registration.py,sha256=
|
229
|
+
agentex/lib/utils/registration.py,sha256=JTU02vmS9VbX3VEBjp40i8jGcJRYzAQ1hqKSjdhcPCk,4159
|
230
230
|
agentex/lib/utils/temporal.py,sha256=sXo8OPMMXiyrF7OSBCJBuN_ufyQOD2bLOXgDbVZoyds,292
|
231
231
|
agentex/lib/utils/dev_tools/__init__.py,sha256=oaHxw6ymfhNql-kzXHv3NWVHuqD4fHumasNXJG7kHTU,261
|
232
232
|
agentex/lib/utils/dev_tools/async_messages.py,sha256=dM01spww2Fy6ej_WDnPXs2eG-9yCU7Xc1IMKwJzq6cM,19543
|
@@ -304,8 +304,8 @@ agentex/types/messages/batch_update_params.py,sha256=Ug5CThbD49a8j4qucg04OdmVrp_
|
|
304
304
|
agentex/types/messages/batch_update_response.py,sha256=TbSBe6SuPzjXXWSj-nRjT1JHGBooTshHQQDa1AixQA8,278
|
305
305
|
agentex/types/shared/__init__.py,sha256=IKs-Qn5Yja0kFh1G1kDqYZo43qrOu1hSoxlPdN-85dI,149
|
306
306
|
agentex/types/shared/delete_response.py,sha256=8qH3zvQXaOHYQSHyXi7UQxdR4miTzR7V9K4zXVsiUyk,215
|
307
|
-
agentex_sdk-0.4.
|
308
|
-
agentex_sdk-0.4.
|
309
|
-
agentex_sdk-0.4.
|
310
|
-
agentex_sdk-0.4.
|
311
|
-
agentex_sdk-0.4.
|
307
|
+
agentex_sdk-0.4.18.dist-info/METADATA,sha256=yYmjMxPlZKhAlm1spqPQnhGhUycSwqSgHazP7ou4KPM,15095
|
308
|
+
agentex_sdk-0.4.18.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
|
309
|
+
agentex_sdk-0.4.18.dist-info/entry_points.txt,sha256=V7vJuMZdF0UlvgX6KiBN7XUvq_cxF5kplcYvc1QlFaQ,62
|
310
|
+
agentex_sdk-0.4.18.dist-info/licenses/LICENSE,sha256=Q1AOx2FtRcMlyMgQJ9eVN2WKPq2mQ33lnB4tvWxabLA,11337
|
311
|
+
agentex_sdk-0.4.18.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|