xpander-sdk 2.0.184__tar.gz → 2.0.186__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 (108) hide show
  1. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/PKG-INFO +3 -3
  2. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/README.md +2 -2
  3. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/setup.py +1 -1
  4. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/events/events_module.py +7 -1
  5. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk.egg-info/PKG-INFO +3 -3
  6. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/LICENSE +0 -0
  7. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/pyproject.toml +0 -0
  8. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/setup.cfg +0 -0
  9. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/__init__.py +0 -0
  10. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/consts/__init__.py +0 -0
  11. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/consts/api_routes.py +0 -0
  12. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/core/__init__.py +0 -0
  13. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/core/module_base.py +0 -0
  14. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/core/state.py +0 -0
  15. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/core/xpander_api_client.py +0 -0
  16. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/exceptions/__init__.py +0 -0
  17. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/exceptions/module_exception.py +0 -0
  18. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/models/__init__.py +0 -0
  19. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/models/activity.py +0 -0
  20. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/models/compactization.py +0 -0
  21. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/models/configuration.py +0 -0
  22. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/models/deep_planning.py +0 -0
  23. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/models/events.py +0 -0
  24. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/models/frameworks.py +0 -0
  25. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/models/shared.py +0 -0
  26. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/models/user.py +0 -0
  27. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/__init__.py +0 -0
  28. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/agents/__init__.py +0 -0
  29. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/agents/agents_module.py +0 -0
  30. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/agents/models/__init__.py +0 -0
  31. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/agents/models/agent.py +0 -0
  32. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/agents/models/agent_list.py +0 -0
  33. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/agents/models/knowledge_bases.py +0 -0
  34. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/agents/sub_modules/__init__.py +0 -0
  35. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/agents/sub_modules/agent.py +0 -0
  36. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/agents/utils/__init__.py +0 -0
  37. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/agents/utils/generic.py +0 -0
  38. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/backend/__init__.py +0 -0
  39. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/backend/backend_module.py +0 -0
  40. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/backend/decorators/__init__.py +0 -0
  41. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/backend/decorators/on_auth_event.py +0 -0
  42. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/backend/events_registry.py +0 -0
  43. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/backend/frameworks/__init__.py +0 -0
  44. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/backend/frameworks/agno.py +0 -0
  45. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/backend/frameworks/dispatch.py +0 -0
  46. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/backend/utils/__init__.py +0 -0
  47. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/backend/utils/mcp_oauth.py +0 -0
  48. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/events/__init__.py +0 -0
  49. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/events/decorators/__init__.py +0 -0
  50. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/events/decorators/on_boot.py +0 -0
  51. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/events/decorators/on_shutdown.py +0 -0
  52. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/events/decorators/on_task.py +0 -0
  53. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/events/decorators/on_tool.py +0 -0
  54. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/events/models/__init__.py +0 -0
  55. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/events/models/deployments.py +0 -0
  56. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/events/models/events.py +0 -0
  57. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/events/utils/__init__.py +0 -0
  58. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/events/utils/generic.py +0 -0
  59. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/events/utils/git_init.py +0 -0
  60. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/knowledge_bases/__init__.py +0 -0
  61. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/knowledge_bases/knowledge_bases_module.py +0 -0
  62. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/knowledge_bases/models/__init__.py +0 -0
  63. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/knowledge_bases/models/knowledge_bases.py +0 -0
  64. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/knowledge_bases/sub_modules/__init__.py +0 -0
  65. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/knowledge_bases/sub_modules/knowledge_base.py +0 -0
  66. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/knowledge_bases/sub_modules/knowledge_base_document_item.py +0 -0
  67. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/knowledge_bases/utils/__init__.py +0 -0
  68. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tasks/__init__.py +0 -0
  69. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tasks/models/__init__.py +0 -0
  70. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tasks/models/task.py +0 -0
  71. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tasks/models/tasks_list.py +0 -0
  72. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tasks/sub_modules/__init__.py +0 -0
  73. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tasks/sub_modules/task.py +0 -0
  74. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tasks/tasks_module.py +0 -0
  75. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tasks/utils/__init__.py +0 -0
  76. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tasks/utils/files.py +0 -0
  77. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tools_repository/__init__.py +0 -0
  78. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tools_repository/decorators/__init__.py +0 -0
  79. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tools_repository/decorators/register_tool.py +0 -0
  80. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tools_repository/models/__init__.py +0 -0
  81. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tools_repository/models/mcp.py +0 -0
  82. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tools_repository/models/tool_invocation_result.py +0 -0
  83. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tools_repository/sub_modules/__init__.py +0 -0
  84. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tools_repository/sub_modules/tool.py +0 -0
  85. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tools_repository/tools_repository_module.py +0 -0
  86. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tools_repository/utils/__init__.py +0 -0
  87. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tools_repository/utils/generic.py +0 -0
  88. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tools_repository/utils/local_tools.py +0 -0
  89. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/modules/tools_repository/utils/schemas.py +0 -0
  90. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/utils/__init__.py +0 -0
  91. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/utils/agents/__init__.py +0 -0
  92. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/utils/agents/compactization_agent.py +0 -0
  93. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/utils/env.py +0 -0
  94. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/utils/event_loop.py +0 -0
  95. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/utils/generic.py +0 -0
  96. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk/utils/tools.py +0 -0
  97. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk.egg-info/SOURCES.txt +0 -0
  98. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk.egg-info/dependency_links.txt +0 -0
  99. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk.egg-info/requires.txt +0 -0
  100. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/src/xpander_sdk.egg-info/top_level.txt +0 -0
  101. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/tests/test_agents_module.py +0 -0
  102. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/tests/test_api_client.py +0 -0
  103. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/tests/test_backend_module.py +0 -0
  104. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/tests/test_boot_shutdown_handlers.py +0 -0
  105. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/tests/test_configuration.py +0 -0
  106. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/tests/test_knowledge_bases_module.py +0 -0
  107. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/tests/test_tasks_module.py +0 -0
  108. {xpander_sdk-2.0.184 → xpander_sdk-2.0.186}/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.184
3
+ Version: 2.0.186
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
@@ -567,11 +567,11 @@ async def main():
567
567
  organization_id="your-org-id",
568
568
  base_url="https://agent-controller.my-company.com"
569
569
  )
570
-
570
+
571
571
  # Load agent from self-hosted deployment
572
572
  agent = await Agent.aload("agent-123", configuration=config)
573
573
  print(f"Agent: {agent.name}")
574
-
574
+
575
575
  # Create and execute task
576
576
  task = await agent.acreate_task(
577
577
  prompt="Analyze Q4 sales data",
@@ -517,11 +517,11 @@ async def main():
517
517
  organization_id="your-org-id",
518
518
  base_url="https://agent-controller.my-company.com"
519
519
  )
520
-
520
+
521
521
  # Load agent from self-hosted deployment
522
522
  agent = await Agent.aload("agent-123", configuration=config)
523
523
  print(f"Agent: {agent.name}")
524
-
524
+
525
525
  # Create and execute task
526
526
  task = await agent.acreate_task(
527
527
  prompt="Analyze Q4 sales data",
@@ -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.184",
8
+ version="2.0.186",
9
9
  author="xpanderAI",
10
10
  author_email="dev@xpander.ai",
11
11
  description="xpander.ai Backend-as-a-service for AI Agents - SDK",
@@ -81,6 +81,7 @@ class Events(ModuleBase):
81
81
 
82
82
  worker: Optional[DeployedAsset] = None
83
83
  test_task: Optional[LocalTaskTest] = None
84
+ _heartbeat_task: Optional[asyncio.Task] = None
84
85
 
85
86
  # Class-level registries for boot and shutdown handlers
86
87
  _boot_handlers: List[BootHandler] = []
@@ -500,7 +501,12 @@ class Events(ModuleBase):
500
501
  )
501
502
  )
502
503
 
503
- self.track(asyncio.create_task(self.heartbeat_loop(agent_worker.id)))
504
+ # Cancel previous heartbeat task if it exists and start a new one
505
+ if self._heartbeat_task and not self._heartbeat_task.done():
506
+ logger.debug(f"Canceling previous heartbeat task for worker {agent_worker.id}")
507
+ self._heartbeat_task.cancel()
508
+ self._heartbeat_task = asyncio.create_task(self.heartbeat_loop(agent_worker.id))
509
+ self.track(self._heartbeat_task)
504
510
 
505
511
  elif event.event == EventType.AgentExecution:
506
512
  task = Task(**json.loads(event.data), configuration=self.configuration)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xpander-sdk
3
- Version: 2.0.184
3
+ Version: 2.0.186
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
@@ -567,11 +567,11 @@ async def main():
567
567
  organization_id="your-org-id",
568
568
  base_url="https://agent-controller.my-company.com"
569
569
  )
570
-
570
+
571
571
  # Load agent from self-hosted deployment
572
572
  agent = await Agent.aload("agent-123", configuration=config)
573
573
  print(f"Agent: {agent.name}")
574
-
574
+
575
575
  # Create and execute task
576
576
  task = await agent.acreate_task(
577
577
  prompt="Analyze Q4 sales data",
File without changes
File without changes