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 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 = 0
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
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "agentex"
4
- __version__ = "0.4.16" # x-release-please-version
4
+ __version__ = "0.4.18" # x-release-please-version
@@ -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
- add_acp_command_to_helm_values(helm_values, manifest, manifest_path)
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(temporal_address)
92
- return cls(_client)
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(temporal_address)
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 temporalio.client import Client
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
- async def get_temporal_client(temporal_address: str, metrics_url: str = None) -> Client:
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
@@ -23,6 +23,7 @@ class TemporalTaskService:
23
23
  self._temporal_client = temporal_client
24
24
  self._env_vars = env_vars
25
25
 
26
+
26
27
  async def submit_task(self, agent: Agent, task: Task, params: dict[str, Any] | None) -> str:
27
28
  """
28
29
  Submit a task to the async runtime for execution.
@@ -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
- from typing import Literal
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"], config: BaseACPConfig | None = None, **kwargs
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,
@@ -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.16
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=UWL_R-mDWXfDVTMoEAks7F9dNEbr7NFc27WQShkBB1c,466
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=z6Si7YEtxBux6FsnERxZFDlM27oXiLl7zR4j_oS9Z_s,160
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=6iWpCEURbahnLxZIjvJGES-zs7euUI8bxVXFN29tyYg,3242
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=qDo31DcURQOtub_lH6X7IdnOlqLYCFc2vatf03d7pQ8,15828
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=03gZ3-DV0_-NKulwnS3NV_ahyNeMTV1dNtW4aDNsBTk,6324
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=LrwOBMwA53R7YRhYRtgEYengSS2bvbbY1ylPCCOk3WQ,2036
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=oxaegtUMfr3ECWNzJJfQ8HJxd_T7ELlNwb9Sau9kHRA,2341
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=XumHnctexRP3Ir7pXTid3VKaHs5vysYQO6UcCet0yvg,7211
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=K4D7a9EiJfCgWp2hrE_TbpZBaF4Uc46MfndZK3F9mA0,3061
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=hQa_zGG6l_jIHNC75H_KXlPUuVqNBc-zIm-pmCDSZ6w,3759
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=nU4rT823Ckix7bFwvVXtPsk6el3U1E4TH-OEvMqIBr4,1304
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=FAL40KSMRCltHZcDtioGeRNgfB19Twqu6Srp4x7UMSU,3781
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.16.dist-info/METADATA,sha256=bjGyujHSUNT8HXXBH8YV76VeQfKsx9Sia5qXe5NRjoo,15095
308
- agentex_sdk-0.4.16.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
309
- agentex_sdk-0.4.16.dist-info/entry_points.txt,sha256=V7vJuMZdF0UlvgX6KiBN7XUvq_cxF5kplcYvc1QlFaQ,62
310
- agentex_sdk-0.4.16.dist-info/licenses/LICENSE,sha256=Q1AOx2FtRcMlyMgQJ9eVN2WKPq2mQ33lnB4tvWxabLA,11337
311
- agentex_sdk-0.4.16.dist-info/RECORD,,
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,,