kailash 0.8.5__tar.gz → 0.8.7__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 (412) hide show
  1. {kailash-0.8.5/src/kailash.egg-info → kailash-0.8.7}/PKG-INFO +20 -17
  2. {kailash-0.8.5 → kailash-0.8.7}/README.md +18 -16
  3. {kailash-0.8.5 → kailash-0.8.7}/pyproject.toml +4 -3
  4. {kailash-0.8.5 → kailash-0.8.7}/setup.py +4 -4
  5. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/__init__.py +5 -5
  6. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/channels/__init__.py +2 -1
  7. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/channels/mcp_channel.py +23 -4
  8. kailash-0.8.7/src/kailash/cli/validate_imports.py +202 -0
  9. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/resilience/bulkhead.py +15 -5
  10. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/resilience/circuit_breaker.py +4 -1
  11. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/resilience/health_monitor.py +312 -84
  12. kailash-0.8.7/src/kailash/edge/migration/edge_migration_service.py +384 -0
  13. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/protocol.py +26 -0
  14. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/server.py +1081 -8
  15. kailash-0.8.7/src/kailash/mcp_server/subscriptions.py +1560 -0
  16. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/transports.py +305 -0
  17. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/gateway/event_store.py +1 -0
  18. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/base.py +77 -1
  19. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/code/python.py +44 -3
  20. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/async_sql.py +42 -20
  21. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/edge_migration_node.py +16 -12
  22. kailash-0.8.7/src/kailash/nodes/governance.py +410 -0
  23. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/registry.py +1 -1
  24. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transaction/distributed_transaction_manager.py +48 -1
  25. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transaction/saga_state_storage.py +2 -1
  26. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/validation.py +8 -8
  27. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/local.py +30 -0
  28. kailash-0.8.7/src/kailash/runtime/validation/__init__.py +12 -0
  29. kailash-0.8.7/src/kailash/runtime/validation/import_validator.py +446 -0
  30. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/validation/suggestion_engine.py +5 -5
  31. kailash-0.8.7/src/kailash/utils/data_paths.py +74 -0
  32. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/builder.py +183 -4
  33. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/mermaid_visualizer.py +3 -1
  34. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/templates.py +6 -6
  35. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/validation.py +134 -3
  36. {kailash-0.8.5 → kailash-0.8.7/src/kailash.egg-info}/PKG-INFO +20 -17
  37. {kailash-0.8.5 → kailash-0.8.7}/src/kailash.egg-info/SOURCES.txt +6 -0
  38. {kailash-0.8.5 → kailash-0.8.7}/src/kailash.egg-info/requires.txt +1 -0
  39. kailash-0.8.5/src/kailash/runtime/validation/__init__.py +0 -20
  40. {kailash-0.8.5 → kailash-0.8.7}/LICENSE +0 -0
  41. {kailash-0.8.5 → kailash-0.8.7}/MANIFEST.in +0 -0
  42. {kailash-0.8.5 → kailash-0.8.7}/setup.cfg +0 -0
  43. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/__main__.py +0 -0
  44. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/access_control/__init__.py +0 -0
  45. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/access_control/managers.py +0 -0
  46. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/access_control/rule_evaluators.py +0 -0
  47. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/access_control.py +0 -0
  48. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/access_control_abac.py +0 -0
  49. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/adapters/__init__.py +0 -0
  50. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/adapters/mcp_platform_adapter.py +0 -0
  51. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/api/auth.py +0 -0
  52. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/api/custom_nodes.py +0 -0
  53. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/api/custom_nodes_secure.py +0 -0
  54. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/api/gateway.py +0 -0
  55. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/api/mcp_integration.py +0 -0
  56. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/api/studio.py +0 -0
  57. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/api/workflow_api.py +0 -0
  58. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/channels/api_channel.py +0 -0
  59. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/channels/base.py +0 -0
  60. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/channels/cli_channel.py +0 -0
  61. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/channels/event_router.py +0 -0
  62. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/channels/session.py +0 -0
  63. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/cli/__init__.py +0 -0
  64. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/cli/commands.py +0 -0
  65. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/cli/validation_audit.py +0 -0
  66. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/client/__init__.py +0 -0
  67. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/client/enhanced_client.py +0 -0
  68. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/config/__init__.py +0 -0
  69. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/config/database_config.py +0 -0
  70. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/actors/__init__.py +0 -0
  71. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/actors/adaptive_pool_controller.py +0 -0
  72. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/actors/connection_actor.py +0 -0
  73. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/actors/supervisor.py +0 -0
  74. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/ml/__init__.py +0 -0
  75. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/ml/query_patterns.py +0 -0
  76. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/monitoring/__init__.py +0 -0
  77. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/monitoring/connection_metrics.py +0 -0
  78. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/optimization/__init__.py +0 -0
  79. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/core/resilience/__init__.py +0 -0
  80. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/database/__init__.py +0 -0
  81. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/database/execution_pipeline.py +0 -0
  82. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/__init__.py +0 -0
  83. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/compliance.py +0 -0
  84. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/consistency.py +0 -0
  85. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/coordination/__init__.py +0 -0
  86. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/coordination/global_ordering.py +0 -0
  87. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/coordination/leader_election.py +0 -0
  88. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/coordination/partition_detector.py +0 -0
  89. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/coordination/raft.py +0 -0
  90. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/discovery.py +0 -0
  91. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/location.py +0 -0
  92. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/migration/__init__.py +0 -0
  93. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/migration/edge_migrator.py +0 -0
  94. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/monitoring/__init__.py +0 -0
  95. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/monitoring/edge_monitor.py +0 -0
  96. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/prediction/__init__.py +0 -0
  97. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/prediction/predictive_warmer.py +0 -0
  98. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/__init__.py +0 -0
  99. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/cloud_integration.py +0 -0
  100. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/cost_optimizer.py +0 -0
  101. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/docker_integration.py +0 -0
  102. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/kubernetes_integration.py +0 -0
  103. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/platform_integration.py +0 -0
  104. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/predictive_scaler.py +0 -0
  105. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/resource_analyzer.py +0 -0
  106. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/edge/resource/resource_pools.py +0 -0
  107. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/gateway/__init__.py +0 -0
  108. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/gateway/api.py +0 -0
  109. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/gateway/enhanced_gateway.py +0 -0
  110. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/gateway/resource_resolver.py +0 -0
  111. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/gateway/security.py +0 -0
  112. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/integrations/dataflow_edge.py +0 -0
  113. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/manifest.py +0 -0
  114. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/__init__.py +0 -0
  115. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/advanced_features.py +0 -0
  116. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/ai_registry_server.py +0 -0
  117. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/auth.py +0 -0
  118. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/client.py +0 -0
  119. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/client_new.py +0 -0
  120. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/discovery.py +0 -0
  121. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/errors.py +0 -0
  122. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/oauth.py +0 -0
  123. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/registry_integration.py +0 -0
  124. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/servers/ai_registry.py +0 -0
  125. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/utils/__init__.py +0 -0
  126. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/utils/cache.py +0 -0
  127. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/utils/config.py +0 -0
  128. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/utils/formatters.py +0 -0
  129. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/mcp_server/utils/metrics.py +0 -0
  130. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/__init__.py +0 -0
  131. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/auth/__init__.py +0 -0
  132. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/auth/access_control.py +0 -0
  133. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/auth/auth_manager.py +0 -0
  134. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/auth/exceptions.py +0 -0
  135. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/auth/jwt_auth.py +0 -0
  136. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/auth/models.py +0 -0
  137. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/auth/utils.py +0 -0
  138. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/communication/__init__.py +0 -0
  139. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/communication/ai_chat.py +0 -0
  140. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/communication/api_gateway.py +0 -0
  141. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/communication/events.py +0 -0
  142. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/communication/realtime.py +0 -0
  143. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/core/__init__.py +0 -0
  144. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/core/agent_ui.py +0 -0
  145. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/core/schema.py +0 -0
  146. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/core/workflows.py +0 -0
  147. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/__init__.py +0 -0
  148. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/base.py +0 -0
  149. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/base_models.py +0 -0
  150. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/enums.py +0 -0
  151. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/migrations.py +0 -0
  152. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/models.py +0 -0
  153. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/repositories.py +0 -0
  154. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/database/session_manager.py +0 -0
  155. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/gateway/__init__.py +0 -0
  156. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/gateway/checkpoint_manager.py +0 -0
  157. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/gateway/deduplicator.py +0 -0
  158. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/gateway/durable_gateway.py +0 -0
  159. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/gateway/durable_request.py +0 -0
  160. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/gateway/storage_backends.py +0 -0
  161. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/mcp/__init__.py +0 -0
  162. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/mcp/client_integration.py +0 -0
  163. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/middleware/mcp/enhanced_server.py +0 -0
  164. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/monitoring/__init__.py +0 -0
  165. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/monitoring/alerts.py +0 -0
  166. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/monitoring/metrics.py +0 -0
  167. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/__init__.py +0 -0
  168. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/__init__.py +0 -0
  169. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/audit_log.py +0 -0
  170. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/permission_check.py +0 -0
  171. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/role_management.py +0 -0
  172. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/schema.sql +0 -0
  173. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/schema_manager.py +0 -0
  174. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/security_event.py +0 -0
  175. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/tenant_isolation.py +0 -0
  176. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/transaction_utils.py +0 -0
  177. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/admin/user_management.py +0 -0
  178. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/__init__.py +0 -0
  179. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/a2a.py +0 -0
  180. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/a2a_backup.py +0 -0
  181. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/agents.py +0 -0
  182. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/ai_providers.py +0 -0
  183. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/embedding_generator.py +0 -0
  184. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/hybrid_search.py +0 -0
  185. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/intelligent_agent_orchestrator.py +0 -0
  186. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/iterative_llm_agent.py +0 -0
  187. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/llm_agent.py +0 -0
  188. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/models.py +0 -0
  189. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/self_organizing.py +0 -0
  190. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/semantic_memory.py +0 -0
  191. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/streaming_analytics.py +0 -0
  192. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ai/vision_utils.py +0 -0
  193. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/alerts/__init__.py +0 -0
  194. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/alerts/base.py +0 -0
  195. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/alerts/discord.py +0 -0
  196. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/__init__.py +0 -0
  197. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/auth.py +0 -0
  198. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/graphql.py +0 -0
  199. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/http.py +0 -0
  200. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/monitoring.py +0 -0
  201. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/rate_limiting.py +0 -0
  202. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/rest.py +0 -0
  203. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/api/security.py +0 -0
  204. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/auth/__init__.py +0 -0
  205. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/auth/directory_integration.py +0 -0
  206. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/auth/enterprise_auth_provider.py +0 -0
  207. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/auth/mfa.py +0 -0
  208. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/auth/risk_assessment.py +0 -0
  209. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/auth/session_management.py +0 -0
  210. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/auth/sso.py +0 -0
  211. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/base_async.py +0 -0
  212. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/base_cycle_aware.py +0 -0
  213. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/base_with_acl.py +0 -0
  214. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/cache/__init__.py +0 -0
  215. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/cache/cache.py +0 -0
  216. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/cache/cache_invalidation.py +0 -0
  217. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/cache/redis_pool_manager.py +0 -0
  218. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/code/__init__.py +0 -0
  219. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/code/async_python.py +0 -0
  220. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/compliance/__init__.py +0 -0
  221. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/compliance/data_retention.py +0 -0
  222. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/compliance/gdpr.py +0 -0
  223. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/__init__.py +0 -0
  224. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/async_connection.py +0 -0
  225. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/async_vector.py +0 -0
  226. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/bulk_operations.py +0 -0
  227. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/directory.py +0 -0
  228. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/event_generation.py +0 -0
  229. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/file_discovery.py +0 -0
  230. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/optimistic_locking.py +0 -0
  231. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/query_builder.py +0 -0
  232. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/query_cache.py +0 -0
  233. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/query_pipeline.py +0 -0
  234. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/query_router.py +0 -0
  235. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/readers.py +0 -0
  236. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/redis.py +0 -0
  237. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/retrieval.py +0 -0
  238. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/sharepoint_graph.py +0 -0
  239. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/sources.py +0 -0
  240. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/sql.py +0 -0
  241. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/streaming.py +0 -0
  242. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/vector_db.py +0 -0
  243. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/workflow_connection_pool.py +0 -0
  244. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/data/writers.py +0 -0
  245. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/__init__.py +0 -0
  246. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/base.py +0 -0
  247. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/cloud_node.py +0 -0
  248. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/coordination.py +0 -0
  249. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/docker_node.py +0 -0
  250. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/edge_data.py +0 -0
  251. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/edge_monitoring_node.py +0 -0
  252. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/edge_state.py +0 -0
  253. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/edge_warming_node.py +0 -0
  254. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/kubernetes_node.py +0 -0
  255. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/platform_node.py +0 -0
  256. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/resource_analyzer_node.py +0 -0
  257. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/resource_optimizer_node.py +0 -0
  258. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/edge/resource_scaler_node.py +0 -0
  259. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/enterprise/__init__.py +0 -0
  260. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/enterprise/audit_logger.py +0 -0
  261. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/enterprise/batch_processor.py +0 -0
  262. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/enterprise/data_lineage.py +0 -0
  263. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/enterprise/mcp_executor.py +0 -0
  264. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/enterprise/service_discovery.py +0 -0
  265. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/enterprise/tenant_assignment.py +0 -0
  266. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/logic/__init__.py +0 -0
  267. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/logic/async_operations.py +0 -0
  268. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/logic/convergence.py +0 -0
  269. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/logic/loop.py +0 -0
  270. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/logic/operations.py +0 -0
  271. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/logic/workflow.py +0 -0
  272. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/mixins/__init__.py +0 -0
  273. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/mixins/event_emitter.py +0 -0
  274. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/mixins/mcp.py +0 -0
  275. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/mixins/security.py +0 -0
  276. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/mixins.py +0 -0
  277. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/__init__.py +0 -0
  278. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/connection_dashboard.py +0 -0
  279. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/deadlock_detector.py +0 -0
  280. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/health_check.py +0 -0
  281. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/log_processor.py +0 -0
  282. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/metrics_collector.py +0 -0
  283. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/performance_anomaly.py +0 -0
  284. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/performance_benchmark.py +0 -0
  285. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/race_condition_detector.py +0 -0
  286. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/transaction_metrics.py +0 -0
  287. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/monitoring/transaction_monitor.py +0 -0
  288. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/ports.py +0 -0
  289. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/__init__.py +0 -0
  290. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/advanced.py +0 -0
  291. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/agentic.py +0 -0
  292. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/conversational.py +0 -0
  293. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/evaluation.py +0 -0
  294. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/federated.py +0 -0
  295. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/graph.py +0 -0
  296. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/multimodal.py +0 -0
  297. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/optimized.py +0 -0
  298. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/privacy.py +0 -0
  299. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/query_processing.py +0 -0
  300. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/realtime.py +0 -0
  301. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/router.py +0 -0
  302. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/similarity.py +0 -0
  303. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/strategies.py +0 -0
  304. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/rag/workflows.py +0 -0
  305. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/__init__.py +0 -0
  306. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/abac_evaluator.py +0 -0
  307. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/audit_log.py +0 -0
  308. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/behavior_analysis.py +0 -0
  309. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/credential_manager.py +0 -0
  310. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/rotating_credentials.py +0 -0
  311. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/security_event.py +0 -0
  312. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/security/threat_detection.py +0 -0
  313. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/system/__init__.py +0 -0
  314. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/system/command_parser.py +0 -0
  315. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/testing/__init__.py +0 -0
  316. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/testing/credential_testing.py +0 -0
  317. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transaction/__init__.py +0 -0
  318. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transaction/saga_coordinator.py +0 -0
  319. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transaction/saga_step.py +0 -0
  320. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transaction/transaction_context.py +0 -0
  321. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transaction/two_phase_commit.py +0 -0
  322. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transform/__init__.py +0 -0
  323. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transform/chunkers.py +0 -0
  324. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transform/formatters.py +0 -0
  325. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/transform/processors.py +0 -0
  326. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/validation/__init__.py +0 -0
  327. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/validation/test_executor.py +0 -0
  328. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/nodes/validation/validation_nodes.py +0 -0
  329. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/resources/__init__.py +0 -0
  330. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/resources/factory.py +0 -0
  331. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/resources/health.py +0 -0
  332. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/resources/reference.py +0 -0
  333. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/resources/registry.py +0 -0
  334. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/__init__.py +0 -0
  335. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/access_controlled.py +0 -0
  336. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/async_local.py +0 -0
  337. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/docker.py +0 -0
  338. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/parallel.py +0 -0
  339. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/parallel_cyclic.py +0 -0
  340. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/parameter_injection.py +0 -0
  341. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/parameter_injector.py +0 -0
  342. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/runner.py +0 -0
  343. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/secret_provider.py +0 -0
  344. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/testing.py +0 -0
  345. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/validation/connection_context.py +0 -0
  346. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/validation/enhanced_error_formatter.py +0 -0
  347. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/validation/error_categorizer.py +0 -0
  348. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/validation/metrics.py +0 -0
  349. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/runtime/validation/performance.py +0 -0
  350. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/sdk_exceptions.py +0 -0
  351. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/security.py +0 -0
  352. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/servers/__init__.py +0 -0
  353. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/servers/durable_workflow_server.py +0 -0
  354. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/servers/enterprise_workflow_server.py +0 -0
  355. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/servers/gateway.py +0 -0
  356. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/servers/workflow_server.py +0 -0
  357. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/testing/__init__.py +0 -0
  358. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/testing/async_test_case.py +0 -0
  359. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/testing/async_utils.py +0 -0
  360. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/testing/fixtures.py +0 -0
  361. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/testing/mock_registry.py +0 -0
  362. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/__init__.py +0 -0
  363. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/manager.py +0 -0
  364. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/metrics_collector.py +0 -0
  365. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/models.py +0 -0
  366. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/storage/__init__.py +0 -0
  367. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/storage/base.py +0 -0
  368. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/storage/database.py +0 -0
  369. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/tracking/storage/filesystem.py +0 -0
  370. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/__init__.py +0 -0
  371. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/data_validation.py +0 -0
  372. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/export.py +0 -0
  373. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/migrations/__init__.py +0 -0
  374. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/migrations/generator.py +0 -0
  375. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/migrations/models.py +0 -0
  376. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/migrations/runner.py +0 -0
  377. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/resource_manager.py +0 -0
  378. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/secure_logging.py +0 -0
  379. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/utils/templates.py +0 -0
  380. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/visualization/__init__.py +0 -0
  381. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/visualization/api.py +0 -0
  382. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/visualization/dashboard.py +0 -0
  383. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/visualization/performance.py +0 -0
  384. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/visualization/reports.py +0 -0
  385. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/__init__.py +0 -0
  386. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/async_builder.py +0 -0
  387. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/async_patterns.py +0 -0
  388. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/contracts.py +0 -0
  389. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/convergence.py +0 -0
  390. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cycle_analyzer.py +0 -0
  391. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cycle_builder.py +0 -0
  392. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cycle_config.py +0 -0
  393. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cycle_debugger.py +0 -0
  394. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cycle_exceptions.py +0 -0
  395. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cycle_profiler.py +0 -0
  396. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cycle_state.py +0 -0
  397. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/cyclic_runner.py +0 -0
  398. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/edge_infrastructure.py +0 -0
  399. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/graph.py +0 -0
  400. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/input_handling.py +0 -0
  401. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/migration.py +0 -0
  402. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/mock_registry.py +0 -0
  403. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/resilience.py +0 -0
  404. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/runner.py +0 -0
  405. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/safety.py +0 -0
  406. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/state.py +0 -0
  407. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/type_inference.py +0 -0
  408. {kailash-0.8.5 → kailash-0.8.7}/src/kailash/workflow/visualization.py +0 -0
  409. {kailash-0.8.5 → kailash-0.8.7}/src/kailash.egg-info/dependency_links.txt +0 -0
  410. {kailash-0.8.5 → kailash-0.8.7}/src/kailash.egg-info/entry_points.txt +0 -0
  411. {kailash-0.8.5 → kailash-0.8.7}/src/kailash.egg-info/not-zip-safe +0 -0
  412. {kailash-0.8.5 → kailash-0.8.7}/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.8.5
3
+ Version: 0.8.7
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
@@ -81,6 +81,7 @@ Requires-Dist: opentelemetry-instrumentation-fastapi>=0.55b1
81
81
  Requires-Dist: seaborn>=0.13.2
82
82
  Requires-Dist: sqlparse>=0.5.3
83
83
  Requires-Dist: jsonschema>=4.24.0
84
+ Requires-Dist: openai>=1.97.1
84
85
  Provides-Extra: dev
85
86
  Requires-Dist: pytest>=7.0; extra == "dev"
86
87
  Requires-Dist: pytest-cov>=3.0; extra == "dev"
@@ -116,18 +117,18 @@ Dynamic: requires-python
116
117
 
117
118
  ---
118
119
 
119
- ## 🔥 Latest Release: v0.8.4 (January 19, 2025)
120
+ ## 🔥 Latest Release: v0.8.5 (January 20, 2025)
120
121
 
121
- **A2A Google Protocol Enhancement**
122
+ **Architecture Cleanup & Enterprise Security**
122
123
 
123
- - 🤖 **Advanced Agent Coordination**: A2ACoordinatorNode with Google Protocol best practices
124
- - 🎯 **Intelligent Task Delegation**: Context-aware task distribution with skill-based matching
125
- - 🔍 **Hybrid Search Capabilities**: Multi-strategy agent discovery and matching algorithms
126
- - 🧠 **Semantic Memory System**: Long-term memory management for agent interactions
127
- - 📊 **Real-time Analytics**: Streaming performance monitoring for A2A workflows
128
- - ✅ **Backward Compatible**: Seamless integration with existing A2A implementations
124
+ - 🏗️ **Architecture Clarity**: Removed confusing `src/kailash/nexus` module
125
+ - 🔒 **Connection Validation**: Enterprise-grade parameter validation with type safety
126
+ - 🌐 **Edge Computing**: 50+ new nodes for geo-distributed infrastructure
127
+ - 📊 **Advanced Monitoring**: AlertManager with proactive threshold monitoring
128
+ - 🚀 **Performance**: <1ms validation overhead with intelligent caching
129
+ - ✅ **Breaking Changes**: See [migration guide](sdk-users/6-reference/changelogs/releases/v0.8.5-2025-07-20.md)
129
130
 
130
- [Full Changelog](CHANGELOG.md) | [PyPI Packages](https://pypi.org/project/kailash/0.8.4/)
131
+ [Full Changelog](sdk-users/6-reference/changelogs/releases/v0.8.5-2025-07-20.md) | [PyPI Packages](https://pypi.org/project/kailash/0.8.5/)
131
132
 
132
133
  ## 🎯 What Makes Kailash Different
133
134
 
@@ -344,7 +345,7 @@ results, run_id = runtime.execute(workflow.build())
344
345
 
345
346
  ## 🚀 Applications Built with Kailash
346
347
 
347
- ### 1. DataFlow - Zero-Config Database Platform
348
+ ### 1. DataFlow - Zero-Config Database Platform (v0.3.1)
348
349
  ```bash
349
350
  pip install kailash-dataflow
350
351
  ```
@@ -352,8 +353,9 @@ pip install kailash-dataflow
352
353
  - **Redis caching** with enterprise-grade invalidation
353
354
  - **Automatic API generation** with OpenAPI documentation
354
355
  - **4 production examples** with complete deployment guides
356
+ - **Latest**: v0.3.1 - Enhanced transaction support and schema management
355
357
 
356
- ### 2. Nexus - Multi-Channel Platform
358
+ ### 2. Nexus - Multi-Channel Platform (v1.0.3)
357
359
  ```bash
358
360
  pip install kailash-nexus
359
361
  ```
@@ -361,6 +363,7 @@ pip install kailash-nexus
361
363
  - **Enterprise orchestration** with multi-tenancy
362
364
  - **Session management** with cross-channel synchronization
363
365
  - **105 tests** with comprehensive validation
366
+ - **Latest**: v1.0.3 - Production-ready release with enhanced stability
364
367
 
365
368
  ### 3. AI Registry - Advanced RAG Platform
366
369
  ```bash
@@ -421,8 +424,8 @@ pytest tests/e2e/ --timeout=10
421
424
 
422
425
  ### For Users
423
426
  - **[SDK Users Guide](sdk-users/)**: Complete workflow development guide
424
- - **[Node Selection Guide](sdk-users/nodes/node-selection-guide.md)**: Smart node selection with decision trees
425
- - **[Enterprise Patterns](sdk-users/enterprise/)**: Production deployment patterns
427
+ - **[Node Selection Guide](sdk-users/2-core-concepts/nodes/node-selection-guide.md)**: Smart node selection with decision trees
428
+ - **[Enterprise Patterns](sdk-users/5-enterprise/)**: Production deployment patterns
426
429
  - **[API Documentation](https://integrum.github.io/kailash-python-sdk)**: Complete API reference
427
430
 
428
431
  ### For Contributors
@@ -431,9 +434,9 @@ pytest tests/e2e/ --timeout=10
431
434
  - **[Testing Guide](tests/README.md)**: 3-tier testing strategy
432
435
 
433
436
  ### Quick References
434
- - **[Cheatsheet](sdk-users/cheatsheet/)**: 53 copy-paste patterns
435
- - **[Common Mistakes](sdk-users/validation/common-mistakes.md)**: Error patterns and solutions
436
- - **[Performance Guide](sdk-users/performance/)**: Optimization patterns
437
+ - **[Cheatsheet](sdk-users/2-core-concepts/cheatsheet/)**: 53 copy-paste patterns
438
+ - **[Common Mistakes](sdk-users/2-core-concepts/validation/common-mistakes.md)**: Error patterns and solutions
439
+ - **[Performance Guide](sdk-users/5-enterprise/performance/)**: Optimization patterns
437
440
 
438
441
  ## 🚢 Production Deployment
439
442
 
@@ -22,18 +22,18 @@
22
22
 
23
23
  ---
24
24
 
25
- ## 🔥 Latest Release: v0.8.4 (January 19, 2025)
25
+ ## 🔥 Latest Release: v0.8.5 (January 20, 2025)
26
26
 
27
- **A2A Google Protocol Enhancement**
27
+ **Architecture Cleanup & Enterprise Security**
28
28
 
29
- - 🤖 **Advanced Agent Coordination**: A2ACoordinatorNode with Google Protocol best practices
30
- - 🎯 **Intelligent Task Delegation**: Context-aware task distribution with skill-based matching
31
- - 🔍 **Hybrid Search Capabilities**: Multi-strategy agent discovery and matching algorithms
32
- - 🧠 **Semantic Memory System**: Long-term memory management for agent interactions
33
- - 📊 **Real-time Analytics**: Streaming performance monitoring for A2A workflows
34
- - ✅ **Backward Compatible**: Seamless integration with existing A2A implementations
29
+ - 🏗️ **Architecture Clarity**: Removed confusing `src/kailash/nexus` module
30
+ - 🔒 **Connection Validation**: Enterprise-grade parameter validation with type safety
31
+ - 🌐 **Edge Computing**: 50+ new nodes for geo-distributed infrastructure
32
+ - 📊 **Advanced Monitoring**: AlertManager with proactive threshold monitoring
33
+ - 🚀 **Performance**: <1ms validation overhead with intelligent caching
34
+ - ✅ **Breaking Changes**: See [migration guide](sdk-users/6-reference/changelogs/releases/v0.8.5-2025-07-20.md)
35
35
 
36
- [Full Changelog](CHANGELOG.md) | [PyPI Packages](https://pypi.org/project/kailash/0.8.4/)
36
+ [Full Changelog](sdk-users/6-reference/changelogs/releases/v0.8.5-2025-07-20.md) | [PyPI Packages](https://pypi.org/project/kailash/0.8.5/)
37
37
 
38
38
  ## 🎯 What Makes Kailash Different
39
39
 
@@ -250,7 +250,7 @@ results, run_id = runtime.execute(workflow.build())
250
250
 
251
251
  ## 🚀 Applications Built with Kailash
252
252
 
253
- ### 1. DataFlow - Zero-Config Database Platform
253
+ ### 1. DataFlow - Zero-Config Database Platform (v0.3.1)
254
254
  ```bash
255
255
  pip install kailash-dataflow
256
256
  ```
@@ -258,8 +258,9 @@ pip install kailash-dataflow
258
258
  - **Redis caching** with enterprise-grade invalidation
259
259
  - **Automatic API generation** with OpenAPI documentation
260
260
  - **4 production examples** with complete deployment guides
261
+ - **Latest**: v0.3.1 - Enhanced transaction support and schema management
261
262
 
262
- ### 2. Nexus - Multi-Channel Platform
263
+ ### 2. Nexus - Multi-Channel Platform (v1.0.3)
263
264
  ```bash
264
265
  pip install kailash-nexus
265
266
  ```
@@ -267,6 +268,7 @@ pip install kailash-nexus
267
268
  - **Enterprise orchestration** with multi-tenancy
268
269
  - **Session management** with cross-channel synchronization
269
270
  - **105 tests** with comprehensive validation
271
+ - **Latest**: v1.0.3 - Production-ready release with enhanced stability
270
272
 
271
273
  ### 3. AI Registry - Advanced RAG Platform
272
274
  ```bash
@@ -327,8 +329,8 @@ pytest tests/e2e/ --timeout=10
327
329
 
328
330
  ### For Users
329
331
  - **[SDK Users Guide](sdk-users/)**: Complete workflow development guide
330
- - **[Node Selection Guide](sdk-users/nodes/node-selection-guide.md)**: Smart node selection with decision trees
331
- - **[Enterprise Patterns](sdk-users/enterprise/)**: Production deployment patterns
332
+ - **[Node Selection Guide](sdk-users/2-core-concepts/nodes/node-selection-guide.md)**: Smart node selection with decision trees
333
+ - **[Enterprise Patterns](sdk-users/5-enterprise/)**: Production deployment patterns
332
334
  - **[API Documentation](https://integrum.github.io/kailash-python-sdk)**: Complete API reference
333
335
 
334
336
  ### For Contributors
@@ -337,9 +339,9 @@ pytest tests/e2e/ --timeout=10
337
339
  - **[Testing Guide](tests/README.md)**: 3-tier testing strategy
338
340
 
339
341
  ### Quick References
340
- - **[Cheatsheet](sdk-users/cheatsheet/)**: 53 copy-paste patterns
341
- - **[Common Mistakes](sdk-users/validation/common-mistakes.md)**: Error patterns and solutions
342
- - **[Performance Guide](sdk-users/performance/)**: Optimization patterns
342
+ - **[Cheatsheet](sdk-users/2-core-concepts/cheatsheet/)**: 53 copy-paste patterns
343
+ - **[Common Mistakes](sdk-users/2-core-concepts/validation/common-mistakes.md)**: Error patterns and solutions
344
+ - **[Performance Guide](sdk-users/5-enterprise/performance/)**: Optimization patterns
343
345
 
344
346
  ## 🚢 Production Deployment
345
347
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "kailash"
7
- version = "0.8.5"
7
+ version = "0.8.7"
8
8
  description = "Python SDK for the Kailash container-node architecture"
9
9
  authors = [
10
10
  {name = "Integrum", email = "info@integrum.com"}
@@ -85,6 +85,7 @@ dependencies = [
85
85
  "seaborn>=0.13.2",
86
86
  "sqlparse>=0.5.3",
87
87
  "jsonschema>=4.24.0",
88
+ "openai>=1.97.1",
88
89
  ]
89
90
 
90
91
  [project.optional-dependencies]
@@ -123,7 +124,7 @@ select = ["E", "F"]
123
124
  ignore = ["E203", "E501", "E722", "F401", "F841"]
124
125
 
125
126
  [tool.ruff.lint.per-file-ignores]
126
- "sdk-users/workflows/by-industry/finance/scripts/*.py" = ["E402"]
127
+ "sdk-users/2-core-concepts/workflows/by-industry/finance/scripts/*.py" = ["E402"]
127
128
  "examples/feature_examples/workflows/cyclic/*.py" = ["E722"]
128
129
  "examples/feature_examples/workflows/parallel/*.py" = ["E722"]
129
130
  "scripts/refactor-pythoncode-to-functions.py" = ["E722"]
@@ -136,7 +137,7 @@ ignore = ["E203", "E501", "E722", "F401", "F841"]
136
137
  # Allow late imports in performance test files
137
138
  "tests/unit/performance_benchmarks/*.py" = ["E402"]
138
139
  # SDK user workflows may have late imports for demos
139
- "sdk-users/workflows/**/*.py" = ["E402", "F821"]
140
+ "sdk-users/2-core-concepts/workflows/**/*.py" = ["E402", "F821"]
140
141
  # Examples may have late imports and mocks
141
142
  "examples/**/*.py" = ["E402", "F821"]
142
143
  # Scripts may need to modify sys.path before imports
@@ -51,14 +51,14 @@ setup(
51
51
  "pygraphviz>=1.9",
52
52
  ],
53
53
  "dataflow": [
54
- "kailash-dataflow>=0.1.0",
54
+ "kailash-dataflow>=0.3.1",
55
55
  ],
56
56
  "nexus": [
57
- "kailash-nexus>=1.0.0",
57
+ "kailash-nexus>=1.0.3",
58
58
  ],
59
59
  "all": [
60
- "kailash-dataflow>=0.1.0",
61
- "kailash-nexus>=1.0.0",
60
+ "kailash-dataflow>=0.3.1",
61
+ "kailash-nexus>=1.0.3",
62
62
  ],
63
63
  },
64
64
  # Entry points for CLI
@@ -3,10 +3,10 @@
3
3
  The Kailash SDK provides a comprehensive framework for creating nodes and workflows
4
4
  that align with container-node architecture while allowing rapid prototyping.
5
5
 
6
- New in v0.7.0: Complete DataFlow and Nexus application frameworks, infrastructure hardening
7
- with 100% E2E test pass rate, enhanced AsyncNode event loop handling, 8 new monitoring operations,
8
- distributed transactions, QueryBuilder/QueryCache with Redis, and real MCP execution by default.
9
- Previous v0.6.6: AgentUIMiddleware shared workflow fix, execute() method standardization.
6
+ New in v0.8.7: MCP Parameter Validation Tool, 100% MCP Protocol compliance with missing
7
+ handlers, Phase 2 MCP subscriptions with GraphQL optimization, WebSocket compression, and
8
+ Redis-backed distributed coordination.
9
+ Previous v0.8.6: Enhanced parameter validation system with debugging tools.
10
10
  """
11
11
 
12
12
  from kailash.nodes.base import Node, NodeMetadata, NodeParameter
@@ -49,7 +49,7 @@ except ImportError:
49
49
  # For backward compatibility
50
50
  WorkflowGraph = Workflow
51
51
 
52
- __version__ = "0.8.5"
52
+ __version__ = "0.8.6"
53
53
 
54
54
  __all__ = [
55
55
  # Core workflow components
@@ -5,7 +5,7 @@ enabling unified management of API, CLI, and MCP interfaces through a common cha
5
5
  """
6
6
 
7
7
  from .api_channel import APIChannel
8
- from .base import Channel, ChannelConfig
8
+ from .base import Channel, ChannelConfig, ChannelType
9
9
  from .cli_channel import CLIChannel
10
10
  from .mcp_channel import MCPChannel
11
11
  from .session import CrossChannelSession, SessionManager
@@ -13,6 +13,7 @@ from .session import CrossChannelSession, SessionManager
13
13
  __all__ = [
14
14
  "Channel",
15
15
  "ChannelConfig",
16
+ "ChannelType",
16
17
  "APIChannel",
17
18
  "CLIChannel",
18
19
  "MCPChannel",
@@ -84,6 +84,7 @@ class MCPChannel(Channel):
84
84
  # MCP-specific state
85
85
  self._clients: Dict[str, Dict[str, Any]] = {}
86
86
  self._server_task: Optional[asyncio.Task] = None
87
+ self._mcp_server_task: Optional[asyncio.Task] = None
87
88
 
88
89
  logger.info(f"Initialized MCP channel {self.name}")
89
90
 
@@ -202,8 +203,15 @@ class MCPChannel(Channel):
202
203
  self.status = ChannelStatus.STARTING
203
204
  self._setup_event_queue()
204
205
 
205
- # Start MCP server
206
- await self.mcp_server.start()
206
+ # Start MCP server (Core SDK uses run() method, not start())
207
+ # For async operation, we need to run it in a separate task
208
+ if hasattr(self.mcp_server, "run"):
209
+ # Core SDK MCPServer uses run() method
210
+ loop = asyncio.get_event_loop()
211
+ self._mcp_server_task = loop.run_in_executor(None, self.mcp_server.run)
212
+ else:
213
+ # Fallback to start() if available
214
+ await self.mcp_server.start()
207
215
 
208
216
  # Start server task for handling connections
209
217
  self._server_task = asyncio.create_task(self._server_loop())
@@ -261,9 +269,20 @@ class MCPChannel(Channel):
261
269
  except asyncio.CancelledError:
262
270
  pass
263
271
 
272
+ # Stop MCP server task if running
273
+ if hasattr(self, "_mcp_server_task") and self._mcp_server_task:
274
+ self._mcp_server_task.cancel()
275
+ try:
276
+ await self._mcp_server_task
277
+ except asyncio.CancelledError:
278
+ pass
279
+
264
280
  # Stop MCP server
265
- if self.mcp_server:
266
- await self.mcp_server.stop()
281
+ if self.mcp_server and hasattr(self.mcp_server, "stop"):
282
+ try:
283
+ await self.mcp_server.stop()
284
+ except Exception as e:
285
+ logger.warning(f"Error stopping MCP server: {e}")
267
286
 
268
287
  await self._cleanup()
269
288
  self.status = ChannelStatus.STOPPED
@@ -0,0 +1,202 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Command-line tool for validating import paths for production deployment.
4
+
5
+ Usage:
6
+ python -m kailash.cli.validate_imports [path] [options]
7
+
8
+ Examples:
9
+ # Validate current directory
10
+ python -m kailash.cli.validate_imports
11
+
12
+ # Validate specific directory
13
+ python -m kailash.cli.validate_imports src/myapp
14
+
15
+ # Fix imports (dry run)
16
+ python -m kailash.cli.validate_imports src/myapp --fix
17
+
18
+ # Fix imports (apply changes)
19
+ python -m kailash.cli.validate_imports src/myapp --fix --apply
20
+ """
21
+
22
+ import argparse
23
+ import sys
24
+ from pathlib import Path
25
+ from typing import List
26
+
27
+ from kailash.runtime.validation import ImportIssue, ImportPathValidator
28
+
29
+
30
+ def main():
31
+ """Main entry point for import validation CLI."""
32
+ parser = argparse.ArgumentParser(
33
+ description="Validate Python imports for production deployment compatibility",
34
+ formatter_class=argparse.RawDescriptionHelpFormatter,
35
+ epilog="""
36
+ Examples:
37
+ %(prog)s # Validate current directory
38
+ %(prog)s src/myapp # Validate specific directory
39
+ %(prog)s src/myapp --fix # Show import fixes (dry run)
40
+ %(prog)s --file module.py # Validate single file
41
+
42
+ For more info, see: sdk-users/7-gold-standards/absolute-imports-gold-standard.md
43
+ """,
44
+ )
45
+
46
+ parser.add_argument(
47
+ "path",
48
+ nargs="?",
49
+ default=".",
50
+ help="Path to validate (directory or file, default: current directory)",
51
+ )
52
+
53
+ parser.add_argument(
54
+ "--file",
55
+ "-f",
56
+ action="store_true",
57
+ help="Treat path as a single file instead of directory",
58
+ )
59
+
60
+ parser.add_argument(
61
+ "--fix", action="store_true", help="Show suggested fixes for import issues"
62
+ )
63
+
64
+ parser.add_argument(
65
+ "--apply",
66
+ action="store_true",
67
+ help="Apply fixes (use with --fix, CAUTION: modifies files!)",
68
+ )
69
+
70
+ parser.add_argument(
71
+ "--no-recursive", "-n", action="store_true", help="Do not scan subdirectories"
72
+ )
73
+
74
+ parser.add_argument(
75
+ "--include-tests", action="store_true", help="Include test files in validation"
76
+ )
77
+
78
+ parser.add_argument("--json", action="store_true", help="Output results as JSON")
79
+
80
+ parser.add_argument(
81
+ "--quiet",
82
+ "-q",
83
+ action="store_true",
84
+ help="Only show errors, no informational output",
85
+ )
86
+
87
+ parser.add_argument(
88
+ "--verbose", "-v", action="store_true", help="Show detailed output"
89
+ )
90
+
91
+ args = parser.parse_args()
92
+
93
+ # Create validator
94
+ validator = ImportPathValidator()
95
+
96
+ # Validate path
97
+ path = Path(args.path)
98
+ if not path.exists():
99
+ print(f"Error: Path '{path}' does not exist", file=sys.stderr)
100
+ sys.exit(1)
101
+
102
+ # Collect issues
103
+ issues: List[ImportIssue] = []
104
+
105
+ if args.file or path.is_file():
106
+ # Validate single file
107
+ if args.verbose:
108
+ print(f"Validating file: {path}")
109
+ issues = validator.validate_file(str(path))
110
+ else:
111
+ # Validate directory
112
+ if args.verbose:
113
+ print(f"Validating directory: {path}")
114
+ print(f"Recursive: {not args.no_recursive}")
115
+ print(f"Include tests: {args.include_tests}")
116
+ print()
117
+
118
+ # TODO: Add support for include_tests flag in validator
119
+ issues = validator.validate_directory(
120
+ str(path), recursive=not args.no_recursive
121
+ )
122
+
123
+ # Handle results
124
+ if args.json:
125
+ import json
126
+
127
+ # Convert issues to JSON-serializable format
128
+ issues_data = [
129
+ {
130
+ "file": issue.file_path,
131
+ "line": issue.line_number,
132
+ "import": issue.import_statement,
133
+ "type": issue.issue_type.value,
134
+ "severity": issue.severity,
135
+ "message": issue.message,
136
+ "suggestion": issue.suggestion,
137
+ }
138
+ for issue in issues
139
+ ]
140
+ print(
141
+ json.dumps(
142
+ {
143
+ "issues": issues_data,
144
+ "total": len(issues),
145
+ "critical": len([i for i in issues if i.severity == "critical"]),
146
+ "warnings": len([i for i in issues if i.severity == "warning"]),
147
+ },
148
+ indent=2,
149
+ )
150
+ )
151
+
152
+ elif args.fix:
153
+ # Show fixes
154
+ if not issues:
155
+ if not args.quiet:
156
+ print("✅ No import issues found!")
157
+ sys.exit(0)
158
+
159
+ print(f"Found {len(issues)} import issues\n")
160
+
161
+ # Group by file
162
+ files_with_issues = {}
163
+ for issue in issues:
164
+ if issue.file_path not in files_with_issues:
165
+ files_with_issues[issue.file_path] = []
166
+ files_with_issues[issue.file_path].append(issue)
167
+
168
+ for file_path, file_issues in files_with_issues.items():
169
+ print(f"\n📄 {file_path}")
170
+ print("-" * 60)
171
+
172
+ if args.apply:
173
+ # Apply fixes
174
+ fixes = validator.fix_imports_in_file(file_path, dry_run=False)
175
+ for original, fixed in fixes:
176
+ print(f" ❌ {original}")
177
+ print(f" ✅ {fixed}")
178
+ print(f"\n Applied {len(fixes)} fixes to {file_path}")
179
+ else:
180
+ # Show proposed fixes
181
+ for issue in file_issues:
182
+ print(f" Line {issue.line_number}: {issue.import_statement}")
183
+ print(f" Issue: {issue.message}")
184
+ print(f" Fix: {issue.suggestion}")
185
+ print()
186
+
187
+ if not args.apply:
188
+ print("\n💡 To apply these fixes, run with --fix --apply")
189
+ print("⚠️ CAUTION: This will modify your files!")
190
+
191
+ else:
192
+ # Standard report
193
+ report = validator.generate_report(issues)
194
+ print(report)
195
+
196
+ # Exit code based on critical issues
197
+ critical_count = len([i for i in issues if i.severity == "critical"])
198
+ sys.exit(1 if critical_count > 0 else 0)
199
+
200
+
201
+ if __name__ == "__main__":
202
+ main()
@@ -204,11 +204,21 @@ class BulkheadPartition:
204
204
  await self._record_failure(execution_time)
205
205
  raise
206
206
  finally:
207
- # Clean up
208
- async with self._lock:
209
- if operation_id in self._active_operations:
210
- self._active_operations.remove(operation_id)
211
- self.metrics.active_operations = len(self._active_operations)
207
+ # Clean up - with proper exception handling for event loop issues
208
+ try:
209
+ async with self._lock:
210
+ if operation_id in self._active_operations:
211
+ self._active_operations.remove(operation_id)
212
+ self.metrics.active_operations = len(self._active_operations)
213
+ except (RuntimeError, asyncio.CancelledError):
214
+ # Handle event loop issues during cleanup - force cleanup without lock
215
+ try:
216
+ if operation_id in self._active_operations:
217
+ self._active_operations.remove(operation_id)
218
+ self.metrics.active_operations = len(self._active_operations)
219
+ except:
220
+ # Final fallback - ignore cleanup errors during shutdown
221
+ pass
212
222
 
213
223
  async def _execute_isolated(
214
224
  self, operation_id: str, func: Callable, args: tuple, kwargs: dict, timeout: int
@@ -467,7 +467,10 @@ class CircuitBreakerManager:
467
467
  return self._breakers[name]
468
468
 
469
469
  def create_circuit_breaker(
470
- self, name: str, config: Optional[CircuitBreakerConfig] = None, pattern: Optional[str] = None
470
+ self,
471
+ name: str,
472
+ config: Optional[CircuitBreakerConfig] = None,
473
+ pattern: Optional[str] = None,
471
474
  ) -> ConnectionCircuitBreaker:
472
475
  """Create a new circuit breaker with optional pattern-based configuration."""
473
476
  if pattern and pattern in self._patterns: