kailash 0.5.0__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.5.0/src/kailash.egg-info → kailash-0.6.0}/PKG-INFO +7 -4
  2. {kailash-0.5.0 → kailash-0.6.0}/README.md +4 -3
  3. {kailash-0.5.0 → kailash-0.6.0}/pyproject.toml +3 -1
  4. {kailash-0.5.0 → 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.5.0 → kailash-0.6.0}/src/kailash/middleware/auth/models.py +2 -2
  20. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/database/base_models.py +1 -7
  21. kailash-0.6.0/src/kailash/middleware/gateway/__init__.py +22 -0
  22. kailash-0.6.0/src/kailash/middleware/gateway/checkpoint_manager.py +398 -0
  23. kailash-0.6.0/src/kailash/middleware/gateway/deduplicator.py +382 -0
  24. kailash-0.6.0/src/kailash/middleware/gateway/durable_gateway.py +417 -0
  25. kailash-0.6.0/src/kailash/middleware/gateway/durable_request.py +498 -0
  26. kailash-0.6.0/src/kailash/middleware/gateway/event_store.py +459 -0
  27. kailash-0.6.0/src/kailash/nodes/admin/permission_check.py +1648 -0
  28. kailash-0.6.0/src/kailash/nodes/admin/role_management.py +1957 -0
  29. kailash-0.6.0/src/kailash/nodes/admin/schema_manager.py +438 -0
  30. kailash-0.6.0/src/kailash/nodes/admin/user_management.py +1472 -0
  31. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/code/__init__.py +8 -1
  32. kailash-0.6.0/src/kailash/nodes/code/async_python.py +1035 -0
  33. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/code/python.py +1 -0
  34. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/async_sql.py +9 -3
  35. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/sql.py +20 -11
  36. kailash-0.6.0/src/kailash/nodes/data/workflow_connection_pool.py +643 -0
  37. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/__init__.py +1 -4
  38. kailash-0.6.0/src/kailash/resources/__init__.py +40 -0
  39. kailash-0.6.0/src/kailash/resources/factory.py +533 -0
  40. kailash-0.6.0/src/kailash/resources/health.py +319 -0
  41. kailash-0.6.0/src/kailash/resources/reference.py +288 -0
  42. kailash-0.6.0/src/kailash/resources/registry.py +392 -0
  43. kailash-0.6.0/src/kailash/runtime/async_local.py +797 -0
  44. kailash-0.6.0/src/kailash/testing/__init__.py +34 -0
  45. kailash-0.6.0/src/kailash/testing/async_test_case.py +353 -0
  46. kailash-0.6.0/src/kailash/testing/async_utils.py +345 -0
  47. kailash-0.6.0/src/kailash/testing/fixtures.py +458 -0
  48. kailash-0.6.0/src/kailash/testing/mock_registry.py +495 -0
  49. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/__init__.py +8 -0
  50. kailash-0.6.0/src/kailash/workflow/async_builder.py +621 -0
  51. kailash-0.6.0/src/kailash/workflow/async_patterns.py +766 -0
  52. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/cyclic_runner.py +107 -16
  53. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/graph.py +7 -2
  54. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/resilience.py +11 -1
  55. {kailash-0.5.0 → kailash-0.6.0/src/kailash.egg-info}/PKG-INFO +7 -4
  56. {kailash-0.5.0 → kailash-0.6.0}/src/kailash.egg-info/SOURCES.txt +35 -0
  57. {kailash-0.5.0 → kailash-0.6.0}/src/kailash.egg-info/requires.txt +2 -0
  58. kailash-0.5.0/src/kailash/nodes/admin/permission_check.py +0 -864
  59. kailash-0.5.0/src/kailash/nodes/admin/role_management.py +0 -823
  60. kailash-0.5.0/src/kailash/nodes/admin/user_management.py +0 -1930
  61. kailash-0.5.0/src/kailash/runtime/async_local.py +0 -388
  62. {kailash-0.5.0 → kailash-0.6.0}/LICENSE +0 -0
  63. {kailash-0.5.0 → kailash-0.6.0}/MANIFEST.in +0 -0
  64. {kailash-0.5.0 → kailash-0.6.0}/setup.cfg +0 -0
  65. {kailash-0.5.0 → kailash-0.6.0}/setup.py +0 -0
  66. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/__main__.py +0 -0
  67. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/access_control/__init__.py +0 -0
  68. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/access_control/managers.py +0 -0
  69. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/access_control/rule_evaluators.py +0 -0
  70. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/access_control.py +0 -0
  71. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/access_control_abac.py +0 -0
  72. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/api/auth.py +0 -0
  73. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/api/custom_nodes.py +0 -0
  74. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/api/custom_nodes_secure.py +0 -0
  75. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/api/gateway.py +0 -0
  76. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/api/mcp_integration.py +0 -0
  77. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/api/studio.py +0 -0
  78. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/api/workflow_api.py +0 -0
  79. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/cli/__init__.py +0 -0
  80. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/cli/commands.py +0 -0
  81. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/config/__init__.py +0 -0
  82. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/config/database_config.py +0 -0
  83. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/database/__init__.py +0 -0
  84. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/database/execution_pipeline.py +0 -0
  85. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/manifest.py +0 -0
  86. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/mcp/__init__.py +0 -0
  87. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/mcp/ai_registry_server.py +0 -0
  88. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/mcp/client.py +0 -0
  89. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/mcp/client_new.py +0 -0
  90. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/mcp/server.py +0 -0
  91. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/mcp/server_enhanced.py +0 -0
  92. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/mcp/servers/ai_registry.py +0 -0
  93. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/mcp/utils/__init__.py +0 -0
  94. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/mcp/utils/cache.py +0 -0
  95. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/mcp/utils/config.py +0 -0
  96. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/mcp/utils/formatters.py +0 -0
  97. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/mcp/utils/metrics.py +0 -0
  98. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/__init__.py +0 -0
  99. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/auth/__init__.py +0 -0
  100. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/auth/access_control.py +0 -0
  101. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/auth/auth_manager.py +0 -0
  102. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/auth/exceptions.py +0 -0
  103. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/auth/jwt_auth.py +0 -0
  104. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/auth/utils.py +0 -0
  105. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/communication/__init__.py +0 -0
  106. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/communication/ai_chat.py +0 -0
  107. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/communication/api_gateway.py +0 -0
  108. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/communication/events.py +0 -0
  109. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/communication/realtime.py +0 -0
  110. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/core/__init__.py +0 -0
  111. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/core/agent_ui.py +0 -0
  112. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/core/schema.py +0 -0
  113. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/core/workflows.py +0 -0
  114. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/database/__init__.py +0 -0
  115. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/database/base.py +0 -0
  116. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/database/enums.py +0 -0
  117. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/database/migrations.py +0 -0
  118. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/database/models.py +0 -0
  119. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/database/repositories.py +0 -0
  120. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/database/session_manager.py +0 -0
  121. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/mcp/__init__.py +0 -0
  122. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/mcp/client_integration.py +0 -0
  123. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/middleware/mcp/enhanced_server.py +0 -0
  124. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/__init__.py +0 -0
  125. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/admin/__init__.py +0 -0
  126. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/admin/audit_log.py +0 -0
  127. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/admin/security_event.py +0 -0
  128. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/ai/__init__.py +0 -0
  129. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/ai/a2a.py +0 -0
  130. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/ai/agents.py +0 -0
  131. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/ai/ai_providers.py +0 -0
  132. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/ai/embedding_generator.py +0 -0
  133. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/ai/intelligent_agent_orchestrator.py +0 -0
  134. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/ai/iterative_llm_agent.py +0 -0
  135. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/ai/llm_agent.py +0 -0
  136. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/ai/models.py +0 -0
  137. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/ai/self_organizing.py +0 -0
  138. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/ai/vision_utils.py +0 -0
  139. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/alerts/__init__.py +0 -0
  140. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/alerts/base.py +0 -0
  141. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/alerts/discord.py +0 -0
  142. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/api/__init__.py +0 -0
  143. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/api/auth.py +0 -0
  144. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/api/graphql.py +0 -0
  145. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/api/http.py +0 -0
  146. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/api/monitoring.py +0 -0
  147. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/api/rate_limiting.py +0 -0
  148. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/api/rest.py +0 -0
  149. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/api/security.py +0 -0
  150. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/auth/__init__.py +0 -0
  151. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/auth/directory_integration.py +0 -0
  152. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/auth/enterprise_auth_provider.py +0 -0
  153. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/auth/mfa.py +0 -0
  154. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/auth/risk_assessment.py +0 -0
  155. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/auth/session_management.py +0 -0
  156. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/auth/sso.py +0 -0
  157. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/base.py +0 -0
  158. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/base_async.py +0 -0
  159. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/base_cycle_aware.py +0 -0
  160. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/base_with_acl.py +0 -0
  161. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/compliance/__init__.py +0 -0
  162. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/compliance/data_retention.py +0 -0
  163. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/compliance/gdpr.py +0 -0
  164. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/__init__.py +0 -0
  165. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/async_connection.py +0 -0
  166. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/async_vector.py +0 -0
  167. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/directory.py +0 -0
  168. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/event_generation.py +0 -0
  169. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/file_discovery.py +0 -0
  170. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/readers.py +0 -0
  171. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/retrieval.py +0 -0
  172. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/sharepoint_graph.py +0 -0
  173. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/sources.py +0 -0
  174. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/streaming.py +0 -0
  175. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/vector_db.py +0 -0
  176. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/data/writers.py +0 -0
  177. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/enterprise/__init__.py +0 -0
  178. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/enterprise/batch_processor.py +0 -0
  179. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/enterprise/data_lineage.py +0 -0
  180. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/logic/__init__.py +0 -0
  181. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/logic/async_operations.py +0 -0
  182. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/logic/convergence.py +0 -0
  183. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/logic/loop.py +0 -0
  184. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/logic/operations.py +0 -0
  185. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/logic/workflow.py +0 -0
  186. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/mixins/__init__.py +0 -0
  187. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/mixins/event_emitter.py +0 -0
  188. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/mixins/mcp.py +0 -0
  189. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/mixins/security.py +0 -0
  190. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/mixins.py +0 -0
  191. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/monitoring/__init__.py +0 -0
  192. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/monitoring/performance_benchmark.py +0 -0
  193. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/advanced.py +0 -0
  194. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/agentic.py +0 -0
  195. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/conversational.py +0 -0
  196. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/evaluation.py +0 -0
  197. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/federated.py +0 -0
  198. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/graph.py +0 -0
  199. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/multimodal.py +0 -0
  200. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/optimized.py +0 -0
  201. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/privacy.py +0 -0
  202. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/query_processing.py +0 -0
  203. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/realtime.py +0 -0
  204. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/registry.py +0 -0
  205. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/router.py +0 -0
  206. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/similarity.py +0 -0
  207. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/strategies.py +0 -0
  208. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/rag/workflows.py +0 -0
  209. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/security/__init__.py +0 -0
  210. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/security/abac_evaluator.py +0 -0
  211. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/security/audit_log.py +0 -0
  212. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/security/behavior_analysis.py +0 -0
  213. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/security/credential_manager.py +0 -0
  214. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/security/rotating_credentials.py +0 -0
  215. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/security/security_event.py +0 -0
  216. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/security/threat_detection.py +0 -0
  217. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/testing/__init__.py +0 -0
  218. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/testing/credential_testing.py +0 -0
  219. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/transform/__init__.py +0 -0
  220. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/transform/chunkers.py +0 -0
  221. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/transform/formatters.py +0 -0
  222. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/transform/processors.py +0 -0
  223. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/nodes/validation.py +0 -0
  224. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/runtime/__init__.py +0 -0
  225. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/runtime/access_controlled.py +0 -0
  226. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/runtime/docker.py +0 -0
  227. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/runtime/local.py +0 -0
  228. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/runtime/parallel.py +0 -0
  229. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/runtime/parallel_cyclic.py +0 -0
  230. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/runtime/runner.py +0 -0
  231. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/runtime/testing.py +0 -0
  232. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/sdk_exceptions.py +0 -0
  233. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/security.py +0 -0
  234. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/tracking/__init__.py +0 -0
  235. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/tracking/manager.py +0 -0
  236. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/tracking/metrics_collector.py +0 -0
  237. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/tracking/models.py +0 -0
  238. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/tracking/storage/__init__.py +0 -0
  239. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/tracking/storage/base.py +0 -0
  240. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/tracking/storage/database.py +0 -0
  241. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/tracking/storage/filesystem.py +0 -0
  242. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/utils/__init__.py +0 -0
  243. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/utils/export.py +0 -0
  244. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/utils/migrations/__init__.py +0 -0
  245. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/utils/migrations/generator.py +0 -0
  246. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/utils/migrations/models.py +0 -0
  247. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/utils/migrations/runner.py +0 -0
  248. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/utils/resource_manager.py +0 -0
  249. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/utils/secure_logging.py +0 -0
  250. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/utils/templates.py +0 -0
  251. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/visualization/__init__.py +0 -0
  252. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/visualization/api.py +0 -0
  253. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/visualization/dashboard.py +0 -0
  254. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/visualization/performance.py +0 -0
  255. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/visualization/reports.py +0 -0
  256. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/builder.py +0 -0
  257. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/convergence.py +0 -0
  258. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/cycle_analyzer.py +0 -0
  259. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/cycle_builder.py +0 -0
  260. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/cycle_config.py +0 -0
  261. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/cycle_debugger.py +0 -0
  262. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/cycle_exceptions.py +0 -0
  263. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/cycle_profiler.py +0 -0
  264. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/cycle_state.py +0 -0
  265. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/mermaid_visualizer.py +0 -0
  266. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/migration.py +0 -0
  267. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/mock_registry.py +0 -0
  268. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/runner.py +0 -0
  269. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/safety.py +0 -0
  270. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/state.py +0 -0
  271. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/templates.py +0 -0
  272. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/validation.py +0 -0
  273. {kailash-0.5.0 → kailash-0.6.0}/src/kailash/workflow/visualization.py +0 -0
  274. {kailash-0.5.0 → kailash-0.6.0}/src/kailash.egg-info/dependency_links.txt +0 -0
  275. {kailash-0.5.0 → kailash-0.6.0}/src/kailash.egg-info/entry_points.txt +0 -0
  276. {kailash-0.5.0 → kailash-0.6.0}/src/kailash.egg-info/not-zip-safe +0 -0
  277. {kailash-0.5.0 → 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.5.0
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">
@@ -121,6 +124,7 @@ Dynamic: requires-python
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
123
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
124
128
 
125
129
  ## 🏗️ Project Architecture
126
130
 
@@ -177,7 +181,6 @@ pip install kailash[user-management]
177
181
  # Everything
178
182
  pip install kailash[all]
179
183
  ```
180
- >>>>>>> origin/main
181
184
 
182
185
  ## 🎯 Who Is This For?
183
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">
@@ -47,6 +48,7 @@
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
49
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
50
52
 
51
53
  ## 🏗️ Project Architecture
52
54
 
@@ -103,7 +105,6 @@ pip install kailash[user-management]
103
105
  # Everything
104
106
  pip install kailash[all]
105
107
  ```
106
- >>>>>>> origin/main
107
108
 
108
109
  ## 🎯 Who Is This For?
109
110
 
@@ -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.0"
8
8
  description = "Python SDK for the Kailash container-node architecture"
9
9
  authors = [
10
10
  {name = "Integrum", email = "info@integrum.com"}
@@ -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
+ ]