agentex-sdk 0.8.1__py3-none-any.whl → 0.9.0__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.
Files changed (25) hide show
  1. agentex/_base_client.py +134 -11
  2. agentex/_models.py +16 -1
  3. agentex/_types.py +9 -0
  4. agentex/_version.py +1 -1
  5. agentex/lib/cli/commands/agents.py +141 -73
  6. agentex/lib/cli/commands/init.py +13 -2
  7. agentex/lib/cli/handlers/agent_handlers.py +130 -12
  8. agentex/lib/cli/templates/sync-openai-agents/.dockerignore.j2 +43 -0
  9. agentex/lib/cli/templates/sync-openai-agents/Dockerfile-uv.j2 +42 -0
  10. agentex/lib/cli/templates/sync-openai-agents/Dockerfile.j2 +43 -0
  11. agentex/lib/cli/templates/sync-openai-agents/README.md.j2 +313 -0
  12. agentex/lib/cli/templates/sync-openai-agents/dev.ipynb.j2 +167 -0
  13. agentex/lib/cli/templates/sync-openai-agents/environments.yaml.j2 +53 -0
  14. agentex/lib/cli/templates/sync-openai-agents/manifest.yaml.j2 +115 -0
  15. agentex/lib/cli/templates/sync-openai-agents/project/acp.py.j2 +137 -0
  16. agentex/lib/cli/templates/sync-openai-agents/pyproject.toml.j2 +32 -0
  17. agentex/lib/cli/templates/sync-openai-agents/requirements.txt.j2 +5 -0
  18. agentex/lib/cli/templates/sync-openai-agents/test_agent.py.j2 +70 -0
  19. agentex/lib/sdk/config/environment_config.py +113 -73
  20. agentex/lib/sdk/config/validation.py +62 -61
  21. {agentex_sdk-0.8.1.dist-info → agentex_sdk-0.9.0.dist-info}/METADATA +1 -1
  22. {agentex_sdk-0.8.1.dist-info → agentex_sdk-0.9.0.dist-info}/RECORD +25 -14
  23. {agentex_sdk-0.8.1.dist-info → agentex_sdk-0.9.0.dist-info}/licenses/LICENSE +1 -1
  24. {agentex_sdk-0.8.1.dist-info → agentex_sdk-0.9.0.dist-info}/WHEEL +0 -0
  25. {agentex_sdk-0.8.1.dist-info → agentex_sdk-0.9.0.dist-info}/entry_points.txt +0 -0
@@ -4,6 +4,7 @@ Validation framework for agent configuration files.
4
4
  This module provides validation functions for agent configurations,
5
5
  with clear error messages and best practices enforcement.
6
6
  """
7
+
7
8
  from __future__ import annotations
8
9
 
9
10
  from typing import Any, Dict, List, Optional
@@ -17,7 +18,7 @@ logger = make_logger(__name__)
17
18
 
18
19
  class ConfigValidationError(Exception):
19
20
  """Exception raised when configuration validation fails."""
20
-
21
+
21
22
  def __init__(self, message: str, file_path: Optional[str] = None):
22
23
  self.file_path = file_path
23
24
  super().__init__(message)
@@ -25,88 +26,95 @@ class ConfigValidationError(Exception):
25
26
 
26
27
  class EnvironmentsValidationError(ConfigValidationError):
27
28
  """Exception raised when environments.yaml validation fails."""
29
+
28
30
  pass
29
31
 
30
32
 
31
33
  def validate_environments_config(
32
- environments_config: AgentEnvironmentsConfig,
33
- required_environments: Optional[List[str]] = None
34
+ environments_config: AgentEnvironmentsConfig, required_environments: Optional[List[str]] = None
34
35
  ) -> None:
35
36
  """
36
37
  Validate environments configuration with comprehensive checks.
37
-
38
+
38
39
  Args:
39
40
  environments_config: The loaded environments configuration
40
41
  required_environments: List of environment names that must be present
41
-
42
+
42
43
  Raises:
43
44
  EnvironmentsValidationError: If validation fails
44
45
  """
45
46
  # Check for required environments
46
47
  if required_environments:
48
+ # this must exist as a top-level key or via the environment indicator
47
49
  missing_envs: List[str] = []
50
+ environment_mappings = [env.environment for env in environments_config.environments.values() if env.environment]
51
+ top_level_envs = [env for env in environments_config.environments]
52
+ all_envs = set(environment_mappings + top_level_envs)
48
53
  for env_name in required_environments:
49
- if env_name not in environments_config.environments:
54
+ if env_name not in all_envs:
50
55
  missing_envs.append(env_name)
51
-
56
+
52
57
  if missing_envs:
53
- available_envs = list(environments_config.environments.keys())
54
58
  raise EnvironmentsValidationError(
55
59
  f"Missing required environments: {', '.join(missing_envs)}. "
56
- f"Available environments: {', '.join(available_envs)}"
60
+ f"Available environments: {', '.join(all_envs)}"
57
61
  )
58
-
62
+
63
+ # if environment mappings are set, you cannot have a top-level env_name that maps to an `environment: value`
64
+ # and another environment that has the mapping i.e.
65
+ # enviorments:
66
+ # dev:
67
+ # ....
68
+ # dev1:
69
+ # environment: dev
70
+ # this is invalid because its unclear if "dev" refers to just that top-level environment or the mapping
71
+ #
59
72
  # Validate each environment configuration
60
73
  for env_name, env_config in environments_config.environments.items():
61
74
  try:
62
75
  _validate_single_environment_config(env_name, env_config)
63
76
  except Exception as e:
64
- raise EnvironmentsValidationError(
65
- f"Environment '{env_name}' configuration error: {str(e)}"
66
- ) from e
77
+ raise EnvironmentsValidationError(f"Environment '{env_name}' configuration error: {str(e)}") from e
67
78
 
68
79
 
69
80
  def _validate_single_environment_config(env_name: str, env_config: AgentEnvironmentConfig) -> None:
70
81
  """
71
82
  Validate a single environment configuration.
72
-
83
+
73
84
  Args:
74
85
  env_name: Name of the environment
75
86
  env_config: AgentEnvironmentConfig instance
76
-
87
+
77
88
  Raises:
78
89
  ValueError: If validation fails
79
90
  """
80
91
  # Validate namespace naming conventions if kubernetes config exists
81
92
  if env_config.kubernetes and env_config.kubernetes.namespace:
82
93
  namespace = env_config.kubernetes.namespace
83
-
94
+
84
95
  # Check for common namespace naming issues
85
96
  if namespace != namespace.lower():
86
97
  logger.warning(
87
- f"Namespace '{namespace}' contains uppercase letters. "
88
- "Kubernetes namespaces should be lowercase."
98
+ f"Namespace '{namespace}' contains uppercase letters. Kubernetes namespaces should be lowercase."
89
99
  )
90
-
91
- if namespace.startswith('-') or namespace.endswith('-'):
92
- raise ValueError(
93
- f"Namespace '{namespace}' cannot start or end with hyphens"
94
- )
95
-
100
+
101
+ if namespace.startswith("-") or namespace.endswith("-"):
102
+ raise ValueError(f"Namespace '{namespace}' cannot start or end with hyphens")
103
+
96
104
  # Validate auth principal
97
105
  principal = env_config.auth.principal
98
- if not principal.get('user_id'):
106
+ if not principal.get("user_id"):
99
107
  raise ValueError("Auth principal must contain non-empty 'user_id'")
100
-
108
+
101
109
  # Check for environment-specific user_id patterns
102
- user_id = principal['user_id']
110
+ user_id = principal["user_id"]
103
111
  if isinstance(user_id, str):
104
- if not any(env_name.lower() in user_id.lower() for env_name in ['dev', 'prod', 'staging', env_name]):
112
+ if not any(env_name.lower() in user_id.lower() for env_name in ["dev", "prod", "staging", env_name]):
105
113
  logger.warning(
106
114
  f"User ID '{user_id}' doesn't contain environment indicator. "
107
115
  f"Consider including '{env_name}' in the user_id for clarity."
108
116
  )
109
-
117
+
110
118
  # Validate helm overrides if present
111
119
  if env_config.helm_overrides:
112
120
  _validate_helm_overrides(env_config.helm_overrides)
@@ -115,26 +123,26 @@ def _validate_single_environment_config(env_name: str, env_config: AgentEnvironm
115
123
  def _validate_helm_overrides(helm_overrides: Dict[str, Any]) -> None:
116
124
  """
117
125
  Validate helm override configuration.
118
-
126
+
119
127
  Args:
120
128
  helm_overrides: Dictionary of helm overrides
121
-
129
+
122
130
  Raises:
123
131
  ValueError: If validation fails
124
132
  """
125
133
  # Check for common helm override issues
126
- if 'resources' in helm_overrides:
127
- resources = helm_overrides['resources']
134
+ if "resources" in helm_overrides:
135
+ resources = helm_overrides["resources"]
128
136
  if isinstance(resources, dict):
129
137
  # Validate resource format
130
- if 'requests' in resources or 'limits' in resources:
131
- for resource_type in ['requests', 'limits']:
138
+ if "requests" in resources or "limits" in resources:
139
+ for resource_type in ["requests", "limits"]:
132
140
  if resource_type in resources:
133
141
  resource_config: Any = resources[resource_type]
134
142
  if isinstance(resource_config, dict):
135
143
  # Check for valid resource specifications
136
144
  for key, value in resource_config.items():
137
- if key in ['cpu', 'memory'] and not isinstance(value, str):
145
+ if key in ["cpu", "memory"] and not isinstance(value, str):
138
146
  logger.warning(
139
147
  f"Resource {key} should be a string (e.g., '500m', '1Gi'), "
140
148
  f"got {type(value).__name__}: {value}"
@@ -144,13 +152,13 @@ def _validate_helm_overrides(helm_overrides: Dict[str, Any]) -> None:
144
152
  def validate_environments_yaml_file(file_path: str) -> AgentEnvironmentsConfig:
145
153
  """
146
154
  Load and validate environments.yaml file.
147
-
155
+
148
156
  Args:
149
157
  file_path: Path to environments.yaml file
150
-
158
+
151
159
  Returns:
152
160
  Validated AgentEnvironmentsConfig
153
-
161
+
154
162
  Raises:
155
163
  EnvironmentsValidationError: If file is invalid
156
164
  """
@@ -164,66 +172,59 @@ def validate_environments_yaml_file(file_path: str) -> AgentEnvironmentsConfig:
164
172
  "📋 Why required:\n"
165
173
  " Environment-specific settings (auth, namespace, resources)\n"
166
174
  " must be separated from global manifest for proper isolation.",
167
- file_path=file_path
175
+ file_path=file_path,
168
176
  ) from None
169
177
  except Exception as e:
170
- raise EnvironmentsValidationError(
171
- f"Invalid environments.yaml file: {str(e)}",
172
- file_path=file_path
173
- ) from e
178
+ raise EnvironmentsValidationError(f"Invalid environments.yaml file: {str(e)}", file_path=file_path) from e
174
179
 
175
180
 
176
181
  def validate_manifest_and_environments(
177
- manifest_path: str,
178
- required_environment: Optional[str] = None
182
+ manifest_path: str, required_environment: Optional[str] = None
179
183
  ) -> tuple[str, AgentEnvironmentsConfig]:
180
184
  """
181
185
  Validate both manifest.yaml and environments.yaml files together.
182
-
186
+
183
187
  Args:
184
188
  manifest_path: Path to manifest.yaml file
185
189
  required_environment: Specific environment that must be present
186
-
190
+
187
191
  Returns:
188
192
  Tuple of (manifest_path, environments_config)
189
-
193
+
190
194
  Raises:
191
195
  ConfigValidationError: If validation fails
192
196
  """
193
197
  manifest_file = Path(manifest_path)
194
198
  if not manifest_file.exists():
195
199
  raise ConfigValidationError(f"Manifest file not found: {manifest_path}")
196
-
200
+
197
201
  # Look for environments.yaml in same directory
198
202
  environments_file = manifest_file.parent / "environments.yaml"
199
203
  environments_config = validate_environments_yaml_file(str(environments_file))
200
-
204
+
201
205
  # Validate specific environment if requested
202
206
  if required_environment:
203
- validate_environments_config(
204
- environments_config,
205
- required_environments=[required_environment]
206
- )
207
-
207
+ validate_environments_config(environments_config, required_environments=[required_environment])
208
+
208
209
  return manifest_path, environments_config
209
210
 
210
211
 
211
212
  def generate_helpful_error_message(error: Exception, context: str = "") -> str:
212
213
  """
213
214
  Generate helpful error message with troubleshooting tips.
214
-
215
+
215
216
  Args:
216
217
  error: The original exception
217
218
  context: Additional context about where the error occurred
218
-
219
+
219
220
  Returns:
220
221
  Formatted error message with troubleshooting tips
221
222
  """
222
223
  base_msg = str(error)
223
-
224
+
224
225
  if context:
225
226
  base_msg = f"{context}: {base_msg}"
226
-
227
+
227
228
  # Add troubleshooting tips based on error type
228
229
  if isinstance(error, FileNotFoundError):
229
230
  if "environments.yaml" in base_msg:
@@ -246,5 +247,5 @@ def generate_helpful_error_message(error: Exception, context: str = "") -> str:
246
247
  "- Include team and environment (e.g., 'team-dev-agent')\n"
247
248
  "- Keep under 63 characters"
248
249
  )
249
-
250
+
250
251
  return base_msg
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: agentex-sdk
3
- Version: 0.8.1
3
+ Version: 0.9.0
4
4
  Summary: The official Python library for the agentex API
5
5
  Project-URL: Homepage, https://github.com/scaleapi/scale-agentex-python
6
6
  Project-URL: Repository, https://github.com/scaleapi/scale-agentex-python
@@ -1,17 +1,17 @@
1
1
  agentex/__init__.py,sha256=TvS8DtvGAnubcoUjYIsuCpBzpsdpxBaJCS76s-l-PRo,2712
2
- agentex/_base_client.py,sha256=bYjTh_wPlo7zWeUO4hnrh30DrWsCAAVdohUlt-zsqUg,67248
2
+ agentex/_base_client.py,sha256=gb-HyiWzYErOgODj-HypzcOTPQnxZxCuW2wZD2wixrY,73410
3
3
  agentex/_client.py,sha256=39ydvoIqEPVYkM891ZMhCMKrbXR59QUxuKTtrTJGgMM,28482
4
4
  agentex/_compat.py,sha256=DQBVORjFb33zch24jzkhM14msvnzY7mmSmgDLaVFUM8,6562
5
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
- agentex/_models.py,sha256=3D65psj_C02Mw0K2zpBWrn1khmrvtEXgTTQ6P4r3tUY,31837
8
+ agentex/_models.py,sha256=R3MpO2z4XhTAnD3ObEks32suRXleF1g7BEgQTOLIxTs,32112
9
9
  agentex/_qs.py,sha256=craIKyvPktJ94cvf9zn8j8ekG9dWJzhWv0ob34lIOv4,4828
10
10
  agentex/_resource.py,sha256=S1t7wmR5WUvoDIhZjo_x-E7uoTJBynJ3d8tPJMQYdjw,1106
11
11
  agentex/_response.py,sha256=Tb9zazsnemO2rTxWtBjAD5WBqlhli5ZaXGbiKgdu5DE,28794
12
12
  agentex/_streaming.py,sha256=aOvLOte7kaclPGm-D0iNdM3uRcWrZ-T2B8t9BDNmpuA,10225
13
- agentex/_types.py,sha256=00q2kgDxUPJC16dU-YIUeOFsN5MzNW0zjzVXMlBYGV0,7296
14
- agentex/_version.py,sha256=SprjymQjfV2BjyuFEaxil784EZtHqtGJvTME7Wtpx2s,159
13
+ agentex/_types.py,sha256=fa7vkH4XTd2n7GdGxf8-i_2kMDtXgwO3X_usN1GyknI,7595
14
+ agentex/_version.py,sha256=QknnjghXHjI-VZe2lpTxhOcs4xErxRJqPkosahapkpw,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
@@ -52,8 +52,8 @@ agentex/lib/adk/utils/_modules/client.py,sha256=UYSTThuZoX3nqF8iuRmRI8uPO00NrYgC
52
52
  agentex/lib/adk/utils/_modules/templating.py,sha256=tSiJGoDrF-XkMEi4MB_wVH6nyKyhSQwVZ8krN5R-86Q,3598
53
53
  agentex/lib/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
54
54
  agentex/lib/cli/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- agentex/lib/cli/commands/agents.py,sha256=E6O7p3B3P4yX-oYWRtzfbEyI5Pws-yzFi-htYJ7B_kY,14079
56
- agentex/lib/cli/commands/init.py,sha256=CrKksw5l1w9hXSdDN6wPNgQlyE1k_kqHlA6QrOenqHM,15537
55
+ agentex/lib/cli/commands/agents.py,sha256=QbqRdZEJNlbfSpQ5HrN0xfQBL6bCKD0l1PijTYSb1ak,17014
56
+ agentex/lib/cli/commands/init.py,sha256=pf8FHuJKO1NtTNEKkpB34EcJ-V8D7TcPP_EUrgbkaZs,16041
57
57
  agentex/lib/cli/commands/main.py,sha256=QWychw-Xq3nQ00BMypgOEF4w1WauNrgQ06PDardNP_8,1042
58
58
  agentex/lib/cli/commands/secrets.py,sha256=t4zvoyjOHmw-8qp6nsxdZCvqy43QXOl0MWXA3ooBO6Q,5640
59
59
  agentex/lib/cli/commands/tasks.py,sha256=fvZJjYI8Dh-6nbTVpRa2-VdF6A8D4w3Dmd4tMslSTPI,3741
@@ -62,7 +62,7 @@ agentex/lib/cli/debug/__init__.py,sha256=-ZF2Hg8tyREDjPTefhJG_KesX4DA1gZue89pzf4
62
62
  agentex/lib/cli/debug/debug_config.py,sha256=XlMyq7jP9NPAncO9Saob1Ga7dn-6DhmJ86iKAlQC9WY,3388
63
63
  agentex/lib/cli/debug/debug_handlers.py,sha256=CZ8i5Xf50IQOeMvNfNgE5AgphkxnPo4jf2VbMt2jDEE,5690
64
64
  agentex/lib/cli/handlers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
- agentex/lib/cli/handlers/agent_handlers.py,sha256=xy2kXo7poV270yFLyqXNbZ79d_sq_vl5JAs93okYMHY,5604
65
+ agentex/lib/cli/handlers/agent_handlers.py,sha256=KwfWIwjJX1gYaddU19X-U_fIUZegAqoLDPM2FmfAIhg,9985
66
66
  agentex/lib/cli/handlers/cleanup_handlers.py,sha256=-MISeCxZ9zOcSL8gBzEHrSMwhW3cJtoXrQkGAzGeknE,7179
67
67
  agentex/lib/cli/handlers/deploy_handlers.py,sha256=DcTIi0QUaZRiJG0LcPhKfN2Jkd1aOcRhEZYk8kUQt1w,16243
68
68
  agentex/lib/cli/handlers/run_handlers.py,sha256=UFUm-vOUq2aIGUYiuAre7c73U3hd6AHrDXPA1fPmAEw,15963
@@ -89,6 +89,17 @@ agentex/lib/cli/templates/sync/pyproject.toml.j2,sha256=eyN6dYqJTFzb5WztJMxboy9W
89
89
  agentex/lib/cli/templates/sync/requirements.txt.j2,sha256=iTmO-z8qFkUa1jTctFCs0WYuq7Sqi6VNQAwATakh2fQ,94
90
90
  agentex/lib/cli/templates/sync/test_agent.py.j2,sha256=zMJMCqWcEvKUUxfXSC0GRtLveqvGTknZjZWy2-HbtNU,2049
91
91
  agentex/lib/cli/templates/sync/project/acp.py.j2,sha256=PUVXnN7IikBWYnfqLMgual-iXdl_benAjEfNcRADHBk,998
92
+ agentex/lib/cli/templates/sync-openai-agents/.dockerignore.j2,sha256=hweGFxw5eDZYsb5EnRHpv27o9M1HF2PEWOxqsfBBcAE,320
93
+ agentex/lib/cli/templates/sync-openai-agents/Dockerfile-uv.j2,sha256=9-xbz3mh5yGuSxtQ6FRltzY45OyUzvi1ZmlfwOioK-M,1085
94
+ agentex/lib/cli/templates/sync-openai-agents/Dockerfile.j2,sha256=-P2CwE84h4mwO1Gnl779c4MdoOcVX8_ndpesq9M4fQQ,1093
95
+ agentex/lib/cli/templates/sync-openai-agents/README.md.j2,sha256=_S7Ngl4qOUQHPFldLXDBvuIWPFU2-WcuxGmr5EXLX6k,8816
96
+ agentex/lib/cli/templates/sync-openai-agents/dev.ipynb.j2,sha256=Z42iRveuI_k5LcJqWX-3H1glPtNTkxg_MKVe1lwuJos,6055
97
+ agentex/lib/cli/templates/sync-openai-agents/environments.yaml.j2,sha256=BGprRPca_Y2sPA7kOiSK8COYp4_USoikB4cQ3wbAg94,1769
98
+ agentex/lib/cli/templates/sync-openai-agents/manifest.yaml.j2,sha256=pvH3AmdSsp4NvOtQkGTHE9ZM5wou0j99RF5ITWK5wH8,3848
99
+ agentex/lib/cli/templates/sync-openai-agents/pyproject.toml.j2,sha256=eyN6dYqJTFzb5WztJMxboy9Wc0XPXVnKYaF5JBxJE7o,507
100
+ agentex/lib/cli/templates/sync-openai-agents/requirements.txt.j2,sha256=iTmO-z8qFkUa1jTctFCs0WYuq7Sqi6VNQAwATakh2fQ,94
101
+ agentex/lib/cli/templates/sync-openai-agents/test_agent.py.j2,sha256=zMJMCqWcEvKUUxfXSC0GRtLveqvGTknZjZWy2-HbtNU,2049
102
+ agentex/lib/cli/templates/sync-openai-agents/project/acp.py.j2,sha256=a4DFVzRnKksz3Nz0z9FvHJp1dA3kno5NSuYyKrRPQVw,4354
92
103
  agentex/lib/cli/templates/temporal/.dockerignore.j2,sha256=hweGFxw5eDZYsb5EnRHpv27o9M1HF2PEWOxqsfBBcAE,320
93
104
  agentex/lib/cli/templates/temporal/Dockerfile-uv.j2,sha256=g8zECsR9_byvlc8bPdbY4Lw97w9nlWb8edx5FPiJav0,1426
94
105
  agentex/lib/cli/templates/temporal/Dockerfile.j2,sha256=N1Z73jb8pnxsjP9zbs-tSyNHO6usVzyOdtWorbR5gVY,1434
@@ -215,10 +226,10 @@ agentex/lib/sdk/config/agent_config.py,sha256=4q1qMdE9_gBTsLB_NplY4exzUYLd8wQIyw
215
226
  agentex/lib/sdk/config/agent_manifest.py,sha256=28e2o6yDe_hQMfegMUh07w-B5Kh9WZHv0z77kJvcJFk,8626
216
227
  agentex/lib/sdk/config/build_config.py,sha256=pTgtvecHQejp4SlCvS6f6TfGnWqXFG-Ac0L8zthvyGk,1085
217
228
  agentex/lib/sdk/config/deployment_config.py,sha256=QZ8zsYt4Uchw1hCs2y9mHJ8EPVBbbOfmBktv1SC_4K4,4028
218
- agentex/lib/sdk/config/environment_config.py,sha256=RrQPMHNAKOuqGpXPDKoQNi50lXssLOncIYLy4iwbrxs,6790
229
+ agentex/lib/sdk/config/environment_config.py,sha256=zI-U060RsZZf8G6AAh1Y9F0Ls2AQIy0-Jn98NQT2yP8,8904
219
230
  agentex/lib/sdk/config/local_development_config.py,sha256=Sx7Cf3bP4oVjavdqy5rx4pvLZocyS19uJcrEj_mA5Nc,1733
220
231
  agentex/lib/sdk/config/project_config.py,sha256=uMrg9BqEQFcnqdlqqSLYsaQkP1mMedhEZZMzPBSyCK0,3698
221
- agentex/lib/sdk/config/validation.py,sha256=ox8g2vwjYsmfNcz4G-sbPw0ccWjylJRG5bufTEPQMCk,9024
232
+ agentex/lib/sdk/config/validation.py,sha256=yzt9n7KTwHotA-vExa_LK_D_mgq4FCDGIjHuKSgs0Ks,9319
222
233
  agentex/lib/sdk/fastacp/__init__.py,sha256=UvAdexdnfb4z0F4a2sfXROFyh9EjH89kf3AxHPybzCM,75
223
234
  agentex/lib/sdk/fastacp/fastacp.py,sha256=3aT74pFwF76VoTbQnGZsF6As42aLa2o_JrO6EP_XHQM,4591
224
235
  agentex/lib/sdk/fastacp/base/base_acp_server.py,sha256=W2rMZUC-5GLvLJsLFKZHtmyG9Uhrsgffqo9qcomThsQ,17163
@@ -351,8 +362,8 @@ agentex/types/messages/batch_update_params.py,sha256=Ug5CThbD49a8j4qucg04OdmVrp_
351
362
  agentex/types/messages/batch_update_response.py,sha256=TbSBe6SuPzjXXWSj-nRjT1JHGBooTshHQQDa1AixQA8,278
352
363
  agentex/types/shared/__init__.py,sha256=IKs-Qn5Yja0kFh1G1kDqYZo43qrOu1hSoxlPdN-85dI,149
353
364
  agentex/types/shared/delete_response.py,sha256=8qH3zvQXaOHYQSHyXi7UQxdR4miTzR7V9K4zXVsiUyk,215
354
- agentex_sdk-0.8.1.dist-info/METADATA,sha256=Hp1HQXnaGaB3pROJpb4izGi--8pv7doi7TBTzJddQYI,15553
355
- agentex_sdk-0.8.1.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
356
- agentex_sdk-0.8.1.dist-info/entry_points.txt,sha256=V7vJuMZdF0UlvgX6KiBN7XUvq_cxF5kplcYvc1QlFaQ,62
357
- agentex_sdk-0.8.1.dist-info/licenses/LICENSE,sha256=Q1AOx2FtRcMlyMgQJ9eVN2WKPq2mQ33lnB4tvWxabLA,11337
358
- agentex_sdk-0.8.1.dist-info/RECORD,,
365
+ agentex_sdk-0.9.0.dist-info/METADATA,sha256=fyyMd_afMH7xhLdmQ7mLlYCvFU6SiqmMrIn4dVFe9eg,15553
366
+ agentex_sdk-0.9.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
367
+ agentex_sdk-0.9.0.dist-info/entry_points.txt,sha256=V7vJuMZdF0UlvgX6KiBN7XUvq_cxF5kplcYvc1QlFaQ,62
368
+ agentex_sdk-0.9.0.dist-info/licenses/LICENSE,sha256=Eejl902yry8m7Bl6gRYRUObLifIrC61CmV369C6-dqQ,11337
369
+ agentex_sdk-0.9.0.dist-info/RECORD,,
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright 2025 Agentex
189
+ Copyright 2026 Agentex
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.