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.
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/PKG-INFO +1 -1
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/setup.py +1 -1
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/models/agent.py +4 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/events_module.py +61 -4
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/models/events.py +6 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk.egg-info/PKG-INFO +1 -1
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/LICENSE +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/README.md +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/pyproject.toml +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/setup.cfg +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/consts/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/consts/api_routes.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/core/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/core/module_base.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/core/state.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/core/xpander_api_client.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/exceptions/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/exceptions/module_exception.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/activity.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/compactization.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/configuration.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/deep_planning.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/events.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/frameworks.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/generic.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/notifications.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/orchestrations.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/shared.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/models/user.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/agents_module.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/models/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/models/agent_list.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/models/knowledge_bases.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/sub_modules/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/sub_modules/agent.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/utils/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/utils/generic.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/backend_module.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/decorators/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/decorators/on_auth_event.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/events_registry.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/frameworks/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/frameworks/agno.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/frameworks/dispatch.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/utils/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/utils/mcp_oauth.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/on_boot.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/on_shutdown.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/on_task.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/on_tool.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/models/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/models/deployments.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/utils/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/utils/generic.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/utils/git_init.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/knowledge_bases_module.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/models/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/models/knowledge_bases.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/sub_modules/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/sub_modules/knowledge_base.py +0 -0
- {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
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/utils/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/models/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/models/task.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/models/tasks_list.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/sub_modules/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/sub_modules/task.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/tasks_module.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/utils/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/utils/files.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/decorators/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/decorators/register_tool.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/models/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/models/mcp.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/models/tool_invocation_result.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/sub_modules/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/sub_modules/tool.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/tools_repository_module.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/utils/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/utils/generic.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/utils/local_tools.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/utils/schemas.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/agents/__init__.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/agents/compactization_agent.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/env.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/event_loop.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/generic.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/tools.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk.egg-info/SOURCES.txt +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk.egg-info/dependency_links.txt +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk.egg-info/requires.txt +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk.egg-info/top_level.txt +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_agents_module.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_api_client.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_backend_module.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_boot_shutdown_handlers.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_configuration.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_final_validation.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_knowledge_bases_module.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_tasks_module.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_tool_schema_enhancements.py +0 -0
- {xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/tests/test_tools_repository.py +0 -0
|
@@ -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] =
|
|
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
|
|
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.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/models/__init__.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/models/agent_list.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/models/knowledge_bases.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/sub_modules/__init__.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/sub_modules/agent.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/agents/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/backend_module.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/decorators/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/events_registry.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/frameworks/__init__.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/frameworks/agno.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/frameworks/dispatch.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/utils/__init__.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/backend/utils/mcp_oauth.py
RENAMED
|
File without changes
|
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/__init__.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/on_boot.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/on_shutdown.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/on_task.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/decorators/on_tool.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/models/__init__.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/models/deployments.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/events/utils/git_init.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/knowledge_bases/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/models/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/models/tasks_list.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/sub_modules/__init__.py
RENAMED
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tasks/sub_modules/task.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/modules/tools_repository/models/mcp.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{xpander_sdk-2.0.209 → xpander_sdk-2.0.211}/src/xpander_sdk/utils/agents/compactization_agent.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|