kailash 0.5.0__tar.gz → 0.6.1__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 (289) hide show
  1. {kailash-0.5.0/src/kailash.egg-info → kailash-0.6.1}/PKG-INFO +19 -4
  2. {kailash-0.5.0 → kailash-0.6.1}/README.md +15 -3
  3. {kailash-0.5.0 → kailash-0.6.1}/pyproject.toml +4 -1
  4. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/__init__.py +1 -1
  5. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/access_control/__init__.py +1 -1
  6. kailash-0.6.1/src/kailash/client/__init__.py +12 -0
  7. kailash-0.6.1/src/kailash/client/enhanced_client.py +306 -0
  8. kailash-0.6.1/src/kailash/core/actors/__init__.py +16 -0
  9. kailash-0.6.1/src/kailash/core/actors/adaptive_pool_controller.py +630 -0
  10. kailash-0.6.1/src/kailash/core/actors/connection_actor.py +566 -0
  11. kailash-0.6.1/src/kailash/core/actors/supervisor.py +364 -0
  12. kailash-0.6.1/src/kailash/core/ml/__init__.py +1 -0
  13. kailash-0.6.1/src/kailash/core/ml/query_patterns.py +544 -0
  14. kailash-0.6.1/src/kailash/core/monitoring/__init__.py +19 -0
  15. kailash-0.6.1/src/kailash/core/monitoring/connection_metrics.py +488 -0
  16. kailash-0.6.1/src/kailash/core/optimization/__init__.py +1 -0
  17. kailash-0.6.1/src/kailash/core/resilience/__init__.py +17 -0
  18. kailash-0.6.1/src/kailash/core/resilience/circuit_breaker.py +382 -0
  19. kailash-0.6.1/src/kailash/edge/__init__.py +16 -0
  20. kailash-0.6.1/src/kailash/edge/compliance.py +834 -0
  21. kailash-0.6.1/src/kailash/edge/discovery.py +659 -0
  22. kailash-0.6.1/src/kailash/edge/location.py +582 -0
  23. kailash-0.6.1/src/kailash/gateway/__init__.py +33 -0
  24. kailash-0.6.1/src/kailash/gateway/api.py +289 -0
  25. kailash-0.6.1/src/kailash/gateway/enhanced_gateway.py +357 -0
  26. kailash-0.6.1/src/kailash/gateway/resource_resolver.py +217 -0
  27. kailash-0.6.1/src/kailash/gateway/security.py +227 -0
  28. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/auth/access_control.py +6 -6
  29. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/auth/models.py +2 -2
  30. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/communication/ai_chat.py +7 -7
  31. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/communication/api_gateway.py +5 -15
  32. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/database/base_models.py +1 -7
  33. kailash-0.6.1/src/kailash/middleware/gateway/__init__.py +22 -0
  34. kailash-0.6.1/src/kailash/middleware/gateway/checkpoint_manager.py +398 -0
  35. kailash-0.6.1/src/kailash/middleware/gateway/deduplicator.py +382 -0
  36. kailash-0.6.1/src/kailash/middleware/gateway/durable_gateway.py +417 -0
  37. kailash-0.6.1/src/kailash/middleware/gateway/durable_request.py +498 -0
  38. kailash-0.6.1/src/kailash/middleware/gateway/event_store.py +499 -0
  39. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/mcp/enhanced_server.py +2 -2
  40. kailash-0.6.1/src/kailash/nodes/admin/permission_check.py +1648 -0
  41. kailash-0.6.1/src/kailash/nodes/admin/role_management.py +1957 -0
  42. kailash-0.6.1/src/kailash/nodes/admin/schema_manager.py +438 -0
  43. kailash-0.6.1/src/kailash/nodes/admin/user_management.py +1472 -0
  44. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/code/__init__.py +8 -1
  45. kailash-0.6.1/src/kailash/nodes/code/async_python.py +1035 -0
  46. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/code/python.py +1 -0
  47. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/async_sql.py +9 -3
  48. kailash-0.6.1/src/kailash/nodes/data/query_pipeline.py +641 -0
  49. kailash-0.6.1/src/kailash/nodes/data/query_router.py +895 -0
  50. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/sql.py +20 -11
  51. kailash-0.6.1/src/kailash/nodes/data/workflow_connection_pool.py +1071 -0
  52. kailash-0.6.1/src/kailash/nodes/monitoring/__init__.py +5 -0
  53. kailash-0.6.1/src/kailash/nodes/monitoring/connection_dashboard.py +822 -0
  54. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/__init__.py +2 -7
  55. kailash-0.6.1/src/kailash/resources/__init__.py +40 -0
  56. kailash-0.6.1/src/kailash/resources/factory.py +533 -0
  57. kailash-0.6.1/src/kailash/resources/health.py +319 -0
  58. kailash-0.6.1/src/kailash/resources/reference.py +288 -0
  59. kailash-0.6.1/src/kailash/resources/registry.py +392 -0
  60. kailash-0.6.1/src/kailash/runtime/async_local.py +797 -0
  61. kailash-0.6.1/src/kailash/testing/__init__.py +34 -0
  62. kailash-0.6.1/src/kailash/testing/async_test_case.py +353 -0
  63. kailash-0.6.1/src/kailash/testing/async_utils.py +345 -0
  64. kailash-0.6.1/src/kailash/testing/fixtures.py +458 -0
  65. kailash-0.6.1/src/kailash/testing/mock_registry.py +495 -0
  66. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/__init__.py +8 -0
  67. kailash-0.6.1/src/kailash/workflow/async_builder.py +621 -0
  68. kailash-0.6.1/src/kailash/workflow/async_patterns.py +766 -0
  69. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/cyclic_runner.py +107 -16
  70. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/graph.py +7 -2
  71. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/resilience.py +11 -1
  72. {kailash-0.5.0 → kailash-0.6.1/src/kailash.egg-info}/PKG-INFO +19 -4
  73. {kailash-0.5.0 → kailash-0.6.1}/src/kailash.egg-info/SOURCES.txt +46 -0
  74. {kailash-0.5.0 → kailash-0.6.1}/src/kailash.egg-info/requires.txt +3 -0
  75. kailash-0.5.0/src/kailash/nodes/admin/permission_check.py +0 -864
  76. kailash-0.5.0/src/kailash/nodes/admin/role_management.py +0 -823
  77. kailash-0.5.0/src/kailash/nodes/admin/user_management.py +0 -1930
  78. kailash-0.5.0/src/kailash/nodes/monitoring/__init__.py +0 -7
  79. kailash-0.5.0/src/kailash/runtime/async_local.py +0 -388
  80. {kailash-0.5.0 → kailash-0.6.1}/LICENSE +0 -0
  81. {kailash-0.5.0 → kailash-0.6.1}/MANIFEST.in +0 -0
  82. {kailash-0.5.0 → kailash-0.6.1}/setup.cfg +0 -0
  83. {kailash-0.5.0 → kailash-0.6.1}/setup.py +0 -0
  84. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/__main__.py +0 -0
  85. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/access_control/managers.py +0 -0
  86. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/access_control/rule_evaluators.py +0 -0
  87. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/access_control.py +0 -0
  88. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/access_control_abac.py +0 -0
  89. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/api/auth.py +0 -0
  90. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/api/custom_nodes.py +0 -0
  91. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/api/custom_nodes_secure.py +0 -0
  92. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/api/gateway.py +0 -0
  93. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/api/mcp_integration.py +0 -0
  94. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/api/studio.py +0 -0
  95. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/api/workflow_api.py +0 -0
  96. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/cli/__init__.py +0 -0
  97. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/cli/commands.py +0 -0
  98. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/config/__init__.py +0 -0
  99. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/config/database_config.py +0 -0
  100. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/database/__init__.py +0 -0
  101. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/database/execution_pipeline.py +0 -0
  102. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/manifest.py +0 -0
  103. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/mcp/__init__.py +0 -0
  104. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/mcp/ai_registry_server.py +0 -0
  105. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/mcp/client.py +0 -0
  106. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/mcp/client_new.py +0 -0
  107. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/mcp/server.py +0 -0
  108. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/mcp/server_enhanced.py +0 -0
  109. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/mcp/servers/ai_registry.py +0 -0
  110. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/mcp/utils/__init__.py +0 -0
  111. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/mcp/utils/cache.py +0 -0
  112. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/mcp/utils/config.py +0 -0
  113. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/mcp/utils/formatters.py +0 -0
  114. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/mcp/utils/metrics.py +0 -0
  115. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/__init__.py +0 -0
  116. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/auth/__init__.py +0 -0
  117. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/auth/auth_manager.py +0 -0
  118. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/auth/exceptions.py +0 -0
  119. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/auth/jwt_auth.py +0 -0
  120. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/auth/utils.py +0 -0
  121. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/communication/__init__.py +0 -0
  122. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/communication/events.py +0 -0
  123. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/communication/realtime.py +0 -0
  124. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/core/__init__.py +0 -0
  125. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/core/agent_ui.py +0 -0
  126. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/core/schema.py +0 -0
  127. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/core/workflows.py +0 -0
  128. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/database/__init__.py +0 -0
  129. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/database/base.py +0 -0
  130. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/database/enums.py +0 -0
  131. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/database/migrations.py +0 -0
  132. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/database/models.py +0 -0
  133. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/database/repositories.py +0 -0
  134. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/database/session_manager.py +0 -0
  135. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/mcp/__init__.py +0 -0
  136. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/middleware/mcp/client_integration.py +0 -0
  137. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/__init__.py +0 -0
  138. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/admin/__init__.py +0 -0
  139. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/admin/audit_log.py +0 -0
  140. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/admin/security_event.py +0 -0
  141. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/ai/__init__.py +0 -0
  142. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/ai/a2a.py +0 -0
  143. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/ai/agents.py +0 -0
  144. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/ai/ai_providers.py +0 -0
  145. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/ai/embedding_generator.py +0 -0
  146. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/ai/intelligent_agent_orchestrator.py +0 -0
  147. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/ai/iterative_llm_agent.py +0 -0
  148. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/ai/llm_agent.py +0 -0
  149. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/ai/models.py +0 -0
  150. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/ai/self_organizing.py +0 -0
  151. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/ai/vision_utils.py +0 -0
  152. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/alerts/__init__.py +0 -0
  153. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/alerts/base.py +0 -0
  154. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/alerts/discord.py +0 -0
  155. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/api/__init__.py +0 -0
  156. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/api/auth.py +0 -0
  157. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/api/graphql.py +0 -0
  158. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/api/http.py +0 -0
  159. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/api/monitoring.py +0 -0
  160. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/api/rate_limiting.py +0 -0
  161. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/api/rest.py +0 -0
  162. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/api/security.py +0 -0
  163. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/auth/__init__.py +0 -0
  164. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/auth/directory_integration.py +0 -0
  165. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/auth/enterprise_auth_provider.py +0 -0
  166. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/auth/mfa.py +0 -0
  167. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/auth/risk_assessment.py +0 -0
  168. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/auth/session_management.py +0 -0
  169. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/auth/sso.py +0 -0
  170. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/base.py +0 -0
  171. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/base_async.py +0 -0
  172. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/base_cycle_aware.py +0 -0
  173. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/base_with_acl.py +0 -0
  174. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/compliance/__init__.py +0 -0
  175. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/compliance/data_retention.py +0 -0
  176. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/compliance/gdpr.py +0 -0
  177. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/__init__.py +0 -0
  178. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/async_connection.py +0 -0
  179. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/async_vector.py +0 -0
  180. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/directory.py +0 -0
  181. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/event_generation.py +0 -0
  182. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/file_discovery.py +0 -0
  183. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/readers.py +0 -0
  184. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/retrieval.py +0 -0
  185. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/sharepoint_graph.py +0 -0
  186. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/sources.py +0 -0
  187. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/streaming.py +0 -0
  188. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/vector_db.py +0 -0
  189. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/data/writers.py +0 -0
  190. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/enterprise/__init__.py +0 -0
  191. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/enterprise/batch_processor.py +0 -0
  192. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/enterprise/data_lineage.py +0 -0
  193. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/logic/__init__.py +0 -0
  194. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/logic/async_operations.py +0 -0
  195. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/logic/convergence.py +0 -0
  196. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/logic/loop.py +0 -0
  197. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/logic/operations.py +0 -0
  198. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/logic/workflow.py +0 -0
  199. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/mixins/__init__.py +0 -0
  200. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/mixins/event_emitter.py +0 -0
  201. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/mixins/mcp.py +0 -0
  202. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/mixins/security.py +0 -0
  203. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/mixins.py +0 -0
  204. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/monitoring/performance_benchmark.py +0 -0
  205. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/advanced.py +0 -0
  206. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/agentic.py +0 -0
  207. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/conversational.py +0 -0
  208. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/evaluation.py +0 -0
  209. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/federated.py +0 -0
  210. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/graph.py +0 -0
  211. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/multimodal.py +0 -0
  212. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/optimized.py +0 -0
  213. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/privacy.py +0 -0
  214. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/query_processing.py +0 -0
  215. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/realtime.py +0 -0
  216. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/registry.py +0 -0
  217. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/router.py +0 -0
  218. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/similarity.py +0 -0
  219. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/strategies.py +0 -0
  220. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/rag/workflows.py +0 -0
  221. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/security/__init__.py +0 -0
  222. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/security/abac_evaluator.py +0 -0
  223. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/security/audit_log.py +0 -0
  224. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/security/behavior_analysis.py +0 -0
  225. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/security/credential_manager.py +0 -0
  226. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/security/rotating_credentials.py +0 -0
  227. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/security/security_event.py +0 -0
  228. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/security/threat_detection.py +0 -0
  229. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/testing/__init__.py +0 -0
  230. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/testing/credential_testing.py +0 -0
  231. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/transform/__init__.py +0 -0
  232. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/transform/chunkers.py +0 -0
  233. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/transform/formatters.py +0 -0
  234. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/transform/processors.py +0 -0
  235. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/nodes/validation.py +0 -0
  236. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/runtime/__init__.py +0 -0
  237. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/runtime/access_controlled.py +0 -0
  238. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/runtime/docker.py +0 -0
  239. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/runtime/local.py +0 -0
  240. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/runtime/parallel.py +0 -0
  241. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/runtime/parallel_cyclic.py +0 -0
  242. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/runtime/runner.py +0 -0
  243. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/runtime/testing.py +0 -0
  244. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/sdk_exceptions.py +0 -0
  245. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/security.py +0 -0
  246. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/tracking/__init__.py +0 -0
  247. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/tracking/manager.py +0 -0
  248. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/tracking/metrics_collector.py +0 -0
  249. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/tracking/models.py +0 -0
  250. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/tracking/storage/__init__.py +0 -0
  251. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/tracking/storage/base.py +0 -0
  252. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/tracking/storage/database.py +0 -0
  253. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/tracking/storage/filesystem.py +0 -0
  254. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/utils/__init__.py +0 -0
  255. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/utils/export.py +0 -0
  256. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/utils/migrations/__init__.py +0 -0
  257. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/utils/migrations/generator.py +0 -0
  258. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/utils/migrations/models.py +0 -0
  259. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/utils/migrations/runner.py +0 -0
  260. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/utils/resource_manager.py +0 -0
  261. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/utils/secure_logging.py +0 -0
  262. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/utils/templates.py +0 -0
  263. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/visualization/__init__.py +0 -0
  264. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/visualization/api.py +0 -0
  265. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/visualization/dashboard.py +0 -0
  266. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/visualization/performance.py +0 -0
  267. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/visualization/reports.py +0 -0
  268. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/builder.py +0 -0
  269. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/convergence.py +0 -0
  270. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/cycle_analyzer.py +0 -0
  271. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/cycle_builder.py +0 -0
  272. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/cycle_config.py +0 -0
  273. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/cycle_debugger.py +0 -0
  274. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/cycle_exceptions.py +0 -0
  275. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/cycle_profiler.py +0 -0
  276. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/cycle_state.py +0 -0
  277. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/mermaid_visualizer.py +0 -0
  278. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/migration.py +0 -0
  279. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/mock_registry.py +0 -0
  280. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/runner.py +0 -0
  281. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/safety.py +0 -0
  282. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/state.py +0 -0
  283. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/templates.py +0 -0
  284. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/validation.py +0 -0
  285. {kailash-0.5.0 → kailash-0.6.1}/src/kailash/workflow/visualization.py +0 -0
  286. {kailash-0.5.0 → kailash-0.6.1}/src/kailash.egg-info/dependency_links.txt +0 -0
  287. {kailash-0.5.0 → kailash-0.6.1}/src/kailash.egg-info/entry_points.txt +0 -0
  288. {kailash-0.5.0 → kailash-0.6.1}/src/kailash.egg-info/not-zip-safe +0 -0
  289. {kailash-0.5.0 → kailash-0.6.1}/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.5.0
3
+ Version: 0.6.1
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
@@ -30,6 +30,7 @@ Requires-Dist: requests>=2.32.3
30
30
  Requires-Dist: pytest-cov>=6.1.1
31
31
  Requires-Dist: isort>=6.0.1
32
32
  Requires-Dist: aiohttp>=3.12.4
33
+ Requires-Dist: aiohttp-cors>=0.7.0
33
34
  Requires-Dist: ruff>=0.11.12
34
35
  Requires-Dist: msal>=1.32.3
35
36
  Requires-Dist: sphinx>=8.2.3
@@ -61,6 +62,8 @@ Requires-Dist: asyncpg>=0.30.0
61
62
  Requires-Dist: aiomysql>=0.2.0
62
63
  Requires-Dist: twilio>=9.6.3
63
64
  Requires-Dist: qrcode>=8.2
65
+ Requires-Dist: aiofiles>=24.1.0
66
+ Requires-Dist: bcrypt>=4.3.0
64
67
  Provides-Extra: dev
65
68
  Requires-Dist: pytest>=7.0; extra == "dev"
66
69
  Requires-Dist: pytest-cov>=3.0; extra == "dev"
@@ -80,8 +83,9 @@ Dynamic: requires-python
80
83
  <a href="https://pepy.tech/project/kailash"><img src="https://static.pepy.tech/badge/kailash" alt="Downloads"></a>
81
84
  <img src="https://img.shields.io/badge/license-MIT-green.svg" alt="MIT License">
82
85
  <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">
86
+ <img src="https://img.shields.io/badge/tests-production%20quality-brightgreen.svg" alt="Tests: Production Quality">
87
+ <img src="https://img.shields.io/badge/docker-integrated-blue.svg" alt="Docker: Integrated">
88
+ <img src="https://img.shields.io/badge/AI-ollama%20validated-purple.svg" alt="AI: Ollama Validated">
85
89
  </p>
86
90
 
87
91
  <p align="center">
@@ -94,6 +98,17 @@ Dynamic: requires-python
94
98
 
95
99
  ---
96
100
 
101
+ ## 🔥 Latest Release: v0.6.1 (January 26, 2025)
102
+
103
+ **Critical patch fixing middleware compatibility issues from v0.6.0**
104
+
105
+ - 🚨 **Fixed**: All middleware components now use `.execute()` method
106
+ - 🔧 **Fixed**: DataTransformer string transformation validation
107
+ - 🧹 **Fixed**: EventStore async task cleanup preventing crashes
108
+ - 🐳 **New**: Standardized Docker test environment (`./test-env`)
109
+
110
+ [Full Changelog](changelogs/releases/v0.6.1-2025-01-26.md) | [Migration Guide](sdk-users/migration-guides/v0.6.0-to-v0.6.1-migration.md)
111
+
97
112
  ## ✨ Highlights
98
113
 
99
114
  - 🚀 **Rapid Prototyping**: Create and test workflows locally without containerization
@@ -121,6 +136,7 @@ Dynamic: requires-python
121
136
  - 🔄 **Zero-Downtime Operations**: Automatic credential rotation with enterprise notifications and audit trails
122
137
  - 🌉 **Enterprise Middleware (v0.4.0)**: Production-ready middleware architecture with real-time agent-frontend communication, dynamic workflows, and AI chat integration
123
138
  - ⚡ **Performance Revolution (v0.5.0)**: 10-100x faster parameter resolution, clear async/sync separation, automatic resource management
139
+ - 🧪 **Production-Quality Testing (v0.5.0)**: Comprehensive testing infrastructure with Docker integration, AI workflows, and real-world business scenarios
124
140
 
125
141
  ## 🏗️ Project Architecture
126
142
 
@@ -177,7 +193,6 @@ pip install kailash[user-management]
177
193
  # Everything
178
194
  pip install kailash[all]
179
195
  ```
180
- >>>>>>> origin/main
181
196
 
182
197
  ## 🎯 Who Is This For?
183
198
 
@@ -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">
@@ -20,6 +21,17 @@
20
21
 
21
22
  ---
22
23
 
24
+ ## 🔥 Latest Release: v0.6.1 (January 26, 2025)
25
+
26
+ **Critical patch fixing middleware compatibility issues from v0.6.0**
27
+
28
+ - 🚨 **Fixed**: All middleware components now use `.execute()` method
29
+ - 🔧 **Fixed**: DataTransformer string transformation validation
30
+ - 🧹 **Fixed**: EventStore async task cleanup preventing crashes
31
+ - 🐳 **New**: Standardized Docker test environment (`./test-env`)
32
+
33
+ [Full Changelog](changelogs/releases/v0.6.1-2025-01-26.md) | [Migration Guide](sdk-users/migration-guides/v0.6.0-to-v0.6.1-migration.md)
34
+
23
35
  ## ✨ Highlights
24
36
 
25
37
  - 🚀 **Rapid Prototyping**: Create and test workflows locally without containerization
@@ -47,6 +59,7 @@
47
59
  - 🔄 **Zero-Downtime Operations**: Automatic credential rotation with enterprise notifications and audit trails
48
60
  - 🌉 **Enterprise Middleware (v0.4.0)**: Production-ready middleware architecture with real-time agent-frontend communication, dynamic workflows, and AI chat integration
49
61
  - ⚡ **Performance Revolution (v0.5.0)**: 10-100x faster parameter resolution, clear async/sync separation, automatic resource management
62
+ - 🧪 **Production-Quality Testing (v0.5.0)**: Comprehensive testing infrastructure with Docker integration, AI workflows, and real-world business scenarios
50
63
 
51
64
  ## 🏗️ Project Architecture
52
65
 
@@ -103,7 +116,6 @@ pip install kailash[user-management]
103
116
  # Everything
104
117
  pip install kailash[all]
105
118
  ```
106
- >>>>>>> origin/main
107
119
 
108
120
  ## 🎯 Who Is This For?
109
121
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "kailash"
7
- version = "0.5.0"
7
+ version = "0.6.1"
8
8
  description = "Python SDK for the Kailash container-node architecture"
9
9
  authors = [
10
10
  {name = "Integrum", email = "info@integrum.com"}
@@ -34,6 +34,7 @@ dependencies = [
34
34
  "pytest-cov>=6.1.1",
35
35
  "isort>=6.0.1",
36
36
  "aiohttp>=3.12.4",
37
+ "aiohttp-cors>=0.7.0",
37
38
  "ruff>=0.11.12",
38
39
  "msal>=1.32.3",
39
40
  "sphinx>=8.2.3",
@@ -65,6 +66,8 @@ dependencies = [
65
66
  "aiomysql>=0.2.0",
66
67
  "twilio>=9.6.3",
67
68
  "qrcode>=8.2",
69
+ "aiofiles>=24.1.0",
70
+ "bcrypt>=4.3.0",
68
71
  ]
69
72
 
70
73
  [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.1"
37
37
 
38
38
  __all__ = [
39
39
  # Core workflow components
@@ -42,8 +42,8 @@ set_access_control_manager = _original_module.set_access_control_manager
42
42
 
43
43
  # Import new composition-based components
44
44
  from kailash.access_control.managers import AccessControlManager # noqa: E402
45
+ from kailash.access_control.rule_evaluators import ABACRuleEvaluator # noqa: E402
45
46
  from kailash.access_control.rule_evaluators import ( # noqa: E402
46
- ABACRuleEvaluator,
47
47
  HybridRuleEvaluator,
48
48
  RBACRuleEvaluator,
49
49
  RuleEvaluator,
@@ -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
+ ]