kailash 0.9.18__tar.gz → 0.9.20__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 (441) hide show
  1. {kailash-0.9.18/src/kailash.egg-info → kailash-0.9.20}/PKG-INFO +20 -19
  2. {kailash-0.9.18 → kailash-0.9.20}/README.md +16 -16
  3. {kailash-0.9.18 → kailash-0.9.20}/pyproject.toml +4 -3
  4. {kailash-0.9.18 → kailash-0.9.20}/setup.py +1 -1
  5. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/__init__.py +1 -1
  6. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/subscriptions.py +23 -23
  7. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/__init__.py +1 -0
  8. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/ai_providers.py +237 -25
  9. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/llm_agent.py +73 -15
  10. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/code/python.py +178 -15
  11. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/async_sql.py +93 -26
  12. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/local.py +4 -1
  13. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/builder.py +1 -1
  14. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/templates.py +2 -1
  15. {kailash-0.9.18 → kailash-0.9.20/src/kailash.egg-info}/PKG-INFO +20 -19
  16. {kailash-0.9.18 → kailash-0.9.20}/src/kailash.egg-info/SOURCES.txt +0 -1
  17. {kailash-0.9.18 → kailash-0.9.20}/src/kailash.egg-info/requires.txt +3 -2
  18. kailash-0.9.18/src/kailash/nodes/ai/a2a_backup.py +0 -1807
  19. {kailash-0.9.18 → kailash-0.9.20}/LICENSE +0 -0
  20. {kailash-0.9.18 → kailash-0.9.20}/MANIFEST.in +0 -0
  21. {kailash-0.9.18 → kailash-0.9.20}/NOTICE +0 -0
  22. {kailash-0.9.18 → kailash-0.9.20}/setup.cfg +0 -0
  23. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/__main__.py +0 -0
  24. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/access_control/__init__.py +0 -0
  25. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/access_control/managers.py +0 -0
  26. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/access_control/rule_evaluators.py +0 -0
  27. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/access_control.py +0 -0
  28. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/access_control_abac.py +0 -0
  29. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/adapters/__init__.py +0 -0
  30. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/adapters/mcp_platform_adapter.py +0 -0
  31. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/analysis/__init__.py +0 -0
  32. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/analysis/conditional_branch_analyzer.py +0 -0
  33. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/api/auth.py +0 -0
  34. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/api/custom_nodes.py +0 -0
  35. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/api/custom_nodes_secure.py +0 -0
  36. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/api/gateway.py +0 -0
  37. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/api/mcp_integration.py +0 -0
  38. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/api/studio.py +0 -0
  39. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/api/workflow_api.py +0 -0
  40. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/channels/__init__.py +0 -0
  41. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/channels/api_channel.py +0 -0
  42. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/channels/base.py +0 -0
  43. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/channels/cli_channel.py +0 -0
  44. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/channels/event_router.py +0 -0
  45. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/channels/mcp_channel.py +0 -0
  46. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/channels/session.py +0 -0
  47. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/cli/__init__.py +0 -0
  48. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/cli/commands.py +0 -0
  49. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/cli/validate_imports.py +0 -0
  50. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/cli/validation_audit.py +0 -0
  51. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/client/__init__.py +0 -0
  52. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/client/enhanced_client.py +0 -0
  53. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/config/__init__.py +0 -0
  54. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/config/database_config.py +0 -0
  55. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/actors/__init__.py +0 -0
  56. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/actors/adaptive_pool_controller.py +0 -0
  57. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/actors/connection_actor.py +0 -0
  58. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/actors/supervisor.py +0 -0
  59. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/ml/__init__.py +0 -0
  60. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/ml/query_patterns.py +0 -0
  61. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/monitoring/__init__.py +0 -0
  62. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/monitoring/connection_metrics.py +0 -0
  63. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/optimization/__init__.py +0 -0
  64. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/resilience/__init__.py +0 -0
  65. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/resilience/bulkhead.py +0 -0
  66. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/resilience/circuit_breaker.py +0 -0
  67. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/core/resilience/health_monitor.py +0 -0
  68. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/database/__init__.py +0 -0
  69. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/database/execution_pipeline.py +0 -0
  70. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/__init__.py +0 -0
  71. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/compliance.py +0 -0
  72. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/consistency.py +0 -0
  73. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/coordination/__init__.py +0 -0
  74. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/coordination/global_ordering.py +0 -0
  75. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/coordination/leader_election.py +0 -0
  76. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/coordination/partition_detector.py +0 -0
  77. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/coordination/raft.py +0 -0
  78. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/discovery.py +0 -0
  79. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/location.py +0 -0
  80. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/migration/__init__.py +0 -0
  81. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/migration/edge_migration_service.py +0 -0
  82. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/migration/edge_migrator.py +0 -0
  83. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/monitoring/__init__.py +0 -0
  84. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/monitoring/edge_monitor.py +0 -0
  85. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/prediction/__init__.py +0 -0
  86. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/prediction/predictive_warmer.py +0 -0
  87. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/__init__.py +0 -0
  88. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/cloud_integration.py +0 -0
  89. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/cost_optimizer.py +0 -0
  90. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/docker_integration.py +0 -0
  91. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/kubernetes_integration.py +0 -0
  92. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/platform_integration.py +0 -0
  93. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/predictive_scaler.py +0 -0
  94. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/resource_analyzer.py +0 -0
  95. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/edge/resource/resource_pools.py +0 -0
  96. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/gateway/__init__.py +0 -0
  97. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/gateway/api.py +0 -0
  98. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/gateway/enhanced_gateway.py +0 -0
  99. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/gateway/resource_resolver.py +0 -0
  100. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/gateway/security.py +0 -0
  101. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/integrations/dataflow_edge.py +0 -0
  102. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/manifest.py +0 -0
  103. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/__init__.py +0 -0
  104. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/advanced_features.py +0 -0
  105. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/ai_registry_server.py +0 -0
  106. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/auth.py +0 -0
  107. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/client.py +0 -0
  108. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/client_new.py +0 -0
  109. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/discovery.py +0 -0
  110. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/errors.py +0 -0
  111. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/oauth.py +0 -0
  112. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/protocol.py +0 -0
  113. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/registry_integration.py +0 -0
  114. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/server.py +0 -0
  115. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/servers/ai_registry.py +0 -0
  116. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/transports.py +0 -0
  117. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/utils/__init__.py +0 -0
  118. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/utils/cache.py +0 -0
  119. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/utils/config.py +0 -0
  120. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/utils/formatters.py +0 -0
  121. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/mcp_server/utils/metrics.py +0 -0
  122. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/__init__.py +0 -0
  123. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/auth/__init__.py +0 -0
  124. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/auth/access_control.py +0 -0
  125. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/auth/auth_manager.py +0 -0
  126. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/auth/exceptions.py +0 -0
  127. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/auth/jwt_auth.py +0 -0
  128. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/auth/models.py +0 -0
  129. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/auth/utils.py +0 -0
  130. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/communication/__init__.py +0 -0
  131. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/communication/ai_chat.py +0 -0
  132. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/communication/api_gateway.py +0 -0
  133. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/communication/events.py +0 -0
  134. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/communication/realtime.py +0 -0
  135. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/core/__init__.py +0 -0
  136. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/core/agent_ui.py +0 -0
  137. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/core/schema.py +0 -0
  138. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/core/workflows.py +0 -0
  139. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/__init__.py +0 -0
  140. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/base.py +0 -0
  141. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/base_models.py +0 -0
  142. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/enums.py +0 -0
  143. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/migrations.py +0 -0
  144. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/models.py +0 -0
  145. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/repositories.py +0 -0
  146. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/database/session_manager.py +0 -0
  147. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/gateway/__init__.py +0 -0
  148. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/gateway/checkpoint_manager.py +0 -0
  149. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/gateway/deduplicator.py +0 -0
  150. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/gateway/durable_gateway.py +0 -0
  151. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/gateway/durable_request.py +0 -0
  152. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/gateway/event_store.py +0 -0
  153. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/gateway/storage_backends.py +0 -0
  154. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/mcp/__init__.py +0 -0
  155. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/mcp/client_integration.py +0 -0
  156. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/middleware/mcp/enhanced_server.py +0 -0
  157. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/__init__.py +0 -0
  158. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/cli.py +0 -0
  159. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/compatibility_checker.py +0 -0
  160. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/configuration_validator.py +0 -0
  161. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/documentation_generator.py +0 -0
  162. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/examples/__init__.py +0 -0
  163. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/examples/complete_migration_example.py +0 -0
  164. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/migration_assistant.py +0 -0
  165. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/performance_comparator.py +0 -0
  166. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/regression_detector.py +0 -0
  167. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/tests/__init__.py +0 -0
  168. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/tests/test_compatibility_checker.py +0 -0
  169. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/tests/test_integration.py +0 -0
  170. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/tests/test_migration_assistant.py +0 -0
  171. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/migration/tests/test_performance_comparator.py +0 -0
  172. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/monitoring/__init__.py +0 -0
  173. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/monitoring/alerts.py +0 -0
  174. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/monitoring/asyncsql_metrics.py +0 -0
  175. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/monitoring/metrics.py +0 -0
  176. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/__init___original.py +0 -0
  177. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/__init__.py +0 -0
  178. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/audit_log.py +0 -0
  179. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/permission_check.py +0 -0
  180. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/role_management.py +0 -0
  181. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/schema.sql +0 -0
  182. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/schema_manager.py +0 -0
  183. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/security_event.py +0 -0
  184. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/tenant_isolation.py +0 -0
  185. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/transaction_utils.py +0 -0
  186. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/admin/user_management.py +0 -0
  187. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/__init__.py +0 -0
  188. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/a2a.py +0 -0
  189. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/agents.py +0 -0
  190. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/embedding_generator.py +0 -0
  191. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/hybrid_search.py +0 -0
  192. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/intelligent_agent_orchestrator.py +0 -0
  193. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/iterative_llm_agent.py +0 -0
  194. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/models.py +0 -0
  195. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/self_organizing.py +0 -0
  196. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/semantic_memory.py +0 -0
  197. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/streaming_analytics.py +0 -0
  198. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ai/vision_utils.py +0 -0
  199. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/alerts/__init__.py +0 -0
  200. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/alerts/base.py +0 -0
  201. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/alerts/discord.py +0 -0
  202. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/__init__.py +0 -0
  203. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/auth.py +0 -0
  204. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/graphql.py +0 -0
  205. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/http.py +0 -0
  206. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/monitoring.py +0 -0
  207. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/rate_limiting.py +0 -0
  208. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/rest.py +0 -0
  209. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/api/security.py +0 -0
  210. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/auth/__init__.py +0 -0
  211. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/auth/directory_integration.py +0 -0
  212. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/auth/enterprise_auth_provider.py +0 -0
  213. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/auth/mfa.py +0 -0
  214. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/auth/risk_assessment.py +0 -0
  215. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/auth/session_management.py +0 -0
  216. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/auth/sso.py +0 -0
  217. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/base.py +0 -0
  218. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/base_async.py +0 -0
  219. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/base_cycle_aware.py +0 -0
  220. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/base_with_acl.py +0 -0
  221. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/cache/__init__.py +0 -0
  222. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/cache/cache.py +0 -0
  223. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/cache/cache_invalidation.py +0 -0
  224. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/cache/redis_pool_manager.py +0 -0
  225. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/code/__init__.py +0 -0
  226. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/code/async_python.py +0 -0
  227. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/compliance/__init__.py +0 -0
  228. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/compliance/data_retention.py +0 -0
  229. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/compliance/gdpr.py +0 -0
  230. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/__init__.py +0 -0
  231. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/async_connection.py +0 -0
  232. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/async_vector.py +0 -0
  233. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/bulk_operations.py +0 -0
  234. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/directory.py +0 -0
  235. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/event_generation.py +0 -0
  236. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/file_discovery.py +0 -0
  237. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/optimistic_locking.py +0 -0
  238. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/query_builder.py +0 -0
  239. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/query_cache.py +0 -0
  240. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/query_pipeline.py +0 -0
  241. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/query_router.py +0 -0
  242. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/readers.py +0 -0
  243. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/redis.py +0 -0
  244. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/retrieval.py +0 -0
  245. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/sharepoint_graph.py +0 -0
  246. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/sources.py +0 -0
  247. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/sql.py +0 -0
  248. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/streaming.py +0 -0
  249. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/vector_db.py +0 -0
  250. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/workflow_connection_pool.py +0 -0
  251. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/data/writers.py +0 -0
  252. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/__init__.py +0 -0
  253. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/base.py +0 -0
  254. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/cloud_node.py +0 -0
  255. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/coordination.py +0 -0
  256. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/docker_node.py +0 -0
  257. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/edge_data.py +0 -0
  258. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/edge_migration_node.py +0 -0
  259. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/edge_monitoring_node.py +0 -0
  260. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/edge_state.py +0 -0
  261. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/edge_warming_node.py +0 -0
  262. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/kubernetes_node.py +0 -0
  263. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/platform_node.py +0 -0
  264. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/resource_analyzer_node.py +0 -0
  265. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/resource_optimizer_node.py +0 -0
  266. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/edge/resource_scaler_node.py +0 -0
  267. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/enterprise/__init__.py +0 -0
  268. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/enterprise/audit_logger.py +0 -0
  269. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/enterprise/batch_processor.py +0 -0
  270. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/enterprise/data_lineage.py +0 -0
  271. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/enterprise/mcp_executor.py +0 -0
  272. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/enterprise/service_discovery.py +0 -0
  273. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/enterprise/tenant_assignment.py +0 -0
  274. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/governance.py +0 -0
  275. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/logic/__init__.py +0 -0
  276. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/logic/async_operations.py +0 -0
  277. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/logic/convergence.py +0 -0
  278. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/logic/intelligent_merge.py +0 -0
  279. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/logic/loop.py +0 -0
  280. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/logic/operations.py +0 -0
  281. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/logic/workflow.py +0 -0
  282. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/mixins/__init__.py +0 -0
  283. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/mixins/event_emitter.py +0 -0
  284. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/mixins/mcp.py +0 -0
  285. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/mixins/security.py +0 -0
  286. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/mixins.py +0 -0
  287. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/__init__.py +0 -0
  288. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/connection_dashboard.py +0 -0
  289. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/deadlock_detector.py +0 -0
  290. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/health_check.py +0 -0
  291. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/log_processor.py +0 -0
  292. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/metrics_collector.py +0 -0
  293. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/performance_anomaly.py +0 -0
  294. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/performance_benchmark.py +0 -0
  295. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/race_condition_detector.py +0 -0
  296. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/transaction_metrics.py +0 -0
  297. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/monitoring/transaction_monitor.py +0 -0
  298. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/ports.py +0 -0
  299. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/__init__.py +0 -0
  300. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/advanced.py +0 -0
  301. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/agentic.py +0 -0
  302. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/conversational.py +0 -0
  303. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/evaluation.py +0 -0
  304. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/federated.py +0 -0
  305. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/graph.py +0 -0
  306. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/multimodal.py +0 -0
  307. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/optimized.py +0 -0
  308. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/privacy.py +0 -0
  309. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/query_processing.py +0 -0
  310. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/realtime.py +0 -0
  311. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/registry.py +0 -0
  312. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/router.py +0 -0
  313. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/similarity.py +0 -0
  314. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/strategies.py +0 -0
  315. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/rag/workflows.py +0 -0
  316. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/__init__.py +0 -0
  317. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/abac_evaluator.py +0 -0
  318. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/audit_log.py +0 -0
  319. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/behavior_analysis.py +0 -0
  320. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/credential_manager.py +0 -0
  321. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/rotating_credentials.py +0 -0
  322. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/security_event.py +0 -0
  323. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/security/threat_detection.py +0 -0
  324. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/system/__init__.py +0 -0
  325. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/system/command_parser.py +0 -0
  326. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/testing/__init__.py +0 -0
  327. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/testing/credential_testing.py +0 -0
  328. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transaction/__init__.py +0 -0
  329. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transaction/distributed_transaction_manager.py +0 -0
  330. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transaction/saga_coordinator.py +0 -0
  331. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transaction/saga_state_storage.py +0 -0
  332. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transaction/saga_step.py +0 -0
  333. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transaction/transaction_context.py +0 -0
  334. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transaction/two_phase_commit.py +0 -0
  335. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transform/__init__.py +0 -0
  336. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transform/chunkers.py +0 -0
  337. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transform/formatters.py +0 -0
  338. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/transform/processors.py +0 -0
  339. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/validation/__init__.py +0 -0
  340. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/validation/test_executor.py +0 -0
  341. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/validation/validation_nodes.py +0 -0
  342. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/nodes/validation.py +0 -0
  343. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/planning/__init__.py +0 -0
  344. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/planning/dynamic_execution_planner.py +0 -0
  345. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/resources/__init__.py +0 -0
  346. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/resources/factory.py +0 -0
  347. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/resources/health.py +0 -0
  348. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/resources/reference.py +0 -0
  349. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/resources/registry.py +0 -0
  350. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/__init__.py +0 -0
  351. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/access_controlled.py +0 -0
  352. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/async_local.py +0 -0
  353. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/compatibility_reporter.py +0 -0
  354. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/docker.py +0 -0
  355. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/hierarchical_switch_executor.py +0 -0
  356. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/monitoring/__init__.py +0 -0
  357. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/monitoring/runtime_monitor.py +0 -0
  358. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/parallel.py +0 -0
  359. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/parallel_cyclic.py +0 -0
  360. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/parameter_injection.py +0 -0
  361. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/parameter_injector.py +0 -0
  362. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/performance_monitor.py +0 -0
  363. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/resource_manager.py +0 -0
  364. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/runner.py +0 -0
  365. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/secret_provider.py +0 -0
  366. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/testing.py +0 -0
  367. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/__init__.py +0 -0
  368. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/connection_context.py +0 -0
  369. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/enhanced_error_formatter.py +0 -0
  370. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/error_categorizer.py +0 -0
  371. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/import_validator.py +0 -0
  372. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/metrics.py +0 -0
  373. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/performance.py +0 -0
  374. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/runtime/validation/suggestion_engine.py +0 -0
  375. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/sdk_exceptions.py +0 -0
  376. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/security.py +0 -0
  377. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/servers/__init__.py +0 -0
  378. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/servers/durable_workflow_server.py +0 -0
  379. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/servers/enterprise_workflow_server.py +0 -0
  380. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/servers/gateway.py +0 -0
  381. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/servers/workflow_server.py +0 -0
  382. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/testing/__init__.py +0 -0
  383. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/testing/async_test_case.py +0 -0
  384. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/testing/async_utils.py +0 -0
  385. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/testing/fixtures.py +0 -0
  386. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/testing/mock_registry.py +0 -0
  387. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/__init__.py +0 -0
  388. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/manager.py +0 -0
  389. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/metrics_collector.py +0 -0
  390. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/models.py +0 -0
  391. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/storage/__init__.py +0 -0
  392. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/storage/base.py +0 -0
  393. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/storage/database.py +0 -0
  394. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/tracking/storage/filesystem.py +0 -0
  395. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/__init__.py +0 -0
  396. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/circular_dependency_detector.py +0 -0
  397. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/data_paths.py +0 -0
  398. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/data_validation.py +0 -0
  399. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/export.py +0 -0
  400. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/migrations/__init__.py +0 -0
  401. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/migrations/generator.py +0 -0
  402. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/migrations/models.py +0 -0
  403. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/migrations/runner.py +0 -0
  404. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/resource_manager.py +0 -0
  405. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/secure_logging.py +0 -0
  406. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/utils/templates.py +0 -0
  407. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/visualization/__init__.py +0 -0
  408. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/visualization/api.py +0 -0
  409. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/visualization/dashboard.py +0 -0
  410. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/visualization/performance.py +0 -0
  411. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/visualization/reports.py +0 -0
  412. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/__init__.py +0 -0
  413. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/async_builder.py +0 -0
  414. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/async_patterns.py +0 -0
  415. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/contracts.py +0 -0
  416. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/convergence.py +0 -0
  417. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cycle_analyzer.py +0 -0
  418. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cycle_builder.py +0 -0
  419. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cycle_config.py +0 -0
  420. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cycle_debugger.py +0 -0
  421. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cycle_exceptions.py +0 -0
  422. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cycle_profiler.py +0 -0
  423. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cycle_state.py +0 -0
  424. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/cyclic_runner.py +0 -0
  425. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/edge_infrastructure.py +0 -0
  426. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/graph.py +0 -0
  427. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/input_handling.py +0 -0
  428. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/mermaid_visualizer.py +0 -0
  429. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/migration.py +0 -0
  430. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/mock_registry.py +0 -0
  431. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/resilience.py +0 -0
  432. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/runner.py +0 -0
  433. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/safety.py +0 -0
  434. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/state.py +0 -0
  435. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/type_inference.py +0 -0
  436. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/validation.py +0 -0
  437. {kailash-0.9.18 → kailash-0.9.20}/src/kailash/workflow/visualization.py +0 -0
  438. {kailash-0.9.18 → kailash-0.9.20}/src/kailash.egg-info/dependency_links.txt +0 -0
  439. {kailash-0.9.18 → kailash-0.9.20}/src/kailash.egg-info/entry_points.txt +0 -0
  440. {kailash-0.9.18 → kailash-0.9.20}/src/kailash.egg-info/not-zip-safe +0 -0
  441. {kailash-0.9.18 → kailash-0.9.20}/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.9.18
3
+ Version: 0.9.20
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
@@ -53,7 +53,6 @@ Requires-Dist: pre-commit>=4.2.0
53
53
  Requires-Dist: twine>=6.1.0
54
54
  Requires-Dist: ollama>=0.5.1
55
55
  Requires-Dist: sqlalchemy>=2.0.0
56
- Requires-Dist: psycopg2-binary>=2.9.0
57
56
  Requires-Dist: pymysql>=1.1.0
58
57
  Requires-Dist: aiosqlite>=0.19.0
59
58
  Requires-Dist: websockets>=12.0
@@ -70,7 +69,7 @@ Requires-Dist: qrcode>=8.2
70
69
  Requires-Dist: aiofiles>=24.1.0
71
70
  Requires-Dist: bcrypt>=4.3.0
72
71
  Requires-Dist: plotly>=6.2.0
73
- Requires-Dist: redis[asyncio]>=6.2.0
72
+ Requires-Dist: redis>=6.2.0
74
73
  Requires-Dist: faker>=37.4.0
75
74
  Requires-Dist: structlog>=25.4.0
76
75
  Requires-Dist: authlib>=1.6.0
@@ -86,6 +85,8 @@ Requires-Dist: seaborn>=0.13.2
86
85
  Requires-Dist: sqlparse>=0.5.3
87
86
  Requires-Dist: jsonschema>=4.24.0
88
87
  Requires-Dist: openai>=1.97.1
88
+ Requires-Dist: pymongo>=4.15.2
89
+ Requires-Dist: psycopg>=3.2.10
89
90
  Provides-Extra: dev
90
91
  Requires-Dist: pytest>=7.0; extra == "dev"
91
92
  Requires-Dist: pytest-cov>=3.0; extra == "dev"
@@ -121,28 +122,28 @@ Dynamic: requires-python
121
122
 
122
123
  ---
123
124
 
124
- ## 🔥 Latest Release: v0.9.10 (August 1, 2025)
125
+ ## 🔥 Latest Release: v0.9.20 (October 6, 2025)
125
126
 
126
- **License Update & IterativeLLMAgentNode API Simplification**
127
+ **Provider Registry Fix & Multi-Modal Support**
127
128
 
128
- ### 📄 License Changed to Apache 2.0 with Additional Terms
129
- - **Changed**: From MIT to Apache License 2.0 with Additional Terms
130
- - **Protection**: Prevents standalone commercial distribution of the SDK
131
- - **Freedom**: Allows commercial use of derivatives and integration into larger systems
132
- - **Patent Grant**: Includes Apache 2.0 patent protection clauses
129
+ ### 🐛 Critical Bug Fixes
130
+ - **Mock Provider Bypass**: Removed hardcoded `if provider == "mock"` logic from LLMAgentNode
131
+ - **Tool Execution Flow**: Unified provider response generation for all providers
132
+ - **Provider Registry**: All providers now use consistent registry path
133
133
 
134
- ### 🤖 IterativeLLMAgentNode Improvements (v0.9.9)
135
- - **Removed**: Mock mode entirely - real MCP execution always enabled
136
- - **Simplified**: API by removing confusing `use_real_mcp` parameter
137
- - **Enhanced**: Graceful fallback when MCP tools unavailable
138
- - **Updated**: All documentation and examples with simplified API
134
+ ### Enhancements
135
+ - **Custom Mock Providers**: Enables signature-aware mock providers (e.g., KaizenMockProvider)
136
+ - **Multi-Modal Foundation**: Foundation for vision/audio processing in Kaizen AI framework
137
+ - **Tool Call Generation**: MockProvider generates mock tool_calls for action-oriented messages
138
+ - **Enhanced Testing**: 510+ tests passing with custom mock providers
139
139
 
140
140
  ### 📦 Package Updates
141
- - **kailash**: v0.9.10 - License update
142
- - **kailash-nexus**: v1.0.6 - License update
143
- - **kailash-dataflow**: v0.3.7 - License update
141
+ - **kailash**: v0.9.20 - Provider registry fix & multi-modal support
142
+ - **kailash-kaizen**: v0.1.1 - AI agent framework (NEW!)
143
+ - **kailash-nexus**: v1.0.6 - Multi-channel platform
144
+ - **kailash-dataflow**: v0.5.0 - Database framework
144
145
 
145
- [Full Changelog](sdk-users/6-reference/changelogs/releases/v0.9.10-2025-08-01.md) | [Core SDK 0.9.10](https://pypi.org/project/kailash/0.9.10/) | [Nexus 1.0.6](https://pypi.org/project/kailash-nexus/1.0.6/) | [DataFlow 0.3.7](https://pypi.org/project/kailash-dataflow/0.3.7/)
146
+ [Full Changelog](sdk-users/6-reference/changelogs/releases/v0.9.20-provider-registry-fix.md) | [Core SDK 0.9.20](https://pypi.org/project/kailash/0.9.20/) | [Kaizen 0.1.1](https://pypi.org/project/kailash-kaizen/0.1.1/) | [Nexus 1.0.6](https://pypi.org/project/kailash-nexus/1.0.6/) | [DataFlow 0.5.0](https://pypi.org/project/kailash-dataflow/0.5.0/)
146
147
 
147
148
  ## 🎯 What Makes Kailash Different
148
149
 
@@ -22,28 +22,28 @@
22
22
 
23
23
  ---
24
24
 
25
- ## 🔥 Latest Release: v0.9.10 (August 1, 2025)
25
+ ## 🔥 Latest Release: v0.9.20 (October 6, 2025)
26
26
 
27
- **License Update & IterativeLLMAgentNode API Simplification**
27
+ **Provider Registry Fix & Multi-Modal Support**
28
28
 
29
- ### 📄 License Changed to Apache 2.0 with Additional Terms
30
- - **Changed**: From MIT to Apache License 2.0 with Additional Terms
31
- - **Protection**: Prevents standalone commercial distribution of the SDK
32
- - **Freedom**: Allows commercial use of derivatives and integration into larger systems
33
- - **Patent Grant**: Includes Apache 2.0 patent protection clauses
29
+ ### 🐛 Critical Bug Fixes
30
+ - **Mock Provider Bypass**: Removed hardcoded `if provider == "mock"` logic from LLMAgentNode
31
+ - **Tool Execution Flow**: Unified provider response generation for all providers
32
+ - **Provider Registry**: All providers now use consistent registry path
34
33
 
35
- ### 🤖 IterativeLLMAgentNode Improvements (v0.9.9)
36
- - **Removed**: Mock mode entirely - real MCP execution always enabled
37
- - **Simplified**: API by removing confusing `use_real_mcp` parameter
38
- - **Enhanced**: Graceful fallback when MCP tools unavailable
39
- - **Updated**: All documentation and examples with simplified API
34
+ ### Enhancements
35
+ - **Custom Mock Providers**: Enables signature-aware mock providers (e.g., KaizenMockProvider)
36
+ - **Multi-Modal Foundation**: Foundation for vision/audio processing in Kaizen AI framework
37
+ - **Tool Call Generation**: MockProvider generates mock tool_calls for action-oriented messages
38
+ - **Enhanced Testing**: 510+ tests passing with custom mock providers
40
39
 
41
40
  ### 📦 Package Updates
42
- - **kailash**: v0.9.10 - License update
43
- - **kailash-nexus**: v1.0.6 - License update
44
- - **kailash-dataflow**: v0.3.7 - License update
41
+ - **kailash**: v0.9.20 - Provider registry fix & multi-modal support
42
+ - **kailash-kaizen**: v0.1.1 - AI agent framework (NEW!)
43
+ - **kailash-nexus**: v1.0.6 - Multi-channel platform
44
+ - **kailash-dataflow**: v0.5.0 - Database framework
45
45
 
46
- [Full Changelog](sdk-users/6-reference/changelogs/releases/v0.9.10-2025-08-01.md) | [Core SDK 0.9.10](https://pypi.org/project/kailash/0.9.10/) | [Nexus 1.0.6](https://pypi.org/project/kailash-nexus/1.0.6/) | [DataFlow 0.3.7](https://pypi.org/project/kailash-dataflow/0.3.7/)
46
+ [Full Changelog](sdk-users/6-reference/changelogs/releases/v0.9.20-provider-registry-fix.md) | [Core SDK 0.9.20](https://pypi.org/project/kailash/0.9.20/) | [Kaizen 0.1.1](https://pypi.org/project/kailash-kaizen/0.1.1/) | [Nexus 1.0.6](https://pypi.org/project/kailash-nexus/1.0.6/) | [DataFlow 0.5.0](https://pypi.org/project/kailash-dataflow/0.5.0/)
47
47
 
48
48
  ## 🎯 What Makes Kailash Different
49
49
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "kailash"
7
- version = "0.9.18"
7
+ version = "0.9.20"
8
8
  description = "Python SDK for the Kailash container-node architecture"
9
9
  authors = [
10
10
  {name = "Integrum", email = "info@integrum.com"}
@@ -55,7 +55,6 @@ dependencies = [
55
55
  "twine>=6.1.0",
56
56
  "ollama>=0.5.1",
57
57
  "sqlalchemy>=2.0.0",
58
- "psycopg2-binary>=2.9.0",
59
58
  "pymysql>=1.1.0",
60
59
  "aiosqlite>=0.19.0",
61
60
  "websockets>=12.0",
@@ -72,7 +71,7 @@ dependencies = [
72
71
  "aiofiles>=24.1.0",
73
72
  "bcrypt>=4.3.0",
74
73
  "plotly>=6.2.0",
75
- "redis[asyncio]>=6.2.0",
74
+ "redis>=6.2.0",
76
75
  "faker>=37.4.0",
77
76
  "structlog>=25.4.0",
78
77
  "authlib>=1.6.0",
@@ -88,6 +87,8 @@ dependencies = [
88
87
  "sqlparse>=0.5.3",
89
88
  "jsonschema>=4.24.0",
90
89
  "openai>=1.97.1",
90
+ "pymongo>=4.15.2",
91
+ "psycopg>=3.2.10",
91
92
  ]
92
93
 
93
94
  [project.optional-dependencies]
@@ -13,7 +13,7 @@ with open(os.path.join(this_directory, "README.md"), encoding="utf-8") as f:
13
13
  # Package configuration
14
14
  setup(
15
15
  name="kailash",
16
- version="0.9.18",
16
+ version="0.9.19",
17
17
  author="Integrum",
18
18
  author_email="info@integrum.com",
19
19
  description="Python SDK for the Kailash container-node architecture",
@@ -52,7 +52,7 @@ except ImportError:
52
52
  # For backward compatibility
53
53
  WorkflowGraph = Workflow
54
54
 
55
- __version__ = "0.9.18"
55
+ __version__ = "0.9.20"
56
56
 
57
57
  __all__ = [
58
58
  # Core workflow components
@@ -9,7 +9,7 @@ import uuid
9
9
  import weakref
10
10
  from abc import ABC, abstractmethod
11
11
  from dataclasses import dataclass, field
12
- from datetime import datetime, timedelta
12
+ from datetime import UTC, datetime, timedelta
13
13
  from typing import Any, Callable, Dict, List, Optional, Protocol, Set, Union
14
14
 
15
15
  # Optional Redis support
@@ -103,7 +103,7 @@ class DataEnrichmentTransformer(ResourceTransformer):
103
103
 
104
104
  # Add transformation metadata
105
105
  enriched_data["__transformation"] = {
106
- "timestamp": datetime.utcnow().isoformat(),
106
+ "timestamp": datetime.now(UTC).isoformat(),
107
107
  "enriched_fields": list(self.enrichment_functions.keys()),
108
108
  "transformer": "DataEnrichmentTransformer",
109
109
  }
@@ -133,7 +133,7 @@ class FormatConverterTransformer(ResourceTransformer):
133
133
 
134
134
  # Add transformation metadata
135
135
  converted_data["__transformation"] = {
136
- "timestamp": datetime.utcnow().isoformat(),
136
+ "timestamp": datetime.now(UTC).isoformat(),
137
137
  "conversions_applied": list(self.conversions.keys()),
138
138
  "transformer": "FormatConverterTransformer",
139
139
  }
@@ -213,7 +213,7 @@ class AggregationTransformer(ResourceTransformer):
213
213
 
214
214
  # Add transformation metadata
215
215
  aggregated_data["__transformation"] = {
216
- "timestamp": datetime.utcnow().isoformat(),
216
+ "timestamp": datetime.now(UTC).isoformat(),
217
217
  "sources": list(self.data_sources.keys()),
218
218
  "transformer": "AggregationTransformer",
219
219
  }
@@ -285,7 +285,7 @@ class TransformationPipeline:
285
285
  "uri_pattern": subscription.uri_pattern,
286
286
  "fields": subscription.fields,
287
287
  "fragments": subscription.fragments,
288
- "timestamp": datetime.utcnow().isoformat(),
288
+ "timestamp": datetime.now(UTC).isoformat(),
289
289
  }
290
290
 
291
291
  transformed_data = resource_data
@@ -332,7 +332,7 @@ class TransformationPipeline:
332
332
  transformation_error = {
333
333
  "transformer": transformer.__class__.__name__,
334
334
  "error": str(e),
335
- "timestamp": datetime.utcnow().isoformat(),
335
+ "timestamp": datetime.now(UTC).isoformat(),
336
336
  }
337
337
  pipeline_metadata["errors"].append(transformation_error)
338
338
 
@@ -477,7 +477,7 @@ class CursorManager:
477
477
  def generate_cursor(self) -> str:
478
478
  """Generate a unique cursor."""
479
479
  cursor_id = str(uuid.uuid4())
480
- timestamp = datetime.utcnow()
480
+ timestamp = datetime.now(UTC)
481
481
 
482
482
  cursor_data = f"{cursor_id}:{timestamp.isoformat()}"
483
483
  cursor = hashlib.sha256(cursor_data.encode()).hexdigest()[:16]
@@ -501,7 +501,7 @@ class CursorManager:
501
501
  return False
502
502
 
503
503
  cursor_data = self._cursors[cursor]
504
- age = datetime.utcnow() - cursor_data["created_at"]
504
+ age = datetime.now(UTC) - cursor_data["created_at"]
505
505
 
506
506
  if age > timedelta(seconds=self.ttl_seconds):
507
507
  # Clean up expired cursor
@@ -520,7 +520,7 @@ class CursorManager:
520
520
  async def cleanup_expired(self):
521
521
  """Remove expired cursors."""
522
522
  async with self._lock:
523
- now = datetime.utcnow()
523
+ now = datetime.now(UTC)
524
524
  expired = []
525
525
 
526
526
  for cursor, data in self._cursors.items():
@@ -551,7 +551,7 @@ class ResourceMonitor:
551
551
  self._resource_states[uri] = {
552
552
  "hash": self._compute_hash(content),
553
553
  "content": content,
554
- "last_checked": datetime.utcnow(),
554
+ "last_checked": datetime.now(UTC),
555
555
  }
556
556
 
557
557
  def is_monitored(self, uri: str) -> bool:
@@ -570,12 +570,12 @@ class ResourceMonitor:
570
570
  self._resource_states[uri] = {
571
571
  "hash": new_hash,
572
572
  "content": content,
573
- "last_checked": datetime.utcnow(),
573
+ "last_checked": datetime.now(UTC),
574
574
  }
575
575
  return ResourceChange(
576
576
  type=ResourceChangeType.CREATED,
577
577
  uri=uri,
578
- timestamp=datetime.utcnow(),
578
+ timestamp=datetime.now(UTC),
579
579
  )
580
580
 
581
581
  old_hash = self._resource_states[uri]["hash"]
@@ -585,16 +585,16 @@ class ResourceMonitor:
585
585
  self._resource_states[uri] = {
586
586
  "hash": new_hash,
587
587
  "content": content,
588
- "last_checked": datetime.utcnow(),
588
+ "last_checked": datetime.now(UTC),
589
589
  }
590
590
  return ResourceChange(
591
591
  type=ResourceChangeType.UPDATED,
592
592
  uri=uri,
593
- timestamp=datetime.utcnow(),
593
+ timestamp=datetime.now(UTC),
594
594
  )
595
595
 
596
596
  # No change
597
- self._resource_states[uri]["last_checked"] = datetime.utcnow()
597
+ self._resource_states[uri]["last_checked"] = datetime.now(UTC)
598
598
  return None
599
599
 
600
600
  async def check_for_deletion(self, uri: str) -> Optional[ResourceChange]:
@@ -605,7 +605,7 @@ class ResourceMonitor:
605
605
  return ResourceChange(
606
606
  type=ResourceChangeType.DELETED,
607
607
  uri=uri,
608
- timestamp=datetime.utcnow(),
608
+ timestamp=datetime.now(UTC),
609
609
  )
610
610
  return None
611
611
 
@@ -1075,9 +1075,9 @@ class ResourceSubscriptionManager:
1075
1075
  This method should be overridden or configured to fetch actual resource data.
1076
1076
  For now, it returns basic resource information from the monitored state.
1077
1077
  """
1078
- async with self._resource_monitor._lock:
1079
- if uri in self._resource_monitor._resource_states:
1080
- state = self._resource_monitor._resource_states[uri]
1078
+ async with self.resource_monitor._lock:
1079
+ if uri in self.resource_monitor._resource_states:
1080
+ state = self.resource_monitor._resource_states[uri]
1081
1081
  return {
1082
1082
  "uri": uri,
1083
1083
  "content": state.get("content", {}),
@@ -1279,8 +1279,8 @@ class DistributedSubscriptionManager(ResourceSubscriptionManager):
1279
1279
  instance_key = f"mcp:instances:{self.server_instance_id}"
1280
1280
  instance_data = {
1281
1281
  "id": self.server_instance_id,
1282
- "registered_at": datetime.utcnow().isoformat(),
1283
- "last_heartbeat": datetime.utcnow().isoformat(),
1282
+ "registered_at": datetime.now(UTC).isoformat(),
1283
+ "last_heartbeat": datetime.now(UTC).isoformat(),
1284
1284
  "subscriptions": 0,
1285
1285
  }
1286
1286
 
@@ -1308,7 +1308,7 @@ class DistributedSubscriptionManager(ResourceSubscriptionManager):
1308
1308
 
1309
1309
  instance_key = f"mcp:instances:{self.server_instance_id}"
1310
1310
  await self.redis_client.hset(
1311
- instance_key, "last_heartbeat", datetime.utcnow().isoformat()
1311
+ instance_key, "last_heartbeat", datetime.now(UTC).isoformat()
1312
1312
  )
1313
1313
  await self.redis_client.expire(instance_key, self.instance_timeout)
1314
1314
 
@@ -1348,7 +1348,7 @@ class DistributedSubscriptionManager(ResourceSubscriptionManager):
1348
1348
  if last_heartbeat:
1349
1349
  try:
1350
1350
  heartbeat_time = datetime.fromisoformat(last_heartbeat)
1351
- age = (datetime.utcnow() - heartbeat_time).total_seconds()
1351
+ age = (datetime.now(UTC) - heartbeat_time).total_seconds()
1352
1352
 
1353
1353
  if age < self.instance_timeout:
1354
1354
  current_instances.add(instance_id)
@@ -37,6 +37,7 @@ _NODE_CATEGORIES = [
37
37
  "testing",
38
38
  "transaction",
39
39
  "transform",
40
+ "validation",
40
41
  ]
41
42
 
42
43
  # Initialize lazy module cache