kailash 0.4.2__tar.gz → 0.6.0__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 (277) hide show
  1. {kailash-0.4.2/src/kailash.egg-info → kailash-0.6.0}/PKG-INFO +12 -7
  2. {kailash-0.4.2 → kailash-0.6.0}/README.md +9 -6
  3. {kailash-0.4.2 → kailash-0.6.0}/pyproject.toml +4 -2
  4. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/__init__.py +1 -1
  5. kailash-0.6.0/src/kailash/client/__init__.py +12 -0
  6. kailash-0.6.0/src/kailash/client/enhanced_client.py +306 -0
  7. kailash-0.6.0/src/kailash/core/actors/__init__.py +16 -0
  8. kailash-0.6.0/src/kailash/core/actors/connection_actor.py +566 -0
  9. kailash-0.6.0/src/kailash/core/actors/supervisor.py +364 -0
  10. kailash-0.6.0/src/kailash/edge/__init__.py +16 -0
  11. kailash-0.6.0/src/kailash/edge/compliance.py +834 -0
  12. kailash-0.6.0/src/kailash/edge/discovery.py +659 -0
  13. kailash-0.6.0/src/kailash/edge/location.py +582 -0
  14. kailash-0.6.0/src/kailash/gateway/__init__.py +33 -0
  15. kailash-0.6.0/src/kailash/gateway/api.py +289 -0
  16. kailash-0.6.0/src/kailash/gateway/enhanced_gateway.py +357 -0
  17. kailash-0.6.0/src/kailash/gateway/resource_resolver.py +217 -0
  18. kailash-0.6.0/src/kailash/gateway/security.py +227 -0
  19. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/auth/models.py +2 -2
  20. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/database/base_models.py +1 -7
  21. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/database/repositories.py +3 -1
  22. kailash-0.6.0/src/kailash/middleware/gateway/__init__.py +22 -0
  23. kailash-0.6.0/src/kailash/middleware/gateway/checkpoint_manager.py +398 -0
  24. kailash-0.6.0/src/kailash/middleware/gateway/deduplicator.py +382 -0
  25. kailash-0.6.0/src/kailash/middleware/gateway/durable_gateway.py +417 -0
  26. kailash-0.6.0/src/kailash/middleware/gateway/durable_request.py +498 -0
  27. kailash-0.6.0/src/kailash/middleware/gateway/event_store.py +459 -0
  28. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/admin/audit_log.py +364 -6
  29. kailash-0.6.0/src/kailash/nodes/admin/permission_check.py +1648 -0
  30. kailash-0.6.0/src/kailash/nodes/admin/role_management.py +1957 -0
  31. kailash-0.6.0/src/kailash/nodes/admin/schema_manager.py +438 -0
  32. kailash-0.6.0/src/kailash/nodes/admin/user_management.py +1472 -0
  33. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/api/http.py +95 -71
  34. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/base.py +281 -164
  35. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/base_async.py +30 -31
  36. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/code/__init__.py +8 -1
  37. kailash-0.6.0/src/kailash/nodes/code/async_python.py +1035 -0
  38. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/code/python.py +1 -0
  39. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/async_sql.py +12 -25
  40. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/sql.py +20 -11
  41. kailash-0.6.0/src/kailash/nodes/data/workflow_connection_pool.py +643 -0
  42. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/__init__.py +1 -4
  43. kailash-0.6.0/src/kailash/resources/__init__.py +40 -0
  44. kailash-0.6.0/src/kailash/resources/factory.py +533 -0
  45. kailash-0.6.0/src/kailash/resources/health.py +319 -0
  46. kailash-0.6.0/src/kailash/resources/reference.py +288 -0
  47. kailash-0.6.0/src/kailash/resources/registry.py +392 -0
  48. kailash-0.6.0/src/kailash/runtime/async_local.py +797 -0
  49. kailash-0.6.0/src/kailash/testing/__init__.py +34 -0
  50. kailash-0.6.0/src/kailash/testing/async_test_case.py +353 -0
  51. kailash-0.6.0/src/kailash/testing/async_utils.py +345 -0
  52. kailash-0.6.0/src/kailash/testing/fixtures.py +458 -0
  53. kailash-0.6.0/src/kailash/testing/mock_registry.py +495 -0
  54. kailash-0.6.0/src/kailash/utils/resource_manager.py +420 -0
  55. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/__init__.py +8 -0
  56. kailash-0.6.0/src/kailash/workflow/async_builder.py +621 -0
  57. kailash-0.6.0/src/kailash/workflow/async_patterns.py +766 -0
  58. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/builder.py +93 -10
  59. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/cyclic_runner.py +111 -41
  60. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/graph.py +7 -2
  61. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/resilience.py +11 -1
  62. {kailash-0.4.2 → kailash-0.6.0/src/kailash.egg-info}/PKG-INFO +12 -7
  63. {kailash-0.4.2 → kailash-0.6.0}/src/kailash.egg-info/SOURCES.txt +36 -0
  64. {kailash-0.4.2 → kailash-0.6.0}/src/kailash.egg-info/requires.txt +2 -0
  65. kailash-0.4.2/src/kailash/nodes/admin/permission_check.py +0 -864
  66. kailash-0.4.2/src/kailash/nodes/admin/role_management.py +0 -823
  67. kailash-0.4.2/src/kailash/nodes/admin/user_management.py +0 -944
  68. kailash-0.4.2/src/kailash/runtime/async_local.py +0 -388
  69. {kailash-0.4.2 → kailash-0.6.0}/LICENSE +0 -0
  70. {kailash-0.4.2 → kailash-0.6.0}/MANIFEST.in +0 -0
  71. {kailash-0.4.2 → kailash-0.6.0}/setup.cfg +0 -0
  72. {kailash-0.4.2 → kailash-0.6.0}/setup.py +0 -0
  73. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/__main__.py +0 -0
  74. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/access_control/__init__.py +0 -0
  75. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/access_control/managers.py +0 -0
  76. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/access_control/rule_evaluators.py +0 -0
  77. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/access_control.py +0 -0
  78. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/access_control_abac.py +0 -0
  79. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/api/auth.py +0 -0
  80. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/api/custom_nodes.py +0 -0
  81. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/api/custom_nodes_secure.py +0 -0
  82. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/api/gateway.py +0 -0
  83. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/api/mcp_integration.py +0 -0
  84. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/api/studio.py +0 -0
  85. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/api/workflow_api.py +0 -0
  86. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/cli/__init__.py +0 -0
  87. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/cli/commands.py +0 -0
  88. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/config/__init__.py +0 -0
  89. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/config/database_config.py +0 -0
  90. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/database/__init__.py +0 -0
  91. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/database/execution_pipeline.py +0 -0
  92. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/manifest.py +0 -0
  93. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/mcp/__init__.py +0 -0
  94. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/mcp/ai_registry_server.py +0 -0
  95. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/mcp/client.py +0 -0
  96. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/mcp/client_new.py +0 -0
  97. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/mcp/server.py +0 -0
  98. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/mcp/server_enhanced.py +0 -0
  99. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/mcp/servers/ai_registry.py +0 -0
  100. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/mcp/utils/__init__.py +0 -0
  101. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/mcp/utils/cache.py +0 -0
  102. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/mcp/utils/config.py +0 -0
  103. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/mcp/utils/formatters.py +0 -0
  104. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/mcp/utils/metrics.py +0 -0
  105. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/__init__.py +0 -0
  106. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/auth/__init__.py +0 -0
  107. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/auth/access_control.py +0 -0
  108. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/auth/auth_manager.py +0 -0
  109. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/auth/exceptions.py +0 -0
  110. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/auth/jwt_auth.py +0 -0
  111. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/auth/utils.py +0 -0
  112. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/communication/__init__.py +0 -0
  113. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/communication/ai_chat.py +0 -0
  114. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/communication/api_gateway.py +0 -0
  115. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/communication/events.py +0 -0
  116. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/communication/realtime.py +0 -0
  117. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/core/__init__.py +0 -0
  118. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/core/agent_ui.py +0 -0
  119. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/core/schema.py +0 -0
  120. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/core/workflows.py +0 -0
  121. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/database/__init__.py +0 -0
  122. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/database/base.py +0 -0
  123. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/database/enums.py +0 -0
  124. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/database/migrations.py +0 -0
  125. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/database/models.py +0 -0
  126. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/database/session_manager.py +0 -0
  127. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/mcp/__init__.py +0 -0
  128. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/mcp/client_integration.py +0 -0
  129. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/middleware/mcp/enhanced_server.py +0 -0
  130. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/__init__.py +0 -0
  131. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/admin/__init__.py +0 -0
  132. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/admin/security_event.py +0 -0
  133. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/ai/__init__.py +0 -0
  134. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/ai/a2a.py +0 -0
  135. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/ai/agents.py +0 -0
  136. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/ai/ai_providers.py +0 -0
  137. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/ai/embedding_generator.py +0 -0
  138. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/ai/intelligent_agent_orchestrator.py +0 -0
  139. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/ai/iterative_llm_agent.py +0 -0
  140. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/ai/llm_agent.py +0 -0
  141. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/ai/models.py +0 -0
  142. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/ai/self_organizing.py +0 -0
  143. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/ai/vision_utils.py +0 -0
  144. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/alerts/__init__.py +0 -0
  145. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/alerts/base.py +0 -0
  146. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/alerts/discord.py +0 -0
  147. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/api/__init__.py +0 -0
  148. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/api/auth.py +0 -0
  149. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/api/graphql.py +0 -0
  150. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/api/monitoring.py +0 -0
  151. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/api/rate_limiting.py +0 -0
  152. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/api/rest.py +0 -0
  153. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/api/security.py +0 -0
  154. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/auth/__init__.py +0 -0
  155. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/auth/directory_integration.py +0 -0
  156. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/auth/enterprise_auth_provider.py +0 -0
  157. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/auth/mfa.py +0 -0
  158. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/auth/risk_assessment.py +0 -0
  159. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/auth/session_management.py +0 -0
  160. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/auth/sso.py +0 -0
  161. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/base_cycle_aware.py +0 -0
  162. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/base_with_acl.py +0 -0
  163. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/compliance/__init__.py +0 -0
  164. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/compliance/data_retention.py +0 -0
  165. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/compliance/gdpr.py +0 -0
  166. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/__init__.py +0 -0
  167. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/async_connection.py +0 -0
  168. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/async_vector.py +0 -0
  169. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/directory.py +0 -0
  170. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/event_generation.py +0 -0
  171. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/file_discovery.py +0 -0
  172. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/readers.py +0 -0
  173. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/retrieval.py +0 -0
  174. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/sharepoint_graph.py +0 -0
  175. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/sources.py +0 -0
  176. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/streaming.py +0 -0
  177. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/vector_db.py +0 -0
  178. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/data/writers.py +0 -0
  179. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/enterprise/__init__.py +0 -0
  180. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/enterprise/batch_processor.py +0 -0
  181. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/enterprise/data_lineage.py +0 -0
  182. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/logic/__init__.py +0 -0
  183. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/logic/async_operations.py +0 -0
  184. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/logic/convergence.py +0 -0
  185. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/logic/loop.py +0 -0
  186. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/logic/operations.py +0 -0
  187. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/logic/workflow.py +0 -0
  188. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/mixins/__init__.py +0 -0
  189. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/mixins/event_emitter.py +0 -0
  190. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/mixins/mcp.py +0 -0
  191. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/mixins/security.py +0 -0
  192. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/mixins.py +0 -0
  193. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/monitoring/__init__.py +0 -0
  194. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/monitoring/performance_benchmark.py +0 -0
  195. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/advanced.py +0 -0
  196. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/agentic.py +0 -0
  197. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/conversational.py +0 -0
  198. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/evaluation.py +0 -0
  199. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/federated.py +0 -0
  200. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/graph.py +0 -0
  201. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/multimodal.py +0 -0
  202. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/optimized.py +0 -0
  203. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/privacy.py +0 -0
  204. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/query_processing.py +0 -0
  205. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/realtime.py +0 -0
  206. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/registry.py +0 -0
  207. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/router.py +0 -0
  208. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/similarity.py +0 -0
  209. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/strategies.py +0 -0
  210. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/rag/workflows.py +0 -0
  211. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/security/__init__.py +0 -0
  212. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/security/abac_evaluator.py +0 -0
  213. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/security/audit_log.py +0 -0
  214. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/security/behavior_analysis.py +0 -0
  215. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/security/credential_manager.py +0 -0
  216. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/security/rotating_credentials.py +0 -0
  217. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/security/security_event.py +0 -0
  218. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/security/threat_detection.py +0 -0
  219. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/testing/__init__.py +0 -0
  220. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/testing/credential_testing.py +0 -0
  221. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/transform/__init__.py +0 -0
  222. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/transform/chunkers.py +0 -0
  223. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/transform/formatters.py +0 -0
  224. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/transform/processors.py +0 -0
  225. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/nodes/validation.py +0 -0
  226. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/runtime/__init__.py +0 -0
  227. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/runtime/access_controlled.py +0 -0
  228. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/runtime/docker.py +0 -0
  229. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/runtime/local.py +0 -0
  230. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/runtime/parallel.py +0 -0
  231. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/runtime/parallel_cyclic.py +0 -0
  232. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/runtime/runner.py +0 -0
  233. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/runtime/testing.py +0 -0
  234. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/sdk_exceptions.py +0 -0
  235. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/security.py +0 -0
  236. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/tracking/__init__.py +0 -0
  237. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/tracking/manager.py +0 -0
  238. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/tracking/metrics_collector.py +0 -0
  239. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/tracking/models.py +0 -0
  240. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/tracking/storage/__init__.py +0 -0
  241. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/tracking/storage/base.py +0 -0
  242. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/tracking/storage/database.py +0 -0
  243. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/tracking/storage/filesystem.py +0 -0
  244. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/utils/__init__.py +0 -0
  245. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/utils/export.py +0 -0
  246. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/utils/migrations/__init__.py +0 -0
  247. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/utils/migrations/generator.py +0 -0
  248. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/utils/migrations/models.py +0 -0
  249. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/utils/migrations/runner.py +0 -0
  250. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/utils/secure_logging.py +0 -0
  251. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/utils/templates.py +0 -0
  252. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/visualization/__init__.py +0 -0
  253. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/visualization/api.py +0 -0
  254. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/visualization/dashboard.py +0 -0
  255. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/visualization/performance.py +0 -0
  256. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/visualization/reports.py +0 -0
  257. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/convergence.py +0 -0
  258. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/cycle_analyzer.py +0 -0
  259. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/cycle_builder.py +0 -0
  260. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/cycle_config.py +0 -0
  261. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/cycle_debugger.py +0 -0
  262. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/cycle_exceptions.py +0 -0
  263. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/cycle_profiler.py +0 -0
  264. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/cycle_state.py +0 -0
  265. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/mermaid_visualizer.py +0 -0
  266. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/migration.py +0 -0
  267. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/mock_registry.py +0 -0
  268. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/runner.py +0 -0
  269. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/safety.py +0 -0
  270. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/state.py +0 -0
  271. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/templates.py +0 -0
  272. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/validation.py +0 -0
  273. {kailash-0.4.2 → kailash-0.6.0}/src/kailash/workflow/visualization.py +0 -0
  274. {kailash-0.4.2 → kailash-0.6.0}/src/kailash.egg-info/dependency_links.txt +0 -0
  275. {kailash-0.4.2 → kailash-0.6.0}/src/kailash.egg-info/entry_points.txt +0 -0
  276. {kailash-0.4.2 → kailash-0.6.0}/src/kailash.egg-info/not-zip-safe +0 -0
  277. {kailash-0.4.2 → kailash-0.6.0}/src/kailash.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kailash
3
- Version: 0.4.2
3
+ Version: 0.6.0
4
4
  Summary: Python SDK for the Kailash container-node architecture
5
5
  Home-page: https://github.com/integrum/kailash-python-sdk
6
6
  Author: Integrum
@@ -61,6 +61,8 @@ Requires-Dist: asyncpg>=0.30.0
61
61
  Requires-Dist: aiomysql>=0.2.0
62
62
  Requires-Dist: twilio>=9.6.3
63
63
  Requires-Dist: qrcode>=8.2
64
+ Requires-Dist: aiofiles>=24.1.0
65
+ Requires-Dist: bcrypt>=4.3.0
64
66
  Provides-Extra: dev
65
67
  Requires-Dist: pytest>=7.0; extra == "dev"
66
68
  Requires-Dist: pytest-cov>=3.0; extra == "dev"
@@ -80,8 +82,9 @@ Dynamic: requires-python
80
82
  <a href="https://pepy.tech/project/kailash"><img src="https://static.pepy.tech/badge/kailash" alt="Downloads"></a>
81
83
  <img src="https://img.shields.io/badge/license-MIT-green.svg" alt="MIT License">
82
84
  <img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code style: black">
83
- <img src="https://img.shields.io/badge/tests-127%20organized-brightgreen.svg" alt="Tests: 127 organized">
84
- <img src="https://img.shields.io/badge/test%20structure-reorganized-blue.svg" alt="Test structure: reorganized">
85
+ <img src="https://img.shields.io/badge/tests-production%20quality-brightgreen.svg" alt="Tests: Production Quality">
86
+ <img src="https://img.shields.io/badge/docker-integrated-blue.svg" alt="Docker: Integrated">
87
+ <img src="https://img.shields.io/badge/AI-ollama%20validated-purple.svg" alt="AI: Ollama Validated">
85
88
  </p>
86
89
 
87
90
  <p align="center">
@@ -120,12 +123,14 @@ Dynamic: requires-python
120
123
  - 🏭 **Session 067 Enhancements**: Business workflow templates, data lineage tracking, automatic credential rotation
121
124
  - 🔄 **Zero-Downtime Operations**: Automatic credential rotation with enterprise notifications and audit trails
122
125
  - 🌉 **Enterprise Middleware (v0.4.0)**: Production-ready middleware architecture with real-time agent-frontend communication, dynamic workflows, and AI chat integration
126
+ - ⚡ **Performance Revolution (v0.5.0)**: 10-100x faster parameter resolution, clear async/sync separation, automatic resource management
127
+ - 🧪 **Production-Quality Testing (v0.5.0)**: Comprehensive testing infrastructure with Docker integration, AI workflows, and real-world business scenarios
123
128
 
124
129
  ## 🏗️ Project Architecture
125
130
 
126
131
  The Kailash project is organized into three distinct layers:
127
132
 
128
- ### Core Architecture (v0.4.0)
133
+ ### Core Architecture (v0.5.0)
129
134
  ```
130
135
  ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
131
136
  │ Frontend │ │ Middleware │ │ Kailash Core │
@@ -150,9 +155,10 @@ kailash_python_sdk/
150
155
  1. **SDK Layer** (`src/kailash/`) - The core framework providing:
151
156
  - Nodes: Reusable computational units (100+ built-in)
152
157
  - Workflows: DAG-based orchestration with cyclic support
153
- - Runtime: Unified execution engine (async + enterprise)
154
- - Middleware: Enterprise communication layer (NEW in v0.4.0)
158
+ - Runtime: Unified execution engine with optimized async/sync separation (v0.5.0)
159
+ - Middleware: Enterprise communication layer (v0.4.0)
155
160
  - Security: RBAC/ABAC access control with audit logging
161
+ - Performance: LRU parameter caching, automatic resource pooling (NEW in v0.5.0)
156
162
 
157
163
  2. **Application Layer** (`apps/`) - Complete applications including:
158
164
  - User Management System (Django++ capabilities)
@@ -175,7 +181,6 @@ pip install kailash[user-management]
175
181
  # Everything
176
182
  pip install kailash[all]
177
183
  ```
178
- >>>>>>> origin/main
179
184
 
180
185
  ## 🎯 Who Is This For?
181
186
 
@@ -6,8 +6,9 @@
6
6
  <a href="https://pepy.tech/project/kailash"><img src="https://static.pepy.tech/badge/kailash" alt="Downloads"></a>
7
7
  <img src="https://img.shields.io/badge/license-MIT-green.svg" alt="MIT License">
8
8
  <img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="Code style: black">
9
- <img src="https://img.shields.io/badge/tests-127%20organized-brightgreen.svg" alt="Tests: 127 organized">
10
- <img src="https://img.shields.io/badge/test%20structure-reorganized-blue.svg" alt="Test structure: reorganized">
9
+ <img src="https://img.shields.io/badge/tests-production%20quality-brightgreen.svg" alt="Tests: Production Quality">
10
+ <img src="https://img.shields.io/badge/docker-integrated-blue.svg" alt="Docker: Integrated">
11
+ <img src="https://img.shields.io/badge/AI-ollama%20validated-purple.svg" alt="AI: Ollama Validated">
11
12
  </p>
12
13
 
13
14
  <p align="center">
@@ -46,12 +47,14 @@
46
47
  - 🏭 **Session 067 Enhancements**: Business workflow templates, data lineage tracking, automatic credential rotation
47
48
  - 🔄 **Zero-Downtime Operations**: Automatic credential rotation with enterprise notifications and audit trails
48
49
  - 🌉 **Enterprise Middleware (v0.4.0)**: Production-ready middleware architecture with real-time agent-frontend communication, dynamic workflows, and AI chat integration
50
+ - ⚡ **Performance Revolution (v0.5.0)**: 10-100x faster parameter resolution, clear async/sync separation, automatic resource management
51
+ - 🧪 **Production-Quality Testing (v0.5.0)**: Comprehensive testing infrastructure with Docker integration, AI workflows, and real-world business scenarios
49
52
 
50
53
  ## 🏗️ Project Architecture
51
54
 
52
55
  The Kailash project is organized into three distinct layers:
53
56
 
54
- ### Core Architecture (v0.4.0)
57
+ ### Core Architecture (v0.5.0)
55
58
  ```
56
59
  ┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
57
60
  │ Frontend │ │ Middleware │ │ Kailash Core │
@@ -76,9 +79,10 @@ kailash_python_sdk/
76
79
  1. **SDK Layer** (`src/kailash/`) - The core framework providing:
77
80
  - Nodes: Reusable computational units (100+ built-in)
78
81
  - Workflows: DAG-based orchestration with cyclic support
79
- - Runtime: Unified execution engine (async + enterprise)
80
- - Middleware: Enterprise communication layer (NEW in v0.4.0)
82
+ - Runtime: Unified execution engine with optimized async/sync separation (v0.5.0)
83
+ - Middleware: Enterprise communication layer (v0.4.0)
81
84
  - Security: RBAC/ABAC access control with audit logging
85
+ - Performance: LRU parameter caching, automatic resource pooling (NEW in v0.5.0)
82
86
 
83
87
  2. **Application Layer** (`apps/`) - Complete applications including:
84
88
  - User Management System (Django++ capabilities)
@@ -101,7 +105,6 @@ pip install kailash[user-management]
101
105
  # Everything
102
106
  pip install kailash[all]
103
107
  ```
104
- >>>>>>> origin/main
105
108
 
106
109
  ## 🎯 Who Is This For?
107
110
 
@@ -4,13 +4,13 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "kailash"
7
- version = "0.4.2"
7
+ version = "0.6.0"
8
8
  description = "Python SDK for the Kailash container-node architecture"
9
9
  authors = [
10
10
  {name = "Integrum", email = "info@integrum.com"}
11
11
  ]
12
12
  readme = "README.md"
13
- requires-python = ">=3.11"
13
+ requires-python = ">=3.12"
14
14
  classifiers = [
15
15
  "Development Status :: 3 - Alpha",
16
16
  "Intended Audience :: Developers",
@@ -65,6 +65,8 @@ dependencies = [
65
65
  "aiomysql>=0.2.0",
66
66
  "twilio>=9.6.3",
67
67
  "qrcode>=8.2",
68
+ "aiofiles>=24.1.0",
69
+ "bcrypt>=4.3.0",
68
70
  ]
69
71
 
70
72
  [project.optional-dependencies]
@@ -33,7 +33,7 @@ except ImportError:
33
33
  # For backward compatibility
34
34
  WorkflowGraph = Workflow
35
35
 
36
- __version__ = "0.4.2"
36
+ __version__ = "0.6.0"
37
37
 
38
38
  __all__ = [
39
39
  # Core workflow components
@@ -0,0 +1,12 @@
1
+ """Enhanced client SDK for Kailash Gateway.
2
+
3
+ This module provides Python client for interacting with the Enhanced Gateway API.
4
+ """
5
+
6
+ from .enhanced_client import KailashClient, SyncKailashClient, WorkflowResult
7
+
8
+ __all__ = [
9
+ "KailashClient",
10
+ "SyncKailashClient",
11
+ "WorkflowResult",
12
+ ]
@@ -0,0 +1,306 @@
1
+ """Enhanced client for interacting with Kailash gateway.
2
+
3
+ This module provides async and sync clients for the Enhanced Gateway API
4
+ with support for resource references and convenient helper methods.
5
+ """
6
+
7
+ import asyncio
8
+ import json
9
+ import logging
10
+ from dataclasses import dataclass
11
+ from typing import Any, Dict, List, Optional, Union
12
+
13
+ import aiohttp
14
+
15
+ from ..gateway.resource_resolver import ResourceReference
16
+
17
+ logger = logging.getLogger(__name__)
18
+
19
+
20
+ @dataclass
21
+ class WorkflowResult:
22
+ """Result from workflow execution."""
23
+
24
+ request_id: str
25
+ workflow_id: str
26
+ status: str
27
+ result: Optional[Any] = None
28
+ error: Optional[str] = None
29
+ execution_time: Optional[float] = None
30
+
31
+ @property
32
+ def is_success(self) -> bool:
33
+ return self.status == "completed"
34
+
35
+ @property
36
+ def is_failed(self) -> bool:
37
+ return self.status == "failed"
38
+
39
+ @property
40
+ def is_running(self) -> bool:
41
+ return self.status in ["pending", "running"]
42
+
43
+
44
+ class KailashClient:
45
+ """Enhanced client for interacting with Kailash gateway."""
46
+
47
+ def __init__(self, base_url: str, api_key: Optional[str] = None, timeout: int = 30):
48
+ self.base_url = base_url.rstrip("/")
49
+ self.api_key = api_key
50
+ self.timeout = timeout
51
+ self._session: Optional[aiohttp.ClientSession] = None
52
+
53
+ async def __aenter__(self):
54
+ """Async context manager entry."""
55
+ await self._ensure_session()
56
+ return self
57
+
58
+ async def __aexit__(self, exc_type, exc_val, exc_tb):
59
+ """Async context manager exit."""
60
+ await self.close()
61
+
62
+ async def _ensure_session(self):
63
+ """Ensure HTTP session exists."""
64
+ if not self._session:
65
+ headers = {}
66
+ if self.api_key:
67
+ headers["Authorization"] = f"Bearer {self.api_key}"
68
+
69
+ timeout = aiohttp.ClientTimeout(total=self.timeout)
70
+ self._session = aiohttp.ClientSession(headers=headers, timeout=timeout)
71
+
72
+ async def close(self):
73
+ """Close HTTP session."""
74
+ if self._session:
75
+ await self._session.close()
76
+ self._session = None
77
+
78
+ async def execute_workflow(
79
+ self,
80
+ workflow_id: str,
81
+ inputs: Dict[str, Any],
82
+ resources: Optional[Dict[str, Any]] = None,
83
+ context: Optional[Dict[str, Any]] = None,
84
+ wait: bool = True,
85
+ poll_interval: float = 1.0,
86
+ max_wait: float = 300.0,
87
+ ) -> WorkflowResult:
88
+ """Execute workflow with resource support."""
89
+ await self._ensure_session()
90
+
91
+ # Prepare request
92
+ request_data = {
93
+ "inputs": inputs,
94
+ "resources": resources or {},
95
+ "context": context or {},
96
+ }
97
+
98
+ # Execute workflow
99
+ async with self._session.post(
100
+ f"{self.base_url}/api/v1/workflows/{workflow_id}/execute", json=request_data
101
+ ) as response:
102
+ response.raise_for_status()
103
+ result_data = await response.json()
104
+
105
+ result = WorkflowResult(**result_data)
106
+
107
+ # Wait for completion if requested
108
+ if wait and result.is_running:
109
+ result = await self.wait_for_completion(
110
+ workflow_id,
111
+ result.request_id,
112
+ poll_interval=poll_interval,
113
+ max_wait=max_wait,
114
+ )
115
+
116
+ return result
117
+
118
+ async def wait_for_completion(
119
+ self,
120
+ workflow_id: str,
121
+ request_id: str,
122
+ poll_interval: float = 1.0,
123
+ max_wait: float = 300.0,
124
+ ) -> WorkflowResult:
125
+ """Wait for workflow completion."""
126
+ await self._ensure_session()
127
+
128
+ elapsed = 0.0
129
+ while elapsed < max_wait:
130
+ # Get status
131
+ result = await self.get_workflow_status(workflow_id, request_id)
132
+
133
+ if not result.is_running:
134
+ return result
135
+
136
+ # Wait before next poll
137
+ await asyncio.sleep(poll_interval)
138
+ elapsed += poll_interval
139
+
140
+ # Timeout
141
+ raise TimeoutError(f"Workflow did not complete within {max_wait} seconds")
142
+
143
+ async def get_workflow_status(
144
+ self, workflow_id: str, request_id: str
145
+ ) -> WorkflowResult:
146
+ """Get workflow execution status."""
147
+ await self._ensure_session()
148
+
149
+ async with self._session.get(
150
+ f"{self.base_url}/api/v1/workflows/{workflow_id}/status/{request_id}"
151
+ ) as response:
152
+ response.raise_for_status()
153
+ result_data = await response.json()
154
+
155
+ return WorkflowResult(**result_data)
156
+
157
+ async def list_workflows(self) -> Dict[str, Any]:
158
+ """List available workflows."""
159
+ await self._ensure_session()
160
+
161
+ async with self._session.get(f"{self.base_url}/api/v1/workflows") as response:
162
+ response.raise_for_status()
163
+ return await response.json()
164
+
165
+ async def get_workflow_details(self, workflow_id: str) -> Dict[str, Any]:
166
+ """Get details of a specific workflow."""
167
+ await self._ensure_session()
168
+
169
+ async with self._session.get(
170
+ f"{self.base_url}/api/v1/workflows/{workflow_id}"
171
+ ) as response:
172
+ response.raise_for_status()
173
+ return await response.json()
174
+
175
+ async def health_check(self) -> Dict[str, Any]:
176
+ """Check gateway health."""
177
+ await self._ensure_session()
178
+
179
+ async with self._session.get(f"{self.base_url}/api/v1/health") as response:
180
+ response.raise_for_status()
181
+ return await response.json()
182
+
183
+ async def list_resources(self) -> List[str]:
184
+ """List available resources."""
185
+ await self._ensure_session()
186
+
187
+ async with self._session.get(f"{self.base_url}/api/v1/resources") as response:
188
+ response.raise_for_status()
189
+ return await response.json()
190
+
191
+ # Resource reference helpers
192
+ def ref(self, resource_name: str) -> str:
193
+ """Create reference to registered resource."""
194
+ return f"@{resource_name}"
195
+
196
+ def database(
197
+ self,
198
+ host: str,
199
+ database: str,
200
+ port: int = 5432,
201
+ credentials_ref: Optional[str] = None,
202
+ **kwargs,
203
+ ) -> Dict[str, Any]:
204
+ """Create database resource reference."""
205
+ config = {"host": host, "port": port, "database": database, **kwargs}
206
+
207
+ return {
208
+ "type": "database",
209
+ "config": config,
210
+ "credentials_ref": credentials_ref,
211
+ }
212
+
213
+ def http_client(
214
+ self,
215
+ base_url: Optional[str] = None,
216
+ headers: Optional[Dict[str, str]] = None,
217
+ credentials_ref: Optional[str] = None,
218
+ **kwargs,
219
+ ) -> Dict[str, Any]:
220
+ """Create HTTP client resource reference."""
221
+ config = {**kwargs}
222
+ if base_url:
223
+ config["base_url"] = base_url
224
+ if headers:
225
+ config["headers"] = headers
226
+
227
+ return {
228
+ "type": "http_client",
229
+ "config": config,
230
+ "credentials_ref": credentials_ref,
231
+ }
232
+
233
+ def cache(
234
+ self,
235
+ host: str = "localhost",
236
+ port: int = 6379,
237
+ credentials_ref: Optional[str] = None,
238
+ **kwargs,
239
+ ) -> Dict[str, Any]:
240
+ """Create cache resource reference."""
241
+ config = {"host": host, "port": port, **kwargs}
242
+
243
+ return {"type": "cache", "config": config, "credentials_ref": credentials_ref}
244
+
245
+
246
+ # Synchronous wrapper for convenience
247
+ class SyncKailashClient:
248
+ """Synchronous wrapper for KailashClient."""
249
+
250
+ def __init__(self, base_url: str, api_key: Optional[str] = None):
251
+ self.async_client = KailashClient(base_url, api_key)
252
+
253
+ def execute_workflow(
254
+ self, workflow_id: str, inputs: Dict[str, Any], **kwargs
255
+ ) -> WorkflowResult:
256
+ """Execute workflow synchronously."""
257
+ loop = asyncio.new_event_loop()
258
+ asyncio.set_event_loop(loop)
259
+ try:
260
+ return loop.run_until_complete(
261
+ self.async_client.execute_workflow(workflow_id, inputs, **kwargs)
262
+ )
263
+ finally:
264
+ loop.close()
265
+
266
+ def list_workflows(self) -> Dict[str, Any]:
267
+ """List workflows synchronously."""
268
+ loop = asyncio.new_event_loop()
269
+ asyncio.set_event_loop(loop)
270
+ try:
271
+ return loop.run_until_complete(self.async_client.list_workflows())
272
+ finally:
273
+ loop.close()
274
+
275
+ def get_workflow_details(self, workflow_id: str) -> Dict[str, Any]:
276
+ """Get workflow details synchronously."""
277
+ loop = asyncio.new_event_loop()
278
+ asyncio.set_event_loop(loop)
279
+ try:
280
+ return loop.run_until_complete(
281
+ self.async_client.get_workflow_details(workflow_id)
282
+ )
283
+ finally:
284
+ loop.close()
285
+
286
+ def health_check(self) -> Dict[str, Any]:
287
+ """Check health synchronously."""
288
+ loop = asyncio.new_event_loop()
289
+ asyncio.set_event_loop(loop)
290
+ try:
291
+ return loop.run_until_complete(self.async_client.health_check())
292
+ finally:
293
+ loop.close()
294
+
295
+ def list_resources(self) -> List[str]:
296
+ """List resources synchronously."""
297
+ loop = asyncio.new_event_loop()
298
+ asyncio.set_event_loop(loop)
299
+ try:
300
+ return loop.run_until_complete(self.async_client.list_resources())
301
+ finally:
302
+ loop.close()
303
+
304
+ # Delegate resource helpers
305
+ def __getattr__(self, name):
306
+ return getattr(self.async_client, name)
@@ -0,0 +1,16 @@
1
+ """Actor-based components for Kailash SDK.
2
+
3
+ This module provides actor-based patterns for improved fault tolerance
4
+ and isolation in distributed systems.
5
+ """
6
+
7
+ from .connection_actor import ActorConnection, ConnectionActor, ConnectionState
8
+ from .supervisor import ActorSupervisor, SupervisionStrategy
9
+
10
+ __all__ = [
11
+ "ActorConnection",
12
+ "ConnectionState",
13
+ "ConnectionActor",
14
+ "ActorSupervisor",
15
+ "SupervisionStrategy",
16
+ ]