xpander-sdk 2.0.209__tar.gz → 2.0.211__tar.gz

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 (113) hide show
  1. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/PKG-INFO +1 -1
  2. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/setup.py +1 -1
  3. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/models/agent.py +4 -0
  4. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/events_module.py +61 -4
  5. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/models/events.py +6 -0
  6. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk.egg-info/PKG-INFO +1 -1
  7. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/LICENSE +0 -0
  8. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/README.md +0 -0
  9. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/pyproject.toml +0 -0
  10. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/setup.cfg +0 -0
  11. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/__init__.py +0 -0
  12. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/consts/__init__.py +0 -0
  13. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/consts/api_routes.py +0 -0
  14. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/core/__init__.py +0 -0
  15. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/core/module_base.py +0 -0
  16. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/core/state.py +0 -0
  17. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/core/xpander_api_client.py +0 -0
  18. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/exceptions/__init__.py +0 -0
  19. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/exceptions/module_exception.py +0 -0
  20. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/__init__.py +0 -0
  21. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/activity.py +0 -0
  22. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/compactization.py +0 -0
  23. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/configuration.py +0 -0
  24. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/deep_planning.py +0 -0
  25. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/events.py +0 -0
  26. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/frameworks.py +0 -0
  27. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/generic.py +0 -0
  28. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/notifications.py +0 -0
  29. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/orchestrations.py +0 -0
  30. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/shared.py +0 -0
  31. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/user.py +0 -0
  32. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/__init__.py +0 -0
  33. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/__init__.py +0 -0
  34. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/agents_module.py +0 -0
  35. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/models/__init__.py +0 -0
  36. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/models/agent_list.py +0 -0
  37. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/models/knowledge_bases.py +0 -0
  38. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/sub_modules/__init__.py +0 -0
  39. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/sub_modules/agent.py +0 -0
  40. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/utils/__init__.py +0 -0
  41. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/utils/generic.py +0 -0
  42. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/__init__.py +0 -0
  43. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/backend_module.py +0 -0
  44. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/decorators/__init__.py +0 -0
  45. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/decorators/on_auth_event.py +0 -0
  46. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/events_registry.py +0 -0
  47. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/frameworks/__init__.py +0 -0
  48. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/frameworks/agno.py +0 -0
  49. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/frameworks/dispatch.py +0 -0
  50. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/utils/__init__.py +0 -0
  51. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/utils/mcp_oauth.py +0 -0
  52. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/__init__.py +0 -0
  53. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/__init__.py +0 -0
  54. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/on_boot.py +0 -0
  55. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/on_shutdown.py +0 -0
  56. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/on_task.py +0 -0
  57. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/on_tool.py +0 -0
  58. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/models/__init__.py +0 -0
  59. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/models/deployments.py +0 -0
  60. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/utils/__init__.py +0 -0
  61. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/utils/generic.py +0 -0
  62. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/utils/git_init.py +0 -0
  63. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/__init__.py +0 -0
  64. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/knowledge_bases_module.py +0 -0
  65. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/models/__init__.py +0 -0
  66. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/models/knowledge_bases.py +0 -0
  67. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/sub_modules/__init__.py +0 -0
  68. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/sub_modules/knowledge_base.py +0 -0
  69. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/sub_modules/knowledge_base_document_item.py +0 -0
  70. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/utils/__init__.py +0 -0
  71. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/__init__.py +0 -0
  72. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/models/__init__.py +0 -0
  73. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/models/task.py +0 -0
  74. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/models/tasks_list.py +0 -0
  75. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/sub_modules/__init__.py +0 -0
  76. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/sub_modules/task.py +0 -0
  77. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/tasks_module.py +0 -0
  78. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/utils/__init__.py +0 -0
  79. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/utils/files.py +0 -0
  80. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/__init__.py +0 -0
  81. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/decorators/__init__.py +0 -0
  82. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/decorators/register_tool.py +0 -0
  83. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/models/__init__.py +0 -0
  84. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/models/mcp.py +0 -0
  85. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/models/tool_invocation_result.py +0 -0
  86. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/sub_modules/__init__.py +0 -0
  87. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/sub_modules/tool.py +0 -0
  88. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/tools_repository_module.py +0 -0
  89. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/utils/__init__.py +0 -0
  90. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/utils/generic.py +0 -0
  91. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/utils/local_tools.py +0 -0
  92. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/utils/schemas.py +0 -0
  93. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/__init__.py +0 -0
  94. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/agents/__init__.py +0 -0
  95. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/agents/compactization_agent.py +0 -0
  96. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/env.py +0 -0
  97. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/event_loop.py +0 -0
  98. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/generic.py +0 -0
  99. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/tools.py +0 -0
  100. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk.egg-info/SOURCES.txt +0 -0
  101. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk.egg-info/dependency_links.txt +0 -0
  102. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk.egg-info/requires.txt +0 -0
  103. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk.egg-info/top_level.txt +0 -0
  104. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_agents_module.py +0 -0
  105. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_api_client.py +0 -0
  106. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_backend_module.py +0 -0
  107. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_boot_shutdown_handlers.py +0 -0
  108. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_configuration.py +0 -0
  109. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_final_validation.py +0 -0
  110. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_knowledge_bases_module.py +0 -0
  111. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_tasks_module.py +0 -0
  112. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_tool_schema_enhancements.py +0 -0
  113. {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_tools_repository.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xpander-sdk
3
- Version: 2.0.209
3
+ Version: 2.0.211
4
4
  Summary: xpander.ai Backend-as-a-service for AI Agents - SDK
5
5
  Home-page: https://www.xpander.ai
6
6
  Author: xpanderAI
@@ -5,7 +5,7 @@ with open("README.md", "r", encoding="utf-8") as fh:
5
5
 
6
6
  setup(
7
7
  name="xpander-sdk",
8
- version="2.0.209",
8
+ version="2.0.211",
9
9
  author="xpanderAI",
10
10
  author_email="dev@xpander.ai",
11
11
  description="xpander.ai Backend-as-a-service for AI Agents - SDK",
@@ -498,9 +498,13 @@ class TaskLevelStrategies(XPanderSharedModel):
498
498
  max_runs_per_day:
499
499
  Optional limit on how many times the task is allowed to run within a
500
500
  24-hour period. If not set, no explicit daily limit is enforced.
501
+
502
+ agentic_context_enabled:
503
+ if agentic memory is enabled and accesible to the executor.
501
504
  """
502
505
 
503
506
  retry_strategy: Optional[OrchestrationRetryStrategy] = None
504
507
  iterative_strategy: Optional[OrchestrationIterativeStrategy] = None
505
508
  stop_strategy: Optional[OrchestrationStopStrategy] = None
506
509
  max_runs_per_day: Optional[int] = None
510
+ agentic_context_enabled: Optional[bool] = False
@@ -37,6 +37,7 @@ from .models.events import (
37
37
  WorkerEnvironmentConflict,
38
38
  WorkerFinishedEvent,
39
39
  WorkerHeartbeat,
40
+ WorkerCapacityUpdateEvent,
40
41
  )
41
42
  from ..tasks.sub_modules.task import Task
42
43
  from ..tasks.models.task import AgentExecutionStatus, LocalTaskTest
@@ -90,7 +91,7 @@ class Events(ModuleBase):
90
91
  def __init__(
91
92
  self,
92
93
  configuration: Optional[Configuration] = None,
93
- max_sync_workers: Optional[int] = 4,
94
+ max_sync_workers: Optional[int] = 6,
94
95
  max_retries: Optional[int] = _MAX_RETRIES,
95
96
  ):
96
97
  """
@@ -100,7 +101,7 @@ class Events(ModuleBase):
100
101
 
101
102
  Args:
102
103
  configuration (Optional[Configuration]): SDK configuration with credentials and endpoints. Defaults to environment configuration.
103
- max_sync_workers (Optional[int]): Maximum number of synchronous worker threads. Defaults to 4.
104
+ max_sync_workers (Optional[int]): Maximum number of synchronous worker threads. Defaults to 6.
104
105
  max_retries (Optional[int]): Maximum retry attempts for network calls. Defaults to 5.
105
106
 
106
107
  Raises:
@@ -127,6 +128,7 @@ class Events(ModuleBase):
127
128
  )
128
129
 
129
130
  self.max_retries = max_retries
131
+ self.max_sync_workers = max_sync_workers
130
132
 
131
133
  # Internal resources
132
134
  self._pool: ThreadPoolExecutor = ThreadPoolExecutor(
@@ -134,6 +136,7 @@ class Events(ModuleBase):
134
136
  thread_name_prefix="xpander-handler",
135
137
  )
136
138
  self._bg: Set[asyncio.Task] = set()
139
+ self._execution_semaphore: Optional[asyncio.Semaphore] = None
137
140
 
138
141
  logger.debug(
139
142
  f"Events initialised (base_url={self.configuration.base_url}, "
@@ -159,6 +162,9 @@ class Events(ModuleBase):
159
162
  # Execute boot handlers first, before any event listeners are set up
160
163
  await self._execute_boot_handlers()
161
164
 
165
+ # Initialize semaphore for capacity tracking
166
+ self._execution_semaphore = asyncio.Semaphore(self.max_sync_workers)
167
+
162
168
  loop = asyncio.get_running_loop()
163
169
  for sig in (signal.SIGINT, signal.SIGTERM):
164
170
  loop.add_signal_handler(
@@ -260,6 +266,22 @@ class Events(ModuleBase):
260
266
  assert last_exc is not None
261
267
  raise last_exc # for static checkers
262
268
 
269
+ async def _notify_capacity_status(self, worker_id: str, is_busy: bool) -> None:
270
+ """
271
+ Notify the backend of the worker's capacity status.
272
+
273
+ Args:
274
+ worker_id (str): The unique identifier of the worker.
275
+ is_busy (bool): Whether the worker is at max capacity.
276
+ """
277
+ url = f"{get_events_base(configuration=self.configuration)}/{worker_id}?type=worker&agent_id={self.agent_id}"
278
+ await self._request_with_retries(
279
+ "POST",
280
+ url,
281
+ headers=get_events_headers(configuration=self.configuration),
282
+ json=WorkerCapacityUpdateEvent(data={"is_busy": is_busy}).model_dump_safe(),
283
+ )
284
+
263
285
  async def _release_worker(self, worker_id: str) -> None:
264
286
  """
265
287
  Release the worker resource after task execution completion.
@@ -326,6 +348,31 @@ class Events(ModuleBase):
326
348
  await asyncio.sleep(backoff_delay(attempt))
327
349
  attempt += 1
328
350
 
351
+ async def _handle_task_with_semaphore(
352
+ self,
353
+ agent_worker: DeployedAsset,
354
+ task: Task,
355
+ on_execution_request: ExecutionRequestHandler,
356
+ ) -> None:
357
+ """
358
+ Wrapper that releases semaphore after task execution.
359
+ Semaphore is already acquired before calling this method.
360
+ """
361
+ try:
362
+ await self.handle_task_execution_request(
363
+ agent_worker, task, on_execution_request
364
+ )
365
+ finally:
366
+ # Release execution slot
367
+ self._execution_semaphore.release()
368
+
369
+ # Check if we now have available capacity and notify backend
370
+ if self._execution_semaphore._value > 0:
371
+ try:
372
+ await self._notify_capacity_status(agent_worker.id, is_busy=False)
373
+ except Exception as e:
374
+ logger.warning(f"Failed to notify available status: {e}")
375
+
329
376
  async def handle_task_execution_request(
330
377
  self,
331
378
  agent_worker: DeployedAsset,
@@ -379,7 +426,6 @@ class Events(ModuleBase):
379
426
  finally:
380
427
  task_used_tokens = task.tokens
381
428
  task_used_tools = task.used_tools
382
- await self._release_worker(agent_worker.id)
383
429
 
384
430
  if error:
385
431
  task.result = error
@@ -510,9 +556,20 @@ class Events(ModuleBase):
510
556
 
511
557
  elif event.event == EventType.AgentExecution:
512
558
  task = Task(**json.loads(event.data), configuration=self.configuration)
559
+
560
+ # Acquire execution slot immediately (blocks here if at max capacity)
561
+ await self._execution_semaphore.acquire()
562
+
563
+ # Check if we're now at max capacity and notify backend
564
+ if self._execution_semaphore._value == 0:
565
+ try:
566
+ await self._notify_capacity_status(agent_worker.id, is_busy=True)
567
+ except Exception as e:
568
+ logger.warning(f"Failed to notify busy status: {e}")
569
+
513
570
  self.track(
514
571
  asyncio.create_task(
515
- self.handle_task_execution_request(
572
+ self._handle_task_with_semaphore(
516
573
  agent_worker, task, on_execution_request
517
574
  )
518
575
  )
@@ -14,6 +14,7 @@ class EventType(str, Enum):
14
14
  AgentExecution = "agent-execution"
15
15
  WorkerHeartbeat = "worker-heartbeat"
16
16
  WorkerFinished = "worker-finished"
17
+ WorkerCapacityUpdate = "worker-capacity-update"
17
18
  EnvironmentConflict = "worker-environment-conflict"
18
19
 
19
20
 
@@ -52,6 +53,11 @@ class WorkerExecutionRequest(EventMessageBase):
52
53
  data: Task
53
54
 
54
55
 
56
+ class WorkerCapacityUpdateEvent(EventMessageBase):
57
+ event: EventType = EventType.WorkerCapacityUpdate
58
+ data: dict = {"is_busy": False}
59
+
60
+
55
61
  class WorkerEnvironmentConflict(EventMessageBase):
56
62
  event: EventType = EventType.EnvironmentConflict
57
63
  error: str
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xpander-sdk
3
- Version: 2.0.209
3
+ Version: 2.0.211
4
4
  Summary: xpander.ai Backend-as-a-service for AI Agents - SDK
5
5
  Home-page: https://www.xpander.ai
6
6
  Author: xpanderAI
File without changes
File without changes
File without changes