agentex-sdk 0.2.7__py3-none-any.whl → 0.2.9__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 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.2.7" # x-release-please-version
4
+ __version__ = "0.2.9" # x-release-please-version
@@ -133,7 +133,7 @@ def merge_deployment_configs(
133
133
  raise DeploymentError("Repository and image tag are required")
134
134
 
135
135
  # Start with global configuration
136
- helm_values = {
136
+ helm_values: dict[str, Any] = {
137
137
  "global": {
138
138
  "image": {
139
139
  "repository": repository,
@@ -157,54 +157,76 @@ def merge_deployment_configs(
157
157
  "memory": manifest.deployment.global_config.resources.limits.memory,
158
158
  },
159
159
  },
160
+ # Enable autoscaling by default for production deployments
161
+ "autoscaling": {
162
+ "enabled": True,
163
+ "minReplicas": 1,
164
+ "maxReplicas": 10,
165
+ "targetCPUUtilizationPercentage": 50,
166
+ },
160
167
  }
161
168
 
162
169
  # Handle temporal configuration using new helper methods
163
170
  if agent_config.is_temporal_agent():
164
171
  temporal_config = agent_config.get_temporal_workflow_config()
165
172
  if temporal_config:
166
- helm_values[TEMPORAL_WORKER_KEY] = {}
173
+ helm_values[TEMPORAL_WORKER_KEY] = {
174
+ "enabled": True,
175
+ # Enable autoscaling for temporal workers as well
176
+ "autoscaling": {
177
+ "enabled": True,
178
+ "minReplicas": 1,
179
+ "maxReplicas": 10,
180
+ "targetCPUUtilizationPercentage": 50,
181
+ },
182
+ }
167
183
  helm_values["global"]["workflow"] = {
168
184
  "name": temporal_config.name,
169
185
  "taskQueue": temporal_config.queue_name,
170
186
  }
171
- helm_values[TEMPORAL_WORKER_KEY]["enabled"] = True
172
187
 
173
- secret_env_vars = []
174
- if agent_config.credentials:
175
- for credential in agent_config.credentials:
176
- secret_env_vars.append(
177
- {
178
- "name": credential.env_var_name,
179
- "secretName": credential.secret_name,
180
- "secretKey": credential.secret_key,
181
- }
182
- )
183
-
184
- helm_values["secretEnvVars"] = secret_env_vars
185
- if TEMPORAL_WORKER_KEY in helm_values:
186
- helm_values[TEMPORAL_WORKER_KEY]["secretEnvVars"] = secret_env_vars
187
-
188
- # Set the agent_config env vars first to the helm values and so then it can be overriden by the cluster config
188
+ # Collect all environment variables with conflict detection
189
+ all_env_vars: dict[str, str] = {}
190
+ secret_env_vars: list[dict[str, str]] = []
191
+
192
+ # Start with agent_config env vars
189
193
  if agent_config.env:
190
- helm_values["env"] = agent_config.env
191
- if TEMPORAL_WORKER_KEY in helm_values:
192
- helm_values[TEMPORAL_WORKER_KEY]["env"] = agent_config.env
194
+ all_env_vars.update(agent_config.env)
193
195
 
194
196
  # Add auth principal env var if manifest principal is set
195
197
  encoded_principal = _encode_principal_context(manifest)
196
198
  if encoded_principal:
197
- if "env" not in helm_values:
198
- helm_values["env"] = {}
199
- helm_values["env"][EnvVarKeys.AUTH_PRINCIPAL_B64.value] = encoded_principal
199
+ all_env_vars[EnvVarKeys.AUTH_PRINCIPAL_B64.value] = encoded_principal
200
200
 
201
- if manifest.deployment and manifest.deployment.imagePullSecrets:
202
- pull_secrets = [
203
- pull_secret.to_dict()
204
- for pull_secret in manifest.deployment.imagePullSecrets
205
- ]
206
- helm_values["global"]["imagePullSecrets"] = pull_secrets
207
- helm_values["imagePullSecrets"] = pull_secrets
201
+ # Handle credentials and check for conflicts
202
+ if agent_config.credentials:
203
+ for credential in agent_config.credentials:
204
+ # Handle both CredentialMapping objects and legacy dict format
205
+ if isinstance(credential, dict):
206
+ env_var_name = credential["env_var_name"]
207
+ secret_name = credential["secret_name"]
208
+ secret_key = credential["secret_key"]
209
+ else:
210
+ env_var_name = credential.env_var_name
211
+ secret_name = credential.secret_name
212
+ secret_key = credential.secret_key
213
+
214
+ # Check if the environment variable name conflicts with existing env vars
215
+ if env_var_name in all_env_vars:
216
+ logger.warning(
217
+ f"Environment variable '{env_var_name}' is defined in both "
218
+ f"env and secretEnvVars. The secret value will take precedence."
219
+ )
220
+ # Remove from regular env vars since secret takes precedence
221
+ del all_env_vars[env_var_name]
222
+
223
+ secret_env_vars.append(
224
+ {
225
+ "name": env_var_name,
226
+ "secretName": secret_name,
227
+ "secretKey": secret_key,
228
+ }
229
+ )
208
230
 
209
231
  # Apply cluster-specific overrides
210
232
  if cluster_config:
@@ -235,23 +257,50 @@ def merge_deployment_configs(
235
257
  }
236
258
  )
237
259
 
260
+ # Handle cluster env vars with conflict detection
238
261
  if cluster_config.env:
239
- helm_values["env"] = cluster_config.env
262
+ # Convert cluster env list to dict for easier conflict detection
263
+ cluster_env_dict = {env_var["name"]: env_var["value"] for env_var in cluster_config.env}
264
+
265
+ # Check for conflicts with secret env vars
266
+ for secret_env_var in secret_env_vars:
267
+ if secret_env_var["name"] in cluster_env_dict:
268
+ logger.warning(
269
+ f"Environment variable '{secret_env_var['name']}' is defined in both "
270
+ f"cluster config env and secretEnvVars. The secret value will take precedence."
271
+ )
272
+ del cluster_env_dict[secret_env_var["name"]]
273
+
274
+ # Update all_env_vars with cluster overrides
275
+ all_env_vars.update(cluster_env_dict)
240
276
 
241
277
  # Apply additional arbitrary overrides
242
278
  if cluster_config.additional_overrides:
243
279
  _deep_merge(helm_values, cluster_config.additional_overrides)
244
280
 
245
- # Convert the env vars to a list of dictionaries
246
- if "env" in helm_values:
247
- helm_values["env"] = convert_env_vars_dict_to_list(helm_values["env"])
248
-
249
- # Convert the temporal worker env vars to a list of dictionaries
250
- if TEMPORAL_WORKER_KEY in helm_values and "env" in helm_values[TEMPORAL_WORKER_KEY]:
251
- helm_values[TEMPORAL_WORKER_KEY]["env"] = convert_env_vars_dict_to_list(
252
- helm_values[TEMPORAL_WORKER_KEY]["env"]
253
- )
281
+ # Set final environment variables
282
+ if all_env_vars:
283
+ helm_values["env"] = convert_env_vars_dict_to_list(all_env_vars)
254
284
 
285
+ if secret_env_vars:
286
+ helm_values["secretEnvVars"] = secret_env_vars
287
+
288
+ # Set environment variables for temporal worker if enabled
289
+ if TEMPORAL_WORKER_KEY in helm_values:
290
+ if all_env_vars:
291
+ helm_values[TEMPORAL_WORKER_KEY]["env"] = convert_env_vars_dict_to_list(all_env_vars)
292
+ if secret_env_vars:
293
+ helm_values[TEMPORAL_WORKER_KEY]["secretEnvVars"] = secret_env_vars
294
+
295
+ # Handle image pull secrets
296
+ if manifest.deployment and manifest.deployment.imagePullSecrets:
297
+ pull_secrets = [
298
+ pull_secret.to_dict()
299
+ for pull_secret in manifest.deployment.imagePullSecrets
300
+ ]
301
+ helm_values["global"]["imagePullSecrets"] = pull_secrets
302
+ helm_values["imagePullSecrets"] = pull_secrets
303
+
255
304
  # Add dynamic ACP command based on manifest configuration
256
305
  add_acp_command_to_helm_values(helm_values, manifest, manifest_path)
257
306
 
@@ -33,10 +33,8 @@ RUN uv pip install --system .
33
33
  # Copy the project code
34
34
  COPY {{ project_path_from_build_root }}/project /app/{{ project_path_from_build_root }}/project
35
35
 
36
- WORKDIR /app/{{ project_path_from_build_root }}/project
37
-
38
36
  # Set environment variables
39
37
  ENV PYTHONPATH=/app
40
38
 
41
39
  # Run the agent using uvicorn
42
- CMD ["uvicorn", "acp:acp", "--host", "0.0.0.0", "--port", "8000"]
40
+ CMD ["uvicorn", "project.acp:acp", "--host", "0.0.0.0", "--port", "8000"]
@@ -15,6 +15,8 @@ RUN apt-get update && apt-get install -y \
15
15
  gcc \
16
16
  cmake \
17
17
  netcat-openbsd \
18
+ node \
19
+ npm \
18
20
  && apt-get clean \
19
21
  && rm -rf /var/lib/apt/lists/*
20
22
 
@@ -33,10 +35,8 @@ RUN uv pip install --system -r requirements.txt
33
35
  # Copy the project code
34
36
  COPY {{ project_path_from_build_root }}/project /app/{{ project_path_from_build_root }}/project
35
37
 
36
- WORKDIR /app/{{ project_path_from_build_root }}/project
37
-
38
38
  # Set environment variables
39
39
  ENV PYTHONPATH=/app
40
40
 
41
41
  # Run the agent using uvicorn
42
- CMD ["uvicorn", "acp:acp", "--host", "0.0.0.0", "--port", "8000"]
42
+ CMD ["uvicorn", "project.acp:acp", "--host", "0.0.0.0", "--port", "8000"]
@@ -33,10 +33,8 @@ RUN uv pip install --system .
33
33
  # Copy the project code
34
34
  COPY {{ project_path_from_build_root }}/project /app/{{ project_path_from_build_root }}/project
35
35
 
36
- WORKDIR /app/{{ project_path_from_build_root }}/project
37
-
38
36
  # Set environment variables
39
37
  ENV PYTHONPATH=/app
40
38
 
41
39
  # Run the agent using uvicorn
42
- CMD ["uvicorn", "acp:acp", "--host", "0.0.0.0", "--port", "8000"]
40
+ CMD ["uvicorn", "project.acp:acp", "--host", "0.0.0.0", "--port", "8000"]
@@ -15,6 +15,8 @@ RUN apt-get update && apt-get install -y \
15
15
  gcc \
16
16
  cmake \
17
17
  netcat-openbsd \
18
+ node \
19
+ npm \
18
20
  && apt-get clean \
19
21
  && rm -rf /var/lib/apt/lists/*
20
22
 
@@ -33,10 +35,9 @@ RUN uv pip install --system -r requirements.txt
33
35
  # Copy the project code
34
36
  COPY {{ project_path_from_build_root }}/project /app/{{ project_path_from_build_root }}/project
35
37
 
36
- WORKDIR /app/{{ project_path_from_build_root }}/project
37
38
 
38
39
  # Set environment variables
39
40
  ENV PYTHONPATH=/app
40
41
 
41
42
  # Run the agent using uvicorn
42
- CMD ["uvicorn", "acp:acp", "--host", "0.0.0.0", "--port", "8000"]
43
+ CMD ["uvicorn", "project.acp:acp", "--host", "0.0.0.0", "--port", "8000"]
@@ -39,10 +39,8 @@ RUN uv pip install --system .
39
39
  # Copy the project code
40
40
  COPY {{ project_path_from_build_root }}/project /app/{{ project_path_from_build_root }}/project
41
41
 
42
- WORKDIR /app/{{ project_path_from_build_root }}/project
43
-
44
42
  # Run the ACP server using uvicorn
45
- CMD ["uvicorn", "acp:acp", "--host", "0.0.0.0", "--port", "8000"]
43
+ CMD ["uvicorn", "project.acp:acp", "--host", "0.0.0.0", "--port", "8000"]
46
44
 
47
45
  # When we deploy the worker, we will replace the CMD with the following
48
46
  # CMD ["python", "-m", "run_worker"]
@@ -15,6 +15,8 @@ RUN apt-get update && apt-get install -y \
15
15
  gcc \
16
16
  cmake \
17
17
  netcat-openbsd \
18
+ node \
19
+ npm \
18
20
  && apt-get clean \
19
21
  && rm -rf /var/lib/apt/lists/*
20
22
 
@@ -39,10 +41,8 @@ RUN uv pip install --system -r requirements.txt
39
41
  # Copy the project code
40
42
  COPY {{ project_path_from_build_root }}/project /app/{{ project_path_from_build_root }}/project
41
43
 
42
- WORKDIR /app/{{ project_path_from_build_root }}/project
43
-
44
44
  # Run the ACP server using uvicorn
45
- CMD ["uvicorn", "acp:acp", "--host", "0.0.0.0", "--port", "8000"]
45
+ CMD ["uvicorn", "project.acp:acp", "--host", "0.0.0.0", "--port", "8000"]
46
46
 
47
47
  # When we deploy the worker, we will replace the CMD with the following
48
48
  # CMD ["python", "-m", "run_worker"]
@@ -6,7 +6,7 @@ from agentex.lib.utils.logging import make_logger
6
6
  from agentex.lib.utils.debug import setup_debug_if_enabled
7
7
  from agentex.lib.environment_variables import EnvironmentVariables
8
8
 
9
- from workflow import {{ workflow_class }}
9
+ from project.workflow import {{ workflow_class }}
10
10
 
11
11
 
12
12
  environment_variables = EnvironmentVariables.refresh()
@@ -1,3 +1,4 @@
1
+ from typing import Any
1
2
  from agentex.lib.core.clients.temporal.temporal_client import TemporalClient
2
3
  from agentex.lib.core.clients.temporal.types import WorkflowState
3
4
  from agentex.lib.core.temporal.types.workflow import SignalName
@@ -22,7 +23,7 @@ class TemporalTaskService:
22
23
  self._temporal_client = temporal_client
23
24
  self._env_vars = env_vars
24
25
 
25
- async def submit_task(self, agent: Agent, task: Task) -> str:
26
+ async def submit_task(self, agent: Agent, task: Task, params: dict[str, Any] | None) -> str:
26
27
  """
27
28
  Submit a task to the async runtime for execution.
28
29
 
@@ -33,7 +34,7 @@ class TemporalTaskService:
33
34
  arg=CreateTaskParams(
34
35
  agent=agent,
35
36
  task=task,
36
- params=None,
37
+ params=params,
37
38
  ),
38
39
  id=task.id,
39
40
  task_queue=self._env_vars.WORKFLOW_TASK_QUEUE,
@@ -71,7 +71,7 @@ class TemporalACP(BaseACPServer):
71
71
  async def handle_task_create(params: CreateTaskParams) -> None:
72
72
  """Default create task handler - logs the task"""
73
73
  logger.info(f"TemporalACP received task create rpc call for task {params.task.id}")
74
- await self._temporal_task_service.submit_task(agent=params.agent, task=params.task)
74
+ await self._temporal_task_service.submit_task(agent=params.agent, task=params.task, params=params.params)
75
75
 
76
76
  @self.on_task_event_send
77
77
  async def handle_event_send(params: SendEventParams) -> None:
@@ -508,17 +508,24 @@ class AgentsResource(SyncAPIResource):
508
508
  raise ValueError("Either agent_id or agent_name must be provided")
509
509
 
510
510
  with raw_agent_rpc_response as response:
511
- for agent_rpc_response_str in response.iter_text():
512
- if agent_rpc_response_str.strip(): # Only process non-empty lines
513
- try:
514
- chunk_rpc_response = SendMessageStreamResponse.model_validate(
515
- json.loads(agent_rpc_response_str),
516
- from_attributes=True
517
- )
518
- yield chunk_rpc_response
519
- except json.JSONDecodeError:
520
- # Skip invalid JSON lines
521
- continue
511
+ for _line in response.iter_lines():
512
+ if not _line:
513
+ continue
514
+ line = _line.strip()
515
+ # Handle optional SSE-style prefix
516
+ if line.startswith("data:"):
517
+ line = line[len("data:"):].strip()
518
+ if not line:
519
+ continue
520
+ try:
521
+ chunk_rpc_response = SendMessageStreamResponse.model_validate(
522
+ json.loads(line),
523
+ from_attributes=True
524
+ )
525
+ yield chunk_rpc_response
526
+ except json.JSONDecodeError:
527
+ # Skip invalid JSON lines
528
+ continue
522
529
 
523
530
  def send_event(
524
531
  self,
@@ -1048,17 +1055,24 @@ class AsyncAgentsResource(AsyncAPIResource):
1048
1055
  raise ValueError("Either agent_id or agent_name must be provided")
1049
1056
 
1050
1057
  async with raw_agent_rpc_response as response:
1051
- async for agent_rpc_response_str in response.iter_text():
1052
- if agent_rpc_response_str.strip(): # Only process non-empty lines
1053
- try:
1054
- chunk_rpc_response = SendMessageStreamResponse.model_validate(
1055
- json.loads(agent_rpc_response_str),
1056
- from_attributes=True
1057
- )
1058
- yield chunk_rpc_response
1059
- except json.JSONDecodeError:
1060
- # Skip invalid JSON lines
1061
- continue
1058
+ async for _line in response.iter_lines():
1059
+ if not _line:
1060
+ continue
1061
+ line = _line.strip()
1062
+ # Handle optional SSE-style prefix
1063
+ if line.startswith("data:"):
1064
+ line = line[len("data:"):].strip()
1065
+ if not line:
1066
+ continue
1067
+ try:
1068
+ chunk_rpc_response = SendMessageStreamResponse.model_validate(
1069
+ json.loads(line),
1070
+ from_attributes=True
1071
+ )
1072
+ yield chunk_rpc_response
1073
+ except json.JSONDecodeError:
1074
+ # Skip invalid JSON lines
1075
+ continue
1062
1076
 
1063
1077
  async def send_event(
1064
1078
  self,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: agentex-sdk
3
- Version: 0.2.7
3
+ Version: 0.2.9
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
@@ -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=juL3-lsGG8DrsKnzc0QzewhZCTZuJXw8vQoNFh7Of6g,159
14
+ agentex/_version.py,sha256=T7zw7XtZUyGqffKHlZES064K_tkpufj17wIkOelHN5o,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
@@ -61,12 +61,12 @@ agentex/lib/cli/debug/debug_handlers.py,sha256=i2Og0v5MPKIxG0uMZIp4NpmCpAro23t7P
61
61
  agentex/lib/cli/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
62
  agentex/lib/cli/handlers/agent_handlers.py,sha256=iVZ-4TSQJuq7XpPBYjYIN76M33XwxDjQTuNwTzzynec,5573
63
63
  agentex/lib/cli/handlers/cleanup_handlers.py,sha256=V1V0zeErOUGTgCQqjyUl6CWtzGjFW878uzFaLOQJEyQ,7073
64
- agentex/lib/cli/handlers/deploy_handlers.py,sha256=pwdc-m5-auXzlDA-0-TzAPpIGxsYecPKXryrAIpELTM,14832
64
+ agentex/lib/cli/handlers/deploy_handlers.py,sha256=SrHHY8p0TGS0KzaCY3FPgf3awXqoMo2G-qpIOcnO1pw,16942
65
65
  agentex/lib/cli/handlers/run_handlers.py,sha256=b02-ng64fMHdd7u2hB_tmwHrm2_0DL-pcA565JDpyPc,14949
66
66
  agentex/lib/cli/handlers/secret_handlers.py,sha256=VfAdAQovW9tG36Xgk_gGIGwTyFMxR3P6xc7fmAviNA8,24719
67
67
  agentex/lib/cli/templates/default/.dockerignore.j2,sha256=hweGFxw5eDZYsb5EnRHpv27o9M1HF2PEWOxqsfBBcAE,320
68
- agentex/lib/cli/templates/default/Dockerfile-uv.j2,sha256=tGJo_C4vwHYikV4QhGFtSiG6K7Nt4UDdJ71Gob_uTho,1109
69
- agentex/lib/cli/templates/default/Dockerfile.j2,sha256=T7ouO3glVBo7U2I1TPQvgARyxXGL194cvM5hfbq0e8U,1119
68
+ agentex/lib/cli/templates/default/Dockerfile-uv.j2,sha256=I527RB_2Byn6tkBNVxxCq7ivVFJDgDNRSC7Vz2w9u4k,1060
69
+ agentex/lib/cli/templates/default/Dockerfile.j2,sha256=Q-8T9mid_DfgZlQd6JFZKphdDngEsTLlqDvJtEvU_7k,1092
70
70
  agentex/lib/cli/templates/default/README.md.j2,sha256=4Sn_cY_TMfN_c5h-I_L3TgTrNKUvhzQvKGDZjS3n2Gw,6361
71
71
  agentex/lib/cli/templates/default/dev.ipynb.j2,sha256=8xY82gVfQ0mhzlEZzI4kLqIXCF19YgimLnpEirDMX8I,3395
72
72
  agentex/lib/cli/templates/default/manifest.yaml.j2,sha256=n-XK6LqSyBVY6a7KOfIlOQx4LbMNEVzzHIh6yEiqAhs,3752
@@ -77,8 +77,8 @@ agentex/lib/cli/templates/default/project/acp.py.j2,sha256=XZsHNQaQDNvooarFt_NvM
77
77
  agentex/lib/cli/templates/deploy/Screenshot 2025-03-19 at 10.36.57 AM.png,sha256=D6OT4fcXnaFPBub5__OFwzrOIkj0UmpWMfR_hkUXdoM,3133708
78
78
  agentex/lib/cli/templates/deploy/example.yaml.j2,sha256=sHIEuhtruyCfGPgeLQ1ilCCnRH0HpsqhDdQT44UWUaU,1554
79
79
  agentex/lib/cli/templates/sync/.dockerignore.j2,sha256=hweGFxw5eDZYsb5EnRHpv27o9M1HF2PEWOxqsfBBcAE,320
80
- agentex/lib/cli/templates/sync/Dockerfile-uv.j2,sha256=tGJo_C4vwHYikV4QhGFtSiG6K7Nt4UDdJ71Gob_uTho,1109
81
- agentex/lib/cli/templates/sync/Dockerfile.j2,sha256=T7ouO3glVBo7U2I1TPQvgARyxXGL194cvM5hfbq0e8U,1119
80
+ agentex/lib/cli/templates/sync/Dockerfile-uv.j2,sha256=I527RB_2Byn6tkBNVxxCq7ivVFJDgDNRSC7Vz2w9u4k,1060
81
+ agentex/lib/cli/templates/sync/Dockerfile.j2,sha256=-P2CwE84h4mwO1Gnl779c4MdoOcVX8_ndpesq9M4fQQ,1093
82
82
  agentex/lib/cli/templates/sync/README.md.j2,sha256=_S7Ngl4qOUQHPFldLXDBvuIWPFU2-WcuxGmr5EXLX6k,8816
83
83
  agentex/lib/cli/templates/sync/dev.ipynb.j2,sha256=Z42iRveuI_k5LcJqWX-3H1glPtNTkxg_MKVe1lwuJos,6055
84
84
  agentex/lib/cli/templates/sync/manifest.yaml.j2,sha256=V497KXzvA76sHrgIJ5zRJptpIH8sGbSXZaIsEyp5NZ4,3747
@@ -87,8 +87,8 @@ agentex/lib/cli/templates/sync/requirements.txt.j2,sha256=iTmO-z8qFkUa1jTctFCs0W
87
87
  agentex/lib/cli/templates/sync/deploy/example.yaml.j2,sha256=sHIEuhtruyCfGPgeLQ1ilCCnRH0HpsqhDdQT44UWUaU,1554
88
88
  agentex/lib/cli/templates/sync/project/acp.py.j2,sha256=X5RaE9iR4Dp-kPJL0r1QAe6ohfiOTcYizwtwGW2GzHg,1003
89
89
  agentex/lib/cli/templates/temporal/.dockerignore.j2,sha256=hweGFxw5eDZYsb5EnRHpv27o9M1HF2PEWOxqsfBBcAE,320
90
- agentex/lib/cli/templates/temporal/Dockerfile-uv.j2,sha256=bnvx-zba5DFjl7UC-TYt-Zi_UDJucjlNRCdkSqHgBiQ,1450
91
- agentex/lib/cli/templates/temporal/Dockerfile.j2,sha256=pcszlprNTqKMpYEtA4XYlc3vWjq1b0IMQDrN1GxF7yI,1461
90
+ agentex/lib/cli/templates/temporal/Dockerfile-uv.j2,sha256=_FNRUdE8m1jfcmYR3rZAAkm2mqyTCwUXbLs4dm4lZs8,1401
91
+ agentex/lib/cli/templates/temporal/Dockerfile.j2,sha256=N1Z73jb8pnxsjP9zbs-tSyNHO6usVzyOdtWorbR5gVY,1434
92
92
  agentex/lib/cli/templates/temporal/README.md.j2,sha256=d6BQAZBf7lCKROXnpDu-Ml1Rq0OM8cCFEOpmStoPWfc,10132
93
93
  agentex/lib/cli/templates/temporal/dev.ipynb.j2,sha256=8xY82gVfQ0mhzlEZzI4kLqIXCF19YgimLnpEirDMX8I,3395
94
94
  agentex/lib/cli/templates/temporal/manifest.yaml.j2,sha256=S-hJlpVCnT62r66otqHa3iROOn1w_yYvehOOxvLQotY,4483
@@ -96,7 +96,7 @@ agentex/lib/cli/templates/temporal/pyproject.toml.j2,sha256=MoR1g6KnGOQrXWOXhFKM
96
96
  agentex/lib/cli/templates/temporal/requirements.txt.j2,sha256=iTmO-z8qFkUa1jTctFCs0WYuq7Sqi6VNQAwATakh2fQ,94
97
97
  agentex/lib/cli/templates/temporal/deploy/example.yaml.j2,sha256=sHIEuhtruyCfGPgeLQ1ilCCnRH0HpsqhDdQT44UWUaU,1554
98
98
  agentex/lib/cli/templates/temporal/project/acp.py.j2,sha256=Ha5oBaGT1WC93TEBfWMM7OtbmAYOF2t3PjY6uOL6mJE,2386
99
- agentex/lib/cli/templates/temporal/project/run_worker.py.j2,sha256=kgEbi-NNKDEOcW7lWP1rfQhFHpqjLtUi0Bc7AjO9jQo,979
99
+ agentex/lib/cli/templates/temporal/project/run_worker.py.j2,sha256=ozHR7uXB9Tc012wY9vRhHe5N6n1HC1ihYiKQdL2WCyc,987
100
100
  agentex/lib/cli/templates/temporal/project/workflow.py.j2,sha256=VPnHnzr09i5y68vCOIJ8wTrc8KVHoDp5WooQew0GiWg,3210
101
101
  agentex/lib/cli/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
102
  agentex/lib/cli/utils/auth_utils.py,sha256=Y8pCqvQxhYtyQOzbpFZ_PUIp6vo8XGDOPdyoRI1_KG8,489
@@ -158,7 +158,7 @@ agentex/lib/core/temporal/activities/adk/providers/sgp_activities.py,sha256=C8n9
158
158
  agentex/lib/core/temporal/activities/adk/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
159
159
  agentex/lib/core/temporal/activities/adk/utils/templating_activities.py,sha256=dX6wpcTKY_qWsm3uJV-XU5fQLqwWAhnjO83k8EK0N7o,1189
160
160
  agentex/lib/core/temporal/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
161
- agentex/lib/core/temporal/services/temporal_task_service.py,sha256=kXUOwcg1Suc0k6q8qCTn93o2rGmJoLyYJaGMfhkCpRc,2285
161
+ agentex/lib/core/temporal/services/temporal_task_service.py,sha256=oxaegtUMfr3ECWNzJJfQ8HJxd_T7ELlNwb9Sau9kHRA,2341
162
162
  agentex/lib/core/temporal/types/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
163
  agentex/lib/core/temporal/types/workflow.py,sha256=o8lBUloI44NTYFfbA1BLgzUneyN7aLbt042Eq_9OKo8,89
164
164
  agentex/lib/core/temporal/workers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -184,7 +184,7 @@ agentex/lib/sdk/fastacp/fastacp.py,sha256=K4D7a9EiJfCgWp2hrE_TbpZBaF4Uc46MfndZK3
184
184
  agentex/lib/sdk/fastacp/base/base_acp_server.py,sha256=fkEVg5M4Ni2uPt_oiCP7_jfTmRvcC0o2VTg0Oka7mXA,14590
185
185
  agentex/lib/sdk/fastacp/impl/agentic_base_acp.py,sha256=LWLAlHrs-2Lc2UICBAEFL8c3JwTA6oxPnzUzW0qQWSA,2694
186
186
  agentex/lib/sdk/fastacp/impl/sync_acp.py,sha256=8FEDfBxI31NoVLX9nyckQ8QwA0UV4svC3fhGKgXBIwk,3862
187
- agentex/lib/sdk/fastacp/impl/temporal_acp.py,sha256=ZLqjzBBVrXJCXD2bFlrcDkFvpsXZp3thC2rTwZ6xNaY,3737
187
+ agentex/lib/sdk/fastacp/impl/temporal_acp.py,sha256=hQa_zGG6l_jIHNC75H_KXlPUuVqNBc-zIm-pmCDSZ6w,3759
188
188
  agentex/lib/sdk/fastacp/tests/README.md,sha256=HejScemERLCs-wCgU3l1Xo4tcQ4gQy15GgoF-CkNh-0,8270
189
189
  agentex/lib/sdk/fastacp/tests/conftest.py,sha256=wU3DCGZNBqY-HcJ4tz_tlphhS_5xGbZ6gSd72fGY2E0,9490
190
190
  agentex/lib/sdk/fastacp/tests/pytest.ini,sha256=MdF2xHp4oPyUC4z7-xoNZR9vFyYkBoFvuCfgEEprv4k,231
@@ -228,7 +228,7 @@ agentex/lib/utils/temporal.py,sha256=sXo8OPMMXiyrF7OSBCJBuN_ufyQOD2bLOXgDbVZoyds
228
228
  agentex/lib/utils/dev_tools/__init__.py,sha256=oaHxw6ymfhNql-kzXHv3NWVHuqD4fHumasNXJG7kHTU,261
229
229
  agentex/lib/utils/dev_tools/async_messages.py,sha256=-alUK1KFltcRb6xtRtIJIRJW9Sf1FwDRgaNPhOn-luw,18105
230
230
  agentex/resources/__init__.py,sha256=74rMqWBzQ2dSrKQqsrd7-jskPws0O_ogkFltvZO3HoU,3265
231
- agentex/resources/agents.py,sha256=Iwt2jnBUgSynMdfxYjW7KV9o0nZjT7cgiSqS_Zd4jmU,46735
231
+ agentex/resources/agents.py,sha256=WLG7wTQcCZCtqvNiyi2wjuDA2u85nEA5o9kUr5pBQXE,46977
232
232
  agentex/resources/events.py,sha256=Zc9JhUm3bq2VFnBAolC0M7KZernzj1AjZ_vj0ibP4GY,10412
233
233
  agentex/resources/spans.py,sha256=wmcUs4XbXIF5rPeyU_f39c2RTbTLnkuh2LYogZEBD6s,20936
234
234
  agentex/resources/states.py,sha256=O31A8--n7n0rHsng2e1oCUAzLNjQIxDUk7rq0IXfgGM,19262
@@ -296,8 +296,8 @@ agentex/types/messages/batch_update_params.py,sha256=Ug5CThbD49a8j4qucg04OdmVrp_
296
296
  agentex/types/messages/batch_update_response.py,sha256=TbSBe6SuPzjXXWSj-nRjT1JHGBooTshHQQDa1AixQA8,278
297
297
  agentex/types/shared/__init__.py,sha256=IKs-Qn5Yja0kFh1G1kDqYZo43qrOu1hSoxlPdN-85dI,149
298
298
  agentex/types/shared/delete_response.py,sha256=8qH3zvQXaOHYQSHyXi7UQxdR4miTzR7V9K4zXVsiUyk,215
299
- agentex_sdk-0.2.7.dist-info/METADATA,sha256=jDeAOkWMQtFYbgfRbFGwSITJDei-oGZIBYeDksRdq4o,15037
300
- agentex_sdk-0.2.7.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
301
- agentex_sdk-0.2.7.dist-info/entry_points.txt,sha256=V7vJuMZdF0UlvgX6KiBN7XUvq_cxF5kplcYvc1QlFaQ,62
302
- agentex_sdk-0.2.7.dist-info/licenses/LICENSE,sha256=Q1AOx2FtRcMlyMgQJ9eVN2WKPq2mQ33lnB4tvWxabLA,11337
303
- agentex_sdk-0.2.7.dist-info/RECORD,,
299
+ agentex_sdk-0.2.9.dist-info/METADATA,sha256=T1rkbRBnJy8GLDSASHqV3fL96ze48KTNaMYzD11Z9kI,15037
300
+ agentex_sdk-0.2.9.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
301
+ agentex_sdk-0.2.9.dist-info/entry_points.txt,sha256=V7vJuMZdF0UlvgX6KiBN7XUvq_cxF5kplcYvc1QlFaQ,62
302
+ agentex_sdk-0.2.9.dist-info/licenses/LICENSE,sha256=Q1AOx2FtRcMlyMgQJ9eVN2WKPq2mQ33lnB4tvWxabLA,11337
303
+ agentex_sdk-0.2.9.dist-info/RECORD,,